Indexへ
(21416)//【21417】→(21418)
------------------------
【タイトル】角度寸法線の文字の補正
【記事番号】 21417 (*)
【 日時 】07/06/01 11:34
【 発言者 】ひで

お世話になっています。
前から気になっていたのですが、角度の寸法を書くと、
下向きの寸法の場合、寸法値(例 30゜)が、下向きになってしまいます。
現状、文字コマンドで角度に+180゜して配置しなおしております。
設定、または外変(角度寸法の修正又は記載ができるもの)はないでしょうか?


Indexへ
(21417)←【21418】→(21434)
------------------------
【タイトル】Re(1):角度寸法線の文字の補正
【記事番号】 21418 (21417)
【 日時 】07/06/01 11:37
【 発言者 】ひでと

申し訳ありません。投稿者の名前が欠けていました。
「ひでと」です。


Indexへ
(21418)←【21434】→(21435)
------------------------
【タイトル】Re(1):角度寸法線の文字の補正
【記事番号】 21434 (21417)
【 日時 】07/06/01 19:43
【 発言者 】kubo

▼ひでとさん:
>前から気になっていたのですが、角度の寸法を書くと、
>下向きの寸法の場合、寸法値(例 30゜)が、下向きになってしまいます。
>現状、文字コマンドで角度に+180゜して配置しなおしております。
>設定、または外変(角度寸法の修正又は記載ができるもの)はないでしょうか?

設定ではできないように思いますが。


外変なら文字一括回転のものを使えばよいと思います。
検索したら下記がありました。

http://fox.zero.ad.jp/~zap01296/jww/

外変#10 ◆文字 一括 回転◆


Jw_cad の機能で回転させるのなら、+180°しなくても

文字移動のコマンドで文字を選択したとき、
設定>角度取得>X軸角度 で、
   (クロックメニューなら右PM3時)
角度寸法線の下側の実点を基点に、上側の実点の角度を取得すれば
180°回転できます。


Indexへ
(21434)←【21435】→(21457)
------------------------
【タイトル】Re(1):角度寸法線の文字の補正
【記事番号】 21435 (21417)
【 日時 】07/06/01 22:34
【 発言者 】おっとー

▼ひでさん:
>お世話になっています。
>前から気になっていたのですが、角度の寸法を書くと、
>下向きの寸法の場合、寸法値(例 30゜)が、下向きになってしまいます。
>現状、文字コマンドで角度に+180゜して配置しなおしております。
>設定、または外変(角度寸法の修正又は記載ができるもの)はないでしょうか?

こんばんは
jwwの寸法設定 及び 環境ファイルの設定
どちらにも、そのような設定はありません。
数が少ないのであれば、ひでさんの行っている方法が、無難だと思います。
数が多くなると、外部変形の「文字 一括 回転」を使われた方が良いのですが
範囲選択する時に、下向きに寸法値が、書かれているものを選択しないと
いけないことと、寸法値(角度)の桁が多いと、寸法線と重なってしまいます
ので、結局、文字位置を修正しないといけないと思います。
私も、1つずつ行っています。設定で出来ること期待しましょう。


Indexへ
(21435)←【21457】→(21458)
------------------------
【タイトル】Re(2):角度寸法線の文字の補正
【記事番号】 21457 (21435)
【 日時 】07/06/04 12:27
【 発言者 】コジマ

▼おっとーさん:
>範囲選択する時に、下向きに寸法値が、書かれているものを選択しないと
>いけないことと、寸法値(角度)の桁が多いと、寸法線と重なってしまいます
>ので、結局、文字位置を修正しないといけないと思います。

snap_kinさんの外変は、文字基点(左下)が回転軸になるのでそうなりますね。

以下は、以前にこの掲示板で公開した外変です(文字中心が回転軸)

◎バッチファイル(文字回転.bat)

@REM 文字を一括回転
@echo off
REM #jww
REM #cd
REM #zz
REM #zc
REM #h3
REM #hc文字を範囲選択してください
REM #c回転角度 無指定:0/_/a
REM #bz
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks 文字回転.rb temp.txt %1 > jwc_temp.txt


◎スクリプトファイル(文字回転.rb)

include Math
kakudo=180
arg=kakudo*2*PI/360

def moji_tyuten_zahyo(x,y,moji_x,moji_y,cc,moji_h,zusun)

    moji_l=sqrt(moji_x**2+moji_y**2)
    moji_arg=atan2(moji_y,moji_x)

    if cc=="cc0"
        tyuten_x=x+moji_l/2*cos(moji_arg)-moji_h*zusun/2*sin(moji_arg)
        tyuten_y=y+moji_l/2*sin(moji_arg)+moji_h*zusun/2*cos(moji_arg)
    elsif cc=="cc1"
        tyuten_x=x-moji_h*zusun/2*sin(moji_arg)
        tyuten_y=y+moji_h*zusun/2*cos(moji_arg)
    elsif cc=="cc2"
        tyuten_x=x-moji_l/2*cos(moji_arg)-moji_h*zusun/2*sin(moji_arg)
        tyuten_y=y-moji_l/2*sin(moji_arg)+moji_h*zusun/2*cos(moji_arg)
    elsif cc=="cc3"
        tyuten_x=x+moji_l/2*cos(moji_arg)
        tyuten_y=y+moji_l/2*sin(moji_arg)
    elsif cc=="cc4"
        tyuten_x=x
        tyuten_y=y
    elsif cc=="cc5"
        tyuten_x=x-moji_l/2*cos(moji_arg)
        tyuten_y=y-moji_l/2*sin(moji_arg)
    elsif cc=="cc6"
        tyuten_x=x+moji_l/2*cos(moji_arg)+moji_h*zusun/2*sin(moji_arg)
        tyuten_y=y+moji_l/2*sin(moji_arg)-moji_h*zusun/2*cos(moji_arg)
    elsif cc=="cc7"
        tyuten_x=x+moji_h*zusun/2*sin(moji_arg)
        tyuten_y=y-moji_h*zusun/2*cos(moji_arg)
    elsif cc=="cc8"
        tyuten_x=x-moji_l/2*cos(moji_arg)+moji_h*zusun/2*sin(moji_arg)
        tyuten_y=y-moji_l/2*sin(moji_arg)-moji_h*zusun/2*cos(moji_arg)
    end
    return [tyuten_x,tyuten_y]
end

def moji_kiten_zahyo(x,y,moji_x,moji_y,cc,moji_h,zusun)

    moji_l=sqrt(moji_x**2+moji_y**2)
    moji_arg=atan2(moji_y,moji_x)

    if cc=="cc0"
        kiten_x=x-moji_l/2*cos(moji_arg)+moji_h*zusun/2*sin(moji_arg)
        kiten_y=y-moji_l/2*sin(moji_arg)-moji_h*zusun/2*cos(moji_arg)
    elsif cc=="cc1"
        kiten_x=x+moji_h*zusun/2*sin(moji_arg)
        kiten_y=y-moji_h*zusun/2*cos(moji_arg)
    elsif cc=="cc2"
        kiten_x=x+moji_l/2*cos(moji_arg)+moji_h*zusun/2*sin(moji_arg)
        kiten_y=y+moji_l/2*sin(moji_arg)-moji_h*zusun/2*cos(moji_arg)
    elsif cc=="cc3"
        kiten_x=x-moji_l/2*cos(moji_arg)
        kiten_y=y-moji_l/2*sin(moji_arg)
    elsif cc=="cc4"
        kiten_x=x
        kiten_y=y
    elsif cc=="cc5"
        kiten_x=x+moji_l/2*cos(moji_arg)
        kiten_y=y+moji_l/2*sin(moji_arg)
    elsif cc=="cc6"
        kiten_x=x-moji_l/2*cos(moji_arg)-moji_h*zusun/2*sin(moji_arg)
        kiten_y=y-moji_l/2*sin(moji_arg)+moji_h*zusun/2*cos(moji_arg)
    elsif cc=="cc7"
        kiten_x=x-moji_h*zusun/2*sin(moji_arg)
        kiten_y=y+moji_h*zusun/2*cos(moji_arg)
    elsif cc=="cc8"
        kiten_x=x+moji_l/2*cos(moji_arg)-moji_h*zusun/2*sin(moji_arg)
        kiten_y=y+moji_l/2*sin(moji_arg)+moji_h*zusun/2*cos(moji_arg)
    end
    return [kiten_x,kiten_y]
end

puts("hd")

hcw=[];hch=[];hcd=[];by=[]
while ARGF.gets
    xy=split
    if xy[0]=~/^hq/
    elsif xy[0]=~/^hs/
        xy[1..-1].each{|item|by<    elsif xy[0]=~/^lg/
        zusun=by[(xy[0][2,1]).hex]
        print $_
    elsif xy[0]=~/^hcw/
        xy.each{|item|hcw<    elsif xy[0]=~/^hch/
        xy.each{|item|hch<    elsif xy[0]=~/^hcd/
        xy.each{|item|hcd<    elsif xy[0]=~/^cn\d$/
        cn=xy
        print $_
    elsif xy[0]=~/^cc\d$/
        print $_
        cc=xy[0]
    elsif xy[0]=~/^\d|^-/
        print $_
        xy.collect!{|item|item.to_f}
        if xy[0]>xy[2]
            xy[0],xy[2],xy[1],xy[3]=xy[2],xy[0],xy[3],xy[1]
        elsif xy[0]==xy[2]
            xy[1],xy[3]=xy[3],xy[1] if xy[1]>xy[3]
        end
        x1,y1,x2,y2=xy[0],xy[1],xy[2],xy[3]

    elsif xy[0]=~/^ch|^cs/
        x=xy[1].to_f
        y=xy[2].to_f
        moji_x=xy[3].to_f
        moji_y=xy[4].to_f
        moji_l=sqrt(moji_y**2+moji_x**2)
        moji_arg=atan2(moji_y,moji_x)
        if $_ =~/\"/
            moji=$'.chomp
        end
        if cn.size==1
            moji_w=hcw[cn[0][2,1].to_i]
            moji_h=hch[cn[0][2,1].to_i]
            moji_d=hcd[cn[0][2,1].to_i]
        else
            moji_w=cn[1].to_f
            moji_h=cn[2].to_f
            moji_d=cn[3].to_f
        end
        tyuten=moji_tyuten_zahyo(x,y,moji_x,moji_y,cc,moji_h,zusun)
        senx,seny=x2-x1,y2-y1
        sen_arg=atan2(seny,senx)

        sen_moji_x=tyuten[0]-x1
        sen_moji_y=tyuten[1]-y1
        sen_moji_l=sqrt(sen_moji_x**2+sen_moji_y**2)
        sen_moji_arg=atan2(sen_moji_y,sen_moji_x)
        henkaku=sen_moji_arg-sen_arg

        tyuten_x2=x1+sen_moji_l*cos(sen_arg-henkaku)
        tyuten_y2=y1+sen_moji_l*sin(sen_arg-henkaku)


        kiten=moji_kiten_zahyo(tyuten_x2,tyuten_y2,moji_x,moji_y,cc,moji_h,zusun)

        sen_moji_x=kiten[0]-tyuten_x2
        sen_moji_y=kiten[1]-tyuten_y2
        sen_moji_l=sqrt(sen_moji_x**2+sen_moji_y**2)
        sen_moji_arg=atan2(sen_moji_y,sen_moji_x)


        x=tyuten_x2+sen_moji_l*cos(sen_moji_arg+arg)
        y=tyuten_y2+sen_moji_l*sin(sen_moji_arg+arg)
        moji_x=moji_l*cos(moji_arg+arg)
        moji_y=moji_l*sin(moji_arg+arg)
        printf("ch %.11f %.11f %.11f %.11f \"%s\n",x,y,moji_x,moji_y,moji)

    else
        print $_
    end
end


Indexへ
(21457)←【21458】→(21460)
------------------------
【タイトル】Re(3):訂正
【記事番号】 21458 (21457)
【 日時 】07/06/04 12:49
【 発言者 】コジマ

>▼おっとーさん:
>>範囲選択する時に、下向きに寸法値が、書かれているものを選択しないと
>>いけないことと、寸法値(角度)の桁が多いと、寸法線と重なってしまいます
>>ので、結局、文字位置を修正しないといけないと思います。
>

全く別の外変を送ってしまいました、以下が本物です。

◎バッチファイル(文字回転.bat)

@REM 文字を一括回転
@echo off
REM #jww
REM #cd
REM #zz
REM #zc
REM #h3
REM #hc文字を範囲選択してください
REM #c回転角度 無指定:0/_/a
REM #bz
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks 文字回転.rb temp.txt %1 > jwc_temp.txt


◎スクリプトファイル(文字回転.rb)

include Math
kakudo=0

while ARGV.size>1
    case argument=ARGV.pop
        when /\/a/
            kakudo=argument[2..-1].to_f
        end
end

arg=kakudo*2*PI/360

puts("hd","bz")

hcw=[];hch=[];hcd=[]
while ARGF.gets
    xy=split
    if xy[0]=~/^hq/
    elsif xy[0]=~/^hcw/
        xy.each{|item|hcw<    elsif xy[0]=~/^hch/
        xy.each{|item|hch<    elsif xy[0]=~/^hcd/
        xy.each{|item|hcd<    elsif xy[0]=~/^cn\d$/
        cn=xy
        print $_
    elsif xy[0]=~/^cc\d$/
        print $_
        cc=xy[0]
    elsif xy[0]=~/^c[hvsroptkz2]/
        x=xy[1].to_f
        y=xy[2].to_f
        moji_x=xy[3].to_f
        moji_y=xy[4].to_f
        moji_l=sqrt(xy[3].to_f**2+xy[4].to_f**2)
        moji_arg=atan2(xy[4].to_f,xy[3].to_f)

        if $_ =~/\"/
            moji=$'.chomp
        end
        if cn.size==1
            moji_w=hcw[cn[0][2,1].to_i]
            moji_h=hch[cn[0][2,1].to_i]
            moji_d=hcd[cn[0][2,1].to_i]
        else
            moji_w=cn[1].to_f
            moji_h=cn[2].to_f
            moji_d=cn[3].to_f
        end

        if cc=="cc0"
            kiten_x=x+moji_l/2*cos(moji_arg)-moji_h/2*sin(moji_arg)
            kiten_y=y+moji_l/2*sin(moji_arg)+moji_h/2*cos(moji_arg)
        elsif cc=="cc1"
            kiten_x=x-moji_h/2*sin(moji_arg)
            kiten_y=y+moji_h/2*cos(moji_arg)
        elsif cc=="cc2"
            kiten_x=x-moji_l/2*cos(moji_arg)-moji_h/2*sin(moji_arg)
            kiten_y=y-moji_l/2*sin(moji_arg)+moji_h/2*cos(moji_arg)
        elsif cc=="cc3"
            kiten_x=x+moji_l/2*cos(moji_arg)
            kiten_y=y+moji_l/2*sin(moji_arg)
        elsif cc=="cc4"
            kiten_x=x
            kiten_y=y
        elsif cc=="cc5"
            kiten_x=x-moji_l/2*cos(moji_arg)
            kiten_y=y-moji_l/2*sin(moji_arg)
        elsif cc=="cc6"
            kiten_x=x+moji_l/2*cos(moji_arg)+moji_h/2*sin(moji_arg)
            kiten_y=y+moji_l/2*sin(moji_arg)-moji_h/2*cos(moji_arg)
        elsif cc=="cc7"
            kiten_x=x+moji_h/2*sin(moji_arg)
            kiten_y=y-moji_h/2*cos(moji_arg)
        elsif cc=="cc8"
            kiten_x=x-moji_l/2*cos(moji_arg)+moji_h/2*sin(moji_arg)
            kiten_y=y-moji_l/2*sin(moji_arg)-moji_h/2*cos(moji_arg)
        end
        xx=x-kiten_x
        yy=y-kiten_y
        l=sqrt(xx**2+yy**2)
        kiten_arg=atan2(yy,xx)

        x=kiten_x+l*cos(kiten_arg+arg)
        y=kiten_y+l*sin(kiten_arg+arg)
        moji_x=moji_l*cos(moji_arg+arg)
        moji_y=moji_l*sin(moji_arg+arg)

        printf("ch %.11f %.11f %.11f %.11f \"%s\n",x,y,moji_x,moji_y,moji)
    else
        print $_
    end
end


Indexへ
(21458)←【21460】→(21462)
------------------------
【タイトル】Re(4):ありがとうございます。
【記事番号】 21460 (21458)
【 日時 】07/06/04 13:16
【 発言者 】おっとー

▼コジマさん:

いつも、コジマさんには、お世話になっております。
以前にも、教えてもらった方法で作ってみるのですが、うまく動いてくれません。
私の外変の知識不足で、間違っている所が、わからなくて困っています。
基本から、勉強していきたいと思います。(勉強するのに、いい本、HPは
あったら教えて下さい)
ありがとうございます。

>>>範囲選択する時に、下向きに寸法値が、書かれているものを選択しないと
>>>いけないことと、寸法値(角度)の桁が多いと、寸法線と重なってしまいます
>>>ので、結局、文字位置を修正しないといけないと思います。
>>
>
>全く別の外変を送ってしまいました、以下が本物です。
>
>◎バッチファイル(文字回転.bat)
>
>@REM 文字を一括回転
>@echo off
>REM #jww
>REM #cd
>REM #zz
>REM #zc
>REM #h3
>REM #hc文字を範囲選択してください
>REM #c回転角度 無指定:0/_/a
>REM #bz
>REM #e
>copy jwc_temp.txt temp.txt > nul
>ruby -Ks 文字回転.rb temp.txt %1 > jwc_temp.txt
>
>
>◎スクリプトファイル(文字回転.rb)
>
>include Math
>kakudo=0
>
>while ARGV.size>1
>    case argument=ARGV.pop
>        when /\/a/
>            kakudo=argument[2..-1].to_f
>        end
>end
>
>arg=kakudo*2*PI/360
>
>puts("hd","bz")
>
>hcw=[];hch=[];hcd=[]
>while ARGF.gets
>    xy=split
>    if xy[0]=~/^hq/
>    elsif xy[0]=~/^hcw/
>        xy.each{|item|hcw<>    elsif xy[0]=~/^hch/
>        xy.each{|item|hch<>    elsif xy[0]=~/^hcd/
>        xy.each{|item|hcd<>    elsif xy[0]=~/^cn\d$/
>        cn=xy
>        print $_
>    elsif xy[0]=~/^cc\d$/
>        print $_
>        cc=xy[0]
>    elsif xy[0]=~/^c[hvsroptkz2]/
>        x=xy[1].to_f
>        y=xy[2].to_f
>        moji_x=xy[3].to_f
>        moji_y=xy[4].to_f
>        moji_l=sqrt(xy[3].to_f**2+xy[4].to_f**2)
>        moji_arg=atan2(xy[4].to_f,xy[3].to_f)
>
>        if $_ =~/\"/
>            moji=$'.chomp
>        end
>        if cn.size==1
>            moji_w=hcw[cn[0][2,1].to_i]
>            moji_h=hch[cn[0][2,1].to_i]
>            moji_d=hcd[cn[0][2,1].to_i]
>        else
>            moji_w=cn[1].to_f
>            moji_h=cn[2].to_f
>            moji_d=cn[3].to_f
>        end
>
>        if cc=="cc0"
>            kiten_x=x+moji_l/2*cos(moji_arg)-moji_h/2*sin(moji_arg)
>            kiten_y=y+moji_l/2*sin(moji_arg)+moji_h/2*cos(moji_arg)
>        elsif cc=="cc1"
>            kiten_x=x-moji_h/2*sin(moji_arg)
>            kiten_y=y+moji_h/2*cos(moji_arg)
>        elsif cc=="cc2"
>            kiten_x=x-moji_l/2*cos(moji_arg)-moji_h/2*sin(moji_arg)
>            kiten_y=y-moji_l/2*sin(moji_arg)+moji_h/2*cos(moji_arg)
>        elsif cc=="cc3"
>            kiten_x=x+moji_l/2*cos(moji_arg)
>            kiten_y=y+moji_l/2*sin(moji_arg)
>        elsif cc=="cc4"
>            kiten_x=x
>            kiten_y=y
>        elsif cc=="cc5"
>            kiten_x=x-moji_l/2*cos(moji_arg)
>            kiten_y=y-moji_l/2*sin(moji_arg)
>        elsif cc=="cc6"
>            kiten_x=x+moji_l/2*cos(moji_arg)+moji_h/2*sin(moji_arg)
>            kiten_y=y+moji_l/2*sin(moji_arg)-moji_h/2*cos(moji_arg)
>        elsif cc=="cc7"
>            kiten_x=x+moji_h/2*sin(moji_arg)
>            kiten_y=y-moji_h/2*cos(moji_arg)
>        elsif cc=="cc8"
>            kiten_x=x-moji_l/2*cos(moji_arg)+moji_h/2*sin(moji_arg)
>            kiten_y=y-moji_l/2*sin(moji_arg)-moji_h/2*cos(moji_arg)
>        end
>        xx=x-kiten_x
>        yy=y-kiten_y
>        l=sqrt(xx**2+yy**2)
>        kiten_arg=atan2(yy,xx)
>
>        x=kiten_x+l*cos(kiten_arg+arg)
>        y=kiten_y+l*sin(kiten_arg+arg)
>        moji_x=moji_l*cos(moji_arg+arg)
>        moji_y=moji_l*sin(moji_arg+arg)
>
>        printf("ch %.11f %.11f %.11f %.11f \"%s\n",x,y,moji_x,moji_y,moji)
>    else
>        print $_
>    end
>end


Indexへ
(21460)←【21462】→(21466)
------------------------
【タイトル】Re(5):ありがとうございます。(追伸)
【記事番号】 21462 (21460)
【 日時 】07/06/04 15:05
【 発言者 】おっとー otto1015@hotmail.co.jp

▼コジマさん:
>
>いつも、コジマさんには、お世話になっております。
>以前にも、教えてもらった方法で作ってみるのですが、うまく動いてくれません。
>私の外変の知識不足で、間違っている所が、わからなくて困っています。
>基本から、勉強していきたいと思います。(勉強するのに、いい本、HPは
>あったら教えて下さい)
>ありがとうございます。
>
コジマさんの外部変形で、ダウンロードした「寸法線端部変換」は、きれいに動いています。
大変申し訳ないのですが、外部変形「文字回転」をメールにて送ってもらうことは
出来ますでしょうか。


Indexへ
(21462)←【21466】→(21459)
------------------------
【タイトル】Re(6):出来ました。(追伸)
【記事番号】 21466 (21462)
【 日時 】07/06/04 16:22
【 発言者 】おっとー

▼コジマさん:
>大変申し訳ないのですが、外部変形「文字回転」をメールにて送ってもらうことは出来ますでしょうか。

お騒がせしました。
文字を半角で保存したら出来ました。
また、宜しくお願いします。


Indexへ
(21466)←【21459】→(21470)
------------------------
【タイトル】Re(3):角度寸法線の文字の補正
【記事番号】 21459 (21457)
【 日時 】07/06/04 13:01
【 発言者 】kubo

▼コジマさん:
>
>snap_kinさんの外変は、文字基点(左下)が回転軸になるのでそうなりますね。
>
文字基点の位置は、選択できるようになっているようですが・・・・??
(中中もありました)


Indexへ
(21459)←【21470】→(21478)
------------------------
【タイトル】Re(4):角度寸法線の文字の補正
【記事番号】 21470 (21459)
【 日時 】07/06/04 17:00
【 発言者 】コジマ

▼kuboさん:
>▼コジマさん:
>>
>>snap_kinさんの外変は、文字基点(左下)が回転軸になるのでそうなりますね。
>>
>文字基点の位置は、選択できるようになっているようですが・・・・??
>(中中もありました)

そのとおりでした。
回転後の文字基点が左下に変わるだけですね。

私の外変は、文字基点を変更しない為に作ったものでした。

但し、寸法値を 180度 回転させた時は、文字基点も中下から中上に変更させるほうが自然ですね。

なので、寸法値に用いる場合は、意味がないです。


Indexへ
(21470)←【21478】→(21485)
------------------------
【タイトル】Re(5):角度寸法線の文字の補正
【記事番号】 21478 (21470)
【 日時 】07/06/04 18:05
【 発言者 】おっとー

▼コジマさん:
>>snap_kinさんの外変は、文字基点(左下)が回転軸になるのでそうなりますね。
>>文字基点の位置は、選択できるようになっているようですが・・・・??
>>(中中もありました)
>そのとおりでした。
>回転後の文字基点が左下に変わるだけですね。
>私の外変は、文字基点を変更しない為に作ったものでした。
>但し、寸法値を 180度 回転させた時は、文字基点も中下から中上に変更させるほうが自然ですね。
>なので、寸法値に用いる場合は、意味がないです。

こんにちは
私は、下記
唐人舞氏のJW_Win 専用外部変形 文字一括回転 Ver0.1(作者に感謝)
を使っていますが、基点は、文字基点のように選べて、角度もいろいろ指定
出来ますが、文字基点も中下から中上に変更させても、寸法の角度は円弧の寸法線に重なってしまいます。
下基点・上基点から、何mmか、ずれた位置に基点を設定出来たら、いいのでは
ないかと思います。宜しくお願いします。


Indexへ
(21478)←【21485】→(21492)
------------------------
【タイトル】Re(6):角度寸法線の文字の補正
【記事番号】 21485 (21478)
【 日時 】07/06/05 08:54
【 発言者 】ひでと

▼おっとーさん:
>▼コジマさん:
>>>snap_kinさんの外変は、文字基点(左下)が回転軸になるのでそうなりますね。
>>>文字基点の位置は、選択できるようになっているようですが・・・・??
>>>(中中もありました)
>>そのとおりでした。
>>回転後の文字基点が左下に変わるだけですね。
>>私の外変は、文字基点を変更しない為に作ったものでした。
>>但し、寸法値を 180度 回転させた時は、文字基点も中下から中上に変更させるほうが自然ですね。
>>なので、寸法値に用いる場合は、意味がないです。
>
>こんにちは
>私は、下記
>唐人舞氏のJW_Win 専用外部変形 文字一括回転 Ver0.1(作者に感謝)
>を使っていますが、基点は、文字基点のように選べて、角度もいろいろ指定
>出来ますが、文字基点も中下から中上に変更させても、寸法の角度は円弧の寸法線に重なってしまいます。
>下基点・上基点から、何mmか、ずれた位置に基点を設定出来たら、いいのでは
>ないかと思います。宜しくお願いします。

あきらめておりましたが、解決の糸口が見つかりそうな気配になっていますね。
出来れば、「寸法線の円弧を選択して、その中心を基点に文字を180度回転する」
という形が考えられると思います。


Indexへ
(21485)←【21492】→(21493)
------------------------
【タイトル】Re(7):角度寸法線の文字の補正
【記事番号】 21492 (21485)
【 日時 】07/06/05 17:03
【 発言者 】おっとー

▼ひでとさん:

>>>回転後の文字基点が左下に変わるだけですね。
>>>私の外変は、文字基点を変更しない為に作ったものでした。
>>>但し、寸法値を 180度 回転させた時は、文字基点も中下から中上に変更させるほうが自然ですね。
>>>なので、寸法値に用いる場合は、意味がないです。
>>
>>こんにちは
>>私は、下記
>>唐人舞氏のJW_Win 専用外部変形 文字一括回転 Ver0.1(作者に感謝)
>>を使っていますが、基点は、文字基点のように選べて、角度もいろいろ指定
>>出来ますが、文字基点も中下から中上に変更させても、寸法の角度は円弧の寸法線に重なってしまいます。
>>下基点・上基点から、何mmか、ずれた位置に基点を設定出来たら、いいのでは
>>ないかと思います。宜しくお願いします。
>
>あきらめておりましたが、解決の糸口が見つかりそうな気配になっていますね。
>出来れば、「寸法線の円弧を選択して、その中心を基点に文字を180度回転する」
>という形が考えられると思います。

そのような方法もありますが、
私が行っている方法が、その寸法値が、どのくらい傾いているのか、確認した上で
移動します。
文字→その文字の上で右PM5時で角度取得→文字選択の際(コントロールバーの角度を360度or(無指定)、方向をY方向)
その設定で適当な位置に移動
(参考までに)


Indexへ
(21492)←【21493】→(21495)
------------------------
【タイトル】Re(6):角度寸法線の文字の補正
【記事番号】 21493 (21478)
【 日時 】07/06/05 17:07
【 発言者 】コジマ

▼おっとーさん:
>唐人舞氏のJW_Win 専用外部変形 文字一括回転 Ver0.1(作者に感謝)
>を使っていますが、基点は、文字基点のように選べて、角度もいろいろ指定
>出来ますが、文字基点も中下から中上に変更させても、寸法の角度は円弧の寸法線に重なってしまいます。

この場合、基点とは回転軸のことなので、中上にするとそうなりますね。
中中であれば、重ならないはずですが。

>下基点・上基点から、何mmか、ずれた位置に基点を設定出来たら、いいのでは
>ないかと思います。宜しくお願いします。

◎バッチファイル(文字回転3.bat)
コピペ後、全角スペースに一括置換してください。

@REM 文字を一括回転
@echo off
REM #jww
REM #cd
REM #zz
REM #zc
REM #h3
REM #hc文字を範囲選択してください
REM #c回転角度 無指定:0/_/a
REM #c回転軸(中下)のY座標のずれ(図寸) 無指定:1mm/_/b
REM #bz
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks 文字回転3.rb temp.txt %1 %2 > jwc_temp.txt


◎スクリプトファイル(文字回転3.rb)
コピペ後、全角スペースに一括置換してください。

include Math
kakudo=0;zure=1.0

while ARGV.size>1
    case argument=ARGV.pop
        when /\/a/
            kakudo=argument[2..-1].to_f
        when /\/b/
            zure=argument[2..-1].to_f
    end
end

arg=kakudo*2*PI/360

puts("hd","bz")

hcw=[];hch=[];hcd=[]
while ARGF.gets
    xy=split
    if xy[0]=~/^hq/
    elsif xy[0]=~/^hcw/
        xy.each{|item|hcw<    elsif xy[0]=~/^hch/
        xy.each{|item|hch<    elsif xy[0]=~/^hcd/
        xy.each{|item|hcd<    elsif xy[0]=~/^cn\d$/
        cn=xy
        print $_
    elsif xy[0]=~/^cc\d$/
        print $_
        cc=xy[0]
    elsif xy[0]=~/^c[hvsroptkz2]/
        x=xy[1].to_f
        y=xy[2].to_f
        moji_x=xy[3].to_f
        moji_y=xy[4].to_f
        moji_l=sqrt(xy[3].to_f**2+xy[4].to_f**2)
        moji_arg=atan2(xy[4].to_f,xy[3].to_f)

        if $_ =~/\"/
            moji=$'.chomp
        end
        if cn.size==1
            moji_w=hcw[cn[0][2,1].to_i]
            moji_h=hch[cn[0][2,1].to_i]
            moji_d=hcd[cn[0][2,1].to_i]
        else
            moji_w=cn[1].to_f
            moji_h=cn[2].to_f
            moji_d=cn[3].to_f
        end

        if cc=="cc0"
            kiten_x=x+moji_l/2*cos(moji_arg)+zure*sin(moji_arg)
            kiten_y=y+moji_l/2*sin(moji_arg)-zure*cos(moji_arg)
        elsif cc=="cc1"
            kiten_x=x+zure*sin(moji_arg)
            kiten_y=y-zure*cos(moji_arg)
        elsif cc=="cc2"
            kiten_x=x-moji_l/2*cos(moji_arg)+zure*sin(moji_arg)
            kiten_y=y-moji_l/2*sin(moji_arg)-zure*cos(moji_arg)
        elsif cc=="cc3"
            kiten_x=x+moji_l/2*cos(moji_arg)+(moji_h/2+zure)*sin(moji_arg)
            kiten_y=y+moji_l/2*sin(moji_arg)-(moji_h/2+zure)*cos(moji_arg)
        elsif cc=="cc4"
            kiten_x=x+(moji_h/2+zure)*sin(moji_arg)
            kiten_y=y-(moji_h/2+zure)*cos(moji_arg)
        elsif cc=="cc5"
            kiten_x=x-moji_l/2*cos(moji_arg)+(moji_h/2+zure)*sin(moji_arg)
            kiten_y=y-moji_l/2*sin(moji_arg)-(moji_h/2+zure)*cos(moji_arg)
        elsif cc=="cc6"
            kiten_x=x+moji_l/2*cos(moji_arg)+(moji_h+zure)*sin(moji_arg)
            kiten_y=y+moji_l/2*sin(moji_arg)-(moji_h+zure)*cos(moji_arg)
        elsif cc=="cc7"
            kiten_x=x+(moji_h+zure)*sin(moji_arg)
            kiten_y=y-(moji_h+zure)*cos(moji_arg)
        elsif cc=="cc8"
            kiten_x=x-moji_l/2*cos(moji_arg)+(moji_h+zure)*sin(moji_arg)
            kiten_y=y-moji_l/2*sin(moji_arg)-(moji_h+zure)*cos(moji_arg)
        end
        xx=x-kiten_x
        yy=y-kiten_y
        l=sqrt(xx**2+yy**2)
        kiten_arg=atan2(yy,xx)

        x=kiten_x+l*cos(kiten_arg+arg)
        y=kiten_y+l*sin(kiten_arg+arg)
        moji_x=moji_l*cos(moji_arg+arg)
        moji_y=moji_l*sin(moji_arg+arg)

        printf("ch %.11f %.11f %.11f %.11f \"%s\n",x,y,moji_x,moji_y,moji)
    else
        print $_
    end
end


Indexへ
(21493)←【21495】→(21455)
------------------------
【タイトル】Re(7):角度寸法線の文字の補正
【記事番号】 21495 (21493)
【 日時 】07/06/05 18:58
【 発言者 】おっとー

▼コジマさん:
これは、すごい 感動した
ありがとうございます。大切に使わせていただきます。
下記 文で全角スペースとありますが、半角スペースの間違いですか?
半角スペースで動きました。

>◎バッチファイル(文字回転3.bat)
>コピペ後、全角スペースに一括置換してください。
>
>@REM 文字を一括回転
>@echo off
>REM #jww
>REM #cd
>REM #zz
>REM #zc
>REM #h3
>REM #hc文字を範囲選択してください
>REM #c回転角度 無指定:0/_/a
>REM #c回転軸(中下)のY座標のずれ(図寸) 無指定:1mm/_/b
>REM #bz
>REM #e
>copy jwc_temp.txt temp.txt > nul
>ruby -Ks 文字回転3.rb temp.txt %1 %2 > jwc_temp.txt
>
>
>◎スクリプトファイル(文字回転3.rb)
>コピペ後、全角スペースに一括置換してください。
>
>include Math
>kakudo=0;zure=1.0
>
>while ARGV.size>1
>    case argument=ARGV.pop
>        when /\/a/
>            kakudo=argument[2..-1].to_f
>        when /\/b/
>            zure=argument[2..-1].to_f
>    end
>end
>
>arg=kakudo*2*PI/360
>
>puts("hd","bz")
>
>hcw=[];hch=[];hcd=[]
>while ARGF.gets
>    xy=split
>    if xy[0]=~/^hq/
>    elsif xy[0]=~/^hcw/
>        xy.each{|item|hcw<>    elsif xy[0]=~/^hch/
>        xy.each{|item|hch<>    elsif xy[0]=~/^hcd/
>        xy.each{|item|hcd<>    elsif xy[0]=~/^cn\d$/
>        cn=xy
>        print $_
>    elsif xy[0]=~/^cc\d$/
>        print $_
>        cc=xy[0]
>    elsif xy[0]=~/^c[hvsroptkz2]/
>        x=xy[1].to_f
>        y=xy[2].to_f
>        moji_x=xy[3].to_f
>        moji_y=xy[4].to_f
>        moji_l=sqrt(xy[3].to_f**2+xy[4].to_f**2)
>        moji_arg=atan2(xy[4].to_f,xy[3].to_f)
>
>        if $_ =~/\"/
>            moji=$'.chomp
>        end
>        if cn.size==1
>            moji_w=hcw[cn[0][2,1].to_i]
>            moji_h=hch[cn[0][2,1].to_i]
>            moji_d=hcd[cn[0][2,1].to_i]
>        else
>            moji_w=cn[1].to_f
>            moji_h=cn[2].to_f
>            moji_d=cn[3].to_f
>        end
>
>        if cc=="cc0"
>            kiten_x=x+moji_l/2*cos(moji_arg)+zure*sin(moji_arg)
>            kiten_y=y+moji_l/2*sin(moji_arg)-zure*cos(moji_arg)
>        elsif cc=="cc1"
>            kiten_x=x+zure*sin(moji_arg)
>            kiten_y=y-zure*cos(moji_arg)
>        elsif cc=="cc2"
>            kiten_x=x-moji_l/2*cos(moji_arg)+zure*sin(moji_arg)
>            kiten_y=y-moji_l/2*sin(moji_arg)-zure*cos(moji_arg)
>        elsif cc=="cc3"
>            kiten_x=x+moji_l/2*cos(moji_arg)+(moji_h/2+zure)*sin(moji_arg)
>            kiten_y=y+moji_l/2*sin(moji_arg)-(moji_h/2+zure)*cos(moji_arg)
>        elsif cc=="cc4"
>            kiten_x=x+(moji_h/2+zure)*sin(moji_arg)
>            kiten_y=y-(moji_h/2+zure)*cos(moji_arg)
>        elsif cc=="cc5"
>            kiten_x=x-moji_l/2*cos(moji_arg)+(moji_h/2+zure)*sin(moji_arg)
>            kiten_y=y-moji_l/2*sin(moji_arg)-(moji_h/2+zure)*cos(moji_arg)
>        elsif cc=="cc6"
>            kiten_x=x+moji_l/2*cos(moji_arg)+(moji_h+zure)*sin(moji_arg)
>            kiten_y=y+moji_l/2*sin(moji_arg)-(moji_h+zure)*cos(moji_arg)
>        elsif cc=="cc7"
>            kiten_x=x+(moji_h+zure)*sin(moji_arg)
>            kiten_y=y-(moji_h+zure)*cos(moji_arg)
>        elsif cc=="cc8"
>            kiten_x=x-moji_l/2*cos(moji_arg)+(moji_h+zure)*sin(moji_arg)
>            kiten_y=y-moji_l/2*sin(moji_arg)-(moji_h+zure)*cos(moji_arg)
>        end
>        xx=x-kiten_x
>        yy=y-kiten_y
>        l=sqrt(xx**2+yy**2)
>        kiten_arg=atan2(yy,xx)
>
>        x=kiten_x+l*cos(kiten_arg+arg)
>        y=kiten_y+l*sin(kiten_arg+arg)
>        moji_x=moji_l*cos(moji_arg+arg)
>        moji_y=moji_l*sin(moji_arg+arg)
>
>        printf("ch %.11f %.11f %.11f %.11f \"%s\n",x,y,moji_x,moji_y,moji)
>    else
>        print $_
>    end
>end


Indexへ
(21495)←【21455】→(21491)
------------------------
【タイトル】Re(1):角度寸法線の文字の補正
【記事番号】 21455 (21417)
【 日時 】07/06/04 10:17
【 発言者 】ひでと

▼ひでさん:
kubo様、おっとー様、ありがとうございました。
現状のままで様子をみることにします。
実は以前、これを何とかしたいと外変をつくろうとして、途中で挫折しました。
機会がありましたら、最チャレンジしてみたいと思います。


Indexへ
(21455)←【21491】→(21502)
------------------------
【タイトル】Re(2):角度寸法線の文字の補正
【記事番号】 21491 (21455)
【 日時 】07/06/05 16:53
【 発言者 】コジマ

細かい設定を省略すれば、以下の外変で可能です。

◎バッチファイル(角度寸法.bat)
バッチファイルにスクリプト埋め込みなので。バッチファイルのみで実行されます。
コピペ後、全角スペースを半角スペースに一括置換してください。


@REM 角度の記入
@echo off
REM #jww
REM #cd
REM #c線と文字の離れ(図寸)無指定:1mm/_/a
REM #k角度の単位|1)度(L)|2)度分秒(R)|/_/b
REM #c小数点以下有効桁 無指定:3/_/c
REM #0原点を指示してください free(L) Read(R)
REM #1引出線の始点を指示してください free(L) Read(R)
REM #2寸法線の位置を指示してください free(L) Read(R)
REM #3測定点を指示してください free(L) Read(R)
REM #99#
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -x %~f0 temp.txt %1 %2 %3 > jwc_temp.txt
exit
#!ruby -Ks

lc="lc1" #線色
pn="pn6" #点色
tuki=1.0 #引出線の突き出し寸法

include Math
hanare=1.0;keta=3
while ARGV.size>1
    case argument=ARGV.pop
        when /\/a/
            hanare=argument[2..-1].to_f
        when /\/b/
            tani=argument[2..-1]
        when /\/c/
            keta=argument[2..-1]
    end
end
sen=[];hp=[];by=[]
while ARGF.gets
    xy=split
    if xy[0]=~/^hs/
        xy[1..-1].each{|item|by<    end
    if xy[0]=~/^hp/
        if xy[0]=~/^hp1$/
            x,y,=xy[1].to_f,xy[2].to_f
            r1=hypot(x,y)
        elsif xy[0]=~/^hp2$/
            x,y,=xy[1].to_f,xy[2].to_f
            r2=hypot(x,y)
        else
            hp<<[xy[1].to_f,xy[2].to_f]
        end
    end
    if xy[0]=~/^lg/
        zusun=by[xy[0][2,1].hex]
    end
    if xy[0]=~/^\d|^-/
        xy.collect!{|item|item.to_f}
        sen<    end
end
puts lc,pn
0.upto(hp.size-2){|j|
    x1=hp[j][0]
    y1=hp[j][1]
    x2=hp[j+1][0]
    y2=hp[j+1][1]
    arg1=atan2(y1,x1)
    arg2=atan2(y2,x2)
    l2=hypot(y2,x2)
    x3=x1+l2*cos(arg2)
    y3=y1+l2*sin(arg2)
    arg1 += 2*PI if arg1<0
    arg2 += 2*PI if arg2<0
    arg1 -= 2*PI if arg2    arg3=atan2(y3,x3)
    kakudo=(arg2-arg1)*360/(2*PI)
    tyuten=arg3*360/(2*PI)
    
    if tyuten<0
        cc="cc7"
        moji_arg=atan2(-y3,-x3)-PI/2
    else
        cc="cc1"
        moji_arg=arg3-PI/2
    end
    puts cc
    moji_x=(r2+hanare*zusun)*cos(arg3)
    moji_y=(r2+hanare*zusun)*sin(arg3)
    sen_x1=(r1+tuki*zusun)*cos(arg1)
    sen_y1=(r1+tuki*zusun)*sin(arg1)
    sen_x2=(r2+tuki*zusun)*cos(arg1)
    sen_y2=(r2+tuki*zusun)*sin(arg1)
    puts "z3"
    printf("%.11f %.11f %.11f %.11f\n",sen_x1,sen_y1,sen_x2,sen_y2)
    puts "z3"
    printf("pt %.11f %.11f\n",r2*cos(arg1),r2*sin(arg1))
    puts "z3"
    printf("ci 0 0 #{r2} %.11f %.11f 1 0\n",arg1*360/(2*PI),arg2*360/(2*PI))
    if tani == "2"
        if kakudo.to_s =~ /\./
            word1=$`
            word=("0"+$&+$').to_f*60
        else
            word1=kakudo3.to_s
            word=sprintf("%.#{keta}f",0)
        end
        if word.to_s =~ /\./
            word2=$`
            word=("0"+$&+$').to_f*60
        else
            word2=word
            word=sprintf("%.#{keta}f",0)
        end
        if word.to_s =~ /\./
            word3=sprintf("%.#{keta}f",word)
            word4=$&+$' if word3=~/\./
        else
            word3=sprintf("%.#{keta}f",0)
            word4=$&+$' if word3=~/\./
        end
        if word3.to_i == 60
            word2 ="#{word2.to_i+1}"
            word3 =sprintf("%.#{keta}f",0)
        end
        if word2.to_i == 60
            word1 ="#{word1.to_i+1}"
            word2 ="0"
        end
        word3=word3.to_i
        puts "z3"
        printf("ch %.11f %.11f %.11f %.11f \"%d°%02d'%02d%s\"\n",moji_x,moji_y,cos(moji_arg),sin(moji_arg),word1,word2,word3,word4)
    else
        kakudo=sprintf("%.#{keta}f",kakudo)
        puts "z3"
        printf("ch %.11f %.11f %.11f %.11f \"%s\n",moji_x,moji_y,cos(moji_arg),sin(moji_arg),kakudo)
    end
}
arg1=atan2(hp[-1][1],hp[-1][0])
sen_x1=(r1+tuki*zusun)*cos(arg1)
sen_y1=(r1+tuki*zusun)*sin(arg1)
sen_x2=(r2+tuki*zusun)*cos(arg1)
sen_y2=(r2+tuki*zusun)*sin(arg1)
puts "z3"
printf("%.11f %.11f %.11f %.11f\n",sen_x1,sen_y1,sen_x2,sen_y2)
puts "z3"
printf("pt %.11f %.11f\n",r2*cos(arg1),r2*sin(arg1))


Indexへ
(21491)←【21502】//(21422)
------------------------
【タイトル】Re(3):角度寸法線の文字の補正
【記事番号】 21502 (21491)
【 日時 】07/06/06 09:03
【 発言者 】ひでと

▼コジマさん:
>細かい設定を省略すれば、以下の外変で可能です。
本当にありがとうございました。利用させていただきます。