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
【 発言者 】白髪のおっちゃん

▼コジマさん:
細かなところまで
お気遣い ありがとう御座います
早速 利用させて頂いています

失礼します。