Jw_cad
Jw_cad 情報交換室−その3

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

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


  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃  ┃ホーム  
9 / 50 ページ ←次へ | 前へ→

Re(1):円累進寸法1.rb その2
 R.N E-MAIL  - 14/08/02(土) 16:36 -

引用なし
パスワード
   ▼kojimaさん:こんにちは、

色々と外変を提供して頂き、参考・利用させて頂いています。(感謝!! 致します)

oyajiさんのレスのとおり、「円累進寸法1.rb」(左回り)が、未実行となるようです。

【エラー内容】
円累進寸法1.rb:326: undefined method `-' for nil:NilClass (NoMethodError)
        326行目;arg=atan2(y1-y,x1-x)

円累進寸法1.rb:358: undefined method `-' for nil:NilClass (NoMethodError)
    from 左回り.rb:335:in `upto'
    from 左回り.rb:335
        358行目;arg2=atan2(y2-y1,x2-x1)

円弧の端点を選択すると、上記エラーとなり、途中点のみ選択したときは、問題なく作図されます。
それと、円の内側に作図する場合、"引出線と指示点の離れ"を入力すると、円の外側方向に引出線が延長されます。
・ツリー全体表示
<Mozilla/5.0 (Windows NT 6.0; rv:31.0) Gecko/20100101 Firefox/31.0@59.85.28.10>

未実行となります。
 oyaji  - 14/08/01(金) 17:44 -

引用なし
パスワード
   ▼kojimaさん:
大変 大変 お世話になってます。有難うございます。
私のやり方が悪いのか 未実行となってしまいます。
作っていただいた「円累進寸法1.rbその1」の後ろに「円累進寸法1.rbその2」を付け加え「円累進寸法1.rb」とし 又「円累進寸法2.rb」の後ろに「円累進寸法1.rbその2」を付け加え「円累進寸法2.rb」とし、それぞれの全角スペ-スを半角スペ-スに全て変換して保存したのですが、外変をやってみたのですが、未実行となります。batは前回RNさんに作っていただいたものをそのまま利用させていただいてます。
ご教授 お願いします。
・ツリー全体表示
<Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.5...@210.174.53.57>

円累進寸法1.rb その2
 kojima  - 14/08/01(金) 12:16 -

引用なし
パスワード
   puts $ly,$lc,"lt1",$tenc,"cc3",$moji
hp=[];by=[]
while ARGF.gets
    xy =split
    if xy[0] =~ /^hs/
        xy[1..-1].each{|item|by<<item.to_i}
    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

        kiten_x=hp[1][0]-x #寸法円作図位置指示点のx長
        kiten_y=hp[1][1]-y #寸法円作図位置指示点のy長
        kiten_xy=sqrt(kiten_x**2+kiten_y**2) #寸法円作図位置指示点までの距離
        arg=atan2(kiten_y,kiten_x) #実際の角度
        henkaku=arg-ziku_arg #実際の角度から軸角を引く

        #寸法円作図位置指示点を通る延長線のx座標
        kisen_x=hp[1][0]+kiten_xy*cos(arg)
        #寸法円作図位置指示点を通る延長線のy座標
        kisen_y=hp[1][1]+kiten_xy*sin(arg)

        #↓円の中心から寸法記入位置指示点までの直線と円の交点の座標値を出す
        zahyo=sen_en_zahyo([x,y,kisen_x,kisen_y],xy)
        #寸法円と対象円の半径の差
        d_r=hypot(hp[1][1]-zahyo[0][1],hp[1][0]-zahyo[0][0])

        l1=hypot(hp[1][1]-y,hp[1][0]-x) #寸法円作図位置までの距離
        l2=hypot(zahyo[0][1]-y,zahyo[0][0]-x) #寸法円作図位置までの距離
        d_r = -1*d_r if l1<l2 #寸法円作図位置が内側の場合は-値とする
        r2=r+d_r

        hen2=(r*hen+d_r)/r2 #寸法円の扁平率
        kiten_x=hp[2][0]-x #寸法起点のx長
        kiten_y=hp[2][1]-y #寸法起点のy長
        kiten_xy=sqrt(kiten_x**2+kiten_y**2) #中心から寸法起点までの距離
        arg=atan2(kiten_y,kiten_x) #寸法起点の実角度
        henkaku=arg-ziku_arg #寸法起点の実角度から軸角を引く
        #↓寸法起点の補正角度
        kiten_kakudo=atan2(kiten_xy*sin(henkaku)/hen,kiten_xy*cos(henkaku))

        $tuki = -1*$tuki if r2<r #寸法円作図位置が内側の場合は-値とする

        kisen_x=hp[2][0]+kiten_xy*cos(arg) #中心から寸法起点を通る延長線のx座標
        kisen_y=hp[2][1]+kiten_xy*sin(arg) #中心から寸法起点を通る延長線のy座標
        sun_en=[0,x,y,r2,xy[4],xy[5],hen2,xy[7]]#寸法円
        #↓中心から寸法起点までの直線と寸法円の交点の座標値をだす
        zahyo=sen_en_zahyo([x,y,kisen_x,kisen_y],sun_en)
        x1,y1=zahyo[0] #寸法起点の座標値
        arg=atan2(y1-y,x1-x) #寸法点位置(起点)の角度
        l=hypot(y1-y,x1-x) #寸法点位置(起点)までの距離
        henkaku=arg-ziku_arg #寸法点位置(起点)の角度から軸角を引く
        hosei_x=l*cos(henkaku) #寸法点位置(起点)のx長
        hosei_y=l*sin(henkaku) #寸法点位置(起点)のy長
        hosei_y2=hosei_y/hen2 #寸法点位置(起点)の補正y長(扁平率分を足す)
        hosei_arg=atan2(hosei_y2,hosei_x) #寸法点位置(起点)の補正角度

        enkotyo=0;kakudo1=hosei_arg
        2.upto(hp.size-1){|i|
            x1=hp[i][0]-x #寸法指示点のx長
            y1=hp[i][1]-y #寸法指示点のy長
            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) #寸法値の算出

            arg=atan2(y1,x1)#寸法指示点の実角度
            kisen_x=hp[i][0]+xy1*cos(arg) #寸法指示点を通る延長線のx座標
            kisen_y=hp[i][1]+xy1*sin(arg) #寸法指示点を通る延長線のy座標

            #↓寸法指示点を通る延長線と円の交点座標を出す
            zahyo1=sen_en_zahyo([x,y,kisen_x,kisen_y],xy)
            #↓寸法指示点を通る延長線と寸法円の交点座標を出す
            zahyo2=sen_en_zahyo([x,y,kisen_x,kisen_y],[0,x,y,r2,xy[4],xy[5],hen2,xy[7]])
            x1,y1=zahyo1[0] #寸法指示点を通る延長線と円の交点座標値
            x2,y2=zahyo2[0] #寸法指示点を通る延長線と寸法円の交点座標値

            arg2=atan2(y2-y1,x2-x1) #円の交点と寸法円の交点を結ぶ直線の角度
            r1_1=r+$cl*zusun #引出線の始点範囲円の長径
            r1_2=r*hen+$cl*zusun #引出線の始点範囲円の短径
            hen1=r1_2/r1_1 #引出線の始点範囲円の扁平率

            #↓寸法指示点を通る延長線と引出線の始点範囲円の交点座標を出す
            zahyo1=sen_en_zahyo([x,y,kisen_x,kisen_y],[0,x,y,r+$cl*zusun,xy[4],xy[5],hen1,xy[7]])
            r2_1=r2+$tuki*zusun #引出線の終点範囲円の長径
            r2_2=r2*hen2+$tuki*zusun #引出線の終点範囲円の短径
            hen2_2=r2_2/r2_1 #引出線の終点範囲円の扁平率
            #↓寸法指示点を通る延長線と引出線の終点範囲円の交点座標を出す
            zahyo2=sen_en_zahyo([x,y,kisen_x,kisen_y],[0,x,y,r2_1,xy[4],xy[5],hen2_2,xy[7]])
            x1_2,y1_2=zahyo1[0] #引出線の始点座標
            x2_2,y2_2=zahyo2[0] #引出線の終点座標
            puts "z3"
            sen(x1_2,y1_2,x2_2,y2_2) #引出線の作図

            arg=atan2(y2-y,x2-x) #寸法円の終点角度
            l=hypot(y2-y,x2-x) #寸法円の終点までの距離
            henkaku=arg-ziku_arg #寸法円の終点角度から軸角を引く
            hosei_x=l*cos(henkaku) #寸法円終点のx長
            hosei_y=l*sin(henkaku) #寸法円終点のy長
            hosei_y2=hosei_y/hen2 #寸法円終点の補正y長(扁平率分を足す)

            hosei_kakudo=atan2(hosei_y2,hosei_x)*360/(2*PI) #寸法円の補正終点角度
            hosei_kakudo1=kakudo1*360/(2*PI) #寸法円の始点角度(°)

            puts "z3"
            printf("ci %.11f %.11f %.11f %f %f %f %f\n",x,y,r2,hosei_kakudo1,hosei_kakudo,hen2,xy[7]) if i>2#寸法円の作図

            puts "z3"
            printf("pt %.11f %.11f\n",x2,y2) #寸法点の作図

            $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

            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) if i>2#寸法値の記入
            kakudo1=atan2(hosei_y2,hosei_x)
        }
    end
end
・ツリー全体表示
<Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0; SLCC1; .NET CL...@126.197.128.55>

円累進寸法1.rb その1
 kojima  - 14/08/01(金) 12:14 -

引用なし
パスワード
   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,450)
  addControl(VRStatic,'static1',"作図レイヤ",80,10,128,24,1342177282)
  addControl(VRStatic,'static2',"作図線色",88,42,120,24,1342177282)
  addControl(VRStatic,'static3',"引出線の突出寸法(図寸)",16,74,192,24,1342177282)
  addControl(VRStatic,'static4',"点色",16,106,184,24,1342177282)
  addControl(VRStatic,'static5',"文字と線の離れ(図寸)",16,138,192,24,1342177282)
  addControl(VRStatic,'static6',"書込文字種",16,170,192,24,1342177282)
  addControl(VRStatic,'static7',"小数点以下有効桁数",16,202,192,24,1342177282)
  addControl(VRStatic,'static8',"寸法単位 mm:0 m:1",16,234,192,24,1342177282)
  addControl(VRStatic,'static9',"引出線と指示点の離れ(図寸)",0,266,230,24,1342177282)

  addControl(VREdit,'edit1',"a",224,10,64,24,1342177408)
  addControl(VREdit,'edit2',"1",224,42,64,24,1342177408)
  addControl(VREdit,'edit3',"1",224,74,64,24,1342177408)
  addControl(VREdit,'edit4',"6",224,106,64,24,1342177408)
  addControl(VREdit,'edit5',"1",224,138,64,24,1342177408)
  addControl(VREdit,'edit6',"3",224,170,64,24,1342177408)
  addControl(VREdit,'edit7',"2",224,202,64,24,1342177408)
  addControl(VREdit,'edit8',"0",224,234,64,24,1342177408)
  addControl(VREdit,'edit9',"0",224,266,64,24,1342177408)
    addControl(VRCheckbox,'checkBox1',"3桁ごとの区切りを入れる",70,315,224,24,1342177283)
    addControl(VRCheckbox,'checkBox2',"単位を表示",70,340,224,24,1342177283)
  addControl(VRButton,'button1',"設定完了",32,370,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,@edit9]
    $edit.each{|item|item.setFont($_form1_fonts[0])}
    date=[]
    begin
        open("属性設定.txt","r"){|f|
            while line=f.gets
                date<<line.chop
            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
        $cl=@edit9.text.to_f
        @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
#小数点以下3桁にして返す
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
#sを3桁毎に,で区切る
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
#線と円の交点角度の配列を返す
def sen_en_kakudo(sen,en)
    kakudo=[]

    if en.size==4
        x=en[1]
        y=en[2]
        r=en[3]
        en[4]=0
        en[5]=0
        en[6]=1
        en[7]=0
    else
        x=en[1]
        y=en[2]
        r=en[3]
    end

    hen=en[6]
    ziku=en[7]
    ziku_arg=ziku*2*PI/360

    sen_x=sen[2]-sen[0]
    sen_y=sen[3]-sen[1]
    sen_kakudo1=atan2(sen_y,sen_x)

    en_x1=x-sen[0]
    en_y1=y-sen[1]
    en_x2=sen[2]-x
    en_y2=sen[3]-y
    en_xy1=sqrt(en_x1**2+en_y1**2)
    en_xy2=sqrt(en_x2**2+en_y2**2)
    en_kakudo1=atan2(en_y1,en_x1)
    en_kakudo2=atan2(en_y2,en_x2)

    sen_x1=x-en_xy1*cos(en_kakudo1-ziku_arg)
    sen_y1=y-en_xy1*sin(en_kakudo1-ziku_arg)/hen
    sen_x2=x+en_xy2*cos(en_kakudo2-ziku_arg)
    sen_y2=y+en_xy2*sin(en_kakudo2-ziku_arg)/hen

    if sen_x1>sen_x2
        sen_x1,sen_x2=sen_x2,sen_x1
        sen_y1,sen_y2=sen_y2,sen_y1
    elsif sen_x1==sen_x2
        if sen_y1>sen_y2
            sen_y1,sen_y2=sen_y2,sen_y1
        end
    end

    senx=(sen_x2-sen_x1)
    seny=(sen_y2-sen_y1)
    sen_kakudo2=atan2(seny,senx)

    en_kakudo2_1=atan2((y-sen_y1),x-sen_x1)
    en_xy2_1=sqrt((y-sen_y1)**2+(x-sen_x1)**2)
    en_xy2_2=sqrt((sen_y2-y)**2+(sen_x2-x)**2)
    henkaku=sen_kakudo2-en_kakudo2_1
    y1=en_xy2_1*sin(henkaku)

    if r>y1.abs

        x1=sqrt(r**2-y1**2)
        kakudo1=atan2(y1,-x1)
        kakudo2=atan2(y1,x1)

        if en_xy2_1>r && (sen_x1<en[1]+r*
            cos(kakudo1+sen_kakudo2) &&sen_x2>en[1]+r*
            cos(kakudo1+sen_kakudo2) or
            sen_y1<en[2]+r*
            sin(kakudo1+sen_kakudo2) &&sen_y2>en[2]+r*
            sin(kakudo1+sen_kakudo2))

            kakudo<<(kakudo1+sen_kakudo2)*360/(2*PI)
        end

        if en_xy2_2>r && (sen_x2>en[1]+r*
            cos(kakudo2+sen_kakudo2) &&sen_x1<en[1]+r*
            cos(kakudo2+sen_kakudo2) or
            sen_y2>en[2]+r*
            sin(kakudo2+sen_kakudo2) &&
            sen_y1<en[2]+r*sin(kakudo2+sen_kakudo2))

            kakudo<<(kakudo2+sen_kakudo2)*360/(2*PI)
        end
    end

    if kakudo.size!=0

        kakudo.collect!{|item|if item<0
                        360+item
                    else
                        item
                    end}

        kakudo.delete_if{|item|if en[4]+en[7]<en[5]+en[7]
                        en[4]+en[7]>item && en[5]+en[7]>item or
                        en[4]+en[7]<item && en[5]+en[7]<item
                    elsif en[4]+en[7]>en[5]+en[7]
                        en[4]+en[7]>item && en[5]+en[7]<item
                    end}

        return kakudo
    end
end

#線と円の交点座標の配列を返す(扁平率・軸角考慮)
def sen_en_zahyo(sen,en)

    zahyo=[]

    if en.size==4
        x=en[1]
        y=en[2]
        r=en[3]
        en[4]=0
        en[5]=0
        en[6]=1
        en[7]=0
    else
        x=en[1]
        y=en[2]
        r=en[3]
    end
    hen=en[6]
    ziku=en[7]

    kakudo=sen_en_kakudo(sen,en)

    if kakudo
        kakudo.each{|item| rajian=item*2*PI/360
            ziku_arg=ziku*2*PI/360
            ax=r*cos(rajian)
            ay=r*sin(rajian)*hen
            axy=sqrt(ax**2+ay**2)
            arg=atan2(ay,ax)

            axt=x+axy*cos(arg+ziku_arg)
            ayt=y+axy*sin(arg+ziku_arg)
            zahyo<<[axt,ayt]
        }
    end

    return zahyo
end
・ツリー全体表示
<Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0; SLCC1; .NET CL...@126.197.128.55>

円累進寸法2.rb
 kojima  - 14/08/01(金) 12:12 -

引用なし
パスワード
   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,450)
  addControl(VRStatic,'static1',"作図レイヤ",80,10,128,24,1342177282)
  addControl(VRStatic,'static2',"作図線色",88,42,120,24,1342177282)
  addControl(VRStatic,'static3',"引出線の突出寸法(図寸)",16,74,192,24,1342177282)
  addControl(VRStatic,'static4',"点色",16,106,184,24,1342177282)
  addControl(VRStatic,'static5',"文字と線の離れ(図寸)",16,138,192,24,1342177282)
  addControl(VRStatic,'static6',"書込文字種",16,170,192,24,1342177282)
  addControl(VRStatic,'static7',"小数点以下有効桁数",16,202,192,24,1342177282)
  addControl(VRStatic,'static8',"寸法単位 mm:0 m:1",16,234,192,24,1342177282)
  addControl(VRStatic,'static9',"引出線と指示点の離れ(図寸)",0,266,230,24,1342177282)

  addControl(VREdit,'edit1',"a",224,10,64,24,1342177408)
  addControl(VREdit,'edit2',"1",224,42,64,24,1342177408)
  addControl(VREdit,'edit3',"1",224,74,64,24,1342177408)
  addControl(VREdit,'edit4',"6",224,106,64,24,1342177408)
  addControl(VREdit,'edit5',"1",224,138,64,24,1342177408)
  addControl(VREdit,'edit6',"3",224,170,64,24,1342177408)
  addControl(VREdit,'edit7',"2",224,202,64,24,1342177408)
  addControl(VREdit,'edit8',"0",224,234,64,24,1342177408)
  addControl(VREdit,'edit9',"0",224,266,64,24,1342177408)
  addControl(VRCheckbox,'checkBox1',"3桁ごとの区切りを入れる",70,315,224,24,1342177283)
  addControl(VRCheckbox,'checkBox2',"単位を表示",70,340,224,24,1342177283)
  addControl(VRButton,'button1',"設定完了",32,370,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,@edit9]
    $edit.each{|item|item.setFont($_form1_fonts[0])}
    date=[]
    begin
        open("属性設定.txt","r"){|f|
            while line=f.gets
                date<<line.chop
            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
        $cl=@edit9.text.to_f
        @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<<item.to_i}
    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
        2.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+$cl*zusun*cos(arg2)
            y1_2=y1+$cl*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]) if i>2
                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) if i>2
            kakudo1=kakudo
        }
    end
end
・ツリー全体表示
<Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0; SLCC1; .NET CL...@126.197.128.55>

Re(1):jww7.11+windows8.1で作図範囲が自動で固定...
 k  - 14/07/31(木) 13:08 -

引用なし
パスワード
   >3分に一度作図範囲が固定されます。そのたび解除してます。

作図範囲が固定という現象がイメージできないのでエスパーだが
自動保存の間隔が3分になっていて、データ量の大きい図面を
弄ってると 自動保存してるときに画面が固まったようになる現象、、
ではないだろうか。
もしそうなら対症療法として保存間隔を広くすれば解消されるが。
あと、パソコンのリセットとjwwとの関係はないと思う。
自分はその組み合わせで問題なく使ってるので。
・ツリー全体表示
<Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko@180.9.112.90>

Re(1):線
 三五六  - 14/07/30(水) 12:58 -

引用なし
パスワード
   ▼テットさん:
こんにちは。

>線を分度秒で角度線は引けますか

度分秒指定。
「傾き」の欄に、「10゚10'10"」と入れると、
10度10分10秒の意味になります。
但し、10゚10'10"は記号入力が面倒なので、代替記号が使えます。
 1.10@@10@10 ←フルキーボード向き
 2.10**10*10 ←テンキー使用向き

例)傾きの欄に
 10@@10@10と入れて、Enterすると、
 10゚10'10"と、表示が変わり、さらにEnterすると、
 10.16944444と変わります。

三五六
・ツリー全体表示
<Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101 Firefox/31.0@61.119.23.139>

 テット  - 14/07/30(水) 9:13 -

引用なし
パスワード
   線を分度秒で角度線は引けますか
・ツリー全体表示
<Mozilla/5.0 (Windows NT 6.1; Trident/7.0; MDDRJS; rv:11.0) like Gecko@153.186.18.254>

Re(2):ハッチの範囲選択
 三五六  - 14/07/28(月) 19:25 -

引用なし
パスワード
   ▼KEさん:
こんにちは。

>ハッチ > 範囲選択 > 左・左クリックで選択 > 選択確定
>> 線種・角度・ピッチ設定 > 実行

ちょっぴり期待して確認して見ましたが、希望と違うようです。

例えば、単純な閉図形ではなくて、4本の線で描いた、井桁(中央に四角形、各コーナー交差)の四角形部分にハッチを掛けるとき、現状jwwでは、
・四角形を成す4つの辺を順に左クリックしていき、
・最後に、最初にクリックした辺(選択色で波線表示)をクリック。
・実行
という手順だと思いますが、
JWCでは、左回りに2番めの線をクリックした後に、「左回り自動」のボタンが出現し
最内周の辺を自動選択してくれる機能がありました。
例示した、4本程度図形では、さほど恩恵はありませんが、私もJWCの時は多用していました。(もっともJWCには、右クリックによる連続線選択はありませんでした。jwwになってからは、連続線選択できるケースは使用しています。)

三五六
・ツリー全体表示
<Mozilla/5.0 (X11; Linux i686; rv:30.0) Gecko/20100101 Firefox/30.0@180.28.238.35>

Re(1):ハッチの範囲選択
 KE  - 14/07/28(月) 18:04 -

引用なし
パスワード
   ▼JWW乗り換え初心者さん:
>JWCではハッチ操作の時に自動選択機能があり大変便利でしたが
>JWWでは左クリックで1線ずつの選択か、右クリックの一括選択のみなようです。
>一部が閉じてない範囲や交わりが複雑な時はい線ずつの選択になり時間がかかります。
>ハッチ範囲選択で自動選択の様な使い方はないのでしょうか?
>JWC専用PCが壊れWIN7のJWWに変更し作図速度が遅くなったようで悩んでいます。
>よろしくお願いします。


ハッチ > 範囲選択 > 左・左クリックで選択 > 選択確定
> 線種・角度・ピッチ設定 > 実行

この操作ではありませんか?
・ツリー全体表示
<Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)@153.190.80.248>

Re(2):ハッチの範囲選択
 JWW乗り換え初心者  - 14/07/28(月) 17:23 -

引用なし
パスワード
   やはり下準備が大事なのですね。
今度からハッチ専用に作図してみます、
有り難う御座いました
・ツリー全体表示
<Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0@153.152.151.59>

Re(1):ハッチの範囲選択
 三五六  - 14/07/28(月) 16:48 -

引用なし
パスワード
   ▼JWW乗り換え初心者さん:
こんにちは。

>JWCではハッチ操作の時に自動選択機能があり大変便利でしたが
>JWWでは左クリックで1線ずつの選択か、右クリックの一括選択のみなようです。
>一部が閉じてない範囲や交わりが複雑な時はい線ずつの選択になり時間がかかります。
>ハッチ範囲選択で自動選択の様な使い方はないのでしょうか?
>JWC専用PCが壊れWIN7のJWWに変更し作図速度が遅くなったようで悩んでいます。
>よろしくお願いします。

jwwが、弱い点の一つです、左回り自動選択機能。
何度か、要望的なものは出ていたように思うのですが、jwwへの実装は見送られているようです。

現時点での、対応策としては、以後何度もハッチで範囲選択するのであれば、
右クリックの一括選択できるように、補助線で、閉図形を描いておくぐらいしか無いかと。

三五六
・ツリー全体表示
<Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101 Firefox/31.0@61.119.23.139>

ハッチの範囲選択
 JWW乗り換え初心者  - 14/07/28(月) 16:35 -

引用なし
パスワード
   JWCではハッチ操作の時に自動選択機能があり大変便利でしたが
JWWでは左クリックで1線ずつの選択か、右クリックの一括選択のみなようです。
一部が閉じてない範囲や交わりが複雑な時はい線ずつの選択になり時間がかかります。
ハッチ範囲選択で自動選択の様な使い方はないのでしょうか?
JWC専用PCが壊れWIN7のJWWに変更し作図速度が遅くなったようで悩んでいます。
よろしくお願いします。
・ツリー全体表示
<Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0@153.152.151.59>

Re: jww7.11+windows8.1で作図範囲が自動で固定さ...
 外注図面屋 E-MAIL  - 14/07/27(日) 21:17 -

引用なし
パスワード
   nokoさん、こんにちは。

4ギガ2枚にしてみてはどうでしょう?


-- CMN v0.61aβ --
・ツリー全体表示
<Mozilla/4.0(CMN)@202.81.80.37>

Win8.1で新規作成
 Win8.1初心者 E-MAIL  - 14/07/27(日) 17:36 -

引用なし
パスワード
   Win8.1で新規図面を作成し名前を付けて保存やDXFで保存を選択しても実行されませません、仕方なく終了を選択すると保存することができますが、作図途中でとりあえず保存をしたい時に手間がかかり困っています。何か対処方法をあれば教えてください。
・ツリー全体表示
<Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko@121.81.226.124>

Re(1):jww7.11+windows8.1で作図範囲が自動で固定...
 P  - 14/07/27(日) 7:27 -

引用なし
パスワード
   ▼nokoさん:
>何かやらかしたのでしょうか?。
>
>3分に一度作図範囲が固定されます。そのたび解除してます。
>メモリーを4GBを3枚指すと頻繁にパソコンがリセットされます。windows8.1、64Bitが問題なのでしょうか?。
>
>cpu i7 4770
>メモリー DDR3 4GB×3
>windows8.1 64bit

3分に一度作図範囲が固定されるという現象の原因は分かりませんが、頻繁にパソコンがリセット(再起動という意味でしょうか?)されるというのは、マザーボートとメモリーの相性が悪いかメモリーが壊れているかじゃないですか?
どんなPCを使っているのか分かりませんが、購入元に相談した方が解決するのが早いと思います。

パーツ自体に問題が無いのであれば、OSの再インストールした方が良いかもしれません。
・ツリー全体表示
<Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko@202.248.88.75>

jww7.11+windows8.1で作図範囲が自動で固定される。
 noko E-MAIL  - 14/07/27(日) 4:39 -

引用なし
パスワード
   何かやらかしたのでしょうか?。

3分に一度作図範囲が固定されます。そのたび解除してます。
メモリーを4GBを3枚指すと頻繁にパソコンがリセットされます。windows8.1、64Bitが問題なのでしょうか?。

cpu i7 4770
メモリー DDR3 4GB×3
windows8.1 64bit
・ツリー全体表示
<Mozilla/5.0 (Linux; Android 4.4.2; SC-01F Build/KOT49H) AppleWebKit/537.36 (KH...@49.98.74.105>

円累進寸法.rbの引き出し線について
 oyaji  - 14/07/24(木) 17:46 -

引用なし
パスワード
   先日 kojima様の「円累進寸法.rb」をいただき、kojima様 RN様には お世話になり大変感謝しております。
1.引き出し線のことなのですが、最初の起点0の引き出し線が書き出されないので すが、書き出すにはどうすればよいでしょうか? 
2.点指示終了で属性設定画面が出ます。 その中で
 引き出し線の突出寸法(図寸)=指示点からの離れ となりますが、指示点からの 離れ寸法(図寸)も設定できるようにならないでしょうか。

 わがままをいいましてすいません。
 宜しくお願いします。
・ツリー全体表示
<Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.5...@220.211.117.247>

Re(2):コントロールバーの?表示
 かんとくさん  - 14/07/23(水) 9:06 -

引用なし
パスワード
   koboさん
有難う御座います。
初めてこのサイトを利用したのですが、
こんな早く的確に
助けて頂けるとは、感動です。
本当に助かりました。
有難う御座いました。
・ツリー全体表示
<Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko@60.37.221.246>

Re2: Re2: 補助線を非表示にしたいけど・・
 外注図面屋 E-MAIL  - 14/07/22(火) 19:07 -

引用なし
パスワード
   jkkさん、こんにちは。

うーーん、と考えたのですが、線本数に応じてJoneさんとゆうさんの方法を使い分ければいいかもしれません。
線本数が少なくて軽い場合だとJoneさんの補助線を作図枠外に移動させる方法を使い、
線本数が多くて重い場合、補助線ファイルを別途作って一時的に補助線を消してやれば効果的だと思いました。

-- CMN v0.61aβ --
・ツリー全体表示
<Mozilla/4.0(CMN)@202.81.80.37>

  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃  ┃ホーム  
9 / 50 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:   
468503
(SS)C-BOARD v3.8 is Free
Jw_cad Copyright (C)1997-2009 Jiro Shimizu & Yoshifumi Tanaka