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

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

右クリックで挿入するブロックを切り替えられるマクロ
お世話になります。

現在、ブロック毎に下記のようなマクロを使用し、ブロックの挿入をしています。

*^C^C_-insert;ブロック名;¥;;¥

これら2つないし3つをまとめて、右クリックで挿入するブロックを切り替えられるマクロをご教示頂けないでしょうか。

対応して頂ければ幸いです。

(使用verは2017です)
  • AP
  • 2018/05/14 (Mon) 16:54:38
Re: 右クリックで挿入するブロックを切り替えられるマクロ
こんな感じでしょうか?

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),setenv;SW;0;setenv;to;1,;BL1;$(nth,$(getenv,sw),ブロック名1,ブロック名2,ブロック名3);setenv;to;2,,,)$(nth,$(getenv,to),,,;to;0;join;ブロック名<$(getenv,BL1)>--切替(右)^X\$M="""$(if,$(getvar,cmdactive),;setenv;to;4,setenv;to;3)""",,)$(nth,$(getenv,to),,,,;sw;$(if,$(=,$(getenv,SW),2),0,$(+,$(getenv,SW),1));;BL1;$M="""$(nth,$(getenv,sw),ブロック名1,ブロック名2,ブロック名3)""";;to;2,)$(nth,$(getenv,to),,,,,expert;5;-insert;$(getenv,BL1);\;;\expert;0;setenv;to;0)^M

ブロック名1,2,3それぞれ2箇所ずつ変えて使用してください
またブロック数を変える場合は
;sw;$(if,$(=,$(getenv,SW),2)←ここの数字をブロック数から-1にしてください
  • chibi-tom
  • 2018/05/15 (Tue) 08:05:19
Re: 右クリックで挿入するブロックを切り替えられるマクロ
記載忘れです。
切替できるブロックの数は最大8個です。

ついでに少しだけ修正してます。
  • chibi-tom
  • 2018/05/15 (Tue) 11:15:43
Re: 右クリックで挿入するブロックを切り替えられるマクロ
理論上は何個でも登録できるけど、ブロックの送りが順送りのみなので10個ぐらいが適当だと思います。

;;;;;;;;;;;reg_blkname.scr;;;;;;;;;;;;;;
;;;;で始まる行はコメント
;;;;ブロック名を登録するスクリプト、以下例;;;;;;
;;;;
;setenv
;;;;カウンターiの巻き戻し
;i
;1
;setenv
;;;;登録するブロック数、ここでは5個
;numblk
;5
;setenv
;;;;blockname数字を登録したいブロック名に変える
;bn1
;blockname01
;setenv
;bn2
;blockname02
;setenv
;bn3
;blockname03
;setenv
;bn4
;blockname04
;setenv
;bn5
;blockname05
;;;;登録する数が5個なのでここまで
;;;;例はここまで;;;;;;;;;;;;;;;;;;
;
;
setenv
i
1
setenv
numblk

setenv
bn1

setenv
bn2

setenv
bn3

setenv
bn4

setenv
bn5

setenv
bn6

setenv
bn7

setenv
bn8

setenv
bn9

setenv
bn10
;;;;;;;;;;;reg_blkname.scr;;;;;;;;;;;;;;;;


ブロック挿入するマクロ
*^C^C$M=setenv;to;0;$(if,$(=,$(getenv,to),0),;bn$(+,$(getenv,numblk),1);.;;to;1;undo;be)$(if,$(=,$(getenv,to),1),;i;$(if,$(or,$(eq,$(getenv,bn$(getenv,i)),.),$(>,$(getenv,i),$(getevn,numblk))),1);;to;2)$(if,$(=,$(getenv,to),2),;to;3;-insert;$(getenv,bn$(getenv,i));non;@;;;;erase;”$(getenv,bn$(getenv,i))”を挿入(LC)/次のブロック(RC)^X\@;l;;oops;setenv;i;$(getenv,i);;to;4)$(if,$(=,$(getenv,to),3),erase;l;;setenv;i;$(+,$(getenv,i),1);;to;1)$(if,$(=,$(getenv,to),4),erase;l;;-insert;$(getenv,bn$(getenv,i));\;;\setenv;to;5)$(if,$(=,$(getenv,to),5),;to;6;erase;続ける(LC)/終了(RC)^X\@;l;;oops;setenv;to;1)$(if,$(=,$(getenv,to),6),^Cundo;e)^M

1.
上のreg_blkname.scrファイルを作り、
scriptコマンドでAutoCADにreg_blkname.scrを読み込ませ、ブロック名を登録する
登録するブロック名が変わればその都度行う。

2.
コマンド発行

3.
挿入するブロックが画面に表示、左クリック、4へ、右クリック、次のブロックが表示

4.
挿入点と角度を指定。

5.
左クリック、続けて挿入、3へ、右クリック、終了。
  • zukki-
  • 2018/05/15 (Tue) 16:12:00
Re: 右クリックで挿入するブロックを切り替えられるマクロ
お二方ともご教示頂きありがとうございました。
chibi-tomさんのコマンドを試したところ、無事に思っていたような動きができました。

zukkiさんの方は挿入するブロックが画面に表示されるとのことで
かなり便利そうでしたが、スクリプトについてはからっきしなので、これから勉強して試そうかと思います。
  • AP
  • 2018/05/16 (Wed) 08:43:15
Re: 右クリックで挿入するブロックを切り替えられるマクロ
解決してしましたけれど、ブロック名の逆送りをできるようにしました。


*^C^C$M=setenv;to;0;$(if,$(=,$(getenv,to),0),;to;1;id;non;どこか作図領域を左クリック^X\undo;be)$(if,$(=,$(getenv,to),1),;i;$(if,$(>,$(getenv,i),$(getenv,numblk)),1)$(if,$(<,$(getenv,i),1),$(getenv,numblk));;ipt;$(getvar,lastpoint);;to;2)$(if,$(=,$(getenv,to),2),;to;5;-insert;$(getenv,bn$(getenv,i));non;$(getenv,ipt);;;;erase;現在のブロック:$(getenv,bn$(getenv,i))_ブロック選択(LC)/ブロック挿入(RC)^X\@;l;;oops;setenv;i;$(getenv,i);;to;4)$(if,$(=,$(getenv,to),4),erase;l;;id;non;$(getenv,ipt);setenv;i;$(+,$(getenv,i),$(if,$(>,$(index,0,$(getvar,lastpoint)),$(index,0,$(getenv,ipt))),+,-)1);;to;1)$(if,$(=,$(getenv,to),5),erase;l;;-insert;$(getenv,bn$(getenv,i));\;;\setenv;to;6)$(if,$(=,$(getenv,to),6),;to;7;erase;続ける(LC)/終了(RC)^X\@;l;;oops;setenv;to;1)$(if,$(=,$(getenv,to),7),^Cundo;e)^M


スクリプトでブロック名を登録するところは同じ。

1.
コマンド発行
2.
どこか作図領域を左クリック
3.
挿入されるブロックが表示される
ブロック挿入点の左側クリック、挿入されるブロックが戻り3へ
ブロック挿入点の右側クリック、挿入されるブロックが進み3へ
右クリック、そのブロックを挿入、4へ
4.
ブロック挿入
5.
左クリック3へ、右クリック終了
  • zukki-
  • 2018/05/16 (Wed) 18:43:01
Re: 右クリックで挿入するブロックを切り替えられるマクロ
自分も少し修正しました。
同じブロックを続けて挿入できるようにしました。

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),setenv;SW;0;setenv;to;1,;BL1;$(nth,$(getenv,sw),ブロック名1,ブロック名2,ブロック名3);setenv;to;2,,)$(nth,$(getenv,to),,,;to;0;ray;挿入位置を指定<$(getenv,BL1)>--切替(右)^X\$M="""$(if,$(getvar,cmdactive),;-insert;$(getenv,BL1);@;;;\setenv;to;2,setenv;to;3)""",)$(nth,$(getenv,to),,,,;sw;$(if,$(=,$(getenv,SW),2),0,$(+,$(getenv,SW),1));;BL1;$M="""$(nth,$(getenv,sw),ブロック名1,ブロック名2,ブロック名3)""";;to;2)^M
  • chibi-tom
  • 2018/05/17 (Thu) 11:44:37

返信フォーム






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