Archive for category LISP
グループ名を取得
in LISP on 2006/04/18
オブジェクトのグループ名を取得 (defun y_gname (E_NAME / KEY E_DATA LST) (setq KEY (cons 340 E_NAME)) (setq E_DATA (dictsearch (namedobjdict) "acad_group")) (while (setq E_DATA (member (assoc 3 E_DATA) E_DATA)) (if (member KEY (entget (cdadr E_DATA))) (setq LST (cons (cdar E_DATA) LST)) ) (setq E_DATA (cddr E_DATA)) ) (reverse LST) )
グループを消す
in LISP on 2006/03/23
;;グループ名のリスト (defun y_list_group (/ GR LST) (vlax-for GR (vla-get-groups (vla-get-activedocument (vlax-get-acad-object))) (setq LST (cons (vla-get-name GR) LST)) ) (mapcar 'strcase (reverse LST)) ) ;;グループを消す (defun c:group_dell( / GROBJ ) (setq GROBJ (vla-get-groups (vla-get-activedocument (vlax-get-acad-object)))) (foreach n (y_list_group) (vlax-invoke-method (vla-item GROBJ n) 'Delete) ) (princ) )
グループの個数を調べる
in LISP on 2006/03/22
(vlax-get-property (vla-get-groups (vla-get-activedocument (vlax-get-acad-object))) ‘Count)
イメージのロード・アンロード
in LISP on 2006/02/27
VLISPがまじったり、DXFで取得したり、イマイチ美しくないなぁ。
どうして私は探し出せないんだろう・・・。
(defun c:il( / E_NAME OBJ NAME ) (while (not (setq E_NAME (car (entsel))))) (setq OBJ (vlax-ename->vla-object E_NAME)) (setq NAME (vlax-get-property OBJ 'Name)) (if (= 0 (y_dxfdata 280 (entget (cdr (assoc 340 (entget E_NAME)))))) (command "-image" "r" NAME) (command "-image" "u" NAME) ) )
VLISPで交点を求める
in LISP on 2006/02/16
VLISP使えばポリラインでも円弧でも何でもござれ。
VBA使えばいいじゃん!という突っ込みはなし。
(vl-load-com) (defun test( E_NAME1 E_NAME2 / PT ) (setq E_NAME1 (vlax-ename->vla-object E_NAME1)) (setq E_NAME2 (vlax-ename->vla-object E_NAME2)) (setq PT (vlax-invoke-method E_NAME1 'IntersectWith E_NAME2 acExtendNone)) (vlax-safearray->list (vlax-variant-value PT)) )
ダイナミックブロック集
in LISP on 2006/02/08
VLISPダイナミックブロック集
[EffectiveName プロパティ]
元のブロック名を示します。
[IsDynamicBlock プロパティ]
ダイナミック ブロックかどうかを判断します。
[ConvertToAnonymousBlock メソッド]
ダイナミック ブロックを、名前のない通常のブロックに変換します。
[ConvertToStaticBlock メソッド]
ダイナミック ブロックを、名前の付いた通常のブロックに変換します。
[GetDynamicBlockProperties メソッド]
ダイナミック ブロックのプロパティを取得します。
[ResetBlock メソッド]
ダイナミック ブロックを既定値の状態にリセットします。
ダイナミックブロックの名前取得
in LISP on 2006/02/06
ダイナミックブロックって変形しちゃうと名前が「*Uほげ」とかになってしまう。
ということで、本当のブロック名を取得するLISP。
最初にダイナミックブロックをクリックしてね。
(setq E_DATA (entget (car (entsel))))
(setq E_DATA (entget (cdr (assoc 360 E_DATA))))
(setq E_DATA (entget (cdr (assoc 360 E_DATA))))
(setq E_DATA (entget (cdr (assoc 360 E_DATA))))
(cdr (assoc 2 (entget (cdr (assoc 340 E_DATA)))))
誰かVLISPで取得する方法しらない??調べられなかった(T○T)