オブジェクトのプロパティを取得したり、オブジェクトのプロパティを変更するには(AutoLISP/ActiveX)

ActiveX 関数を使用してオブジェクトのプロパティの値を設定したり、取得することができます。

注: AutoLISP での ActiveX のサポートは Windows のみに制限されています。

オブジェクトのプロパティを取得して、そのプロパティを新しいオブジェクトに適用する

  1. AutoCAD のコマンド プロンプトに対して、使用するプロパティが含まれたオブジェクトを取得または作成する AutoLISP 文を入力します。

    たとえば、この関数は、円の中心点を指定するようプロンプトを表示してから、AddCircle メソッドを呼び出して円を描きます。vlax-3d-point 関数は、指定された点を vla-addcircle 関数が要求するデータ タイプに変換します。

    (setq 3dpt (vlax-3d-point (getpoint "\nPick the center point for a circle: "))
    (setq myCircle (vla-addcircle mspace 3dpt 2.0))
  2. VLA オブジェクトのプロパティを取得して別の VLA オブジェクトに割り当てる別の AutoLISP 文を入力します。

    たとえば、同心円を作成するには、Circle オブジェクトの vla‑get‑center 関数を使用します。

    (vla-addCircle mSpace (vla-get-center myCircle) 1.0)

オブジェクトのプロパティを変更する

  1. 円の現在の中心点を取得します。
    (setq myCenter (vla-get-center myCircle))

    中心点は、セーフ配列タイプのバリアント型に返されます。セーフ配列には、3 つの倍精度浮動小数点数型(X、Y、Z 座標)が格納されています。

  2. リスト形式で中心点を格納します。
    (setq centerpt (vlax-safearray->list (vlax-variant-value myCenter)))

    中心点をバリアント型のセーフ配列からリストに変換すると、座標の変更が容易になります。

  3. 中心点の X 軸から 1 を引きます。
    (setq newXaxis (- (car centerpt) 1))

    結果は、変数 newXaxis に格納されます。

  4. 新しい X 軸と元の Y および Z 値を使用して、中心点の新しい点リストを作成します。
    (setq newcenter (list newXaxis (cadr centerpt) (caddr centerpt)))

    作成したリストが変数 newcenter に格納されます。

  5. 新しい X 軸を使用して円を更新するには、vla-put-center 関数を使用します。
    (vla-put-center myCircle (vlax-3d-point newcenter))

    新しい中心点のリストを vla-put-center 関数が要求するデータ タイプに変換するために、このコマンドが vlax-3d-point 関数を使用していることに注目してください。

    図面ウィンドウに結果が表示されます。