Indexへ
(4618)//【4614】→(4619)
------------------------
【タイトル】十字コマンド
【記事番号】 4614 (*)
【 日時 】06/01/07 09:34
【 発言者 】hsk

線種.線色.寸法.勾配を設定して十字を書くのは意外と面倒ですね。
BOXコマンドの中にでも有ると嬉しいです ついでの時にでも検討願えませんか


Indexへ
(4614)←【4619】→(4620)
------------------------
【タイトル】Re(1):十字コマンド
【記事番号】 4619 (4614)
【 日時 】06/01/07 15:37
【 発言者 】コジマ

▼hskさん:
>線種.線色.寸法.勾配を設定して十字を書くのは意外と面倒ですね。
>BOXコマンドの中にでも有ると嬉しいです ついでの時にでも検討願えませんか

どなたかのサイトで十字線を描画する外部変形が公開されていたような記憶があります。

以下のスクリプトでも可能です。

現在のJWWは、SXF完全対応が急務のようなので、
外変で対応できるものは、
作者様の手を煩わせないほうがよろしいかと思います。

以下の外変の実行には、mswin32 版 Ruby のインストールが必要です。
以下で入手できます。
http://www61.tok2.com/home2/gravelroad/tips/inst_msw.html

◎バッチファイル(ファイル名 十字線.bat)
以下の文をコピペ後、全角スペースを半角スペースに一括置換してください。

@REM 十字線を作図
@echo off
REM #jww
REM #cd
REM #h0
REM #cX寸法 無指定:1000/_/a
REM #cY寸法 無指定:1000/_/b
REM #c傾き 無指定:0/_/c
REM #k基点を選択してください|1)左下(L)|2)中下(R)|3)右下|4)左中|5)中中|6)右中|7)左上|8)中上|9)右上|/_/d
REM #1
REM #99#
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks 十字線.rb temp.txt %1 %2 %3 %4> jwc_temp.txt


◎スクリプトファイル(ファイル名 十字線.rb)
以下の文をコピペ後、全角スペースを半角スペースに一括置換してください。


def sen(x1,y1,x2,y2)
    printf("%.11f %.11f %.11f %.11f\n",x1,y1,x2,y2)
end
def zyuzi_sen(x,y,wid,dep,kakudo,kiten)
    ww=wid/2;dd=dep/2
    if kiten=="1"
        x1y=x-dd*sin(kakudo)
        x2y=x-dd*sin(kakudo)+wid*cos(kakudo)
        y1y=y+dd*cos(kakudo)
        y2y=y+dd*cos(kakudo)+wid*sin(kakudo)

        x1t=x+ww*cos(kakudo)
        x2t=x-dep*sin(kakudo)+ww*cos(kakudo)
        y1t=y+ww*sin(kakudo)
        y2t=y+dep*cos(kakudo)+ww*sin(kakudo)
    elsif kiten=="2"
        x1y=x-dd*sin(kakudo)-ww*cos(kakudo)
        x2y=x-dd*sin(kakudo)+ww*cos(kakudo)
        y1y=y+dd*cos(kakudo)-ww*sin(kakudo)
        y2y=y+dd*cos(kakudo)+ww*sin(kakudo)

        x1t=x
        x2t=x-dep*sin(kakudo)
        y1t=y
        y2t=y+dep*cos(kakudo)
    elsif kiten=="3"
        x1y=x-dd*sin(kakudo)-wid*cos(kakudo)
        x2y=x-dd*sin(kakudo)
        y1y=y+dd*cos(kakudo)-wid*sin(kakudo)
        y2y=y+dd*cos(kakudo)

        x1t=x-ww*cos(kakudo)
        x2t=x-ww*cos(kakudo)-dep*sin(kakudo)
        y1t=y-ww*sin(kakudo)
        y2t=y-ww*sin(kakudo)+dep*cos(kakudo)
    elsif kiten=="4"
        x1y=x
        x2y=x+wid*cos(kakudo)
        y1y=y
        y2y=y+wid*sin(kakudo)

        x1t=x+ww*cos(kakudo)+dd*sin(kakudo)
        x2t=x+ww*cos(kakudo)-dd*sin(kakudo)
        y1t=y+ww*sin(kakudo)-dd*cos(kakudo)
        y2t=y+ww*sin(kakudo)+dd*cos(kakudo)
    elsif kiten=="5"
        x1y=x-ww*cos(kakudo)
        y1y=y-ww*sin(kakudo)
        x2y=x+ww*cos(kakudo)
        y2y=y+ww*sin(kakudo)

        x1t=x-dd*cos(kakudo+PI/2)
        y1t=y-dd*sin(kakudo+PI/2)
        x2t=x+dd*cos(kakudo+PI/2)
        y2t=y+dd*sin(kakudo+PI/2)
    elsif kiten=="6"
        x1y=x-wid*cos(kakudo)
        y1y=y-wid*sin(kakudo)
        x2y=x
        y2y=y

        x1t=x-ww*cos(kakudo)+dd*sin(kakudo)
        y1t=y-ww*sin(kakudo)-dd*cos(kakudo)
        x2t=x-ww*cos(kakudo)-dd*sin(kakudo)
        y2t=y-ww*sin(kakudo)+dd*cos(kakudo)
    elsif kiten=="7"
        x1y=x+dd*sin(kakudo)
        y1y=y-dd*cos(kakudo)
        x2y=x+dd*sin(kakudo)+wid*cos(kakudo)
        y2y=y-dd*cos(kakudo)+wid*sin(kakudo)

        x1t=x+ww*cos(kakudo)+dep*sin(kakudo)
        y1t=y+ww*sin(kakudo)-dep*cos(kakudo)
        x2t=x+ww*cos(kakudo)
        y2t=y+ww*sin(kakudo)
    elsif kiten=="8"
        x1y=x-ww*cos(kakudo)+dd*sin(kakudo)
        y1y=y-ww*sin(kakudo)-dd*cos(kakudo)
        x2y=x+ww*cos(kakudo)+dd*sin(kakudo)
        y2y=y+ww*sin(kakudo)-dd*cos(kakudo)

        x1t=x+dep*sin(kakudo)
        y1t=y-dep*cos(kakudo)
        x2t=x
        y2t=y
    elsif kiten=="9"
        x1y=x-wid*cos(kakudo)+dd*sin(kakudo)
        y1y=y-wid*sin(kakudo)-dd*cos(kakudo)
        x2y=x+dd*sin(kakudo)
        y2y=y-dd*cos(kakudo)

        x1t=x-ww*cos(kakudo)+dep*sin(kakudo)
        y1t=y-ww*sin(kakudo)-dep*cos(kakudo)
        x2t=x-ww*cos(kakudo)
        y2t=y-ww*sin(kakudo)
    end
    sen(x1y,y1y,x2y,y2y)
    sen(x1t,y1t,x2t,y2t)
end

include Math

wid=1000;dep=1000;kakudo=0

while ARGV.size>1
    case argument=ARGV.pop
        when /\/a/
            wid=argument[2..-1].to_f
        when /\/b/
            dep=argument[2..-1].to_f
        when /\/c/
            kakudo=(argument[2..-1].to_f)*2*PI/360
        when /\/d/
            kiten=argument[2..-1]
    end
end

while ARGF.gets
    xy=split
    if xy[0]=~/^hk/
        ziku_kaku=xy[1].to_f*2*PI/360
        kakudo += ziku_kaku
    end
    if xy[0]=~/^hp/
        zyuzi_sen(xy[1].to_f,xy[2].to_f,wid,dep,kakudo,kiten)
    end
end


Indexへ
(4619)←【4620】→(4637)
------------------------
【タイトル】Re(2):建具立面で
【記事番号】 4620 (4619)
【 日時 】06/01/07 16:10
【 発言者 】コジマ

>▼hskさん:
>>線種.線色.寸法.勾配を設定して十字を書くのは意外と面倒ですね。
>>BOXコマンドの中にでも有ると嬉しいです ついでの時にでも検討願えませんか

建具立面のほうが、はるかに簡単ですね。
適当なフォルダを作成して、ファイル名を「jw_opt3.dat」として保存すれば使用できます。
(以下の文をコピペ)


1
999
3 十字線
1 3 0 5000 0 5000
2 2 0 0 0 10000
996


Indexへ
(4620)←【4637】→(4638)
------------------------
【タイトル】Re(3):建具立面で
【記事番号】 4637 (4620)
【 日時 】06/01/09 10:42
【 発言者 】hsk

コジマさん 今日は RES 有難うございます

十字はBOXコマンドのルーチンと酷似してますのでプログラム出来る方だったら難しい事ではないと思ってます。出来ればJWW本体での仕様にしてもらえればうれしいです。直線コマンドに 矢印が有るように

鉄骨施工図書いてますので 私も建具平面や記号変形には色々作ってます。
今は 特化した十字を数種類部品化して 貼り付けてます。
現段階ではこれが一番早いですが線属性変更が必要の場合があります。


Indexへ
(4637)←【4638】//(4621)
------------------------
【タイトル】Re(4):「図形」の線属性変更は、「作図属性」で
【記事番号】 4638 (4637)
【 日時 】06/01/09 11:41
【 発言者 】コジマ

▼hskさん:
>今は 特化した十字を数種類部品化して 貼り付けてます。
>現段階ではこれが一番早いですが線属性変更が必要の場合があります。

部品化ということは、登録図形ですね。

この場合の線属性変更は、「作図属性」をクリック。
□●書込み【線色】で作図 にチェックをいれる。

ご存知でしたら、ごめんなさい。