シートセット関数-BricsCAD

提供:GizmoLabs - だいたい CAD LISP なサイト
2022年11月30日 (水) 05:54時点におけるGizmon (トーク | 投稿記録)による版

BricsCAD の シートセット 関数 について

V21より、BricsCAD は AutoCADのSheetSetManager COMインターフェースと互換性のあるSheetSetManagerのCOMインターフェースを提供している。

AutoCAD の COMインターフェースは、AutoLISP から AutoCAD にアクセスできない特殊な実装だが、BricsCAD は、通常のCOMデザインルールに従って実装されているため、Lisp や VB/VBA からもアクセスが可能になっている。

  • LISPアプリケーション・コードから SheetSetManager のルート・インターフェースにアクセスするには、以下のようにする。
(vla-getinterfaceobject cad "BricscadSm.AcSmSheetSetMgr")
  • VB/VBA/C/C++/Delphi アプリケーションは、axbricscadsm.dll を参照して SheetSetManager COM インターフェースにアクセスすることができる。
  • 経験豊富な開発者向けに「axbricscadsm.idl」も提供されている。
  • SheetSetManager COM インターフェース(LISP を含むすべてのプログラミング言語用)は、Windows のみで使用できる。


プログラマへのスペシャルインフォメーション

AutoCAD が提供する SheetSetManager COMインターフェースは、常に *Methods* のみを使用し、Properties は使用しない。これは形式的には有効だが、むしろプロフェッショナルではなく、実装者がCOMインターフェース設計に関する深い知識を欠いていることを示している。(LISP から移行させたかったという意図もあったのではないかと思われる。) 残念ながら、BricsCAD においても互換性の理由から、この設計に固執する必要があった。 しかし、BricsCAD の実装では、基本オブジェクトクラスとして *IDispatch* を使用しており、すべてのプログラミング言語(Lispを含む)からSheetSetManager COMインターフェースにアクセスできるようになっている。

実際、以下の SheetSetManager COMインターフェースが提供されている。


提供されている COMインターフェス


BricsCAD SheetSetManager COM インターフェースは一般的な COM デザインルールに準拠しているため、(vlax-import-type-library) によって LISP COM ラッパー関数を自動生成することが可能。

(vlax-import-type-library :tlb-filename "axbricscadsm.dll" :methods-prefix "ssm-" :properties-prefix "ssm-" :constants-prefix "ssm:")

なお、生成されるのはメソッドのみ(COM定義で「プロパティ」関数が定義されていないため)。


シートセットマネージャの列挙型と定数

SheetSetManager COMインターフェースの主なルート・オブジェクトの説明

フラグ 名前
AcSmオブジェクトリファレンスフラグ AcSmObjectReference_SoftPointer 1
AcSmObjectReference_HardPointer 2
プロパティフラグ EMPTY 0
CUSTOM_SHEETSET_PROP 1
CUSTOM_SHEET_PROP 2
CUSTOM_SUBSET_PROP 4
IS_CHILD
(組み合わせ可能、ビット単位のOR)
8