コマンドの内容
引出線/マルチ引出線の矢印変更を変更します。
コマンド名
ArrowNormal 矢印(初期値のもの)
ArrowDot AutoCAD既存のブロック(ドット)
ArrowEllipse ユーザーブロック “ELLIPSE”
の3種類を用意しました。
ユーザーブロックの場合は、ブロック”ELLIPSE” を用意するか、コマンドの”ELLIPSE”の部分を使いたいブロック名に変更してお使いください。
自作関数 Jaga00ChangeArrowHead に共通部分はまとめているので、類似コマンドを作りやすいと思います。
Jaga00ChangeArrowHeadに渡す引数は タイプ、ブロック名、サイズです。
タイプは、矢印が 0 、既存ブロックが 3、 ユーザブロックが20 です。
これは数値ですのでダブルクォーテーションマークは付けないでください。
AutoLISP プログラム
(defun c:ArrowNormal ()
(Jaga00ChangeArrowHead 0 "" 3)
(princ));defun
(defun c:ArrowDot ()
(Jaga00ChangeArrowHead 3 "_Dot" 1.5)
(princ));defun
(defun c:ArrowEllipse ()
(Jaga00ChangeArrowHead 20 "ELLIPSE" 1)
(princ));defun3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;| ------------------------------------------------------
Jaga00ChangeArrowHead
引出線/マルチ引出線の変更
引数
Typ タイプ 0=デフォルト 3=ACADブロック 20=ユーザーブロック
BlkNm ブロック名 デフォルト時は ""
Sz サイズ
------------------------------------------------------|;
(vl-load-com)
(defun Jaga00ChangeArrowHead (Typ BlkNm Sz / VlOBJ)
(setq OBJs (ssget "_I" '((0 . "*LEADER"))))
(if OBJs
(setq OBJ (ssname OBJs 0))
(progn
(setq OBJ nil flg "No")
(while flg
(while (null OBJ)
(setq OBJ (car (entsel "\n引き出し線を選択: ")))
);while null OBJ
(if (wcmatch (cdr(assoc 0 (entget OBJ))) "*LEADER")
(setq flg nil)
(setq flg "No" OBJ nil)
);if
);while flg
);progn
);if
(setq VlObj (vlax-ename->vla-object Obj))
(if (= Typ 20)
(vla-put-ArrowheadBlock VlObj BlkNm)
(vla-put-ArrowheadType VlObj Typ)
)if
(vla-put-ArrowheadSize VlObj Sz)
(princ "\n=========== JagaimoLISP.com ===========")
);defun
ダイアログボックス付き
このコマンドにダイアログボックスを付けたサンプルです。
ラジオボタンで選んだものが画像で出てくるダイアログボックス
画像がボタンになっているダイアログボックス
Comments