新しいオブジェクトの作成
図面上で使用できる図形やシンボルテーブルレコードなどの各種オブジェクトの作成は、AutoCADまたはAutoCAD LT上のコマンドを利用して作成することもできますが、このシステムでは図面データベース内に直接オブジェクトを生成することもできます。
図面データベース内に直接オブジェクトを生成するための機能は、3種類の方法が用意してあります。用途に合わせて使いやすい方の手法を使用してください。
<手法1:「make」>
es = obj.make ( "オブジェクトの名前" , "名前" , setData , parentId , objId ) |
この手法は、図面データベース上の(このシステムで作成可能な)すべてのオブジェクトを生成することができます。 |
|
<手法2:「makeEnt」>
es = obj.makeEnt ( "オブジェクトの名前" , setData , objId ) |
この手法は、現在の作業空間(「モデル空間」または「ペーパー空間」)に新しい「図形オブジェクト」を追加(生成)する際に使用する手法です。「make」手法では多くの設定データが必要となります。しかし、図形オブジェクトなどには、多くの情報を設定する必要がない場合が多く、得に使用頻度の高いと思われる「現在の作業空間」への図形オブジェクトの追加を簡単に行うために用意した手法です。そのため、この手法で生成できるのは、図形オブジェクトだけです。 |
<手法3:「makeRec」>
es = obj.makeRec ( "オブジェクトの名前" , setData , objId ) |
この手法は、指定されたシンボルテーブルレコード(オブジェクト)を、適合するシンボルテーブルに新しく追加(生成)する際に使用します。例えば、ブロックテーブルレコードを指定すれば、自動的にブロックテーブルに新しいブロックテーブルレコードオブジェクトを生成、追加します。画層テーブルレコードを指定すれば、自動的に画層テーブルに新しい画層テーブルレコードオブジェクトを生成、追加します。「make」手法では多くの設定データが必要となります。しかし、図形オブジェクトなどには、多くの情報を設定する必要がない場合が多く、得に使用頻度の高いと思われる「現在の作業空間」への図形オブジェクトの追加を簡単に行うために用意した手法です。そのため、この手法で生成できるのは、図形オブジェクトだけです。 |
以下にそれぞれの詳細な使用方法を紹介しています。
-------------------------------------------------------------------------
<手法1:「make」>
(このシステムで作成可能な)すべてのオブジェクトに適用できます。
[準備するもの]
Dim
objId As Variant '(取得できる新しいオブジェクトの「
オブジェクトID」)
Dim
setData As Long '(オブジェクトの生成に必要な「
設定データ」宣言)
Dim
es As Boolean '(この命令を実行した結果を格納する「
エラー状況」)
Dim
obj As Object '(外部プログラムとの接続手続き保存用)
Set
obj = GetObject (
, "LT VBCOM.Application") '(外部プログラムとの接続手続き)
[書式]
クラス名 名前 設定データ 親の指定
↓ ↓ ↓ ↓
es = obj.make ( "オブジェクト名" , "名前" , setData , Null , objId )
↓ ↓
エラー状況 オブジェクトID
<設定データ>
上記のように新しいオブジェクトの作成には、4つの情報を設定しなければなりません。
|
[情報] |
[内容] |
[型] |
1 |
クラス名 |
新しく生成するオブジェクトの名前を指定します。日本語のクラス名(オブジェクトの名前)も使用できます。 |
文字列(String) |
2 |
名前
(省略可能) |
オブジェクトの管理の際に、名前が必要な場合に設定する名前を指定します。図形オブジェクトなどのように、名前による管理が不要なオブジェクトに関しては、ここのデータを省略(Null)にすることも可能です。 |
文字列(String) |
3 |
設定データ
(省略可能) |
オブジェクト生成時の初期値の設定します。省略時には、ObjectARXのオブジェクトの基本生成の内容に従った初期値のオブジェクトを生成します。 |
作成するオブジェクトにより、異なります。 |
4 |
親の指定
(省略可能) |
図面データベース内で、生成したオブジェクトをつなげることになる(親)オブジェクトの指定します。
親オブジェクトは、親オブジェクト自体の「オブジェクトID」で指定することもできますし、親オブジェクトに付けられている「名前」で指定することもできます。「名前」で指定する場合、その「名前」の検索先は、新しく作成するオブジェクトの「親」として適切な場所(シンボルテーブルやディクショナリ)を自動的検索します。もしも、親オブジェクトの指定を明確にしたい場合は、「オブジェクトID」による指定をお勧めします。
省略時には、生成したオブジェクトを一般的につなげると思われる(親)オブジェクトを自動的に選択します。 |
整数(Long)または文字列(String) |
<取得データ>
新規オブジェクトを生成すると、そのオブジェクトに新しいオブジェクトIDが
割り振られます。この新しいオブジェクトIDを取得することができます。
(上記「書式」では、変数「objId」でこれを取得しています)
|
[情報] |
[内容] |
[型] |
1 |
オブジェクトID |
新しく生成されるオブジェクトに割り振られるオブジェクトIDです。 |
整数(Long) |
注意:
「省略可能」なデータは生成するオブジェクトにより異なります。
各オブジェクトの生成方法を確認の上、ご使用ください。
また、「
es」、「
objId」、「
setData」は任意の変数名で使用できます。
[実行結果「es」の内容]
・この命令が正しく動作したかどうかを判断できます。
正しく動作した場合:
True
正しく動作しなかった場合:
False
-------------------------------------------------------------------------
<手法2:「makeEnt」>
現在の作業空間に、図形オブジェクトを追加するための機能です。「現在の作業空間」と「図形オブジェクト」という条件が付いているため、設定するデータの内容が少なくて済みます。(このシステムで作成可能な)すべての図形オブジェクトに使用できます。
[準備するもの]
Dim
objId As Variant '(取得できる新しいオブジェクトの「
オブジェクトID」)
Dim
setData As Long '(オブジェクトの生成に必要な「
設定データ」宣言)
Dim
es As Boolean '(この命令を実行した結果を格納する「
エラー状況」)
Dim
obj As Object '(外部プログラムとの接続手続き保存用)
Set
obj = GetObject (
, "LT VBCOM.Application") '(外部プログラムとの接続手続き)
[書式]
クラス名 設定データ
↓ ↓
es = obj.makeEnt ( "図形オブジェクト名" , setData , objId )
↓ ↓
エラー状況 オブジェクトID
<設定データ>
上記のように新しいオブジェクトの作成には、2つの情報を設定しなければなりません。
|
[情報] |
[内容] |
[型] |
1 |
クラス名 |
新しく生成する図形オブジェクトの名前を指定します。日本語のクラス名(オブジェクトの名前)も使用できます。 |
文字列(String) |
2 |
設定データ
(省略可能) |
図形オブジェクト生成時の初期値の設定します。省略時には、ObjectARXのオブジェクトの基本生成の内容に従った初期値のオブジェクトを生成します。 |
作成するオブジェクトにより、異なります。 |
<取得データ>
新規オブジェクトを生成すると、そのオブジェクトに新しいオブジェクトIDが
割り振られます。この新しいオブジェクトIDを取得することができます。
(上記「書式」では、変数「objId」でこれを取得しています)
|
[情報] |
[内容] |
[型] |
1 |
オブジェクトID |
新しく生成される図形オブジェクトに割り振られるオブジェクトIDです。 |
整数(Long) |
注意:
「省略可能」なデータは生成するオブジェクトにより異なります。
各オブジェクトの生成方法を確認の上、ご使用ください。
また、「
es」、「
objId」、「
setData」、は任意の変数名で使用できます。
[実行結果「es」の内容]
・この命令が正しく動作したかどうかを判断できます。
正しく動作した場合:
True
正しく動作しなかった場合:
False
-------------------------------------------------------------------------
<手法3:「makeRec」>
(このシステムで作成可能な)すべてのシンボルテーブルレコードオブジェクトに適用できます。生成されるシンボルテーブルレコードの設定値にはそれぞれ既定の値が設定されます。手軽にシンボルテーブルレコードを生成したい場合に便利な手法です。
[準備するもの]
Dim
objId As Variant '(取得できる新しいオブジェクトの「
オブジェクトID」)
Dim
es As Boolean '(この命令を実行した結果を格納する「
エラー状況」)
Dim
obj As Object '(外部プログラムとの接続手続き保存用)
Set
obj = GetObject (
, "LT VBCOM.Application") '(外部プログラムとの接続手続き)
[書式]
クラス名 名前
↓ ↓
es = obj.makeRec ( "オブジェクト名" , "名前" , objId )
↓ ↓
エラー状況 オブジェクトID
<設定データ>
上記のように新しいオブジェクトの作成には、3つの情報を設定しなければなりません。
|
[情報] |
[内容] |
[型] |
1 |
クラス名 |
新しく生成するシンボルテーブルレコードオブジェクトの名前を指定します。日本語のクラス名(オブジェクトの名前)も使用できます。 |
文字列(String) |
2 |
名前 |
シンボルテーブルレコードオブジェクトの管理の際に必要な名前を指定します。 |
文字列(String) |
<取得データ>
新規オブジェクトを生成すると、そのオブジェクトに新しいオブジェクトIDが
割り振られます。この新しいオブジェクトIDを取得することができます。
(上記「書式」では、変数「objId」でこれを取得しています)
|
[情報] |
[内容] |
[型] |
1 |
オブジェクトID |
新しく生成されるオブジェクトに割り振られるオブジェクトIDです。 |
整数(Long) |
注意:
「省略可能」なデータは生成するオブジェクトにより異なります。
各オブジェクトの生成方法を確認の上、ご使用ください。
また、「
es」、「
objId」、「
setData」は任意の変数名で使用できます。
[実行結果「es」の内容]
・この命令が正しく動作したかどうかを判断できます。
正しく動作した場合:
True
正しく動作しなかった場合:
False
-------------------------------------------------------------------------
以下に、図面データベースに直接オブジェクトを生成することができるオブジェクトの種類と方法を一覧表示します。
(この一覧表以外のオブジェクトは、コマンドで作成してください。)
一般図形
□ AcDbMInsertBlock(マルチブロック)の作成
□ AcDbBlockReference(ブロック参照)の作成
□ AcDbFace(3次元面)の作成
□ AcDbFcf(幾何公差)の作成
□ AcDbRasterImage(ラスターイメージ)の作成
□ AcDbMline(マルチライン)の作成
□ AcDbMText(マルチテキスト)の作成
□ AcDbPoint(点)の作成
□ AcDbPolyFaceMesh(ポリフェイスメッシュ)の作成
□ AcDbPolygonMesh(ポリゴンメッシュ)の作成
□ AcDbSolid(塗り潰し)の作成
□ AcDbAttributeDefinition(属性定義)の作成
□ AcDbText(文字)の作成
□ AcDbTrace(太線)の作成
□ AcDbViewport(ビューポート)の作成
□ AcDbRegion(リージョン)の作成
線形図形
□ AcDb2dPolyline(2Dポリライン)の作成
□ AcDb3dPolyline(3Dポリライン)の作成
□ AcDbArc(円弧)の作成
□ AcDbCircle(円)の作成
□AcDbEllipse(楕円)の作成
□ AcDbLeader(引出線)の作成
□ AcDbLine(線分)の作成
□ AcDbPolyline(ポリライン)の作成
□ AcDbRay(放射線)の作成
□ AcDbSpline(スプライン)の作成
□ AcDbXline(構築線)の作成
寸法図形
□ AcDb2LineAngularDimension(2線角度寸法)の作成
□ AcDb3PointAngularDimension(3点角度寸法)の作成
□ AcDbAlignedDimension(平行寸法)の作成
□ AcDbDiametricDimension(直径寸法)の作成
□ AcDbOrdinateDimension(座標寸法)の作成
□ AcDbRadialDimension(半径寸法)の作成
□ AcDbRotatedDimension(回転寸法)の作成
図形以外のオブジェクト
□ AcDbDictionary(ディクショナリ)の作成
□ AcDbGroup(グループ)の作成
□ AcDbMlineStyle(マルチラインスタイル)の作成
□ AcDbRasterImageDef(イメージ定義)の作成
□ AcDbXrecord(拡張レコード)の作成
シンボルテーブルレコード
□ AcDbViewportTableRecord(ViewportTableRecord)の作成
□ AcDbViewTableRecord(ビューテーブルレコード)の作成
□ AcDbBlockTableRecord(ブロックテーブルレコード)の作成
□ AcDbDimStyleTableRecord(寸法スタイルテーブルレコード)の作成
□ AcDbLayerTableRecord(画層テーブルレコード)の作成
□ AcDbLinetypeTableRecord(線種テーブルレコード)の作成
□ AcDbRegAppTableRecord(アプリケーションテーブルレコード)の作成
□ AcDbTextStyleTableRecord(文字スタイルテーブルレコード)の作成
□ AcDbUCSTableRecord(UCSテーブルレコード)の作成