C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)

Sirenテスト-polygon

SirenScriptをテストしやすいように、こんな感じの
VBScriptを作ってみました。
(本来、公式サイトで記載されているように環境変数でパスを
通しておけば良いのですが・・・。)

'vbs SirenTestStart.vbs

Language = "VBSCRIPT"
'*** setting ***
'siren.exeファイルのフルパス
SirenPath="C:\siren\siren_0.11_mingw32\siren"
'sirenスプリクトファイル名
ScriptName="test.txt"
'******

Execute()
WScript.Quit 0

Sub Execute()
    Dim fso : set fso = createObject("Scripting.FileSystemObject")
    ScriptPath = fso.getParentFolderName(WScript.ScriptFullName)
    Dim WshShell : Set WshShell = CreateObject("WScript.Shell")
    Call WshShell.Run(SirenPath + " " + ScriptPath + "/" + ScriptName + " " + ScriptPath, 1, False)
    Set fso = Nothing
    Set WshShell = Nothing
End Sub

何がやりたいか? と言うと、単にこのファイルをダブルクリックすれば、
同一フォルダ内の "test.txt" と言うファイルをSirenScriptとして
実行させますよ ってだけです。


で、実際に実行される "test.txt" を、SirenScriptとして
作成します。 こんな感じです。

#SirenScript
expFileName = ARGV[0] + "/pol.igs"

pts=[]
pts<<([0 , 0 , 0])
pts<<([2 , 0 , 0])
pts<<([2 , 2 , 0])
pts<<([0 , 2 , 0])

pol=Build.polygon pts , true

IGES.save [pol] , expFileName

puts "OK"

2行目のエクスポートするファイルを変更して、3行目以降を書き換えて
お勉強しよう と思ってます。
(スプリクトファイルと同一フォルダ内に、Igesファイルが出来るようにしました。)

上記のコードは、配列に突っ込んだ4点を頂点とする、同一平面状の
多角形を作ってみました。(確認はCATIAです)
f:id:kandennti:20160307172358p:plain
polygonは

pts=[]
pts<<([0 , 0 , 0])
pts<<([2 , 0 , 0])
pts<<([2 , 2 , 0])
pts<<([0 , 2 , 0])
pts<<([0 , 0 , 0]) #←これ無くてもOK
・・・

と、最後に始点と同一座標の作らなくても、勝手に終点-始点間の
境界を作成して面を作成してくれるようです。


試しに、自己交差するいい加減な座標値を突っ込ませると

pts=[]
pts.push([0 , 0 , 0])
pts.push([2 , 0 , 0])
pts.push([0 , 2 , 0])
pts.push([2 , 2 , 0])
pts.push([-5 , 0 , 0])
pts.push([-4 , -3 , 0])
pts.push([-2 , 0 , 0])
pts.push([-1 , 3 , 0])
・・・

こんな感じの、出来たらヤバイやつも出来てしまうので
この辺は何らかのチェックする処理入れないと、危なさそうです。
f:id:kandennti:20160307172412p:plain