Sponsored links

【AutoLISP サンプル】 引出線/マルチ引出線の矢印変更

Sponsored links
サンプル
Sponsored links
Sponsored links

コマンドの内容

引出線/マルチ引出線の矢印変更を変更します。

コマンド名

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

ダイアログボックス付き

このコマンドにダイアログボックスを付けたサンプルです。

ラジオボタンで選んだものが画像で出てくるダイアログボックス

画像がボタンになっているダイアログボックス

AutoLISP サンプル一覧

参考記事

Comments