既存線から属性を取得して作図する方法を教えていただきたいです
回答済みお世話になっております。
図面内に作図済みのデータをクリックしたら、
既存とまったく同じ属性などの情報を取得し、線や円や寸法などのコマンコマンドを
作図する際に同じないようにするような機能がありましたら教えていただきたいです。
MATCHPROPでプロパティをコピーできますが、
新規で線や寸法を作図する際に取得したプロパティを反映するようなイメージです。
よろしくお願いいたします。
-
基本機能では無いと思います。
LISPを用いて実現できないか、と考え試作してみたので、共有します。
様々な図形を選択して、その図形ごとに、、、、となると難易度があがるため、LINEでとりあえず試作してみました。
参考になると幸いです。
以下のLISPコードは、選択した線分の属性をコピーし、新しく作成する線分にその属性を適用するものです。まず、選択した線分の属性をコピーし、その後LINEコマンドで新しい線分を作図し、最後に新しい線分に属性を適用します。
(準備)以下のコードをコピーして、コマンドラインに流すと、COPYLINEPROPSコマンドを利用できるように登録します。
(defun c:CopyLineProps (/ ss ent start end new-line)
(setq ss (ssget '((0 . "LINE")))) ; 線分を選択
(if ss
(progn
(setq ent (ssname ss 0))
(setq start (cdr (assoc 10 (entget ent))))
(setq end (cdr (assoc 11 (entget ent))))
(command "LINE" pause pause "") ; 新しい線分を作図
(setq new-line (entlast)) ; 新しい線分を取得
(command "MATCHPROP" ent new-line) ; 属性をコピー
)
)
(princ)
)このLISPコードの使い方は以下の通りです:
- コマンドラインに COPYLINEPROPS と入力します。
- 属性をコピーしたい線分を選択します。
- 新しい線分を作図します(LINEコマンドと同様に始点と終点を指定します)。
※ちなみに、IJCAD立ち上げごとに、(準備)作業は必要です。STD以上のグレードでは、マクロ登録やコードのファイル(.lsp)をロードさせる方法で、一度設定すれば、(準備)作業なしでSEPLINEコマンドを実行できるようにできます。不明点などあれば、追加でご質問ください。
0 -
お手間を掛けて作成いただき誠にありがとうございます。
コマンド登録のようなことができると思っていなかったので非常に驚きました。
私の説明が下手で申し訳ございません、属性を取得したらその後はその属性で連続作図したいかったです。
※jw_cadの属性取得で線色や線種やレイヤを取得した場合と同じ動作になってほしい感じでした。
属性コピーをして線を1本作図すると、属性の設定になるため、
希望していた操作とは違うようです、せっかつく作っていただいたのに申し訳ございません。作成いただきありがとうございました。
0 -
画層のLAYMCURコマンドで行いたいことができました。
ありがとうございました。0 -
共有ありがとうございます!
なるほど、確かに画層の機能を生かして、解決できそうでしたね、、。
盲点でした。
発想が転換された気分です。
Jw_cadとは操作感が違う部分もありますよね。
勉強になりました。
0 -
めいパパさんありがとうございます。
画層の機能という文字をみていろいろ試してみました。もともと、設定頂いたデータをいただいて、
修正するだけという理解レベルで自分では設定できないような状態でして、
きちんとわかっていなかったようです。
いろいろ試してみたところ画層にきちんと設定をしていないと、LAYMCURをしても読み取れず意味のない状態になるのではないかということに気が付きました。
しっかりと理解はできておらず中途半端な状態での書き込みですが、
画層の機能というヒントをありがとうございます。0
サインインしてコメントを残してください。
コメント
5件のコメント