当掲示板は、AuroCADマクロ屋本舗 の掲示板です。
AutoCADのマクロ に関する質問の前に 【 マクロ使用前の注意事項 】 を、必ずお読みください。

尚、新規投稿フォーム下の【 新規投稿時のお願い 】を確認の上、新規投稿をお願い致します。
標高旗揚げ
いつも参考にさせていただいております。

標高を旗揚げするマクロを使用しております。

*^C^Cline;non;^X【引出し方向をクリック/Escで終了】^X\^X^X【測定位置をクリック】^X\;erase;l;;leader;non;@;non;@$M=$(*,$(nth,$(fix,$(/,$(angtos,
$(getvar,lastangle),0,8),90)),-,,,-)$(+,0.577350269189,15,$(getvar,dimasz)),$(getvar,dimscale),1),$(*,$(nth,
$(fix,$(/,$(angtos,$(getvar,lastangle),0,8),90)),-,-,,)15,$(getvar,dimscale),1);;FH=$(rtos,$(*,$(index,1,$(getvar,lastpoint)),0.001),2,3);;


このマクロだと起動する前にUCS座標で原点位置を設定しておく必要があります。

これを改良して、画像のDL=515.0という標高のラインを選択すると原点位置を変更し、ある点をクリックすると標高を旗揚げし、旗揚げが終わるとUSCを元に戻すものにならないでしょうか。

よろしくお願いします。

  • ももたろう
  • MAIL
  • 2017/06/30 (Fri) 11:59:14
Re: 標高旗揚げ
こちらの業務上、あまり理解していませんが
こんな感じでしょうか。


*^C^Cucs;o;\line;non;^X【引出し方向をクリック/Escで終了】^X\^X^X【測定位置をクリック】^X\;erase;l;;leader;non;@;non;@$M=$(*,$(nth,$(fix,$(/,$(angtos,
$(getvar,lastangle),0,8),90)),-,,,-)$(+,0.577350269189,15,$(getvar,dimasz)),$(getvar,dimscale),1),$(*,$(nth,
$(fix,$(/,$(angtos,$(getvar,lastangle),0,8),90)),-,-,,)15,$(getvar,dimscale),1);;FH=$(rtos,$(*,$(index,1,$(getvar,lastpoint)),0.001),2,3);;ucs;p^M
  • とってぃ
  • 2017/06/30 (Fri) 13:01:11
Re: 標高旗揚げ
捕捉です。

このマクロは『 DenのJww&AutoCAD入門 』からの引用です。
  • ももたろう
  • MAIL
  • 2017/06/30 (Fri) 13:02:09
Re: 標高旗揚げ
とってぃ様

早速ありがとうございます。

惜しいです。

DL線とDL=515.0の文字を選択すると自動で原点というかy=0の位置を決めるようなものに成れば最高です。
  • ももたろう
  • MAIL
  • 2017/06/30 (Fri) 13:06:19
Re: 標高旗揚げ
どこかで見たことあると思ったら
Denさんのマクロなんですね。

一応、DenさんのHPにも掲示板がありますが
とりあえず、こんな感じかと。


*^C^Cucs;ob;\line;non;^X【引出し方向をクリック/Escで終了】^X\^X^X【測定位置をクリック】^X\;erase;l;;leader;non;@;non;@$M=$(*,$(nth,$(fix,$(/,$(angtos,
$(getvar,lastangle),0,8),90)),-,,,-)$(+,0.577350269189,15,$(getvar,dimasz)),$(getvar,dimscale),1),$(*,$(nth,
$(fix,$(/,$(angtos,$(getvar,lastangle),0,8),90)),-,-,,)15,$(getvar,dimscale),1);;FH=$(rtos,$(*,$(index,1,$(getvar,lastpoint)),0.001),2,3);;ucs;p^M
  • とってぃ
  • 2017/06/30 (Fri) 16:19:22
Re: 標高旗揚げ
ありがとうございます。

かなり近づきました。

このマクロだと最初に選択したラインが原点になります。

選択したラインに高さを持たせる?ラインの高さから原点位置を計算する?方法はありませんか。

添付画像で言えば選択したラインが標高515.0になるようにしたいのです。

申し訳ありませんがよろしくお願いします。
  • ももたろう
  • MAIL
  • 2017/06/30 (Fri) 17:41:05
Re: 標高旗揚げ
チョットお邪魔します。

基準線の標高がいつも515.0なら、
*^C^Cucs;ob;\line;non;^X【引出し方向をクリック/Escで終了】^X\^X^X【測定位置をクリック】^X\;erase;l;;leader;non;@;non;@$M=$(*,$(nth,$(fix,$(/,$(angtos,$(getvar,lastangle),0,8),90)),-,,,-)$(+,0.577350269189,15,$(getvar,dimasz)),$(getvar,dimscale),1),$(*,$(nth,$(fix,$(/,$(angtos,$(getvar,lastangle),0,8),90)),-,-,,)15,$(getvar,dimscale),1);;FH=$(rtos,$(+,515.0,$(*,$(index,1,$(getvar,lastpoint))),0.001),2,3);;ucs;p^M
こんな感じで簡単に対応できますが、その数値は変動するのですよね?

毎回、515等の値を入力する手間が増えても良いなら、
*^C^Cuserr2;^X基準線の標高を入力^X\ucs;ob;\line;non;^X【引出し方向をクリック/Escで終了】^X\^X^X【測定位置をクリック】^X\;erase;l;;leader;non;@;non;@$M=$(*,$(nth,$(fix,$(/,$(angtos,$(getvar,lastangle),0,8),90)),-,,,-)$(+,0.577350269189,15,$(getvar,dimasz)),$(getvar,dimscale),1),$(*,$(nth,$(fix,$(/,$(angtos,$(getvar,lastangle),0,8),90)),-,-,,)15,$(getvar,dimscale),1);;FH=$(rtos,$(+,$(getvar,USERR2),$(*,$(index,1,$(getvar,lastpoint))),0.001),2,3);;ucs;p^M
こんな感じで比較的簡単に対応できると思います。


そうじゃなく、「そこに書いてあるんだから、それを読み取ってくれよ」って事でしたら、
Dieselマクロでは、とても難しい事になりそうな予感です。
  • Lon
  • 2017/06/30 (Fri) 19:31:49
Re: 標高旗揚げ
Lon様

ありがとうございます。

文字を読み取るのは困難なんですね。

ひと手間かけて作業するようにします。

ありがとうございました。
  • ももたろう
  • MAIL
  • 2017/07/03 (Mon) 09:00:09
Re: 標高旗揚げ
すみません便乗要望させてください。

Lon様作成のマクロとても重宝させていただいております。

そこで次の2点改良できないでしょうか?
1 基準線を選択したら終了するまで連続で測定位置を旗揚げする。
2 接頭文字(FH=)をはじめに好きな文字で指定する。
  (FH=とか▽とか空エンターなら接頭文字無し等)

ACAD2017を使用しております。
よろしくお願いいたします。
  • c-tan
  • 2017/07/13 (Thu) 14:38:20
Re: 標高旗揚げ
自信ないですが修正してみました。

♪標高旗上げ 改T1
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),;hk;基準線の標高を入力^X\;txt;接頭文字記入(無しの場合は半角数値0記入)^X\ucs;ob;\setenv;to;1,ray;non;^X引出し方向をクリック--設定修正(Rc)--^X\$M="""$(if,$(getvar,cmdactive),;line;non;@;^X^X【測定位置をクリック】^X\;erase;l;;setenv;to;2,ucs;p)""",,,,)$(nth,$(getenv,to),,,;to;3;;x1;$(*,$(nth,$(fix,$(/,$(angtos,$(getvar,lastangle),0,8),90)),-,,,-)$(+,0.577350269189,15,$(getvar,dimasz)),$(getvar,dimscale),1),,)$(nth,$(getenv,to),,,,;to;4;;y1;$(*,$(nth,$(fix,$(/,$(angtos,$(getvar,lastangle),0,8),90)),-,-,,)15,$(getvar,dimscale),1),)$(nth,$(getenv,to),,,,,;to;1;leader;non;@;non;@$(getenv,x1)","$(getenv,y1);;$(if,$(eq,$(getenv,txt),0),,$(getenv,txt))$(rtos,$(+,$(getenv,hk),$(*,$(index,1,$(getvar,lastpoint))),0.001),2,3);;ucs;p)^M


●使い方
1.基準線の標高を入力
2.接頭文字記入(無しの場合は半角数値 0 記入)
3.UCSの原点にするオブジェクト選択
4.引出し方向をクリック
  ※設定を修正する場合は右クリック⇒1へ
5.測定位置をクリック
  ※繰り返し4へ

2013動作確認
  • とってぃ
  • 2017/07/14 (Fri) 08:45:08
Re: 標高旗揚げ
とってぃ様
確認が遅くなりました。申し訳ございません。

Acad2017での動作確認ですが、接頭文字はOKでした。

連続測定は残念ながらうまくいかなかったです。

テキストウィンドウを貼り付けます。
----------------
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <0>: 0

コマンド:
コマンド:
SETENV
変数名を入力: hk
値 <30>: 基準線の標高を入力*削除*
基準線の標高を入力30

コマンド:
コマンド:
SETENV
変数名を入力: txt
値 <0>: 接頭文字記入(無しの場合は半角数値0記入)*削除*
接頭文字記入(無しの場合は半角数値0記入)0

コマンド:
コマンド: ucs

現在の UCS 名: *ワールド*
UCS 原点を指定 または [面(F)/名前の付いた UCS(NA)/オブジェクト(OB)/直前(P)/ビュー(V)/ワールド(W)/X/Y/Z/Z 軸(ZA)] <ワールド>: ob

UCS を位置合わせするオブジェクトを選択:
コマンド: setenv
変数名を入力: to
値 <0>: 1

コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <1>: 0

コマンド:
コマンド: ray
始点を指定: non
*削除*
引出し方向をクリック--設定修正(Rc)--*削除*
引出し方向をクリック--設定修正(Rc)--
通過点を指定:

コマンド: line

1 点目を指定: non
@

次の点を指定 または [元に戻す(U)]: *削除*
*削除*
【測定位置をクリック】*削除*
【測定位置をクリック】
次の点を指定 または [元に戻す(U)]:

コマンド: erase

オブジェクトを選択: l
認識された数: 1

オブジェクトを選択:

コマンド: setenv
変数名を入力: to
値 <0>: 2

コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <2>: 0

コマンド:
コマンド:
SETENV
変数名を入力: to
値 <0>: 3

コマンド:
コマンド:
SETENV
変数名を入力: x1
値 <-3.35547005>: -3.35547005

コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <3>: 0

コマンド:
コマンド:
SETENV
変数名を入力: to
値 <0>: 4

コマンド:
コマンド:
SETENV
変数名を入力: y1
値 <3>: 3

コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <4>: 0

コマンド:
コマンド:
SETENV
変数名を入力: to
値 <0>: 1

コマンド:
コマンド: leader

引出線の始点を指定: non
@

次の点を指定: non
@-3.35547005,3

次の点を指定 または [注釈(A)/形式(F)/元に戻す(U)] <注釈>:

注釈の最初の行を入力 または <オプション>: 36.281
注釈の次の行を入力:

コマンド: ucs

現在の UCS 名: *名前なし*
UCS 原点を指定 または [面(F)/名前の付いた UCS(NA)/オブジェクト(OB)/直前(P)/ビュー(V)/ワールド(W)/X/Y/Z/Z 軸(ZA)] <ワールド>: p

コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <1>: 0

コマンド:
コマンド: ray
始点を指定: non
*削除*
引出し方向をクリック--設定修正(Rc)--*削除*
引出し方向をクリック--設定修正(Rc)--
通過点を指定:

コマンド: line

1 点目を指定: non
@

次の点を指定 または [元に戻す(U)]: *削除*
*削除*
【測定位置をクリック】*削除*
【測定位置をクリック】
次の点を指定 または [元に戻す(U)]:

コマンド: erase

オブジェクトを選択: l
認識された数: 1

オブジェクトを選択:

コマンド: setenv
変数名を入力: to
値 <0>: 2

コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <2>: 0

コマンド:
コマンド:
SETENV
変数名を入力: to
値 <0>: 3

コマンド:
コマンド:
SETENV
変数名を入力: x1
値 <-3.35547005>: -3.35547005

コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <3>: 0

コマンド:
コマンド:
SETENV
変数名を入力: to
値 <0>: 4

コマンド:
コマンド:
SETENV
変数名を入力: y1
値 <3>: 3

コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <4>: 0

コマンド:
コマンド:
SETENV
変数名を入力: to
値 <0>: 1

コマンド:
コマンド: leader

引出線の始点を指定: non
@

次の点を指定: non
@-3.35547005,3

次の点を指定 または [注釈(A)/形式(F)/元に戻す(U)] <注釈>:

注釈の最初の行を入力 または <オプション>: -25.599
注釈の次の行を入力:

コマンド: ucs

現在の UCS 名: *ワールド*
UCS 原点を指定 または [面(F)/名前の付いた UCS(NA)/オブジェクト(OB)/直前(P)/ビュー(V)/ワールド(W)/X/Y/Z/Z 軸(ZA)] <ワールド>: p

登録されている直前の座標系はありません。

コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <1>: 0

コマンド:
コマンド: ray
始点を指定: non
*削除*
引出し方向をクリック--設定修正(Rc)--*削除*
引出し方向をクリック--設定修正(Rc)--*キャンセル*

------------------------------------------------
修正できそうでしたらお願い致します。


  • c-tan
  • 2017/07/24 (Mon) 21:57:34
Re: 標高旗揚げ
マクロ上は問題ない様に思います。

連続測定も出来てる様に見えますが
どの様に出来ていないのでしょうか?
  • とってぃ
  • 2017/07/25 (Tue) 08:20:51
Re: 標高旗揚げ
とってぃ様、お世話になります。

図のようになります。

①が最初に測定した点。(問題なし)
②が2回めに測定した点です。(同じところです)

2回目以降、ワールドのY座標に40を足しているみたいです。

よろしくお願いいたします。

  • c-tan
  • 2017/07/25 (Tue) 22:22:22
Re: 標高旗揚げ
マクロ修正してみました。
お試しください。

♪標高旗上げ 改T2
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),;hk;基準線の標高を入力^X\;txt;接頭文字記入(無しの場合は半角数値0記入)^X\ucs;ob;\setenv;to;1,ray;non;^X引出し方向をクリック--設定修正(Rc)--^X\$M="""$(if,$(getvar,cmdactive),;line;non;@;^X^X【測定位置をクリック】^X\;erase;l;;setenv;to;2,ucs;p)""",,,,)$(nth,$(getenv,to),,,;to;3;;x1;$(*,$(nth,$(fix,$(/,$(angtos,$(getvar,lastangle),0,8),90)),-,,,-)$(+,0.577350269189,15,$(getvar,dimasz)),$(getvar,dimscale),1),,)$(nth,$(getenv,to),,,,;to;4;;y1;$(*,$(nth,$(fix,$(/,$(angtos,$(getvar,lastangle),0,8),90)),-,-,,)15,$(getvar,dimscale),1),)$(nth,$(getenv,to),,,,,;to;1;leader;non;@;non;@$(getenv,x1)","$(getenv,y1);;$(if,$(eq,$(getenv,txt),0),,$(getenv,txt))$(rtos,$(+,$(getenv,hk),$(*,$(index,1,$(getvar,lastpoint))),0.001),2,3);)^M
  • とってぃ
  • 2017/07/26 (Wed) 09:10:10
Re: 標高旗揚げ
とってぃ様 
早々の対応ありがとうございます。

意図したとおり動作いたします。
本当にありがとうございました。

  • c-tan
  • 2017/07/26 (Wed) 22:27:02

返信フォーム






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