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

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

配置した図形をパス配列複写するマクロ
はじめまして
AutoCAD LT 2014を使用しています。

線分上に配置した円をパス配列複写するマクロの修正をお願いしたいです。
こちらのサイトを参考にマクロを作成しましたが、思い通りの動作にならず困っています。


・操作内容
1. 線分上の任意の箇所に円を配置
2. 配置した円をパス配列複写で任意の数・間隔で線分上に複写していく

以下、作成したマクロです。
^C^C_setenv;半径;\_circle;\$M=$(getenv,"半径");_select;\_ARRAYPATH;p;;\;$M=$(getenv,"半径");;

_ARRAYPATHのコマンド入力後の「項目数」はユーザー入力、「項目間の距離」は最初に指定した円の半径を自動入力したいです。
上記のマクロでは、「項目間の距離」の入力がユーザー入力になってしまうのですが、指定した円の半径が自動で入力されるようにすることは可能なのでしょうか?

マクロの勉強を始めたばかりで、書き方がおかしいところもあるかと思いますが、お力を貸してください。
よろしくお願い致します。
  • vine
  • 2018/11/28 (Wed) 16:46:08
Re: 配置した図形をパス配列複写するマクロ
こんな感じでしょうか?

^C^C_setenv;半径;\_circle;\$M=$(getenv,半径);_ARRAYPATH;l;;@;\$M=$(getenv,半径);x;^Z

>線分上の任意の箇所に円を配置
だとこうでしょうか?

^C^C_setenv;半径;\_circle;nea;\$M=$(getenv,半径);_ARRAYPATH;l;;@;\$M=$(getenv,半径);x;^Z
  • chibi-tom
  • 2018/11/28 (Wed) 18:03:25
Re: 配置した図形をパス配列複写するマクロ
chibi-tomさん、早急のご対応ありがとうございます!
作成して頂いたマクロを試したところ、期待通りの動作でした、ありがとうございます!

また一つお聞きしたいことがありまして、
上記のマクロで線分の端点に円を配置した時は、線分上に綺麗に円が複写されるのですが、
例えば、線分の途中に円を配置した場合は、複写された円が線分上から少しずれて複写されるのですが、これはAutoCADの仕様なのでしょうか?

マクロを使用しないでコマンドでパス複写配列した場合も同じ現象になってしまうんですよね。
参考画像も添付しておきます。

もしお分かりでしたらご返信よろしくお願い致します。

  • vine
  • 2018/11/28 (Wed) 18:50:21
Re: 配置した図形をパス配列複写するマクロ
画像の線はスプラインですか?
線分と書かれていたので直線しかないものと思っていました。

残念ながら、ARRAYPATHもスプラインもほぼ使ったことが無いので
わからないです。

>これはAutoCADの仕様なのでしょうか?
たぶんそうだと思うとしか答えられません
  • chibi-tom
  • 2018/11/29 (Thu) 08:21:31
Re: 配置した図形をパス配列複写するマクロ
画像の線はスプラインです。
試しにスプラインでマクロを使用したら、このような現象になったため気になって質問してしまいました。

chibi-tomさん、マクロの作成ありがとうございました。
また分からないことがありましたらお力を貸してください。
よろしくお願い致します。
  • vine
  • 2018/11/29 (Thu) 08:41:06
Re: 配置した図形をパス配列複写するマクロ
スプラインの途中配置に対応してみました

^C^C_setenv;半径;\_circle;nea;\$M=$(getenv,半径);erase;l;;Xline;v;non;@;;trim;l;;end;@;;oops;_ARRAYPATH;p;;\\$M=$(getenv,半径);x;copybase;non;0<0;l;;undo;7;pasteclip;non;0<0;^Z

1.円の半径を指定
2.円の中心点を指定
3.パス曲線を選択
4.パスに沿った項目の数を入力

本当はパス曲線を自動で選択したかった。
できなくて少しモヤモヤしてます。
  • chibi-tom
  • 2018/11/29 (Thu) 13:38:35
Re: 配置した図形をパス配列複写するマクロ
chibi-tomさん
お忙しいところ対応して頂きましてありがとうございます。

作成して頂いたマクロを試した所、円がスプライン上からずれて複写されてしまいました。
AutoCADのバージョンによって挙動が違ったりするのでしょうか?
参考として画像を添付致します。
  • vine
  • 2018/11/29 (Thu) 15:25:46
Re: 配置した図形をパス配列複写するマクロ
すいません、何度かこっそりマクロを書き換えていたので
もしかしたら中点を取れるようにしたマクロを試されているかもしれないです。

いま、記載しているマクロでもう一度試していただけますか?

^C^C_setenv;半径;\_circle;nea;\$M=$(getenv,半径);erase;l;;Xline;v;non;@;;trim;l;;end;@;;oops;_ARRAYPATH;p;;\\$M=$(getenv,半径);x;copybase;non;0<0;l;;undo;7;pasteclip;non;0<0;^Z
  • chibi-tom
  • 2018/11/29 (Thu) 15:43:47
Re: 配置した図形をパス配列複写するマクロ
すいません、最後のマクロで試していただいてましたね

ちょっとわからないですが、少し忙しくなってしまいまして
手が空いたら考えて見ますが、いつになるかはわかりません。



  • chibi-tom
  • 2018/11/29 (Thu) 15:54:00
Re: 配置した図形をパス配列複写するマクロ
chibi-tomさん
いま上記のマクロをもう一度試してみたところ、スプラインでも正常に動作していました。
理由は分かりませんが、お騒がせしてしまい申し訳ございませんでした。

お忙しいところお時間をとっていただきありがとうございました。
またよろしくお願いします!
  • vine
  • 2018/11/29 (Thu) 16:24:05
Re: 配置した図形をパス配列複写するマクロ
横から失礼します。

>線分の途中に円を配置した場合は、複写された円が線分上から少しずれて複写される
この件については、動作の仕様だと思われます。

というのも、配列複写する際、対象オブジェクトとパスの位置関係を規定するに当たり、オブジェクトの基点(円の場合は中心のようです)と、オブジェクトに近いほうのパスの端点を配列する場合の基準にしているようです。

添付図の上は、円の中心部分でスプラインを切断し、パスとして指定したもので、この場合は円の中心がパスの上に乗ります。

下は、パスの途中に配置したもの。黄色の線で円の中心とパスの端点を結んでいますが、その線分の端点がパスに沿っていることが分かると思います。
  • LUNE
  • 2018/11/29 (Thu) 17:48:02
Re: 配置した図形をパス配列複写するマクロ
モヤモヤが解消しました。
パス曲線を自動で選択できました。
円を書く前にtrimしてしまえば良かったです。

^C^C_setenv;半径;\id;nea;\setenv;p1;$M=$(getvar,lastpoint);Xline;v;non;@;;trim;l;;end;@;;erase;l;;_circle;non;$M="$(getenv,p1)";$M=$(getenv,半径);_ARRAYPATH;l;;non;$M="$(getenv,p1)";\$M=$(getenv,半径);x;copybase;non;0<0;l;;undo;6;u;pasteclip;non;0<0;^Z

1.円の半径を指定
2.円の中心点を指定
3.パスに沿った項目の数を入力
  • chibi-tom
  • 2018/11/30 (Fri) 08:17:50
Re: 配置した図形をパス配列複写するマクロ
ARRAYPATHの時にミスピックがありzoomを足したのですが
画面の切り替わりが気になったのでついでに手順も変えました。

^C^C_setenv;半径;\;個数;\id;nea;\setenv;p1;$M=$(getvar,lastpoint);Xline;v;non;@;;trim;l;;end;@;;erase;l;;_circle;non;$M="$(getenv,p1)";$M=$(getenv,半径);zoom;o;l;;_ARRAYPATH;l;;non;$M="$(getenv,p1)";$M="$(getenv,個数)";$M=$(getenv,半径);x;copybase;non;0<0;l;;undo;7;pasteclip;non;0<0;^Z


1.円の半径を入力
2.個数(パスに沿った項目の数)を入力
3.円の中心を指定


  • chibi-tom
  • 2018/11/30 (Fri) 08:48:20
Re: 配置した図形をパス配列複写するマクロ
LUNEさん
AutoCADの仕様だったんですね、詳しい説明もしていただきありがとうございました。
AutoCAD自体も知らないことが多いので勉強していきたいです。

chibi-tomさん
お忙しいところ、マクロの修正をしていただきありがとうございます。
マクロを試したところ、正常に動作しているのを確認できました。
今の私では、知識が足りずマクロの内容を理解することはできませんが、マクロの勉強をして少しでも理解できるようになりたいです。

LUNEさん、chibi-tomさん
私用で返信が大変遅くなってしまい、申し訳ございませんでした。
また時間を割いてくださり、ありがとうございました。
またよろしくお願い致します。

  • vine
  • 2018/12/03 (Mon) 08:59:16

返信フォーム






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