C#ATIA

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

siren v0.13 再び挑戦してみる

昨日ちょっと良い事を思いついたので、1年半ぶりぐらいにsiren
再挑戦する事にしました。

以前利用させてもらった時は "v0.11" だったのですが、
最新版は "v0.13" です。

こちらで作ったsirenスプリクト実行用vbsを参照先パスだけ
変更したのですが、ダメでした。
Sirenテスト-polygon - C#ATIA

sirenの実行ファイル名やファイル位置等がv0.12 → v0.13で
大きく変更されたりしたようです。
ついでにD&Dで実行するように修正してみました。

'vbs SirenTestStart013.vbs
'D&DによるSirenスプリクト実行  Siren v0.13用
Language = "VBSCRIPT"

'*** setting ***
'mruby.exe(Siren)ファイルのフルパス
SirenPath="C:\siren\siren_0.13_mingw32\bin\mruby.exe"
'******

Main()
WScript.Quit 0

Sub Main()
    If wscript.Arguments.Count < 1 Then
        MsgBox "SirenスプリクトファイルをD&Dして下さい"
        Exit Sub
    End If	
    Dim Args : Args = wscript.Arguments(0)
    Dim fso : set fso = createObject("Scripting.FileSystemObject")
    Dim ScriptPath : ScriptPath = Replace(fso.getParentFolderName(Args), "\", "/")
    Dim ScriptName : ScriptName = fso.GetFileName(Args)
    Dim WshShell : Set WshShell = CreateObject("WScript.Shell")
    Call WshShell.Run(SirenPath + " " + ScriptPath + "/" + ScriptName + " " + ScriptPath, 1, False)
End Sub

D&Dは1ファイルだけにしています。(他にもイマイチな部分多数)

こちらのサンプルをお借りし、エクスポートフォーマットを変更したりし
テストしてみました。
mruby-siren/tree.rb at master · dyama/mruby-siren · GitHub

#!/usr/bin/siren
# coding: utf-8
#
# fractal tree 
#
include Siren
expFileName = ARGV[0] + "/tree"

$start_len = 100.0

def tree(cur_pt, dir, len)
  nxt_pt = cur_pt + dir * len
  edges = [ line(cur_pt, nxt_pt) ]
  len *= 0.75
  if len > $start_len / 10.0
    edges.concat tree(nxt_pt, dir.rotate(Vec.ydir, 30.0.to_rad), len)
    edges.concat tree(nxt_pt, dir.rotate(Vec.ydir, -30.0.to_rad), len)
  end
  return edges
end

lines = tree([0, 0, 0].to_v, Vec.zdir, $start_len)

comp = lines.to_comp
Siren.save_iges comp, expFileName + ".igs"
Siren.save_step comp, expFileName + ".stp"

puts "done."

スプリクトの書式も少し変更されたような・・・。
Stepフォーマットのエクスポートがサポートされてるんですよ。
f:id:kandennti:20170726154324p:plain
無事出来ました。
StepファイルがIgesファイルの10倍ぐらいのサイズなんですが、
こんなもんなんですかね?