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

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

寸法値を式に変更するマクロ
初めまして。
マクロの作成をお願いしたいです。
AutoCAD2016 LT 使用です。

希望の動作としては

1.寸法を選択(例:8000)
2.ピッチを入力(例:1000)
3.選択された寸法を指定されたピッチで割り、数を出す(例:8000/1000=8)
4.寸法値を上記の式に変更する(例:8@1000=<>)
※できれば複数の寸法を選択し、一括で変更したいです。

なのですが、作成は可能でしょうか?

宜しくお願い致します。
  • kgw
  • 2019/12/25 (Wed) 17:22:03
Re: 寸法値を式に変更するマクロ
こんな感じでしょうか

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),undo;be;select;\copybase;non;0<0;p;;erase;p;;setenv;pt1;ピッチを入力^X\-layout;d;tmplo;;n;tmplo;;s;tmplo;point;0<0;erase;all;;pasteclip;non;0<0;zoom;e;cmddia;0;setenv;cd;$(getvar,cmddia);;to;1,,,,)$(nth,$(getenv,to),,;to;4;select;l;;undo;m;dimoverride;dimtad;2;dimsah;0;dimblk;_none;;l;;setenv;to;2,,,)$(nth,$(getenv,to),,,explode;l;erase;l;;lengthen;dy;;;l;;;$M=undo;b;dim1;new;"""$(rtos,$(/,$(getvar,perimeter),$(getenv,pt1)),2)"""@$(getenv,pt1)=<>;l;;setenv;to;3,,)$(nth,$(getenv,to),,,,copybase;non;0<0;l;;erase;p;;-layout;s;model;pasteclip;non;0<0;-layout;s;tmplo;setenv;to;1,)$(nth,$(getenv,to),,,,,-layout;s;model;;d;tmplo;cmddia;$(getenv,cd);undo;e;^Csetenv;to;0)^M

2019.12.26_10:18 undo;e;追加しました
2020.08.17-9:46 dimash → dimsah に変更しました
  • chibi-tom
  • 2019/12/26 (Thu) 09:43:22
Re: 寸法値を式に変更するマクロ
ありがとうございます!
希望通りの動作です!
  • kgw
  • 2019/12/26 (Thu) 13:34:14
Re: 寸法値を式に変更するマクロ
すみませんAutoCAD2013 LTで動くようにするにはどうしたら良いでしょうか、、、。
  • kgw
  • 2019/12/26 (Thu) 15:35:26
Re: 寸法値を式に変更するマクロ
AutoCAD R/LT 2015以降の注意点
https://ameblo.jp/totthi-macro/entry-12220279344.html

上記を参考にすればわかると思いますが
lengthenコマンドの仕様変更がありましたので
逆に考えると

lengthen;dy;;;l;;;⇒lengthen;l;;

で、どうでしょうか
  • chibi-tom
  • 2019/12/26 (Thu) 16:11:29
Re: 寸法値を式に変更するマクロ
試してみましたができませんでした、、、。
(最後の;の数を増やしてみましたが、それもダメでした。)

基点、移動距離となり、移動してしまいます。
  • kgw
  • 2019/12/26 (Thu) 16:31:08
Re: 寸法値を式に変更するマクロ
どこで止まっているのかわからないので
駄目な場合のマクロの流れをコピペしてください
何かわかるかもしれません

Lt2011では大丈夫でした
  • chibi-tom
  • 2019/12/26 (Thu) 17:14:58
Re: 寸法値を式に変更するマクロ
コマンド: setenv
変数名を入力: to
値 <0>: 0
コマンド: undo
現在の設定: 自動 = オン, コントロール = すべて, 合成 = はい, 画層 = はい
取り消す操作の数を入力 または [自動(A)/コントロール(C)/開始(BE)/終了(E)/マーク(M)/後退(B)] <1>: be
コマンド: select
オブジェクトを選択: 認識された数: 1
オブジェクトを選択:
コマンド: copybase
基点を指定: non
0<0
認識された数: 1
コマンド: p
PAN 基点 または 移動距離を指定:
2 点を指定、または 移動距離を入力してから[Enter]キーを押してください。
基点 または 移動距離を指定: 2 点目を指定:


宜しくお願い致します。
  • kgw
  • 2019/12/26 (Thu) 17:22:35
Re: 寸法値を式に変更するマクロ
たぶんこれが原因かと

https://ameblo.jp/totthi-macro/entry-11228055581.html

・マクロ中のselectコマンド動作の仕様変更
 マクロで「select;non;@;non;@;;」後、copy/move等のコマンドを使用した場合
 選択継続している為、copy;p;;では基点指定となる為エラー(2012も?)
 何か設定があったような・・・

とのことなのでcopybaseも同じと考えるとですが

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),undo;be;select;\copybase;non;0<0;erase;p;;setenv;pt1;ピッチを入力^X\-layout;d;tmplo;;n;tmplo;;s;tmplo;point;0<0;erase;all;;pasteclip;non;0<0;zoom;e;cmddia;0;setenv;cd;$(getvar,cmddia);;to;1,,,,)$(nth,$(getenv,to),,;to;4;select;l;;undo;m;dimoverride;dimtad;2;dimsah;0;dimblk;_none;;l;;setenv;to;2,,,)$(nth,$(getenv,to),,,explode;l;erase;l;;lengthen;l;;$M=undo;b;dim1;new;"""$(rtos,$(/,$(getvar,perimeter),$(getenv,pt1)),2)"""@$(getenv,pt1)=<>;l;;setenv;to;3,,)$(nth,$(getenv,to),,,,copybase;non;0<0;l;;erase;p;;-layout;s;model;pasteclip;non;0<0;-layout;s;tmplo;setenv;to;1,)$(nth,$(getenv,to),,,,,-layout;s;model;;d;tmplo;cmddia;$(getenv,cd);undo;e;^Csetenv;to;0)^M

としたらどうでしょうか
lt2013は持っていないので症状を確認はできませんが

2020.08.17-9:46 dimash → dimsah に変更しました
  • chibi-tom
  • 2019/12/27 (Fri) 08:25:53
Re: 寸法値を式に変更するマクロ
やはり以前のような状態(移動)になり駄目でした、、。

お手数をお掛けしてすみません。
  • kgw
  • 2019/12/27 (Fri) 08:38:23
Re: 寸法値を式に変更するマクロ
止まったところは違うと思うのでまたコピペしてみてください
lt2013は持っていないので結果を見ないと、どこがNGなのか判断できません
  • chibi-tom
  • 2019/12/27 (Fri) 09:17:51
Re: 寸法値を式に変更するマクロ
移動の状態になった時にフェイタルエラーが出てしまいCADが落ちてしまっている状態でした、、。
調子が良い時にまた試してみたいと思います。

お手数をお掛けしますがその際はまた宜しくお願い致します。
  • kgw
  • 2019/12/27 (Fri) 09:39:33
Re: 寸法値を式に変更するマクロ
>フェイタルエラーが出てしまい
マクロのせいでなったのなら申し訳ないです

また思いついたので一応の報告です

もしcopybaseの後のeraseまで選択保持していると
こうなるのかもしれません

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),undo;be;select;\copybase;non;0<0;erase;;setenv;pt1;ピッチを入力^X\-layout;d;tmplo;;n;tmplo;;s;tmplo;point;0<0;erase;all;;pasteclip;non;0<0;zoom;e;cmddia;0;setenv;cd;$(getvar,cmddia);;to;1,,,,)$(nth,$(getenv,to),,;to;4;select;l;;undo;m;dimoverride;dimtad;2;dimsah;0;dimblk;_none;;l;;setenv;to;2,,,)$(nth,$(getenv,to),,,explode;l;erase;l;;lengthen;l;;$M=undo;b;dim1;new;"""$(rtos,$(/,$(getvar,perimeter),$(getenv,pt1)),2)"""@$(getenv,pt1)=<>;l;;setenv;to;3,,)$(nth,$(getenv,to),,,,copybase;non;0<0;l;;erase;p;;-layout;s;model;pasteclip;non;0<0;-layout;s;tmplo;setenv;to;1,)$(nth,$(getenv,to),,,,,-layout;s;model;;d;tmplo;cmddia;$(getenv,cd);undo;e;^Csetenv;to;0)^M

2020.08.17-9:46 dimash → dimsah に変更しました
  • chibi-tom
  • 2019/12/27 (Fri) 09:58:22
Re: 寸法値を式に変更するマクロ
外してたらスルーして下さい。

コマンド: select
オブジェクトを選択: 認識された数: 1
オブジェクトを選択:
コマンド: copybase
基点を指定: non
0<0
認識された数: 1
コマンド: p

を見るとcopybaseのオブジェクト選択がコマンドを発行時に終わっていると
思うので、pickaddの値をチェックしてもいいと思います。
  • zukki-
  • 2019/12/27 (Fri) 10:16:55
Re: 寸法値を式に変更するマクロ
すみませんわざわざありがとうございます。
会社のPCでしたので、年明けにでも試してみたいと思います。
  • kgw
  • 2019/12/27 (Fri) 15:04:46
Re: 寸法値を式に変更するマクロ
不具合も多発していたのでCADのバージョンを新しいものに変えることになりました。
お手数をおかけしました。

何度も丁寧な回答ありがとうございます。
  • kgw
  • 2020/01/06 (Mon) 10:28:04

返信フォーム






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