Indexへ
(4017)//【3990】→(3992)
------------------------
【タイトル】ソリッド図形(三角形)の書出しjwc_temp.txtについて
【記事番号】 3990 (*)
【 日時 】05/11/10 18:41
【 発言者 】ひで

多角形→任意→ソリッド図形にのみチェック
点1、点2、点3を取り「作図」ボタンで三角形を作図し、
下記に記したバッチファイルを外部変形で起動し、
出力したjwc_temp.txtを見ると

sl 1000 1000 3000 1000 2000 3000 1000 1000

のように数字が8個出力されています。
リファレンスマニュアルやJWW_SMPLE.BATを読むと
三角形は

sl 1000 1000 3000 1000 2000 3000

のように6個の数字が出力されるのではと思っている
のですが、そうはならないのはなぜかお分かりに
なりますでしょうか?


*********バッチファイル
@echo on
REM #jww
REM #cd
REM #hp
REM #h1
REM #e


Indexへ
(3990)←【3992】→(4012)
------------------------
【タイトル】Re(1):始点の戻っているだけ
【記事番号】 3992 (3990)
【 日時 】05/11/10 19:22
【 発言者 】コジマ

▼ひでさん:
>多角形→任意→ソリッド図形にのみチェック
>点1、点2、点3を取り「作図」ボタンで三角形を作図し、
>下記に記したバッチファイルを外部変形で起動し、
>出力したjwc_temp.txtを見ると
>
>sl 1000 1000 3000 1000 2000 3000 1000 1000
>
>のように数字が8個出力されています。
>リファレンスマニュアルやJWW_SMPLE.BATを読むと
>三角形は
>
>sl 1000 1000 3000 1000 2000 3000
>
>のように6個の数字が出力されるのではと思っている
>のですが、そうはならないのはなぜかお分かりに
>なりますでしょうか?
>
>
>*********バッチファイル
>@echo on
>REM #jww
>REM #cd
>REM #hp
>REM #h1
>REM #e


始点の戻っているだけです。(閉合図形)

余分に感じておられる数値は、始点座標と同じです。

始点座標 1000 1000
終点座標 1000 1000

ソリッド図形(塗り潰し)な場合は、終点座標を省略しても、結果は同じになります。

線形ソリッドの場合は、終点座標は省略できないはず?


Indexへ
(3992)←【4012】→(4018)
------------------------
【タイトル】Re(2):始点の戻っているだけ
【記事番号】 4012 (3992)
【 日時 】05/11/11 20:18
【 発言者 】ひで

▼コジマさん:
>▼ひでさん:
>>多角形→任意→ソリッド図形にのみチェック
>>点1、点2、点3を取り「作図」ボタンで三角形を作図し、
>>下記に記したバッチファイルを外部変形で起動し、
>>出力したjwc_temp.txtを見ると
>>
>>sl 1000 1000 3000 1000 2000 3000 1000 1000
>>
>>のように数字が8個出力されています。
>>リファレンスマニュアルやJWW_SMPLE.BATを読むと
>>三角形は
>>
>>sl 1000 1000 3000 1000 2000 3000
>>
>>のように6個の数字が出力されるのではと思っている
>>のですが、そうはならないのはなぜかお分かりに
>>なりますでしょうか?
>>
>>
>>*********バッチファイル
>>@echo on
>>REM #jww
>>REM #cd
>>REM #hp
>>REM #h1
>>REM #e
>
>
>始点の戻っているだけです。(閉合図形)
>
>余分に感じておられる数値は、始点座標と同じです。
>
>始点座標 1000 1000
>終点座標 1000 1000
>
>ソリッド図形(塗り潰し)な場合は、終点座標を省略しても、結果は同じになります。
>
>線形ソリッドの場合は、終点座標は省略できないはず?


コジマさん、レスをつけて頂きありがとうございます。
始点と終点が一緒なのが確認できました。

スクリプトで三角形かどうかを判断するのに、“行頭がslで6個の数字”で
判断できればと思っていたもので・・・

スターさんも続けてレスをつけてくれていますので、
そちらでも重ねて聞いてみます。

前回のレイヤーの件に続き、ご回答ありがとうございました。


Indexへ
(4012)←【4018】→(4032)
------------------------
【タイトル】Re(3):二次元配列にしてuniq
【記事番号】 4018 (4012)
【 日時 】05/11/11 22:50
【 発言者 】コジマ

▼ひでさん:
>スクリプトで三角形かどうかを判断するのに、“行頭がslで6個の数字”で
>判断できればと思っていたもので・・・
>

RubyやAwkならば、簡単です。
[x,y]座標の二次元配列にしてuniqで、重複する要素をひとつにまとめます。

以下参考まで、Rubyで記述しています。

◎バッチファイル(sl.bat)

REM ソリッド図形は何角形か
echo off
REM #jww
REM #cd
REM #h1
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks sl.rb temp.txt> jwc_temp.txt

◎スクリプトファイル(sl.rb)

sl=[]                    #配列slを定義
while ARGF.gets
    xy=split
    if xy[0]=~/^sl/

        1.step((xy.size-2),2){|i|
            x=xy[i]
            y=xy[i+1]
            sl<<[x,y]    #slは、xy座標の二次元配列となる
        }
        sl.uniq!        #二次元配列中の重複する要素をひとつにまとめる。
    end
end
printf("h#ソリッド図形は#{sl.size}角形\n")


Indexへ
(4018)←【4032】→(3996)
------------------------
【タイトル】Re(4):二次元配列にしてuniq
【記事番号】 4032 (4018)
【 日時 】05/11/14 10:21
【 発言者 】ひで

▼コジマさん:

>RubyやAwkならば、簡単です。
>[x,y]座標の二次元配列にしてuniqで、重複する要素をひとつにまとめます。
>
>以下参考まで、Rubyで記述しています。
>
>◎バッチファイル(sl.bat)
>◎スクリプトファイル(sl.rb)

コジマさん、ご回答頂いた上にスクリプトまで書いて頂いて、
本当にありがとうございます。
先人の方々がawkやRubyを用いている理由がなんとなく感じられた
瞬間です。

「JW_CAD4高速作図(木造住宅編)」「入門JGAWK」でバッチファイルと
awkのさわりを勉強したのですが、私自身むかーしBASICを使っていた位の
知識しかなく、どうもawkの文法体がとっつきにくいので、HSPで外部変形を
組み始めています。(苦労してますが、どうにか前に進んでいます。
簡単な文字置換の外部変形を作って動いた時にはそれなりの感動が・・・)

HSPでもDLLが豊富に揃っているのでuniq同様のことができそうか調べてみます。

ありがとうございました。


Indexへ
(4032)←【3996】→(4013)
------------------------
【タイトル】Re(1):ソリッド図形(三角形)の書出しjwc_temp.txtについて
【記事番号】 3996 (3990)
【 日時 】05/11/10 21:09
【 発言者 】スター

▼ひでさん:
>多角形→任意→ソリッド図形にのみチェック
>点1、点2、点3を取り「作図」ボタンで三角形を作図し、
>下記に記したバッチファイルを外部変形で起動し、
>出力したjwc_temp.txtを見ると
>
>sl 1000 1000 3000 1000 2000 3000 1000 1000
>
>のように数字が8個出力されています。
>リファレンスマニュアルやJWW_SMPLE.BATを読むと
>三角形は
>
>sl 1000 1000 3000 1000 2000 3000
>
>のように6個の数字が出力されるのではと思っている
>のですが、そうはならないのはなぜかお分かりに
>なりますでしょうか?
>
>
>*********バッチファイル
>@echo on
>REM #jww
>REM #cd
>REM #hp
>REM #h1
>REM #e

三角形ソリッドをJWC_TEMP.TXTに出力した場合に
sl 1000 1000 3000 1000 2000 3000 1000 1000
sl 1000 1000 3000 1000 2000 3000
の2種類が存在します。


Indexへ
(3996)←【4013】→(4016)
------------------------
【タイトル】Re(2):ソリッド図形(三角形)の書出しjwc_temp.txtについて
【記事番号】 4013 (3996)
【 日時 】05/11/11 20:23
【 発言者 】ひで

▼スターさん:
>▼ひでさん:
>>多角形→任意→ソリッド図形にのみチェック
>>点1、点2、点3を取り「作図」ボタンで三角形を作図し、
>>下記に記したバッチファイルを外部変形で起動し、
>>出力したjwc_temp.txtを見ると
>>
>>sl 1000 1000 3000 1000 2000 3000 1000 1000
>>
>>のように数字が8個出力されています。
>>リファレンスマニュアルやJWW_SMPLE.BATを読むと
>>三角形は
>>
>>sl 1000 1000 3000 1000 2000 3000
>>
>>のように6個の数字が出力されるのではと思っている
>>のですが、そうはならないのはなぜかお分かりに
>>なりますでしょうか?
>>
>>
>>*********バッチファイル
>>@echo on
>>REM #jww
>>REM #cd
>>REM #hp
>>REM #h1
>>REM #e
>
>三角形ソリッドをJWC_TEMP.TXTに出力した場合に
>sl 1000 1000 3000 1000 2000 3000 1000 1000
>sl 1000 1000 3000 1000 2000 3000
>の2種類が存在します。


スターさん、ご回答ありがとうございます。
私のバッチファイル及び入力方法ですと、

sl 1000 1000 3000 1000 2000 3000 1000 1000

しか出力されないのですが、三角形ソリッドの
入力方法がいけないのでしょうか?


Indexへ
(4013)←【4016】→(4031)
------------------------
【タイトル】Re(3):ソリッド図形(三角形)の書出しjwc_temp.txtについて
【記事番号】 4016 (4013)
【 日時 】05/11/11 20:59
【 発言者 】スター

▼ひでさん:
>
>スターさん、ご回答ありがとうございます。
>私のバッチファイル及び入力方法ですと、
>
>sl 1000 1000 3000 1000 2000 3000 1000 1000
>
>しか出力されないのですが、三角形ソリッドの
>入力方法がいけないのでしょうか?

外部変形で範囲指定しJWC_TEMP.txtが作成したときに三角形が3点で作成される場合と4点で(1と4は同一)で作成される場合があると言うことです。
すなわちソリッド図形を判定する場合に4点の座標があっても三角形の場合があると考えてプログラムを作成する必要があると言うことです。


Indexへ
(4016)←【4031】→(4028)
------------------------
【タイトル】Re(4):ソリッド図形(三角形)の書出しjwc_temp.txtについて
【記事番号】 4031 (4016)
【 日時 】05/11/14 10:03
【 発言者 】ひで

▼スターさん:

>>私のバッチファイル及び入力方法ですと、
>>
>>sl 1000 1000 3000 1000 2000 3000 1000 1000
>>
>>しか出力されないのですが、三角形ソリッドの
>>入力方法がいけないのでしょうか?
>

>外部変形で範囲指定しJWC_TEMP.txtが作成したときに三角形が3点で作成される場合と4点で(1と4は同一)で作成される場合があると言うことです。
>すなわちソリッド図形を判定する場合に4点の座標があっても三角形の場合があると考えてプログラムを作成する必要があると言うことです。

状況によって両方ありえるってことなんですね。
リファレンスマニュアルや添付のバッチファイルだけでは
分からないこと沢山あるので、助かりました。
ありがとうございました。


Indexへ
(4031)←【4028】→(4033)
------------------------
【タイトル】Re(1):単独の三角形か?多角形の一部か?
【記事番号】 4028 (3990)
【 日時 】05/11/13 13:12
【 発言者 】コジマ

▼ひでさん:
>多角形→任意→ソリッド図形にのみチェック
>点1、点2、点3を取り「作図」ボタンで三角形を作図し、
>下記に記したバッチファイルを外部変形で起動し、
>出力したjwc_temp.txtを見ると
>
>sl 1000 1000 3000 1000 2000 3000 1000 1000
>
>のように数字が8個出力されています。


単独の三角形ソリッドの場合は、こうなるようです。


>リファレンスマニュアルやJWW_SMPLE.BATを読むと
>三角形は
>
>sl 1000 1000 3000 1000 2000 3000
>
>のように6個の数字が出力されるのではと思っている
>のですが、そうはならないのはなぜかお分かりに
>なりますでしょうか?

三角形ソリッドが多角形ソリッドの一部である場合、このようです。
(多角形ソリッドは、三角形ソリッドの集合)


Indexへ
(4028)←【4033】//(3994)
------------------------
【タイトル】Re(2):単独の三角形か?多角形の一部か?
【記事番号】 4033 (4028)
【 日時 】05/11/14 10:29
【 発言者 】ひで

▼コジマさん:

>>sl 1000 1000 3000 1000 2000 3000 1000 1000
>>
>>のように数字が8個出力されています。
>
>単独の三角形ソリッドの場合は、こうなるようです。


>>sl 1000 1000 3000 1000 2000 3000
>
>三角形ソリッドが多角形ソリッドの一部である場合、このようです。
>(多角形ソリッドは、三角形ソリッドの集合)

コジマさん、重ね重ねのご回答ありがとうございます。
上記のような規則性?があるんですね。
五角形を書いて確認しました!
なるほど・・・

頂いたスクリプトも参考にし、考えを整理してみます。
ありがとうございました。