この掲示板は AutoCADマクロ屋本舗 の掲示板です。

【 注意 】最初に必ず ↓↓ 下記内容 ↓↓ を参照ください。
① マクロが分からない方は、まず 【 マクロ講座 】 を参照ください。
② 質問の前に 【 マクロ使用前の注意事項 】 をお読みください。
③ 質問する時は、新規投稿フォーム下の【 新規投稿時のお願い 】を必ずお読みください。

垂直、水平、任意2点切り替えの構築線マクロ
AutoCAD2015LTで使用しておりました首記マクロが動かない為
修正をしていただけないでしょうか。
使用しているCADは、IJ CAD2025PROです。
※TdMacros.lspは、読み込んでいます。

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),-Layer;n;作図補助-使用不可;P;N;作図補助-使用不可;;setenv;to;1,,)$(nth,$(getenv,to),,XLine;V;または[水平(右クリック)] ^X\"""$M=$(if,$(getvar,CMDACTIVE),;Change;L;;P;LA;作図補助-使用不可;C;5;;setenv;to;1,setenv;to;2)""",)$(nth,$(getenv,to),,,XLine;H;または[斜め(右クリック)] ^X\"""$M=$(if,$(getvar,CMDACTIVE),;Change;L;;P;LA;作図補助-使用不可;C;5;;setenv;to;2,setenv;to;3)""")$(nth,$(getenv,to),,,,;XLine;または[垂直(右クリック)] ^X\"""$M=$(if,$(getvar,CMDACTIVE),\;Change;L;;P;LA;作図補助-使用不可;C;5;;setenv;to;3,setenv;to;1)""",)^M



コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <0>: 0

コマンド: -Layer

現在の画層: LINE_2
オプションを入力[一覧(?
)/現在の層の新規作成(M)/現在の層の変更(S)/新規作成(N)/名前変更(R)/表示(ON)/非表示(OFF)/色設定(C)/線種設定(L)/線の太さ(LW)/透過性(TR)/マテリアル(MAT)/印刷(P)/フリーズ(F)/フリーズ解除(T)/ロック(LO)/ロック解除(U)/画層状態(A)/説明(D)/正規画層
(E)]: n

新しい画層の名前リストを入力: 作図補助-使用不可

画層 "作図補助-使用不可" が既存します。
オプションを入力[一覧(?
)/現在の層の新規作成(M)/現在の層の変更(S)/新規作成(N)/名前変更(R)/表示(ON)/非表示(OFF)/色設定(C)/線種設定(L)/線の太さ(LW)/透過性(TR)/マテリアル(MAT)/印刷(P)/フリーズ(F)/フリーズ解除(T)/ロック(LO)/ロック解除(U)/画層状態(A)/説明(D)/正規画層
(E)]: P

印刷設定を入力 [印刷する(P)/印刷しない(N)] <印刷する>: N

この印刷設定を設定する画層名を入力 <LINE_2>: 作図補助-使用不可
オプションを入力[一覧(?
)/現在の層の新規作成(M)/現在の層の変更(S)/新規作成(N)/名前変更(R)/表示(ON)/非表示(OFF)/色設定(C)/線種設定(L)/線の太さ(LW)/透過性(TR)/マテリアル(MAT)/印刷(P)/フリーズ(F)/フリーズ解除(T)/ロック(LO)/ロック解除(U)/画層状態(A)/説明(D)/正規画層
(E)]:

コマンド: setenv
変数名を入力: to
値 <0>: 1

コマンド:
SETENV 変数名を入力: ; エラー: 関数は取り消されました

コマンド:
コマンド: setenv
変数名を入力: to
値 <1>: 0

コマンド: XLine
点を指定 または [水平(H)/垂直(V)/角度(A)/2 等分(B)/オフセット(O)]: V

通過点を指定: または[水平(右クリック)] ^X

点が無効です。

通過点を指定:
  • まさ
  • 2025/09/21 (Sun) 11:34:49
Re: 垂直、水平、任意2点切り替えの構築線マクロ
IJCADは、複雑なDIESEL式は使えません。
$(nth,を複数用いたループは、まず機能しないと考えて良いです。
また、
""" """ を使った評価遅延も無効です。
^Xや^S,^Hなど^が付いた制御文字も無効です。
そのマクロには出てきませんが、ucsも仕様が違うので、AutoCADと同じ結果が得られません。
その他、様々な仕様の違いにより、DIESEL式を用いない単純なマクロでも、AutoCAD用に作られたものはIJCADでは動かない事が多いです。

といった訳で、IJCADでコマンドマクロで複雑な処理をするのは絶望的です。
IJCADのメーカーも公式にそれを認めており、LISPを使用することを推奨しています。

  • Hamu
  • 2025/09/22 (Mon) 08:22:50
Re: 垂直、水平、任意2点切り替えの構築線マクロ
lispにしたらこんな感じです。
メモ帳でlispファイルを作成する場合、文字コードをANSIに変更して保存して下さい。(UTF-8では動きません)

(defun C:Xline2 (/ hv hv-list hv-txt)

(defun *myerror_Xline2* (msg)
(setq *error* nil)
(setvar "CMDECHO" 1)
)

(setq hv 0 hv-list '("V" "H" "") hv-txt '("水平" "斜め" "垂直"))
(setq *error* *myerror_Xline2*)
(setvar "CMDECHO" 0)

(command "-Layer" "n" "作図補助-使用不可" "P" "N" "作図補助-使用不可" "")
(while T
(command "Xline")
(if (> 2 hv) (command (nth hv hv-list)))
(princ (strcat "\n通過点を指定 [" (nth hv hv-txt) "(右クリック)]:"))
(command pause)

(if (eq 1 (getvar "CMDACTIVE"))
(progn
(if (eq 2 hv) (command pause))
(command "" "Chprop" "L" "" "LA" "作図補助-使用不可" "")
)
(setq hv (rem (1+ hv) 3))
)
(princ (strcat "・・" (nth (rem (+ hv 2) 3) hv-txt) "モード継続 ・・"))
(setq *error* nil)
)
(princ)
)
  • Hamu
  • 2025/09/22 (Mon) 10:27:15
Re: 垂直、水平、任意2点切り替えの構築線マクロ
Hamu様へ

ありがとうございます!
以前のマクロとまったく同じで、とても使いやすいです。
お忙しい中、lispの作成をしていただきまして感謝いたします。
  • まさ
  • 2025/09/22 (Mon) 22:16:35

返信フォーム






プレビュー (投稿前に内容を確認)