「Vlax-get-acad-object」の版間の差分

提供:GizmoLabs - だいたい CAD LISP なサイト
編集の要約なし
編集の要約なし
18行目: 18行目:
(setq aa (vlax-get-acad-object))
(setq aa (vlax-get-acad-object))
#<VLA-OBJECT IAcadApplication 00b3b91c>
#<VLA-OBJECT IAcadApplication 00b3b91c>
(vlax-dump-object aa)
; IAcadApplication: An instance of the AutoCAD application
; プロパティの値:
;  ActiveDocument = #<VLA-OBJECT IAcadDocument 000000002f023940>
;  Application (RO) = #<VLA-OBJECT IAcadApplication 00000001401e91d8>
;  Caption (RO) = "AutoCAD 2012 - [xxx.dwg]"
;  Documents (RO) = #<VLA-OBJECT IAcadDocuments 000000002fdf0780>
;  FullName (RO) = "C:\\Program Files\\Autodesk\\AutoCAD 2012\\acad.exe"
;  Height = 1064
;  HWND (RO) = 2887386
;  HWND32 (RO) = 2887386
;  LocaleId (RO) = 1041
;  MenuBar (RO) = #<VLA-OBJECT IAcadMenuBar 000000002fdef828>
;  MenuGroups (RO) = #<VLA-OBJECT IAcadMenuGroups 0000000008566d20>
;  Name (RO) = "AutoCAD"
;  Path (RO) = "C:\\Program Files\\Autodesk\\AutoCAD 2012"
;  Preferences (RO) = #<VLA-VBA システムを初期化中...OBJECT IAcadPreferences
000000002f765418>
;  StatusId (RO) = ...インデックス化された中身が見つかりません...
;  VBE (RO) = #<VLA-OBJECT VBE 0000000033d77e18>
;  Version (RO) = "18.2s (LMS Tech)"
;  Visible = -1
;  Width = 1938
;  WindowLeft = -9
;  WindowState = 3
;  WindowTop = -9
T
; ------------------------------------------------------
; Application オブジェクトとか Active Document とか
; オブジェクトのルートに近いところを頻繁に呼び出すと遅くなるので、
; グローバル変数にしといてコントロールするとよさげ。
(setq *acad-object* nil)      ; 初期化
(defun acad-object ()
  ; CAD オブジェクトの取得
  (cond (*acad-object*)      ; 値を返す-取ってなかったら取得
    (T (setq *acad-object* (vlax-get-acad-object)) )))
(setq *actdoc* nil)  ; 初期化
(defun active-document ()
  (cond (*actdoc*)  ; 値を返す-取ってなかったら取得
    (T (setq *actdoc* (vla-get-activedocument (acad-object))) )))
(setq *mspace* nil)      ; 初期化
(defun model-space ()
  (cond (*mspace*)      ; 値を返す-取ってなかったら取得
    (T (setq *mspace* (vla-get-modelspace (active-document))) )))
</pre>
</pre>




[[Category:AutoLISP]]
[[Category:AutoLISP]]

2013年11月30日 (土) 16:23時点における版

構文
(vlax-get-acad-object)


機能
現在の CAD セッションのトップ レベルの CAD アプリケーション オブジェクトを取得する。
引数
  • なし
戻り値
CAD の VLA オブジェクト。


サンプル
(setq aa (vlax-get-acad-object))
#<VLA-OBJECT IAcadApplication 00b3b91c>

(vlax-dump-object aa)
; IAcadApplication: An instance of the AutoCAD application
; プロパティの値:
;   ActiveDocument = #<VLA-OBJECT IAcadDocument 000000002f023940>
;   Application (RO) = #<VLA-OBJECT IAcadApplication 00000001401e91d8>
;   Caption (RO) = "AutoCAD 2012 - [xxx.dwg]"
;   Documents (RO) = #<VLA-OBJECT IAcadDocuments 000000002fdf0780>
;   FullName (RO) = "C:\\Program Files\\Autodesk\\AutoCAD 2012\\acad.exe"
;   Height = 1064
;   HWND (RO) = 2887386
;   HWND32 (RO) = 2887386
;   LocaleId (RO) = 1041
;   MenuBar (RO) = #<VLA-OBJECT IAcadMenuBar 000000002fdef828>
;   MenuGroups (RO) = #<VLA-OBJECT IAcadMenuGroups 0000000008566d20>
;   Name (RO) = "AutoCAD"
;   Path (RO) = "C:\\Program Files\\Autodesk\\AutoCAD 2012"
;   Preferences (RO) = #<VLA-VBA システムを初期化中...OBJECT IAcadPreferences 
000000002f765418>
;   StatusId (RO) = ...インデックス化された中身が見つかりません...
;   VBE (RO) = #<VLA-OBJECT VBE 0000000033d77e18>
;   Version (RO) = "18.2s (LMS Tech)"
;   Visible = -1
;   Width = 1938
;   WindowLeft = -9
;   WindowState = 3
;   WindowTop = -9
T


; ------------------------------------------------------
; Application オブジェクトとか Active Document とか
; オブジェクトのルートに近いところを頻繁に呼び出すと遅くなるので、
; グローバル変数にしといてコントロールするとよさげ。

(setq *acad-object* nil)      ; 初期化
(defun acad-object ()
  ; CAD オブジェクトの取得
  (cond (*acad-object*)       ; 値を返す-取ってなかったら取得
    (T (setq *acad-object* (vlax-get-acad-object)) )))

(setq *actdoc* nil)  ; 初期化
(defun active-document ()
  (cond (*actdoc*)   ; 値を返す-取ってなかったら取得
    (T (setq *actdoc* (vla-get-activedocument (acad-object))) )))

(setq *mspace* nil)      ; 初期化
(defun model-space ()
  (cond (*mspace*)       ; 値を返す-取ってなかったら取得
    (T (setq *mspace* (vla-get-modelspace (active-document))) )))