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

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

ブロック挿入右クリック90°回転
お世話になります。
社内CADがAutoCADに変わりマクロ等も少し勉強中で、簡単な物、既存マクロを少し変更する程度ですが…
下記のようなマクロを作成して頂けないでしょうか。

ブロックを挿入、基点を決定後、右クリックでブロックを90°ずつ回転させるマクロです。
尺度はXY共に常に1で、ブロック属性は分割させたいです。
現在下記のマクロでブロック挿入しています。

※^C^C_-INSERT;*ブロック名;\;;
(ブロック名の箇所は挿入したいブロック名を記載しています)
autocadは2016を使用しています。

以上、お手数おかけ致しますがご確認宜しくお願い致します。
  • SD
  • 2018/05/21 (Mon) 21:31:25
Re: ブロック挿入右クリック90°回転
>ブロックを挿入、基点を決定後、右クリックでブロックを90°ずつ回転させるマクロ

こんな感じでしょうか。

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),ray;^xブロック挿入起点指定^x\;setenv;to;1,-Insert;ブロック名;non;@;;;;id;回転基点指定^x\setenv;to;2,ray;^xブロック挿入起点指定--90°回転(Rc)--^x\$M="""$(if,$(getvar,cmdactive),;setenv;to;1,rotate;l;;non;@;90;setenv;to;2)""")^M

●使い方
1.ブロック挿入起点指定
2.回転基点指定
3.ブロック挿入起点指定 ⇒2へ
  ※右クリックで90°回転 ⇒繰り返し3へ

▲マクロ中1カ所「ブロック名」を変更してお使いください。
  • とってぃ
  • 2018/05/22 (Tue) 08:29:39
Re: ブロック挿入右クリック90°回転
こんな感じでしょうか

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),;BL1;*ブロック名;;RT1;0;;to;1,,,)$(nth,$(getenv,to),,ray;挿入位置を指定<$(getenv,BL1)、$(getenv,RT1)>--90°回転(右)^X\$M="""$(if,$(getvar,cmdactive),;-insert;$(getenv,BL1);@;;;0;setenv;to;2,setenv;to;3)""",,)$(nth,$(getenv,to),,,$(if,$(getenv,RT1),rotate;l;;\$(getenv,RT1);setenv;to;1,setenv;to;1,),)$(nth,$(getenv,to),,,,;RT1;$(if,$(=,$(getenv,RT1),270),0,$(+,$(getenv,RT1),90));setenv;to;1)^M

1.挿入点指定(右クリックで90度回転後、挿入点指定)
2.回転基点指定

挿入点で回転する場合はこんな感じでしょうか

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),;BL1;*ブロック名;;RT1;0;;to;1,,)$(nth,$(getenv,to),,ray;挿入位置を指定<$(getenv,BL1)、$(getenv,RT1)>--90°回転(右)^X\$M="""$(if,$(getvar,cmdactive),;-insert;$(getenv,BL1);@;;;$(getenv,RT1);setenv;to;1,setenv;to;2)""",)$(nth,$(getenv,to),,,;RT1;$(if,$(=,$(getenv,RT1),270),0,$(+,$(getenv,RT1),90));setenv;to;1)^M

1.挿入点指定(右クリックで90度回転後、挿入点指定)

  • chibi-tom
  • 2018/05/22 (Tue) 08:32:13
Re: ブロック挿入右クリック90°回転
とってぃ様
さすがです。
早いし、正確です。

”基点を決定後、右クリックでブロックを90°ずつ回転させるマクロです”
気付かずに先に回転させてしまった。
  • chibi-tom
  • 2018/05/22 (Tue) 08:41:33
Re: Re: ブロック挿入右クリック90°回転
とってぃ様
chibi-tom様

お世話になります。
ご対応ありがとうございます。両方共にバッチリ動作致しました。
ありがとうございました!

  • SD
  • 2018/05/22 (Tue) 09:18:12
Re: ブロック挿入右クリック90°回転
とってぃ様
お世話になります。
先日はマクロ作成ありがとうございました。
マクロの修正をお願い出来ないでしょうか?

とってぃ様に作成して頂いたマクロでブロックを挿入すると属性がかかっているので、挿入時に分解させて頂く事は可能でしょうか?
マクロ内のブロック名の前に*を付けて試しましたが上手くいきません。
分解されたブロックは挿入出来ますが回転が出来なくなります。以下コマンドの流れです。

コマンド: setenv
変数名を入力: to
値 <0>: 0
コマンド:
コマンド: ray
始点を指定: *削除*
ブロック挿入起点指定*削除*
ブロック挿入起点指定
通過点を指定:
コマンド: setenv
変数名を入力: to
値 <0>: 1
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <1>: 0
コマンド:
コマンド: -Insert
ブロック名を入力 または [一覧(?)] <*e100v>: *e100v
ブロックの挿入位置を指定: non
@
XYZ 軸に対する尺度を指定:
回転角度を指定 <0>:
重複したブロック定義 _Open30 は無視されます。
コマンド:
-INSERT
ブロック名を入力 または [一覧(?)] <*e100v>: id
"id.dwg": 検索パス内にファイルが見つかりません:

------上記コメント後以下はサポートファイルの検索パスが記載されます------

*無効*
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <0>: 0
コマンド:
コマンド: ray
始点を指定: *削除*
ブロック挿入起点指定*削除*

作成頂いたマクロのコマンドの流れも記載致します。
コマンド: setenv
変数名を入力: to
値 <0>: 0
コマンド:
コマンド: ray
始点を指定: *削除*
ブロック挿入起点指定*削除*
ブロック挿入起点指定
通過点を指定:
コマンド: setenv
変数名を入力: to
値 <0>: 1
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <1>: 0
コマンド:
コマンド: -Insert
ブロック名を入力 または [一覧(?)] <e100v>: e100v
単位: 単位なし 変換: 1.0000
挿入位置を指定 または [基点(B)/尺度(S)/X/Y/Z/回転(R)]: non
@
X 方向の尺度を入力するか対角コーナーを指定 または [コーナー(C)/XYZ(XYZ)] <1>:
Y 方向の尺度を入力 <X 方向の尺度を使用>:
回転角度を指定 <0>:
コマンド: id
点を指定: 回転基点指定*削除*


以上、宜しくお願い致します。
  • SD
  • 2018/06/16 (Sat) 11:19:29
Re: ブロック挿入右クリック90°回転
ブロック挿入時に属性記入しない「attreq」を使ってみました。
お試しください。


♪ブロック挿入 90°回転 改
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),ray;^xブロック挿入起点指定^x\;setenv;to;1,attreq;0;-Insert;ブロック名;non;@;;;;attreq;$(getvar,attreq);id;回転基点指定^x\setenv;to;2,ray;^xブロック挿入起点指定--90°回転(Rc)--^x\$M="""$(if,$(getvar,cmdactive),;setenv;to;1,rotate;l;;non;@;90;setenv;to;2)""")^M
  • とってぃ
  • 2018/06/18 (Mon) 08:43:34
Re: ブロック挿入右クリック90°回転
とってぃ様

ご対応ありがとうございます。
マクロを試してみましたが、属性が解除されないままでした。
その他の回転等の動作は問題ありません。
以下コマンドの流れです。

コマンド: setenv
変数名を入力: to
値 <0>: 0
コマンド:
コマンド: ray
始点を指定: *削除*
ブロック挿入起点指定*削除*
ブロック挿入起点指定
通過点を指定:
コマンド: setenv
変数名を入力: to
値 <0>: 1
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <1>: 0
コマンド:
コマンド: attreq
ATTREQ の新しい値を入力 <0>: 0
コマンド: -Insert
ブロック名を入力 または [一覧(?)] <e100v>: e100v
単位: 単位なし 変換: 1.0000
挿入位置を指定 または [基点(B)/尺度(S)/X/Y/Z/回転(R)]: non
@
X 方向の尺度を入力するか対角コーナーを指定 または [コーナー(C)/XYZ(XYZ)] <1>:
Y 方向の尺度を入力 <X 方向の尺度を使用>:
回転角度を指定 <0>:
コマンド: attreq
ATTREQ の新しい値を入力 <0>: 0
コマンド: id
点を指定: 回転基点指定*削除*
回転基点指定
コマンド: setenv
変数名を入力: to
値 <0>: 2
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <2>: 0
コマンド:
コマンド: ray
始点を指定: *削除*
ブロック挿入起点指定--90°回転(Rc)--*削除*
ブロック挿入起点指定--90°回転(Rc)--
コマンド: rotate
UCS の現在の正の角度: ANGDIR=反時計回り ANGBASE=0
オブジェクトを選択: l
認識された数: 1
オブジェクトを選択:
基点を指定: non
@
回転角度を指定 または [コピー(C)/参照(R)] <90>: 90
コマンド: setenv
変数名を入力: to
値 <0>: 2
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <2>: 0
コマンド:
コマンド: ray
始点を指定: *削除*
ブロック挿入起点指定--90°回転(Rc)--*削除*
ブロック挿入起点指定--90°回転(Rc)--
コマンド: rotate
UCS の現在の正の角度: ANGDIR=反時計回り ANGBASE=0
オブジェクトを選択: l
認識された数: 1
オブジェクトを選択:
基点を指定: non
@
回転角度を指定 または [コピー(C)/参照(R)] <90>: 90
コマンド: setenv
変数名を入力: to
値 <0>: 2
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <2>: 0
コマンド:
コマンド: ray
始点を指定: *削除*
ブロック挿入起点指定--90°回転(Rc)--*削除*
ブロック挿入起点指定--90°回転(Rc)--
コマンド: rotate
UCS の現在の正の角度: ANGDIR=反時計回り ANGBASE=0
オブジェクトを選択: l
認識された数: 1
オブジェクトを選択:
基点を指定: non
@
回転角度を指定 または [コピー(C)/参照(R)] <90>: 90
コマンド: setenv
変数名を入力: to
値 <0>: 2
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <2>: 0
コマンド:
コマンド: ray
始点を指定: *削除*
ブロック挿入起点指定--90°回転(Rc)--*削除*
ブロック挿入起点指定--90°回転(Rc)--*キャンセル*

宜しくお願い致します。
  • SD
  • 2018/06/18 (Mon) 15:37:34
Re: ブロック挿入右クリック90°回転
マクロの流れを見ますと
元々、ブロック挿入時の属性は記入しない様になっているみたいですね・・

あと、マクロ自体は普通に動作してるように見えるのですが
現状どのような不具合がありますか?


また、質問では

>ブロックを挿入すると属性がかかっているので、挿入時に分解させて頂く事は可能でしょうか?

と、ありますが
属性があるブロックの場合、元々のマクロでどの様な不都合があったのですか?
  • とってぃ
  • 2018/06/19 (Tue) 08:30:39
Re: ブロック挿入右クリック90°回転
とってぃ様
説明不足でお手間とらせてしまい申し訳ありません。
希望動作ですが、属性のかかっていないブロックを挿入し、挿入時にも属性がかからないようにしたいです。
とってぃ様に作成頂いたマクロですと、属性のかかっていないブロックを挿入すると、属性がかかった状態となります。
ブロック名の前に*を付けて挿入時の分解されるように試みましたが、うまくいかず修正をお願いした次第です。
常に挿入するブロックは元々属性はかかっておりません。
回転等の動作は全く問題ありません。
ご確認宜しくお願い致します。
  • SD
  • 2018/06/19 (Tue) 16:52:31
Re: ブロック挿入右クリック90°回転
>希望動作ですが、属性のかかっていないブロックを挿入し、挿入時にも属性がかからないようにしたいです。
>属性のかかっていないブロックを挿入すると、属性がかかった状態となります。

「属性のかかっていない」「属性がかかった状態」とは?

属性部分を無記入にしたいのでしょうか?
  • とってぃ
  • 2018/06/20 (Wed) 10:27:37
Re: ブロック挿入右クリック90°回転
とってぃ様

例えばですが
属性のかかった状態 鋼材をブロック挿入した場合に一辺をタッチした時に全てのオブジェクトが選択される
属性のかかってない状態 鋼材ブロック挿入した場合に一辺をタッチした場合にその一辺しか選択されない

複合オブジェクトを分解させたいです。
  • SD
  • 2018/06/20 (Wed) 10:53:57
Re: ブロック挿入右クリック90°回転
ブロックの挿入を、そのブロックがある図面ファイルからしていますか?
その場合、図面ごとブロック化されて挿入されてしまいますが、そういうことでしょうか。

ブロックを図面ファイルデータから挿入したい場合、
1.ブロックAのみのデータのファイルを、A.dwgとして保存
2.B.dwgに、ブロックAを挿入しようとして、ブロック名として「A」を指定
 ※この場合、B.dwgに元々ブロックAがあれば、そのまま挿入されますが、
  ない場合は、サポートパスの通ったフォルダにある、A.dwgが挿入されます。

A.dwgが挿入される場合は、当然図面単位でブロック化されるので、ブロックAを取り出すには分解が必要になる、ということでしょうか?

B.dwgにないブロックAを、サポートパスの通ったフォルダにあるファイルから挿入したい場合は、
1.ブロックAのある図面ファイルで、コマンドwblockを実行
2.作成元を「ブロック」とし、右側のプルダウンからブロックAを選択
3.書き出し先をサポートパスの通ったフォルダにする(ファイル名はデフォルトでブロック名となります)
4.OKをクリック

こうしてできたA.dwgを使うと、そのままブロックAとして挿入できます。



  • LUNE
  • 2018/06/20 (Wed) 11:27:35
Re: ブロック挿入右クリック90°回転
AutoCADで言う「属性」とは
ブロック挿入時、元図に「属性定義」(※ブロック状態で編集可能な文字)のことです。

※参考
マクロ講座 ■基本 7.属性とは
https://ameblo.jp/totthi-macro/entry-10923915588.html




SDさんのおっしゃる「属性のかかった状態」とは?

ブロック化(もしくはグループ化)されたものと、そーでないものの事ですか??


そーであればただ分解するだけなので

♪ブロック挿入 90°回転後分解 
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),ray;^xブロック挿入起点指定^x\;setenv;to;1,attreq;0;-Insert;ブロック名;non;@;;;;attreq;$(getvar,attreq);id;回転基点指定^x\setenv;to;2,ray;^xブロック挿入起点指定--90°回転(Rc)--^x\$M="""$(if,$(getvar,cmdactive),;setenv;to;1,rotate;l;;non;@;90;explode;l;setenv;to;2)""")^M

こちらをお試しください。
  • とってぃ
  • 2018/06/20 (Wed) 13:23:23
Re: ブロック挿入右クリック90°回転
90°ずつとのことだったので
1回で分解されてしまうと続かなかったので
考えてみました。
とってぃ様のマクロとは左右のクリックが変わっています
流れ的にこの方がスマートかなと思ったので

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),ray;^xブロック挿入起点指定^x\;setenv;to;1,-Insert;ブロック名;non;@;;;;id;回転基点指定^x\setenv;to;2,ray;^x90°回転(L-Click)/決定(R-Click):^x\$M="""$(if,$(getvar,cmdactive),;rotate;l;;non;@;90;setenv;to;2,explode;l;setenv;to;0)""")^M
  • chibi-tom
  • 2018/06/20 (Wed) 16:47:12
Re: ブロック挿入右クリック90°回転
とってぃ様
LUNE様
chibi-tom様
皆様ありがとうございました。
chibi-tom様のマクロでバッチリ動作しました。
以前に使っていたCADが染みついている為、表現も操作もなかなか慣れません。。。
貴重なお時間下さりありがとうございました。
  • SD
  • 2018/06/21 (Thu) 08:22:36

返信フォーム






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