Jagaimo
2点を選択して回転角度を決めて、選択したテキストかブロックの回転角度を変更します。
コマンドの内容
概要
2つの端点で定義される線分の角度を回転角度とし、選択したブロック、テキスト、マルチテキストの回転角度を変更します。
ユーザー入力
角度を定義する 2点
クリックして2点を入力します。
図形選択
2点を選択した後、図形選択します。
図形は1つづつ、ブロック、テキスト、マルチテキストを選ぶようにしています。
(外部参照もブロックと同じ属性なので選択できます。)
それ以外を選択すると、アラートが出て、図形選択に戻ります。
システム変数 (コマンド実行中だけ)
角度を定義する2点は、線分上にあることを想定して、オブジェクトスナップが近接点のみになるようにしています。
好みによって変更してください。
エラー処理を定義しているので、コマンド終了時には元の設定に戻ります。
AutoLISPプログラム
(defun c:Pt-Ro ( / *error* Pt1 Pt2 Ang Ent Ent0 OS)
;-----------------------------------------
(defun *error* (msg)
(if OS (setvar "OSMODE" OS))
(princ msg)
(princ))
;-----------------------------------------
(setq OS (getvar "OSMODE"))
;-----------------------------------------
(setvar "OSMODE" 512)
(setq
Pt1 (getpoint "点1を選択:")
Pt2 (getpoint "点2 を選択:")
Ang (angle Pt1 Pt2)
) ; setq
(while T
(setq flg "a" Obj nil)
(while flg
(while (null Obj)
(setq Obj (car(entsel "\nブロック /(マルチ)テキストを選択:\n")))
);while (null Obj)
(setq Ent (entget Obj))
(setq Ent0 (cdr(assoc 0 Ent)))
(if (or(= Ent0 "INSERT" )(= Ent0 "MTEXT" )(= Ent0 "TEXT" ))
(progn
(entmod (subst (cons 50 Ang) (assoc 50 Ent) Ent))
(setq flg nil)
);progn else
(progn (alert "\nこのコマンドはブロックか(マルチ)テキストのみ対応です\n")
(setq flg "a" OBJ nil)
));if progn
);while flg
);while T
(progn))
参考記事
2点から角度を得る関数について
角度の変更(DXF図形情報の書き換え)について
エラー処理について
オブジェクトスナップの変更について
特定の図形を選択する方法について