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

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

寸法のプロパティコピーで上書き文字
はじめまして。

寸法のプロパティコピーで上書き文字も反映させるには
どうしたら良いでしょうか。

「@50x6=<>」のように寸法値に上書きしていますが
それを他の寸法にもコピーしたいです。
「φ」等の定型なら簡単なのですが。

使用しているのはAUTOCAD2014です。
  • TOMO
  • 2019/08/22 (Thu) 10:08:03
Re: 寸法のプロパティコピーで上書き文字
上書き文字はプロパティコピーでは反映されません。

上書きではなく、オブジェクトプロパティ管理で、寸法値の接頭表記の欄に「@50x6=」と記述すれば、
上書きで「@50x6=<>」とした時と同じ状態になります。

接頭表記に記入した物であれば、プロパティコピーで反映されます。
  • Lon
  • 2019/08/22 (Thu) 11:00:58
Re: 寸法のプロパティコピーで上書き文字
A1.寸法に追記するときに、寸法のプロパティから接頭表記を選んで追記する
A2.コピーしたい時は、プロパティコピーでコピー元をクリック、変更したい寸法をクリック
こういうことですね。

現状では
B1.寸法をダブルクリック、で追記する(これが自動で上書き状態)
B2.コピーしたい時は、コピー元をダブルクリックでctrl+C、変更したい寸法をダブルクリックでctrl+V
このように使用しています。

コピーしたい時の頻度が少ないので、B1とA2で済むようにしたいのです。
プロパティコピーにこだわっていません。プロパティコピーのように簡単に上書きしたいのです。

宜しく御願いします



  • TOMO
  • 2019/08/22 (Thu) 12:02:52
Re: 寸法のプロパティコピーで上書き文字
dimoverrideを使えば良いのではないでしょうか

*^C^Cselect;$M=$(if,$(getvar,cmdactive),\,)dimoverride;dimpost;@50x6=<>;;p;^M

接頭表記を都度変えたければこんな感じ
*^C^Cselect;$M=$(if,$(getvar,cmdactive),\,)setenv;接頭表記;\dimoverride;dimpost;$M="$(getenv,接頭表記)"<>;;p;^M

ピッチと個数指定ならこんな感じ
*^C^Cselect;$M=$(if,$(getvar,cmdactive),\,)setenv;ピッチ;\;個数;\dimoverride;dimpost;@$M="$(getenv,ピッチ)"x$M="""$(-,$(getenv,個数),1)"""=<>;;p;^M

とすればA2だけで済むのではないでしょうか

最初は選択後マクロ起動でもマクロ起動後選択でもOKです。
※、コピー元の考えが無いので変更したい寸法をすべて一緒に選択してください
  • chibi-tom
  • 2019/08/22 (Thu) 13:34:05
Re: 寸法のプロパティコピーで上書き文字
やはり接頭表記で記入するしかないのでしょうか。

接頭表記では、他の人に図面データを渡した時に融通が利かないので
「φ」とかの定型以外では、あまり使用したくないのです。
  • TOMO
  • 2019/08/22 (Thu) 14:11:46
Re: 寸法のプロパティコピーで上書き文字
上書き仕様です

*^C^Cselect;$M=$(if,$(getvar,cmdactive),\,)cmddia;0;dim1;new;@50x6=<>;_p;;cmddia;1^M

*^C^Cselect;$M=$(if,$(getvar,cmdactive),\,)setenv;接頭表記;\cmddia;0;dim1;new;$M="$(getenv,接頭表記)"<>;_p;;cmddia;1^M

*^C^Cselect;$M=$(if,$(getvar,cmdactive),\,)setenv;ピッチ;\;個数;\cmddia;0;dim1;new;@$M="$(getenv,ピッチ)"x$M="""$(-,$(getenv,個数),1)"""=<>;_p;;cmddia;1^M
  • chibi-tom
  • 2019/08/22 (Thu) 14:32:00
Re: 寸法のプロパティコピーで上書き文字
色々とありがとうございます。

私の説明が悪いのですが
現状B1にて寸法の上書きは終わっている状態で
新たにひいた寸法に同じ文言を入れたいのです。(B2)
寸法編集で同時に入れるのではなく、後から追加したいのです。
  • TOMO
  • 2019/08/22 (Thu) 15:11:36
Re: 寸法のプロパティコピーで上書き文字
すいません自分はLTしか使っていないので
マクロでの文字内容をコピーすることができないです

ただ、もし文字が固定なら一番上のマクロで寸法を選択すれば上書きされるはずですが
試してはいただけたでしょうか?

下の二つも
>寸法をダブルクリック、で追記する
この作業をこのマクロ内でしているだけですが違いますか?
自動で上書き状態になることがわからないですけど
もしマクロかなにかで自動で上書き状態になるならそのマクロを組み込むこともできそうですけど

自分ならですけど新たに引かず、元の寸法をコピーして使います(面倒かな)


文字内容をコピーしたいならLTの自分には無理なので退散します

  • chibi-tom
  • 2019/08/22 (Thu) 15:46:15
Re: 寸法のプロパティコピーで上書き文字
レギュラー版でも、文字内容のコピーは標準機能では無理な操作です。(標準機能で無理ならマクロでも無理)

ですから、LISP等を使うしかないです。

例えば、下記のホームページでLISP集が無償提供されております。
http://geolog.mydns.jp/www.geocities.jp/acad_rep/
そのなかに、「ar_copy_dimtxt(寸法文字コピー)」というlispがあります。
おそらく、そのLISPでご希望の事が出来るのではないでしょうか。

私はそのLISPを使った事が無いので、想像で発言しております。
  • Lon
  • 2019/08/22 (Thu) 16:01:48
Re: 寸法のプロパティコピーで上書き文字
追記する文字は多岐に渡り、固定ではないです。
普段は極力同時入力していますが、入れ忘れた時に使用したかったのです。

そして記入し忘れましたが、私の使用しているのもLTです。
よってLIPSは使えません。

色々とお手数をおかけして申し訳ないです
ありがとうございました。
  • TOMO
  • 2019/08/22 (Thu) 16:31:24
Re: 寸法のプロパティコピーで上書き文字
もう見てないかもしれませんが……。
Python、ezdxf、DISELマクロを組み合わせれば実現できるだろうと思います。

複数選択された寸法に対して、一番目の「寸法値の優先」の値を
二番目以降の寸法に上書きします。

以下のサイトからサンプルコードをダウロードしてください。

https://bitbucket.org/birds_of_paradise_2015/junk_script/src/master/

適当なフォルダに展開してください。

「dxf_dimtext_copy」フォルダが今回のサンプルコード群になります。


環境を以下のように整えたとします。

DXFファイルのパス: c:\temp\dxf_temp.dxf
ブロック名: dxf_temp
起動用バッチファイルのパス: c:\bin\scripts\dxf_di~1.bat
DXFファイル削除用スクリプトのパス: c:\bin\scripts\sweeper.bat

ファイルパスは最終的にMS-DOS(8.3)形式で使用します。

LT用のDISELマクロは以下のように書けば良いのではないでしょうか。

^C^C_SELECT;$M=$(if,$(getvar,cmdactive),\)_DXFOUT;c:/temp/dxf_temp.dxf;O;P;;V;2013;16;_ERASE;P;;AI_STARTAPP;c:/bin/scripts/dxf_di~1.bat;DELAY;2000;-INSERT;c:/temp/dxf_temp.dxf;0,0;1;1;0;_EXPLODE;L;-PURGE;B;dxf_temp;N;AI_STARTAPP;c:/bin/scripts/sweeper.bat;

※Pythonスクリプトの実行終了まで待たずに次のコマンドに
 進むため2秒の待ち時間を取ります。また、文字制限があるため、
 DISELマクロをふたつに分ける必要があるかもしれません。
 _ERASEや-INSERTの前後で分けるとか。

 ここら辺は検証不足なのでもうちょっとマシな記述があるかもしれません。

 連続使用はできません。必ず間が必要です。

起動用バッチファイルの内容は以下のように記述しているものとします。
@echo off
python.exe "%~dp0dxf_dimtext_copy.py" "c:\temp\dxf_temp.dxf"

DXFファイル削除用スクリプトの内容は以下のように記述しているものとします。
@echo off
del "c:\temp\dxf_temp.dxf"


実行には以下が必要になります。

Welcome to Python.org
https://www.python.org/

GitHub - mozman/ezdxf: Python interface to DXF
https://github.com/mozman/ezdxf
  • 極楽鳥
  • 2019/08/25 (Sun) 20:28:38
Re: 寸法のプロパティコピーで上書き文字
>もう見てないかもしれませんが……。
>Python、ezdxf、DISELマクロを組み合わせれば実現できるだろうと思います。

ありがとうございます。
試してみます。
  • TOMO
  • 2019/08/28 (Wed) 10:38:04

返信フォーム






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