Jw_cad 相談室−その2 New

 Jw_cad についての相談の場としてお使いください
情報の交換には Jw_cad 情報交換室 をご利用ください
なお、情報交換室と相談室の両方に同じ内容を投稿するのはご遠慮ください

2009年9月以前の発言過去ログのページからご覧ください。

それ以降の過去ログは消失しています。
申し訳ありませんが、復活の予定はありません。


  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃過去ログ ┃ホーム  
20 / 347 ツリー    ←次へ | 前へ→

展開図 土木や 20/9/28(月) 8:44

外部変形2 kojima 20/10/1(木) 16:37

外部変形2
 kojima  - 20/10/1(木) 16:37 -
○手摺本体側の展開図作図用

前回のスクリプト共々、2008年に作っていたものです。
入力部分のデフォルト値のみ変更しました。


@REM 円筒がY接続された主円筒の展開図
@echo off
REM #jww
REM #cd
REM #c主円筒の直径 無指定:38.0/_/a
REM #c円筒の長さ 無指定:1000.0/_/b
REM #c穴の直径 無指定:32.0/_/c
REM #c円の分割角度 無指定:10/_/d
REM #c円筒の接続角度 無指定:60/_/e
REM #0
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -x %~f0 temp.txt %1 %2 %3 %4 %5 > jwc_temp.txt
goto end

#!ruby -Ks
include Math

def sen_sen_kouten2(sen1,sen2)
sen1x=sen1[2]-sen1[0]
sen1y=sen1[3]-sen1[1]
sen1xy=sqrt(sen1x**2+sen1y**2)
sen1_arg=atan2(sen1y,sen1x)
x1_1=sen1[0]
x1_2=sen1[0]+sen1xy
y1_1=sen1[1]
y1_2=sen1[1]

x=sen2[0]-sen1[0]
y=sen2[1]-sen1[1]
xy=sqrt(x**2+y**2)
arg=atan2(y,x)
henkaku=arg-sen1_arg
x2_1=sen1[0]+xy*cos(henkaku)
y2_1=sen1[1]+xy*sin(henkaku)

x=sen2[2]-sen1[0]
y=sen2[3]-sen1[1]
xy=sqrt(x**2+y**2)
arg=atan2(y,x)
henkaku=arg-sen1_arg
x2_2=sen1[0]+xy*cos(henkaku)
y2_2=sen1[1]+xy*sin(henkaku)

x=x2_2-x2_1
y=y2_2-y2_1
delta=y/x

y=y1_1-y2_1
dx=y/delta
kouten_x=x2_1+dx
kouten_y=y1_1

x=kouten_x-x1_1

kouten_xt=x1_1+x*cos(sen1_arg)
kouten_yt=y1_1+x*sin(sen1_arg)

if kouten_xt && kouten_yt
return [kouten_xt,kouten_yt]
else
nil
end
end

d1=38.0;d2=32.0;l2=1000.0;bunkaku=10.0;l1=1000.0;kakudo=60.0
while ARGV.size>1
case argument=ARGV.pop
when /\/a/
d1=argument[2..-1].to_f
when /\/b/
l1=argument[2..-1].to_f
when /\/c/
d2=argument[2..-1].to_f
when /\/d/
bunkaku=argument[2..-1].to_f
when /\/e/
kakudo=argument[2..-1].to_f
end
end

r1=d1/2;r2=d2/2
n=(360/bunkaku).to_i
bun_arg=bunkaku*2*PI/360
kakudo_arg=kakudo*2*PI/360
kakudo_arg2=kakudo_arg+PI/2

x1,y1=l1,-r1
x2,y2=l2*cos(kakudo_arg),l2*sin(kakudo_arg)
a2=r2/sin(kakudo_arg)
sen3=[a2,0,a2+r2*cos(kakudo_arg2),r2*sin(kakudo_arg2)]

arg=0
zahyo=[]
(n+1).times{
arg_x2=x2+r2*cos(arg+kakudo_arg)
arg_y2=y2+r2*sin(arg+kakudo_arg)
sen2=[arg_x2,arg_y2,arg_x2+r2*cos(kakudo_arg),arg_y2+r2*sin(kakudo_arg)]
arg_l=r2*cos(arg)
arg_y=sqrt(r1**2-arg_l**2)
arg1=atan2(arg_y,arg_l)
arg_x1=x1+r1*cos(arg1)
arg_y1=y1+r1*sin(arg1)
sen1=[arg_x1,arg_y1,arg_x1+r1,arg_y1]
kouten_x1,kouten_y1=sen_sen_kouten2(sen1,sen2)
if arg1<PI/2
r1_l=r1*(PI/2-arg1)
else
r1_l=-r1*(arg1-PI/2)
end
zahyo<<[kouten_x1,r1_l]
arg += bun_arg
}
puts "pl"
zahyo.each{|a,b|puts("#{a} #{b}")}
puts "#"
printf("%.11f %.11f %.11f %.11f\n",l1/2,r1*PI,-l1/2,r1*PI)
printf("%.11f %.11f %.11f %.11f\n",l1/2,-r1*PI,-l1/2,-r1*PI)
printf("%.11f %.11f %.11f %.11f\n",l1/2,r1*PI,l1/2,-r1*PI)
printf("%.11f %.11f %.11f %.11f\n",-l1/2,r1*PI,-l1/2,-r1*PI)

open("座標.txt","w"){|f|
f.printf("%4s%10s%10s\n","点名","X座標","Y座標")
point=1
zahyo.each{|a,b|
puts("pt #{a} #{b}")
f.printf("%4d %10.3f %10.3f\n",point,a,b)
point += 1
}
}
system("notepad 座標.txt")
__END__
:end

引用なし

パスワード


<Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; MALNJS; rv:11.0) like Gecko@ai126192047119.75.access-internet.ne.jp>
・ツリー全体表示

20 / 347 ツリー    ←次へ | 前へ→
  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃過去ログ ┃ホーム  
 783515
ページ:  ┃  記事番号:  

C-BOARD Moyuku v1.03b3
Jw_cad Copyright (C)1997-2016 Jiro Shimizu & Yoshifumi Tanaka