Indexへ
(9449)//【9450】→(9451)
------------------------
【タイトル】円周の累進寸法記入
【記事番号】 9450 (*)
【 日時 】07/04/18 15:12
【 発言者 】オオウチ yoshiro1205@gmail.com

初めて書き込みさせてもらいます。コジマさん作の円周の累進寸法記入の外部変形を使わせてもらいたいのですが、うまくいきません。(寸法文字追加はうまく動いています)rubyのこともわからずにやっています。エラーメッセージは下記の通りです。これでわかるでしょうか?すみませんがよろしくお願いします。

円累進寸法.rb:46 syntax error ,unexpected kEND
       date <       end}
円累進寸法.rb:70 syntax error ,unexpected kEND,expecting'}'
円累進寸法.rb:91 syntax error ,unexpected kEND
       xy[1..-1].each{litemlby< end
円累進寸法.rb:154 syntax error unexpected kEND,expecting'}


Indexへ
(9450)←【9451】→(9452)
------------------------
【タイトル】Re(1):円周の累進寸法記入
【記事番号】 9451 (9450)
【 日時 】07/04/18 17:32
【 発言者 】コジマ

▼オオウチさん:
>初めて書き込みさせてもらいます。コジマさん作の円周の累進寸法記入の外部変形を使わせてもらいたいのですが、うまくいきません。(寸法文字追加はうまく動いています)rubyのこともわからずにやっています。

文体がこわれているのかもしれません。
以下の文をコピペした後、全角スペースを半角スペースに一括置換してください。


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へ
(9451)←【9452】→(9453)
------------------------
【タイトル】Re(2):円周の累進寸法記入
【記事番号】 9452 (9451)
【 日時 】07/04/18 18:39
【 発言者 】オオウチ yoshiro1205@gmail.com

▼コジマさん:

素早い対応ありがとうございました。ファイルを入れ替えたらうまくいきました。御世話になりました


Indexへ
(9452)←【9453】→(9454)
------------------------
【タイトル】Re(2):円周の累進寸法記入
【記事番号】 9453 (9451)
【 日時 】07/04/19 09:10
【 発言者 】オオウチ yoshiro1205@gmail.com

やれるようになったら欲がでてきました(^_^;)記入を右回りでやることはむずかしいでしょうか?当方鉄骨図を作っているのですが、左からの追い寸法を使うのが多いので右回りで記入できるとありがたいのです。今のところ反転して記入、反転で戻すで考えていますが、、、。お手数かけますがよろしくお願いします。


Indexへ
(9453)←【9454】→(9455)
------------------------
【タイトル】Re(3):円周の累進寸法記入
【記事番号】 9454 (9453)
【 日時 】07/04/19 19:55
【 発言者 】コジマ

▼オオウチさん:
>やれるようになったら欲がでてきました(^_^;)記入を右回りでやることはむずかしいでしょうか?当方鉄骨図を作っているのですが、左からの追い寸法を使うのが多いので右回りで記入できるとありがたいのです。今のところ反転して記入、反転で戻すで考えていますが、、、。お手数かけますがよろしくお願いします。

右回りのスクリプトは以下のようになります。


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.to_f==1
        enko_kaku=2*PI-(syu_arg-si_arg)
        enko_kaku += 2*PI if enko_kaku==0
        l=r*enko_kaku
    else
        if syu_arg>si_arg
            if (syu_arg-si_arg).abs == 2*PI
                syu_arg=si_arg-2*PI
            else
                syu_arg -= 2*PI
            end
        end
        l=0;arg=syu_arg;d_arg=0.1*2*PI/360
        while(si_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(si_arg)
        y2=y+r*sin(si_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,kakudo*360/(2*PI),kakudo1*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へ
(9454)←【9455】//(9456)
------------------------
【タイトル】Re(4):円周の累進寸法記入
【記事番号】 9455 (9454)
【 日時 】07/04/20 10:10
【 発言者 】オオウチ yoshiro1205@gmail.com

右回りの円周累進寸法記入できました。感激です(*^_^*)どうもありがとうございました