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

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

無題
こんにちは。
autocad2024を使用しています。よろしくお願いいたします。
マルチ引き出し線を使っていますが、オブジェクトにより文字色を変更しなくてはなりません。
プロパティで文字色と引き出し線色を、その都度変更しています。そこで、マクロまたはリスプで
1.オブジェクト選択で文字色を取得
2.起点を支持してマルチ引き出し線
3.取得した文字色で文字記入
4.マルチ引き出し線の色を白色に変更
5.完了
というようなものを、希望しています。よろしくお願いいたします。
  • s.e
  • 2024/04/07 (Sun) 10:43:36
Re: 無題
LISPだとこんな感じ?
現在画層でマルチ引出線が作成されます。
オブジェクトの色がbylayerの場合はその画層の色を設定しています。

(defun c:cmt (/ ent clr lyr txt p1 p2)
(setq ent (entget (car (entsel))))
(setq lyr (cdr (assoc 8 ent)))
(setq clr (if (and (assoc 62 ent)(/= (cdr (assoc 62 ent)) 256)) ;bylayerの場合を分岐
(cdr (assoc 62 ent))
(cdr (assoc 62 (tblsearch "layer" lyr)))
)
)
(setq p1 (getpoint "\n起点を指定:"))
(setq p2 (getpoint p1 "\n2点目を指定:"))
(setq txt (strcat "\\C" (itoa clr) ";" (getstring "\n文字列を記入:"))) ;文字列の最初に色指定の書式コードを付加

(command-s "MLEADER" p1 p2 txt)
(command-s "CHANGE" "L" "" "P" "C" "white" "") ;引出線の色を白に
(princ)
)


>4.マルチ引き出し線の色を白色に変更
引出線自体の画層はまちまちなのでしょうか。
決まった画層があるのなら、その画層色を白に設定すればこれは不要な気がしますが・・・
その場合は、「;引出線の色を白に」の行が不要です。
  • LUNE
  • 2024/04/08 (Mon) 10:32:48
Re: 無題
LUNE様

ありがとうございます。リスプを動かしますと、線色が抽出されず すべて白で描かれます。

線色を取得して、文字色にしていただけないでしょうか・

よろしくお願いいたします。
  • s.e
  • 2024/04/08 (Mon) 10:54:18
Re: 無題
もしかして、オブジェクトの色はインデックスカラーではないのでしょうか?
  • LUNE
  • 2024/04/08 (Mon) 11:05:05
Re: 無題
LUNE様

ありがとうございます。

おっしゃる通り インデックスカラーを使用しています。

よろしくお願いいたします。
  • s.e
  • 2024/04/08 (Mon) 11:32:11
Re: 無題
インデックスカラーなら、示したLISPでオブジェクト色を文字色にできるはずですが・・・

ちなみに、文字が白になってしまうマルチ引出線を選択して、オブジェクトプロパティ管理の文字→内容の項目は、どう表示されていますか?
  • LUNE
  • 2024/04/08 (Mon) 11:37:23
Re: 無題
LUNE様

ありがとうございます。

マルチ引き出し線 プロパティでは、一般 色 White 文字 内容 記入した文字 と表示されています。

よろしくお願いいたします。
  • s.e
  • 2024/04/08 (Mon) 12:03:09
Re: 無題
LISPで作成したマルチ引出線を選択し、オブジェクトプロパティ管理の添付画像の赤枠部分になんと表示されているか、教えてください。
  • LUNE
  • 2024/04/08 (Mon) 12:38:56
Re: 無題
LUNE様

プロパティの文字 内容は記入した文字 「色は白です」が表示されています
  • s.e.
  • 2024/04/08 (Mon) 13:00:18
Re: 無題
LISPを実行したときのコマンドライン履歴を確認させてください。

CMTコマンド実行後、F2を押して、

オブジェクトを選択:
起点を指定:
2点目を指定:
文字列を記入:

から、最後の

変更するプロパティを入力 [色(C)/高度(E)/画層(LA)/線種(LT)/線種尺度(S)/線の太さ(LW)/厚さ(T)/透過性(TR)/マテリアル(M)/異尺度対応(A)]:
コマンド:

までのところを、メッセージに貼り付けてください。
  • LUNE
  • 2024/04/08 (Mon) 13:04:37
Re: 無題
コマンド: CMT
オブジェクトを選択:
起点を指定:
2点目を指定: <直交モード オフ>
文字列を記入:
MLEADER
引出線の矢印の位置を指定 または [文字を入力(T)/引出参照線を指定(L)/内容を指定(C)/オプション(O)] <オプション>:
引出参照線の位置を指定: CHANGE
オブジェクトを選択: L 認識された数: 1
オブジェクトを選択: 変更位置を指定 または [プロパティ(P)]: P
変更するプロパティを入力 [色(C)/高度(E)/画層(LA)/線種(LT)/線種尺度(S)/線の太さ(LW)/厚さ(T)/透過性(TR)/マテリアル(M)/異尺度対応(A)]: C
新しい色 [TrueColor(T)/カラー ブック(CO)] <BYLAYER>: white
変更するプロパティを入力 [色(C)/高度(E)/画層(LA)/線種(LT)/線種尺度(S)/線の太さ(LW)/厚さ(T)/透過性(TR)/マテリアル(M)/異尺度対応(A)]:
コマンド:

こんな感じです。こちらの設定がわるいのかな? まったくわかりません。よろしくお願いします。
  • s.e.
  • 2024/04/08 (Mon) 13:20:51
Re: 無題
実際、記入する文字を入力してのコマンドラインですか?
下記のように、
「文字列を記入:あいう」
「文字列を入力: \C4;あいう」
文字列のところに、実際入力した内容と、色を付加する書式コードを付加した文字列が表示されると思うのですが・・・

--------------------------------------------------------
コマンド: CMT

オブジェクトを選択:
起点を指定:
2点目を指定:
文字列を記入:あいう
MLEADER
引出線の矢印の位置を指定 または [引出参照線を指定(L)/内容を指定(C)/オプション(O)] <オプション>:
引出参照線の位置を指定:
文字列を入力: \C4;あいう CHANGE
オブジェクトを選択: L 認識された数: 1

オブジェクトを選択: 変更位置を指定 または [プロパティ(P)]: P
変更するプロパティを入力 [色(C)/高度(E)/画層(LA)/線種(LT)/線種尺度(S)/線の太さ(LW)/厚さ(T)/透過性(TR)/マテリアル(M)/異尺度対応(A)]: C
新しい色 [TrueColor(T)/カラー ブック(CO)] <BYLAYER>: white
変更するプロパティを入力 [色(C)/高度(E)/画層(LA)/線種(LT)/線種尺度(S)/線の太さ(LW)/厚さ(T)/透過性(TR)/マテリアル(M)/異尺度対応(A)]:
コマンド:
  • LUNE
  • 2024/04/08 (Mon) 13:30:00
Re: 無題
コマンド: CMT
オブジェクトを選択:
起点を指定:
2点目を指定:
文字列を記入:
MLEADER
引出線の矢印の位置を指定 または [文字を入力(T)/引出参照線を指定(L)/内容を指定(C)/オプション(O)] <オプション>:
引出参照線の位置を指定: CHANGE
オブジェクトを選択: L 認識された数: 1
オブジェクトを選択: 変更位置を指定 または [プロパティ(P)]: P
変更するプロパティを入力 [色(C)/高度(E)/画層(LA)/線種(LT)/線種尺度(S)/線の太さ(LW)/厚さ(T)/透過性(TR)/マテリアル(M)/異尺度対応(A)]: C
新しい色 [TrueColor(T)/カラー ブック(CO)] <BYLAYER>: white
変更するプロパティを入力 [色(C)/高度(E)/画層(LA)/線種(LT)/線種尺度(S)/線の太さ(LW)/厚さ(T)/透過性(TR)/マテリアル(M)/異尺度対応(A)]:
コマンド:
ありがとうございます。当方の設定の中で、文字記入について 外部エディタを使用しているため 文字列を記入 というものが出ないのだと思います。
当方の設定では 動作できないのでは? と思います。外部エディタは10年以上使用しています。変更はむつかしいので これが原因ならば 諦めます。

本当にお世話をおかけいたしました、貴重なお時間を取らせまして 申し訳ございません。
ありがとうございました。

  • s.e
  • 2024/04/08 (Mon) 13:56:26
Re: 無題
エディタの問題でしたか。
それなら、LISP中だけ変更する、というのもありかも。
以下をお試しください。

(defun c:cmt (/ ent clr lyr txt p1 p2 ed)
(setq ed (getvar "MTEXTED"))
(setvar "MTEXTED" ".")
(setq ent (entget (car (entsel))))
(setq lyr (cdr (assoc 8 ent)))
(setq clr (if (and (assoc 62 ent)(/= (cdr (assoc 62 ent)) 256))
(cdr (assoc 62 ent))
(cdr (assoc 62 (tblsearch "layer" lyr)))
)
)
(setq p1 (getpoint "\n起点を指定:"))
(setq p2 (getpoint p1 "\n2点目を指定:"))
(setq txt (strcat "\\C" (itoa clr) ";" (getstring "\n文字列を記入:")))

(command-s "MLEADER" p1 p2 txt)
(command-s "CHANGE" "L" "" "P" "C" "white" "")
(setvar "MTEXTED" ed)
(princ)
)
  • LUNE
  • 2024/04/08 (Mon) 14:07:59
Re: 無題
割り込み申し訳ありません。

>外部エディタ

これは、御社のオリジナルでしょうか?
どこかで購入又はダウンロードした物でしょうか?

後者であるなら、エディタの名称を教えて貰う事は出来ますか?
  • 通りすがりの人
  • 2024/04/08 (Mon) 14:46:33
Re: 無題
コマンド: CMT
オブジェクトを選択:
起点を指定:
2点目を指定:
文字列を記入:
MLEADER
引出線の矢印の位置を指定 または [文字を入力(T)/引出参照線を指定(L)/内容を指定(C)/オプション(O)] <オプション>:
引出参照線の位置を指定: CHANGE
オブジェクトを選択: L 認識された数: 1
オブジェクトを選択: 変更位置を指定 または [プロパティ(P)]: P
変更するプロパティを入力 [色(C)/高度(E)/画層(LA)/線種(LT)/線種尺度(S)/線の太さ(LW)/厚さ(T)/透過性(TR)/マテリアル(M)/異尺度対応(A)]: C
新しい色 [TrueColor(T)/カラー ブック(CO)] <BYLAYER>: white
変更するプロパティを入力 [色(C)/高度(E)/画層(LA)/線種(LT)/線種尺度(S)/線の太さ(LW)/厚さ(T)/透過性(TR)/マテリアル(M)/異尺度対応(A)]:
コマンド:
申し訳ございません やはり線色を拾ってくれません
  • s.e
  • 2024/04/08 (Mon) 14:53:37
Re: 無題
エディタが切り替わってないみたいですね。
なんでかなぁ。

(setvar "MTEXTED" ".") → (setvar "MTEXTED" "internal")
上記の変更してもダメですか?
  • LUNE
  • 2024/04/08 (Mon) 15:19:50
Re: 無題
通りすがりの人 様  ありがとうございます。

LI SUPPORTさんのマルチテキストエディタ Ver.2005です。

参考になりましたでしょうか?

9\dh6,t@eeqdjr>
  • s.e
  • 2024/04/08 (Mon) 15:22:49
Re: 無題
エディタがうまくいかないようなので、次善の策を考えてみました。

0.通常通りマルチ引出線を作成
1.LISP実行
2.オブジェクト選択

作成済みのマルチ引出線に対し、色を付加する書式コードを付加し、線の色を白にします。
マルチ引出線作成直後に実行してください。

(defun c:cmt4 (/ ent clr lyr txt mtent en)
(setq ent (entget (car (entsel))))
(setq lyr (cdr (assoc 8 ent)))
(setq clr (if (and (assoc 62 ent)(/= (cdr (assoc 62 ent)) 256))
(cdr (assoc 62 ent))
(cdr (assoc 62 (tblsearch "layer" lyr)))
)
)
(setq clr (strcat "\\C" (itoa clr) ";"))

;(prompt "\nマルチ引出線を選択:")
(setq en (entlast))
(setq mtent (entget en))
(setq txt (cdr (assoc 304 mtent)))
(setq mtent (subst (cons 304 (strcat clr txt))(assoc 304 mtent) mtent))
(entmod mtent)

(command-s "CHANGE" en "" "P" "C" "white" "")
(princ)
)

  • LUNE
  • 2024/04/08 (Mon) 16:11:11
Re: 無題
LUNE様  通りすがりの人様

キャドのほうで文字が描けなくなってしまいました。とりあえず 完結 としてください。

せっかくのリスプは 実行していません。大変お世話をおかけいたしました。

ありがとうございました。
  • s.e
  • 2024/04/08 (Mon) 16:51:30

返信フォーム






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