Jagaimo
図形のプロパティを変更する練習問題の解答編です。
解答
AutoLISP
(defun c:test ( / Ent)
(setq Ent (entget (car(entsel))))
(setq Ent (subst (cons 40 10) (assoc 40 Ent) Ent))
(entmod Ent)
(princ))
(setq Ent (entget (car(entsel))))
entsel で取り出した図形情報から、carで図形名を得て、entget でDXF図形情報を得て、変数Entに入れます。
(setq Ent (subst (cons 40 10) (assoc 40 Ent) Ent))
(assoc 40 Ent) で、グループ番号40番の情報、(40.既存の数値)を得ます。
(cons 40 10)で、置き換える要素 (40. 10) というドットペアを作ります。
そして、subst を使って、Entに入っているDXF図形情報の、 (40.既存の数値)と (40. 10) を入れ替えて、Entに入っている情報を更新します。
(entmod Ent)
最後にentmodで、変数Entに入れて編集したDXF図形情報を図形に反映させます。
Visual Lisp
(defun c:test ( / Vlobj)
(setq VlObj (vlax-ename->vla-object (car(entsel))))
(vla-put-radius VlObj 10)
(princ))
(setq VlObj (vlax-ename->vla-object (car(entsel))))
entsel で取り出した図形情報から、carで図形名を得て、vlax-ename->vla-objectで図形名をVLisp用図形名にして、変数VlObj に入れます。
(vla-put-radius VlObj 10)
vla-put-radiusで、VlObjに入れた図形の半径を10変更します。
Comments