「シートセット関数-BricsCAD」の版間の差分
(ページの作成:「{{BCAD_LISP}} ==BricsCAD の シートセット 関数 について== V21より、BricsCAD は AutoCADのSheetSetManager COMインターフェースと互換性のある…」) |
|||
(同じ利用者による、間の13版が非表示) | |||
2行目: | 2行目: | ||
==BricsCAD の シートセット 関数 について== | ==BricsCAD の シートセット 関数 について== | ||
BricsCAD は V21より、AutoCAD の SheetSetManager COMインターフェースと互換性のあるSheetSetManagerのCOMインターフェースを提供している。 | |||
AutoCAD の COMインターフェースは、AutoLISP から AutoCAD にアクセスできない特殊な実装だが、BricsCAD は、通常のCOMデザインルールに従って実装されているため、Lisp や VB/VBA からもアクセスが可能になっている。 | AutoCAD の COMインターフェースは、AutoLISP から AutoCAD にアクセスできない特殊な実装だが、BricsCAD は、通常のCOMデザインルールに従って実装されているため、Lisp や VB/VBA からもアクセスが可能になっている。 | ||
* LISPアプリケーション・コードから SheetSetManager のルート・インターフェースにアクセスするには、以下のようにする。 | * LISPアプリケーション・コードから SheetSetManager のルート・インターフェースにアクセスするには、以下のようにする。 | ||
(vla- | ([[vla-getinterfaceobject]] cad "BricscadSm.AcSmSheetSetMgr") | ||
* VB/VBA/C/C++/Delphi アプリケーションは、axbricscadsm.dll を参照して SheetSetManager COM インターフェースにアクセスすることができる。 | * VB/VBA/C/C++/Delphi アプリケーションは、axbricscadsm.dll を参照して SheetSetManager COM インターフェースにアクセスすることができる。 | ||
* 経験豊富な開発者向けに「axbricscadsm.idl」も提供されている。 | * 経験豊富な開発者向けに「axbricscadsm.idl」も提供されている。 | ||
13行目: | 13行目: | ||
* SheetSetManager COM インターフェース(LISP を含むすべてのプログラミング言語用)は、Windows のみで使用できる。 | * SheetSetManager COM インターフェース(LISP を含むすべてのプログラミング言語用)は、Windows のみで使用できる。 | ||
== | == プログラマへのスペシャルインフォメーション == | ||
AutoCAD が提供する SheetSetManager COMインターフェースは、常に *Methods* のみを使用し、Properties | AutoCAD が提供する SheetSetManager COMインターフェースは、常に *Methods* のみを使用し、Properties は使用しない。これは形式的には有効だが、むしろプロフェッショナルではなく、実装者がCOMインターフェース設計に関する深い知識を欠いていることを示している。(LISP から移行させたかったという意図もあったのではないかと思われる。) | ||
残念ながら、BricsCAD においても互換性の理由から、この設計に固執する必要があった。 | |||
しかし、BricsCAD の実装では、基本オブジェクトクラスとして *IDispatch* を使用しており、すべてのプログラミング言語(Lispを含む)からSheetSetManager COMインターフェースにアクセスできるようになっている。 | しかし、BricsCAD の実装では、基本オブジェクトクラスとして *IDispatch* を使用しており、すべてのプログラミング言語(Lispを含む)からSheetSetManager COMインターフェースにアクセスできるようになっている。 | ||
実際、以下の SheetSetManager COMインターフェースが提供されている。 | |||
== 提供されている COMインターフェス == | == 提供されている COMインターフェス == | ||
* [[ | <div class="mcol2"> | ||
* [[ | * ルート オブジェクト | ||
* [[ | ** [[IAcSmSheetSetMgr]] | ||
* [[ | ** [[IAcSmDatabase]] | ||
* [[ | * コンテナ オブジェクト | ||
* [[Dwg | ** [[IAcSmSheetSet]] | ||
* [[ | ** [[IAcSmSheetViews]] | ||
* [[ | ** [[IAcSmSheetSelSets]] | ||
* [[ | ** [[IAcSmViewCategories]] | ||
** [[IAcSmCalloutBlocks]] | |||
** [[IAcSmResources]] | |||
** [[IAcSmProjectPointLocations]] | |||
* コンポーネント オブジェクト | |||
** [[IAcSmSheet]] | |||
** [[IAcSmSubset]] | |||
** [[IAcSmSheetView]] | |||
** [[IAcSmSheetSelSet]] | |||
** [[IAcSmViewCategory]] | |||
** [[IAcSmComponent]] | |||
** [[IAcSmProjectPointLocation]] | |||
* 参照オブジェクト | |||
** [[IAcSmObjectId]] | |||
** [[IAcSmObjectReference]] | |||
** [[IAcSmFileReference]] | |||
* 列挙型オブジェクト | |||
** [[IAcSmEnumDatabase]] | |||
** [[IAcSmEnumSheetSelSet]] | |||
** [[IAcSmEnumSheetView]] | |||
** [[IAcSmEnumComponent]] | |||
** [[IAcSmEnumPersist]] | |||
** [[IAcSmEnumFileReference]] | |||
** [[IAcSmEnumViewCategory]] | |||
** [[IAcSmEnumProperty]] | |||
** [[IAcSmEnumAcDbBlockRecordReference]] | |||
** [[IAcSmEnumProjectPointLocation]] | |||
* Dwg データベースオブジェクト | |||
**[[IAcSmAcDbDatabase]] | |||
**[[IAcSmAcDbObjectReference]] | |||
**[[IAcSmAcDbLayoutReference]] | |||
**[[IAcSmNamedAcDbObjectReference]] | |||
**[[IAcSmAcDbBlockRecordReference]] | |||
**[[IAcSmAcDbViewReference]] | |||
* 永続的なオブジェクト | |||
**[[IAcSmPersist]] | |||
**[[IAcSmPersistProxy]] | |||
* プロパティ値オブジェクト | |||
**[[IAcSmCustomPropertyBag]] | |||
**[[IAcSmCustomPropertyValue]] | |||
* その他のオブジェクト | |||
**[[IAcSmPublishOptions]] | |||
**[[IAcSmFiler]] | |||
</div> | |||
BricsCAD SheetSetManager COM インターフェースは一般的な COM デザインルールに準拠しているため、(vlax-import-type-library) によって LISP 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:") | ([[vlax-import-type-library]] :tlb-filename "axbricscadsm.dll" :methods-prefix "ssm-" :properties-prefix "ssm-" :constants-prefix "ssm:") | ||
なお、生成されるのはメソッドのみ(COM定義で「プロパティ」関数が定義されていないため)。 | なお、生成されるのはメソッドのみ(COM定義で「プロパティ」関数が定義されていないため)。 | ||
==シートセットマネージャの列挙型と定数== | |||
SheetSetManager COMインターフェースの主なルート・オブジェクトの説明 | |||
{| class="wikitable" | |||
! フラグ !! 名前!! 値 | |||
|- | |||
| rowspan="2" | AcSmオブジェクトリファレンスフラグ | |||
| AcSmObjectReference_SoftPointer | |||
| 1 | |||
|- | |||
| AcSmObjectReference_HardPointer | |||
| 2 | |||
|- | |||
| rowspan="5" | プロパティフラグ | |||
| EMPTY | |||
| 0 | |||
|- | |||
| CUSTOM_SHEETSET_PROP | |||
| 1 | |||
|- | |||
| CUSTOM_SHEET_PROP | |||
| 2 | |||
|- | |||
| CUSTOM_SUBSET_PROP | |||
| 4 | |||
|- | |||
| IS_CHILD<br />(組み合わせ可能、ビット単位のOR) | |||
| 8 | |||
|- | |||
|} | |||
[[Category:BricsCADのLISP]] |
2023年11月25日 (土) 10:25時点における最新版
BricsCAD の シートセット 関数 について
BricsCAD は V21より、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インターフェス
- ルート オブジェクト
- コンテナ オブジェクト
- コンポーネント オブジェクト
- 参照オブジェクト
- 列挙型オブジェクト
- Dwg データベースオブジェクト
- 永続的なオブジェクト
- プロパティ値オブジェクト
- その他のオブジェクト
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 |