シートメタル関数-BricsCAD

提供:GizmoLabs - だいたい CAD LISP なサイト
2024年2月17日 (土) 16:34時点におけるGizmon (トーク | 投稿記録)による版 (→‎シートメタル LISPのサンプル)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

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)
  )
)

シートメタル LISPのサンプル

LISP API を利用した工業的な例として、Mechanical と Sheet Metal の両方を実装した SmAssemblyExport.lsp が提供されている。

SmAssemblyExport.lsp の基本的な使用方法は以下の通り。

  • Communicator の設定 "ImportProductStructure" と "ExportProductStructure" が "As Mechanical Components" に設定されていることを確認する。
    • (ヒント:スクリプトや LISP コードファイルからでも、(getcfg) や (setcfg) を使ってこれらの設定を照会したり、割り当てたりできる。)
  • Communicator でアセンブリをインポートし、図面を保存する。
  • SmAssemblyExport.lsp をロードする。
  • SmAssemblyExport コマンドが起動。
  • 出力された DXF ファイルと HTML レポートが生成される。


スクリプトはアセンブリ構造を走査し、すべてのコンポーネントのすべてのソリッドをシートメタルパーツとして認識しようとする。認識されたものはDXFに展開され、厚さによって分類され、対応するフォルダに保存される。

警告やエラーが発生した部品は、専用のフォルダーに保存されます。最後に、プレビュー画像を含む明白なHTMLレポートが生成される。

スクリプトは、外部アプリケーションからシナリオを実行したり、出力フォルダや曲げテーブルを選択するなど、より複雑なアプリケーションを可能にする。 しかし、基本は非常に効率的で便利なものである。

このスクリプトは非常に複雑ですが、このヘルプにもスクリプトにも詳細な注釈はない。

本当に複雑なバッチシナリオに興味がある場合は、スクリプトを自分で勉強して修正するか開発者に連絡して提案をしてもらうかで検討できる。

LISPプログラミングの幸運を祈ります。