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

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

水平線・垂直線のキー・マウス対応マクロ作成依頼
AutoCadLT2018を使っていますが、AutoCadLT2011以降で対応できるとありがたいです。
キー入力とマウスカーソルでクリックした場所どちらでも垂直、水平線がひけるマクロを作りたいのですが、下記のマクロではマウスでクリックした場所に線が引かれません。マウス、キーボード入力に対応できるマクロの作成をお願いしたいです。
垂直線→^C^C_setenv;X;\_line;$M=$(getenv,X),100;$M=$(getenv,X),-100;;
水平線→^C^C_setenv;Y;\_line;100,$M=$(getenv,Y);-100,$M=$(getenv,Y);;
  • Osos
  • MAIL
  • 2017/06/13 (Tue) 12:25:09
Re: 水平線・垂直線のキー・マウス対応マクロ作成依頼
取り急ぎ

マクロ講座
■初級
2.座標を指定
http://ameblo.jp/totthi-macro/entry-10925133920.html

参照願います。

idコマンドと@を使用すれば可能です。


もしくは


マクロ講座
■初級
16.UCSを変更して作成
http://ameblo.jp/totthi-macro/entry-11040553283.html

ucsを変更して作図することも可能です。
  • とってぃ
  • 2017/06/13 (Tue) 17:06:59
Re: 水平線・垂直線のキー・マウス対応マクロ作成依頼
追記

一応作ってみました。
こーゆー意味でしょうか?

垂直線作図
^C^Csetenv;l1;線分長さ記入^x\line;^x点を指定またはXY座標を記入(例:100,100)^x\;setenv;p0;$M=$(getvar,lastpoint);ucs;o;non;$M="$(getenv,p0)";line;non;$(/,$(getenv,l1),2)<N;non;$(/,$(getenv,l1),2)<S;;ucs;p^M

ちなみに水平線は、上記マクロ中の

<N ⇒ <E
<S ⇒ <W

に変更するだけです。
  • とってぃ
  • 2017/06/13 (Tue) 17:42:40
Re: 水平線・垂直線のキー・マウス対応マクロ作成依頼
ucsの理解ができていないので、作って頂いたマクロの中が完全に把握できていませんが、
早急に作成して頂きどうもありがとうございます!
参考になるリンク先もご提示くださりありがとうございます。

ただ、申し訳ございません。
私が別のCADに使い慣れていたため、その感覚でお願いしてしまい、具体例が不足していました。

例を記載させて頂きます。
垂直線 P1(50,100),P2(50,-100)を引きたい。
ただし、Xの入力だけにして、カンマ,Y座標入力は省きたい。
下記のA、Bの2種類を一つのマクロで使いこなせるようにしたい。
可能であれば、「1.水平/垂直 構築線」のように
右クリックで垂直線、水平線の切り替えのモードも欲しい。

A.キー入力
①マクロのボタンをクリック
②キー入力→50(X軸だけを入力する)
③垂直線 (50,100),(50,-100)のラインが引かれる

B.マウスクリック
①マクロのボタンをクリック
②画面内でオブジェクトスナップを利かせてマウスをクリック
③オブジェクトスナップの位置に垂直線 (スナップ箇所,100),(スナップ箇所,-100)のラインが引かれる

AとBどちらもできるようなマクロを作りたかったのですが、
Aでキー入力のマクロにすると、マウスが使えない。
Bのマウスクリック@にすると、キー入力ではXY座標を入力しなければならない
という状況で、分岐などを勉強させて頂いたのですが、どうにもわからずに作成をお願いしたいと思った次第です。

二度手間をおかけし申し訳ございませんが、上記内容が可能であれば作成をして頂けると嬉しいです。
  • Osos
  • MAIL
  • 2017/06/14 (Wed) 08:20:35
Re: 水平線・垂直線のキー・マウス対応マクロ作成依頼
おはようございます。

マウスでクリックする場所は、例えばX座標指定の場合は、
①Y=0(X軸上)の点をクリックするのでしょうか?
又は、
②XもYも自由な位置をクリックして、線を書く位置はX=クリック位置、Y=-100~100に固定とするのでしょうか?
  • Lon
  • 2017/06/14 (Wed) 09:42:06
Re: 水平線・垂直線のキー・マウス対応マクロ作成依頼
ご指摘、ありがとうございます。
確かにそうですね!
図面の場所によってはY=-100~100に固定しては困るものもありますね。盲点でした。
クリック位置はY0で固定ではなく、X10.5,Y20とかX-0.1,Y50.1とか図面によって変わります。

用途としては図面の断面図の外形線、中心線などを書くために使いたいと思っています。
ですので、②に近いと思います。
XもYも自由な位置をクリックして、その相対点から-100~100のような線を引けることが望ましいのですが、
これだとマクロの文字数制限に引っ掛かっては大変だと思うので、
どの図面でも使えるように-1000~1000辺りに固定でも大丈夫です。
  • Osos
  • MAIL
  • 2017/06/14 (Wed) 11:03:56
Re: 水平線・垂直線のキー・マウス対応マクロ作成依頼
とりあえず、2種類作ってみました。

その① いつもY=0の位置に書く(いつもX=0の位置に書く)
垂直:
*^C^Cuserr1;X座標入力orクリック^X\$M=$(if,$(getvar,cmdactive),;line;non;$(index,0,$(getvar,lastpoint)),line;non;$(getvar,userr1))","100;non;@200<270;^M
水平:
*^C^Cuserr1;Y座標入力orクリック^X\$M=$(if,$(getvar,cmdactive),;line;non;100","$(index,1,$(getvar,lastpoint)),line;non;100","$(getvar,userr1));non;@200<180;^M


その② クリックした位置に書く(但し数値を入力した場合は、その①と同様、Y=0 又は X=0 )
垂直:
*^C^Cuserr1;X座標入力orクリック^X\$M=$(if,$(getvar,cmdactive),;id;non;$(getvar,lastpoint);line;non;@100<90,line;non;$(getvar,userr1)","100);non;@200<270;^M
水平:
*^C^Cuserr1;Y座標入力orクリック^X\$M=$(if,$(getvar,cmdactive),;id;non;$(getvar,lastpoint);line;non;@100<0,line;non;100","$(getvar,userr1));non;@200<180;^M


水平・垂直を一つにして右クリックで切り替えるのは難しそうなので、私はパスです。
  • Lon
  • 2017/06/14 (Wed) 15:30:09
Re: 水平線・垂直線のキー・マウス対応マクロ作成依頼
Lon様、とってぃ様
ありがとうございました。

今回、Lon様に作成頂いた①②どちらも、
LT2011、LT2018で問題なく動きました。
別のCADのコマンドに慣れていたので、助かりました。
ありがとうございます!
  • Osos
  • MAIL
  • 2017/06/15 (Thu) 12:29:44
Re: 水平線・垂直線のキー・マウス対応マクロ作成依頼
勉強の為、切替付けてみました。

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),userr1;値を入力(または挿入点を指定)^X\$M="""$(if,$(getvar,cmdactive),;setenv;p1;$(getvar,lastpoint);setenv;to;2,setenv;to;1)""",,,,)$(nth,$(getenv,to),,ray;垂直(L-Click)/水平(R-Click)^X\$M="""$(if,$(getvar,cmdactive),;setenv;p1;$(getvar,userr1)<e;setenv;to;3,setenv;p1;$(getvar,userr1)<n;setenv;to;4)""",,,)$(nth,$(getenv,to),,,ray;垂直(L-Click)/水平(R-Click)^X\$M="""$(if,$(getvar,cmdactive),;setenv;to;3,setenv;to;4)""",,)$(nth,$(getenv,to),,,,ucs;o;non;$(getenv,p1);line;100<s;100<n;;ucs;p;setenv;to;0,)$(nth,$(getenv,to),,,,,ucs;o;non;$(getenv,p1);line;100<w;100<e;;ucs;p;setenv;to;0)^M

1.値を入力(または挿入点を指定)
2.垂直は左クリック、水平は右クリック
以上です。
  • chibi-tom
  • 2017/06/21 (Wed) 11:29:58
Re: 水平線・垂直線のキー・マウス対応マクロ作成依頼
すいませんlineのnonを消してしまいました。

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),userr1;値を入力(または挿入点を指定)^X\$M="""$(if,$(getvar,cmdactive),;setenv;p1;$(getvar,lastpoint);setenv;to;2,setenv;to;1)""",,,,)$(nth,$(getenv,to),,ray;垂直(L-Click)/水平(R-Click)^X\$M="""$(if,$(getvar,cmdactive),;setenv;p1;$(getvar,userr1)<e;setenv;to;3,setenv;p1;$(getvar,userr1)<n;setenv;to;4)""",,,)$(nth,$(getenv,to),,,ray;垂直(L-Click)/水平(R-Click)^X\$M="""$(if,$(getvar,cmdactive),;setenv;to;3,setenv;to;4)""",,)$(nth,$(getenv,to),,,,ucs;o;non;$(getenv,p1);line;non;100<s;non;100<n;;ucs;p;setenv;to;0,)$(nth,$(getenv,to),,,,,ucs;o;non;$(getenv,p1);line;non;100<w;non;100<e;;ucs;p;setenv;to;0)^M
  • chibi-tom
  • 2017/06/21 (Wed) 13:00:52
Re: 水平線・垂直線のキー・マウス対応マクロ作成依頼
自分もまとめようとしてたのですが
仕事が忙しかったので助かります。
chibi-tomさんありがとうございます。

そのついでですが、
chibi-tomさんの勉強の為に
chibi-tomさんのマクロを文字数減らしてみました。

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),userr1;値を入力(または挿入点を指定)^X\$M="""$(if,$(getvar,cmdactive),;setenv;p1;$(getvar,lastpoint);;sw1;1,setenv;sw1;0)""";;to;1,,)$(nth,$(getenv,to),,ray;垂直(L-Click)/水平(R-Click)^X\$M="""$(if,$(getvar,cmdactive),;$(if,$(getenv,sw1),,setenv;p1;$(getvar,userr1)<e;)setenv;sw2;1,$(if,$(getenv,sw1),,setenv;p1;$(getvar,userr1)<n;)setenv;sw2;0)""";;to;2,)$(nth,$(getenv,to),,,ucs;o;non;$(getenv,p1);line;non;100<$(if,$(getenv,sw2),s,w);non;100<$(if,$(getenv,sw2),n,e);;ucs;p)^M


こんな感じにまとめることも出来ます。

ご参考までに。
  • とってぃ
  • 2017/06/21 (Wed) 13:20:10
Re: 水平線・垂直線のキー・マウス対応マクロ作成依頼
とってぃ様

ありがとうございます。
切替が一つにまとめられなかったので、勉強になります。
もう少し頭を柔らかくしていきたいです。
  • chibi-tom
  • 2017/06/21 (Wed) 13:44:21

返信フォーム






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