「シートメタル関数-BricsCAD」の版間の差分
編集の要約なし |
|||
53行目: | 53行目: | ||
重要なのは、警告を受けたとしても、シナリオを続けることができるということ。 | 重要なのは、警告を受けたとしても、シナリオを続けることができるということ。 | ||
この考えを明確にするための例。 | |||
<pre class="brush:autolisp;"> | <pre class="brush:autolisp;"> | ||
(SmLispGet "SelectEntities" "Top" "Flange_1") | (SmLispGet "SelectEntities" "Top" "Flange_1") |
2022年10月24日 (月) 06:35時点における版
BricsCAD の シートメタル関数 について
V16.2以降、BricsCAD LISP は SheetMetal & Mechanical機能専用のインターフェースを提供している。(Mechanical、旧Platinum/SheetMetal ライセンスが必要)。 LDSP ドキュメントのパッケージには、SheetMetal LISP APIに関連する多くの有用なユーティリティ関数を含むサンプルLispファイルと同様に、完全なドキュメントが付属している。
APIの中核となるのは、BmLispGet, SmLispGet, SmLispSet の3つの LISP 関数。
接頭辞はアセンブリ(Bm, Bricsys Mechanical)とシートメタル(Sm)のアプリケーションを区別している。現在のところ、APIは主にクエリー操作に使用される。 スクリプトは、Mechanical、Direct Modeling、Sheet Metalコマンドを使用して、いくつかのプロパティを要求して、その内容を希望通りに変更することができる。
LISP API、コマンド、LISP言語の組み合わせにより、アセンブリ(インポートされたものを含む)とシートメタル部品の作業を自動化する強力なシナリオを作成することができる。
LISP アプリケーションと同様に、(コマンド)機能を使用してプログラムフローを制御して、BricsCAD SheetMetalおよびMechanical機能のネイティブなビルトイン機能を使用することも可能。 SheetMetalおよびMechanicalのネイティブビルトインコマンドは、システム変数「errno」の専用サポートにより、LISP使用に対する特別なサポートが提供されている。 詳細およびサンプルについては後述。
- 典型的なシナリオ : パラメータ化された貧弱なシートメタルパーツから始まり、パラメータセットでインスタンス化し、ベンドとジャンクションを作成し、最後に展開を生成 - 全て自動で行う。
- 別のシナリオ :アセンブリをインポートし、トラバースしてシートメタルパーツを認識し、各パーツの2D展開図を作成する。
SheetMetal / Mechanical のLISP関数
LISPコードからのSheetMetalコマンドの呼び出し
LISP からシートメタルコマンドを呼び出すには、通常、適切な事前選択を構成する必要がある。すなわち、コマンドが実体を必要とする場合、ソリッドが事前選択されなければならず、コマンドが面を扱う場合、面が事前選択されていなければならない。 SmLispGet が特徴の選択セットを返すことを利用して、SmLispGet の呼び出しが成功した直後に、必要なコマンドを呼び出すことができるようにする必要がある。
(SmLispGet "SelectEntities" "Top" "Flange_1") (command "SmBendCreate")
次に、スクリプトの中で、コマンドオプションのシーケンスを適切にプログラムし(モードがある場合)、最後に errno 変数を読み込んで戻りコードをチェックする必要がある。
このサンプルスクリプトでは、3つの値を使用している。
(setq gError 79) (setq gWarning 1) (setq gSuccess 0)
- リターンコードが0であれば、コマンドは正常に実行されたことを意味する。
- 79 は致命的なエラーが発生したことを意味し、この場合はモデルまたはスクリプト全体の処理を停止し、操作が失敗し、シナリオの続行が不可能であることをユーザに通知した方が良い。
- 警告は、コマンドは成功したが、システムが解決できない問題が検出されたことを意味し、文脈に応じて扱われなければならない。
- 警告は、コマンドは成功したが、システムが解決できない問題が検出されたことを意味し、その扱いは文脈に依存する。
重要なのは、警告を受けたとしても、シナリオを続けることができるということ。
この考えを明確にするための例。
(SmLispGet "SelectEntities" "Top" "Flange_1") (command "SmBendCreate") (if (= gError (getvar "errno")) (progn (print "ベンドの作成に失敗しました!終了します") (exit) ) )