Sponsored links

【AutoLISP VLISP】vlax-dump-object ActiveX図形情報を見る

Sponsored links
Visual Lisp
Sponsored links

AutoLISPをパワーアップさせるVisualLisp (VLISP)では、図形のActiveXの情報をみることができます。

ActiveXでは、DXF図形情報の変更だけでは編集できないプロパティも変更できます。

Sponsored links

VLISP関数 vlax-ename->vla-object

VLで始まる関数が、VLISP関数です。
vlax-ename->vla-object は、entsel で得た要素(エンティティ)の名前を、VLISP用の名前に変更する機能があります。

(setq Obj (car (entsel)))
(setq VlObj (vlax-ename->vla-object Obj)

これで、VlObjに、VLISP関数で操作できる、図形のVLAオブジェクト名が入りました。

VLISP関数 vlax-dump-object

entget でDXF図形情報を見るように、vlax-dump-objectを使うと、ActiveX 図形情報を見ることができます。

引数は、VLISP用のオブジェクト名です。

vlax-ename->vla-object と vlax-dump-object を組み合わせて、ActiveX の図形情報を表示させるコマンドがこちらです。

(defun c:test-AX (/ Obj VlObj )
    (setq Obj (car(entsel)))
       (setq VlObj (vlax-ename->vla-object Obj))
          (vlax-dump-object VlObj)
)

コマンド名は test-AX です。実行して図形を選択すると、そのActiveX 図形情報がコマンドラインに出てきます。

これは、円を選択した場合の一例です。

Select object: ; IAcadCircle: AutoCAD Circle Interface
; Property values:
; Application (RO) = #
; Area = 314.159
; Center = (500.0 1000.0 0.0)
; Circumference = 62.8319
; Diameter = 20.0
; Document (RO) = #
; EntityTransparency = "ByLayer"
; Handle (RO) = "41C0A"
; HasExtensionDictionary (RO) = 0
; Hyperlinks (RO) = #
; Layer = "0"
; Linetype = "ByLayer"
; LinetypeScale = 1.0
; Lineweight = -1
; Material = "ByLayer"
; Normal = (0.0 0.0 1.0)
; ObjectID (RO) = 45
; ObjectName (RO) = "AcDbCircle"
; OwnerID (RO) = 43
; PlotStyleName = "ByLayer"
; Radius = 10.0
; Thickness = 0.0
; TrueColor = #
; Visible = -1
T

DXF図形情報との比較

では、entget で出てくるDXF図形情報と比較してみましょう。

(defun c:test-Ent (/ Obj)
    (setq Obj (car(entsel)))
      (entget Obj)
)

コマンド名は test-Ent です。実行して図形を選択すると、DXF図形情報が出てきます。

そして、上の例と全く同じ円を選択した情報がこちらです。

((-1 . ) (0 . "CIRCLE") (330 . ) (5 . "41C0A") (100 . "AcDbEntity") (67 . 1) (410 . "01") (8 . "0") (100 . "AcDbCircle") (10 500.0 1000.0 0.0) (40 . 10.0) (210 0.0 0.0 1.0))

比較してみると、ActiveX 図形情報の方が多くのプロパティが表示されますね。

DXF図形情報から情報を得たり内容を変更して図形の編集ができるように、ActiveX図形情報からも図形の情報を得たり内容を変更して図形の編集ができます。

まとめ

  • vlax-ename->vla-object で、(car (entsel))で得る図形名をVLISPで扱える図形名に変換できる。
  • vlax-dump-object で、ActiveX図形情報を得ることができる。

Comments