AutoLISP で ActiveX 関数を使用する場合、図形名、ハンドル、オブジェクト ID を VLA オブジェクトに変換する必要があることがあります。
注: AutoLISP での ActiveX のサポートは Windows のみに制限されています。
図形名を VLA オブジェクトに変換する
vlax-ename->vla-object 関数を使用すると、entget や ssname などの関数を使用して取得した図形名(ename)を、ActiveX サポート関数で使用できる VLA オブジェクトに変換することができます。
- AutoCAD の作図領域で、円を描きます。
- コマンド プロンプトに対して (vl-load-com) と入力し、[Enter]を押します。
- (setq ename-circle (car (entsel "¥n円をクリック:"))) と入力し、[Enter]を押します。
<Entity name: 27f0538>
- (setq vlaobject-circle (vlax-ename->vla-object ename-circle)) と入力し、[Enter]を押します。
#<VLA-OBJECT IAcadCircle 03642c24>
- (setq new-ename-circle (vlax-vla-object->ename vlaobject-circle)) と入力し、[Enter]を押します。
<Entity name: 27f0538>
ハンドルを VLA オブジェクトに変換する
handent 関数は、指定されたハンドルに基づいて図形名(ename)を返します。その後、図形名を ActiveX サポート関数で使用できる VLA オブジェクトに変換することができます。
- AutoCAD の作図領域で、円を描きます。
- コマンド プロンプトに対して (vl-load-com) と入力し、[Enter]を押します。
- (setq ename-circle (handent (cdr (assoc 5 (entget (car (entsel "¥n円をクリック:"))))))) と入力し、[Enter]を押します。
<Entity name: 27f0538>
- (setq vlaobject-circle (vlax-ename->vla-object ename-circle)) と入力し、[Enter]を押します。
#<VLA-OBJECT IAcadCircle 03642c24>
- (setq new-ename-circle (vlax-vla-object->ename vlaobject-circle)) と入力し、[Enter]を押します。
<Entity name: 27f0538>
オブジェクト ID を VLA オブジェクトに変換する
vla-get-ObjectID 関数は、関数に渡されたオブジェクト ID に対応する VLA オブジェクトを返します。指定した VLA オブジェクトのオブジェクト ID を取得するには、vla-ObjectIDtoObject を使用します。
- AutoCAD の作図領域で、円を描きます。
- コマンド プロンプトに対して (vl-load-com) と入力し、[Enter]を押します。
- (setq aDoc (vlax-get-property (vlax-get-acad-object) 'ActiveDocument)) と入力し、[Enter]を押します。
#<VLA-OBJECT IAcadDocument 0000000029430508>
- (setq aMSpace (vlax-get-property aDoc 'ModelSpace)) と入力し、[Enter]を押します。
#<VLA-OBJECT IAcadModelSpace 00000000304d7308>
- (setq aObjId (vla-get-ObjectID aMSpace)) と入力し、[Enter]を押します。
48
- (setq aObj (vla-ObjectIDToObject aDoc aObjId)) と入力し、[Enter]を押します。
#<VLA-OBJECT IAcadModelSpace 00000000304d7308>