Indexへ
(17101)// 【17102】→(17130) ------------------------ 【タイトル】累計寸法について
【記事番号】 17102 (*)
【 日時 】06/11/17 23:23
【 発言者 】セキ asdeg@docomo.ne.jp
円周上にある点を、累計寸法で追い出しする事はできるんでしょうか?
Indexへ
(17102)← 【17130】→(17134) ------------------------ 【タイトル】Re(1):累計寸法について
【記事番号】 17130 (17102 )
【 日時 】06/11/20 15:04
【 発言者 】白髪のおっちゃん
▼セキさん:
>円周上にある点を、累計寸法で追い出しする事はできるんでしょうか?
こんにちは
JWWの塁進寸法の表示方法で作図 円の場合はできません。
私は外部変形も 知りません。
メモ的な累進寸法を作図で良いのなら
ご存知だと思いますが
測定コマンド・距離測定
[始点を指示]
[( 弧指定] クロックでは 左PM5時
[円を指示}
[円上点を指示}
[測定結果書込}クロックでは 左PM0時
[文字位置指示}
[( 弧指定]
[円を指示}
[円上点を指示}次の点を指示
[測定結果書込}
この繰り返しで 可能です
クリアーしない限り累計となります。
私は このデーターで 円周寸法の
累進寸法もどきを作成しています。
以上
Indexへ
(17130)← 【17134】→(17177) ------------------------ 【タイトル】Re(2):累計寸法について
【記事番号】 17134 (17130 )
【 日時 】06/11/20 23:31
【 発言者 】セキ asdeg@docomo.ne.jp
なるほど。やはりそういう方法しかないんですね。
今後のバージョンアップで機能に盛り込んでくれればいいですね。
丁寧なレスありがとうございました。
Indexへ
(17134)← 【17177】→(17235) ------------------------ 【タイトル】Re(1):累計寸法について
【記事番号】 17177 (17102 )
【 日時 】06/11/22 18:57
【 発言者 】コジマ
▼セキさん:
>円周上にある点を、累計寸法で追い出しする事はできるんでしょうか?
以下の外部変形で可能です。
mswin32 版 Rubyのインストールが必要です。
以下で入手できます。
http://www61.tok2.com/home2/gravelroad/tips/inst_msw.html
◎バッチファイル(ファイル名 円累進寸法.bat)
以下の文をコピペ後、全角スペースを半角スペースに一括置換してください。
@REM 円周の累進寸法
@echo off
REM #jww
REM #cd
REM #h0
REM #1ci円を指示してください
REM #2寸法作図位置を指示してください
REM #3測定開始点を指示してください
REM #4測定点を指示・・・左周り
REM #99#
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks 円累進寸法.rb temp.txt> jwc_temp.txt
◎スクリプトファイル(ファイル名 円累進寸法.rb)
以下の文をコピペ後、全角スペースを半角スペースに一括置換してください。
require 'vr/vruby'
require 'vr/vrcontrol'
module Frm_form1
def _form1_init
$_form1_fonts=[
@screen.factory.newfont('MS ゴシック',-16,0,4,0,0,0,49,128)
]
self.caption = '属性設定'
self.move(326,150,327,420)
addControl(VRStatic,'static1',"作図レイヤ",80,24,128,24,1342177282)
addControl(VRStatic,'static2',"作図線色",88,56,120,24,1342177282)
addControl(VRStatic,'static3',"引出線の突出寸法(図寸)",16,88,192,24,1342177282)
addControl(VRStatic,'static4',"点色",16,120,184,24,1342177282)
addControl(VRStatic,'static5',"文字と線の離れ(図寸)",16,152,192,24,1342177282)
addControl(VRStatic,'static6',"書込文字種",16,184,192,24,1342177282)
addControl(VRStatic,'static7',
"小数点以下有効桁数",16,216,192,24,1342177282)
addControl(VRStatic,'static8',"寸法単位 mm:0 m:1",16,248,192,24,1342177282)
addControl(VREdit,'edit1',"a",224,24,64,24,1342177408)
addControl(VREdit,'edit2',"1",224,56,64,24,1342177408)
addControl(VREdit,'edit3',"1",224,88,64,24,1342177408)
addControl(VREdit,'edit4',"6",224,120,64,24,1342177408)
addControl(VREdit,'edit5',"1",224,152,64,24,1342177408)
addControl(VREdit,'edit6',"3",224,184,64,24,1342177408)
addControl(VREdit,'edit7',"2",224,216,64,24,1342177408)
addControl(VREdit,'edit8',"0",224,248,64,24,1342177408)
addControl(VRCheckbox,'checkBox1',"3桁ごとの区切りを入れる",70,285,224,24,1342177283)
addControl(VRCheckbox,'checkBox2',"単位を表示",70,310,224,24,1342177283)
addControl(VRButton,'button1',"設定完了",32,340,264,32,1342177280)
@button1.setFont($_form1_fonts[0])
$static=[@static1,@static2,@static3,@static4,@static5,@static6,@static7,@static8]
$static.each{|item|item.setFont($_form1_fonts[0])}
$edit=[@edit1,@edit2,@edit3,@edit4,@edit5,@edit6,@edit7,@edit8]
$edit.each{|item|item.setFont($_form1_fonts[0])}
date=[]
begin
open("属性設定.txt","r"){|f|
while line=f.gets
date< end}
0.upto(date.size-3){|i|$edit[i].text=date[i]}
@checkBox1.check(1) if date[date.size-2] && date[date.size-2]=="1"
@checkBox2.check(1) if date[date.size-1] && date[date.size-1]=="1"
rescue
end
end
def construct
_form1_init
end
def button1_clicked
$moji="cn"+@edit6.text
$ly="ly"+@edit1.text
$lc="lc"+@edit2.text
$tuki=@edit3.text.to_f
$tenc="pn"+@edit4.text
$hanare=@edit5.text.to_f
$keta=@edit7.text
$tani=@edit8.text
@checkBox1.checked? ? $kugiri="1" : $kugiri="0"
@checkBox2.checked? ? $hyouzi="1" : $hyouzi="0"
open("属性設定.txt","w"){|f|
$edit.each{|item|f.puts item.text}
f.puts $kugiri;f.puts $hyouzi
}
close
end
end
VRLocalScreen.start Frm_form1
include Math
def ika(x)
keta=$keta.to_i
a=((x.to_f)*10**keta).to_i/(10**keta).to_f
if a.to_s=~/\.0/;a.to_i;end;return a.to_s
end
def sen(x1,y1,x2,y2)
printf("%.11f %.11f %.11f %.11f\n",x1,y1,x2,y2)
end
def entyo(en,si_arg,syu_arg)
x,y,r,hen=en[1],en[2],en[3],en[6]
if hen==1
l=r*(syu_arg-si_arg)
else
l=0;arg=si_arg;d_arg=0.1*2*PI/360
while(syu_arg>=arg+d_arg)
x1=x+r*cos(arg)
y1=y+r*sin(arg)*hen
x2=x+r*cos(arg+d_arg)
y2=y+r*sin(arg+d_arg)*hen
l += sqrt((y2-y1)**2+(x2-x1)**2)
arg += d_arg
end
x1=x+r*cos(arg)
y1=y+r*sin(arg)*hen
x2=x+r*cos(syu_arg)
y2=y+r*sin(syu_arg)*hen
l += sqrt((y2-y1)**2+(x2-x1)**2)
end
return l
end
def keta_kugiri(s)
if s=~/\./ or s=~/./
moji=$`
ika1=$&+$'
else
moji=s
ika1=""
end
a=moji.split('');a.reverse!;n=0;b=[]
if a[0].size==1
a.each{|item|n!=0 && n%3==0 ? b<<(item+"\,"):b<<(item);n+=1}
else
a.each{|item|n!=0 && n%3==0 ? b<<(item+","):b<<(item);n+=1}
end
return(b.reverse.join+ika1)
end
puts $ly,$lc,"lt1",$tenc,"cc3",$moji
hp=[];by=[]
while ARGF.gets
xy =split
if xy[0] =~ /^hs/
xy[1..-1].each{|item|by< end
if xy[0] =~ /^lg/
lg=xy[0][2,1]
zusun=by[lg.hex]
end
if xy[0] =~ /^hp/
hp<<[xy[1].to_f,xy[2].to_f]
end
if xy[0] =~ /^ci/
xy.collect!{|item|item.to_f}
if xy.size==4
xy[4],xy[5],xy[6],xy[7]=0,360,1,0
end
x,y,r,hen=xy[1],xy[2],xy[3],xy[6]
ziku_arg=xy[7]*2*PI/360
r2x=hp[1][0]-x
r2y=hp[1][1]-y
r2xy=sqrt(r2y**2+r2x**2)
henkaku=atan2(r2y,r2x)-ziku_arg
r2=sqrt((r2xy*cos(henkaku))**2+(r2xy*sin(henkaku)/hen)**2)
d_r=r2-r
hen2=(r*hen+d_r)/r2
kiten_x=hp[2][0]-xy[1]
kiten_y=hp[2][1]-xy[2]
kiten_xy=sqrt(kiten_x**2+kiten_y**2)
henkaku=atan2(kiten_y,kiten_x)-ziku_arg
kiten_kakudo=atan2(kiten_xy*sin(henkaku)/hen,kiten_xy*cos(henkaku))
r_x=(r+$hanare*zusun)*cos(kiten_kakudo)
r_y=(r+$hanare*zusun)*sin(kiten_kakudo)*hen
r_l=sqrt(r_x**2+r_y**2)
arg=atan2(r_y,r_x)
enkotyo=0;kakudo1=kiten_kakudo
3.upto(hp.size-1){|i|
x1=hp[i][0]-xy[1]
y1=hp[i][1]-xy[2]
xy1=sqrt(x1**2+y1**2)
henkaku=atan2(y1,x1)-ziku_arg
kakudo=atan2(xy1*sin(henkaku)/hen,xy1*cos(henkaku))
kakudo += 2*PI if kakudo<=kiten_kakudo
enkotyo=entyo(xy,kiten_kakudo,kakudo)
r_x=(r)*cos(kakudo)
r_y=(r)*sin(kakudo)*hen
r_l=sqrt(r_x**2+r_y**2)
arg=atan2(r_y,r_x)
r_x2=(r2)*cos(kakudo)
r_y2=(r2)*sin(kakudo)*hen2
r_l2=sqrt(r_x2**2+r_y2**2)
arg2=atan2(r_y2,r_x2)
x1=x+r_l*cos(arg+ziku_arg)
y1=y+r_l*sin(arg+ziku_arg)
x2=x+r_l2*cos(arg2+ziku_arg)
y2=y+r_l2*sin(arg2+ziku_arg)
arg2=atan2(y2-y1,x2-x1)
x1_2=x1+$tuki*zusun*cos(arg2)
y1_2=y1+$tuki*zusun*sin(arg2)
x2_2=x2+$tuki*zusun*cos(arg2)
y2_2=y2+$tuki*zusun*sin(arg2)
$tani=="1" ? moji=ika(enkotyo/1000) : moji=ika(enkotyo).to_s
moji=keta_kugiri(moji) if $kugiri=="1"
if $hyouzi=="1"
$tani=="1" ? moji=moji+"m" : moji=moji+"mm"
end
if (r2-r).abs>$tuki*zusun
puts "z3"
printf("ci %.11f %.11f %.11f %f %f %f %f\n",
x,y,r2,kakudo1*360/(2*PI),kakudo*360/(2*PI),hen2,xy[7])
puts "z3"
sen(x1_2,y1_2,x2_2,y2_2)
puts "z3"
printf("pt %.11f %.11f\n",x2,y2)
end
puts "z3"
printf("ch %f %f %f %f \"%s\n",x2_2+$hanare*zusun*cos(arg2),y2_2+$hanare*zusun*sin(arg2),cos(arg2),sin(arg2),moji)
kakudo1=kakudo
}
end
end
Indexへ
(17177)← 【17235】→(17469) ------------------------ 【タイトル】Re(2):頂きました。ありがとうございます
【記事番号】 17235 (17177 )
【 日時 】06/11/25 16:38
【 発言者 】白髪のおっちゃん
▼コジマさん:
こんにちは
累進寸法の配置で 引き出し線角度に合わす時
一つ々 引き出し線の線角を取得して
配置していました。
簡単になりました。
ありがとう ございました。
失礼します。
Indexへ
(17235)← 【17469】→(17484) ------------------------ 【タイトル】Re(3):訂正
【記事番号】 17469 (17235 )
【 日時 】06/12/05 14:27
【 発言者 】コジマ
▼白髪のおっちゃんさん:
>累進寸法の配置で 引き出し線角度に合わす時
>一つ々 引き出し線の線角を取得して
>配置していました。
>簡単になりました。
小数点以下有効桁以降を切り捨てにしていました。
四捨五入に変更。
600の場合、数値計算算出値は、599.99999999999999
小数点以下有効桁 2の場合 現在 599.99 修正後 600
◎スクリプトファイル
require 'vr/vruby'
require 'vr/vrcontrol'
module Frm_form1
def _form1_init
$_form1_fonts=[
@screen.factory.newfont('MS ゴシック',-16,0,4,0,0,0,49,128)
]
self.caption = '属性設定'
self.move(326,150,327,420)
addControl(VRStatic,'static1',"作図レイヤ",80,24,128,24,1342177282)
addControl(VRStatic,'static2',"作図線色",88,56,120,24,1342177282)
addControl(VRStatic,'static3',"引出線の突出寸法(図寸)",16,88,192,24,1342177282)
addControl(VRStatic,'static4',"点色",16,120,184,24,1342177282)
addControl(VRStatic,'static5',"文字と線の離れ(図寸)",16,152,192,24,1342177282)
addControl(VRStatic,'static6',"書込文字種",16,184,192,24,1342177282)
addControl(VRStatic,'static7',
"小数点以下有効桁数",16,216,192,24,1342177282)
addControl(VRStatic,'static8',"寸法単位 mm:0 m:1",16,248,192,24,1342177282)
addControl(VREdit,'edit1',"a",224,24,64,24,1342177408)
addControl(VREdit,'edit2',"1",224,56,64,24,1342177408)
addControl(VREdit,'edit3',"1",224,88,64,24,1342177408)
addControl(VREdit,'edit4',"6",224,120,64,24,1342177408)
addControl(VREdit,'edit5',"1",224,152,64,24,1342177408)
addControl(VREdit,'edit6',"3",224,184,64,24,1342177408)
addControl(VREdit,'edit7',"2",224,216,64,24,1342177408)
addControl(VREdit,'edit8',"0",224,248,64,24,1342177408)
addControl(VRCheckbox,'checkBox1',"3桁ごとの区切りを入れる",70,285,224,24,1342177283)
addControl(VRCheckbox,'checkBox2',"単位を表示",70,310,224,24,1342177283)
addControl(VRButton,'button1',"設定完了",32,340,264,32,1342177280)
@button1.setFont($_form1_fonts[0])
$static=[@static1,@static2,@static3,@static4,@static5,@static6,@static7,@static8]
$static.each{|item|item.setFont($_form1_fonts[0])}
$edit=[@edit1,@edit2,@edit3,@edit4,@edit5,@edit6,@edit7,@edit8]
$edit.each{|item|item.setFont($_form1_fonts[0])}
date=[]
begin
open("属性設定.txt","r"){|f|
while line=f.gets
date< end}
0.upto(date.size-3){|i|$edit[i].text=date[i]}
@checkBox1.check(1) if date[date.size-2] && date[date.size-2]=="1"
@checkBox2.check(1) if date[date.size-1] && date[date.size-1]=="1"
rescue
end
end
def construct
_form1_init
end
def button1_clicked
$moji="cn"+@edit6.text
$ly="ly"+@edit1.text
$lc="lc"+@edit2.text
$tuki=@edit3.text.to_f
$tenc="pn"+@edit4.text
$hanare=@edit5.text.to_f
$keta=@edit7.text
$tani=@edit8.text
@checkBox1.checked? ? $kugiri="1" : $kugiri="0"
@checkBox2.checked? ? $hyouzi="1" : $hyouzi="0"
open("属性設定.txt","w"){|f|
$edit.each{|item|f.puts item.text}
f.puts $kugiri;f.puts $hyouzi
}
close
end
end
VRLocalScreen.start Frm_form1
include Math
def ika(x)
keta=$keta.to_i
a=((x.to_f)*10**keta).round/(10**keta).to_f
if a.to_s=~/\.0$/;a=a.to_i;end;return a.to_s
end
def sen(x1,y1,x2,y2)
printf("%.11f %.11f %.11f %.11f\n",x1,y1,x2,y2)
end
def entyo(en,si_arg,syu_arg)
x,y,r,hen=en[1],en[2],en[3],en[6]
if hen==1
l=r*(syu_arg-si_arg)
else
l=0;arg=si_arg;d_arg=0.1*2*PI/360
while(syu_arg>=arg+d_arg)
x1=x+r*cos(arg)
y1=y+r*sin(arg)*hen
x2=x+r*cos(arg+d_arg)
y2=y+r*sin(arg+d_arg)*hen
l += sqrt((y2-y1)**2+(x2-x1)**2)
arg += d_arg
end
x1=x+r*cos(arg)
y1=y+r*sin(arg)*hen
x2=x+r*cos(syu_arg)
y2=y+r*sin(syu_arg)*hen
l += sqrt((y2-y1)**2+(x2-x1)**2)
end
return l
end
def keta_kugiri(s)
if s=~/\./ or s=~/./
moji=$`
ika1=$&+$'
else
moji=s
ika1=""
end
a=moji.split('');a.reverse!;n=0;b=[]
if a[0].size==1
a.each{|item|n!=0 && n%3==0 ? b<<(item+"\,"):b<<(item);n+=1}
else
a.each{|item|n!=0 && n%3==0 ? b<<(item+","):b<<(item);n+=1}
end
return(b.reverse.join+ika1)
end
puts $ly,$lc,"lt1",$tenc,"cc3",$moji
hp=[];by=[]
while ARGF.gets
xy =split
if xy[0] =~ /^hs/
xy[1..-1].each{|item|by< end
if xy[0] =~ /^lg/
lg=xy[0][2,1]
zusun=by[lg.hex]
end
if xy[0] =~ /^hp/
hp<<[xy[1].to_f,xy[2].to_f]
end
if xy[0] =~ /^ci/
xy.collect!{|item|item.to_f}
if xy.size==4
xy[4],xy[5],xy[6],xy[7]=0,360,1,0
end
x,y,r,hen=xy[1],xy[2],xy[3],xy[6]
ziku_arg=xy[7]*2*PI/360
r2x=hp[1][0]-x
r2y=hp[1][1]-y
r2xy=sqrt(r2y**2+r2x**2)
henkaku=atan2(r2y,r2x)-ziku_arg
r2=sqrt((r2xy*cos(henkaku))**2+(r2xy*sin(henkaku)/hen)**2)
d_r=r2-r
hen2=(r*hen+d_r)/r2
kiten_x=hp[2][0]-xy[1]
kiten_y=hp[2][1]-xy[2]
kiten_xy=sqrt(kiten_x**2+kiten_y**2)
henkaku=atan2(kiten_y,kiten_x)-ziku_arg
kiten_kakudo=atan2(kiten_xy*sin(henkaku)/hen,kiten_xy*cos(henkaku))
r_x=(r+$hanare*zusun)*cos(kiten_kakudo)
r_y=(r+$hanare*zusun)*sin(kiten_kakudo)*hen
r_l=sqrt(r_x**2+r_y**2)
arg=atan2(r_y,r_x)
enkotyo=0;kakudo1=kiten_kakudo
3.upto(hp.size-1){|i|
x1=hp[i][0]-xy[1]
y1=hp[i][1]-xy[2]
xy1=sqrt(x1**2+y1**2)
henkaku=atan2(y1,x1)-ziku_arg
kakudo=atan2(xy1*sin(henkaku)/hen,xy1*cos(henkaku))
kakudo += 2*PI if kakudo<=kiten_kakudo
enkotyo=entyo(xy,kiten_kakudo,kakudo)
r_x=(r)*cos(kakudo)
r_y=(r)*sin(kakudo)*hen
r_l=sqrt(r_x**2+r_y**2)
arg=atan2(r_y,r_x)
r_x2=(r2)*cos(kakudo)
r_y2=(r2)*sin(kakudo)*hen2
r_l2=sqrt(r_x2**2+r_y2**2)
arg2=atan2(r_y2,r_x2)
x1=x+r_l*cos(arg+ziku_arg)
y1=y+r_l*sin(arg+ziku_arg)
x2=x+r_l2*cos(arg2+ziku_arg)
y2=y+r_l2*sin(arg2+ziku_arg)
arg2=atan2(y2-y1,x2-x1)
x1_2=x1+$tuki*zusun*cos(arg2)
y1_2=y1+$tuki*zusun*sin(arg2)
x2_2=x2+$tuki*zusun*cos(arg2)
y2_2=y2+$tuki*zusun*sin(arg2)
$tani=="1" ? moji=ika(enkotyo/1000) : moji=ika(enkotyo).to_s
moji=keta_kugiri(moji) if $kugiri=="1"
if $hyouzi=="1"
$tani=="1" ? moji=moji+"m" : moji=moji+"mm"
end
if (r2-r).abs>$tuki*zusun
puts "z3"
printf("ci %.11f %.11f %.11f %f %f %f %f\n",
x,y,r2,kakudo1*360/(2*PI),kakudo*360/(2*PI),hen2,xy[7])
puts "z3"
sen(x1_2,y1_2,x2_2,y2_2)
puts "z3"
printf("pt %.11f %.11f\n",x2,y2)
end
puts "z3"
printf("ch %f %f %f %f \"%s\n",x2_2+$hanare*zusun*cos(arg2),y2_2+$hanare*zusun*sin(arg2),cos(arg2),sin(arg2),moji)
kakudo1=kakudo
}
end
end
Indexへ
(17469)← 【17484】//(17104) ------------------------ 【タイトル】Re(4):バージョンアップ ありがとう御座います
【記事番号】 17484 (17469 )
【 日時 】06/12/05 20:06
【 発言者 】白髪のおっちゃん
▼コジマさん:
細かなところまで
お気遣い ありがとう御座います
早速 利用させて頂いています
失礼します。