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

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

法面勾配の作成方法について
お世話になります。
Autocad2020のR版を使っております。

Autocadでは法面勾配の寸法はどのように皆様作成されているのでしょうか?
以前は他のCADを使っておりまして、法面寸法コマンドがあったため、何も考えずに使っていたのですが、Autocadにはどうも無いような気がしております。

例に付けた絵の場合、
X方向に2.2m行ったらY方向に1m変化という意味です。
分かりやすい例だと、X方向に10m行ったらY方向に1m変化するときは、1:10
といった具合に表示するのですが、これらを作成する方法はありますでしょうか?
(今現在は、縦横寸法を出してから、textマコンドで記載しております。)

  • izayoi
  • 2021/02/18 (Thu) 09:52:19
Re: 法面勾配の作成方法について
法面寸法コマンドの操作方法がわからないので
とりあえずです

1.X方向の長さを測る
2.Y方向の長さを測る
3.文字オブジェクトにしてをクリップボードにコピー
4.クリップボードから貼り付け
をしています

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),ray;X方向の1点目を指定(R-Clickで終了)^X\$M="""$(if,$(getvar,CMDACTIVE),;setenv;to;1,^Csetenv;to;0)""",,,,)$(nth,$(getenv,to),,;p1;$(getvar,LASTPOINT);line;non;@;X方向の長さを指定(R-Clickで再指定)^X\$M="""$(if,$(getvar,CMDACTIVE),;lengthen;l;dy;;erase;l;;setenv;to;2,setenv;to;0)""",,,)$(nth,$(getenv,to),,,;L1;$(getvar,PERIMETER);line;non;@;Y方向の長さを指定(R-Clickで再指定)^X\$M="""$(if,$(getvar,CMDACTIVE),;lengthen;l;dy;;erase;l;;setenv;to;3,setenv;to;0)""",,)$(nth,$(getenv,to),,,,;L2;$(getvar,PERIMETER);setenv;to;4,-text;non;0<0;;;$(getenv,L2):$(getenv,L1);copybase;0<0;l;;erase;l;;pasteclip;\setenv;to;0)^M

1.マクロ起動
2.X方向の1点目を指定(R-Clickでマクロ終了します)
3.X方向の長さの位置を指定(R-Clickで2へ戻ります)
4.Y方向の長さを位置を指定(R-Clickで2へ戻ります)
5.文字を記入する位置を指定

2以降繰り返し
  • chibi-tom
  • 2021/02/18 (Thu) 10:53:56
Re: 法面勾配の作成方法について
前提条件として、UCSがワールド、対象は線分です。
ポリラインは向きが変わる場合があります。
文字の大きさは現在の寸法スタイルに依存します。

*^C^Cucs;ob;^X^X【線分左側をクリック/Escで終了】^X\id;mid;@;$M=-text;j;bc;non;@0,$(*,$(getvar,dimscale),$(getvar,dimgap));$(*,$(getvar,dimscale),$(getvar,dimtxt));0;1:$(rtos,$(/,$(index,0,$(getvar,ucsxdir)),$(index,1,$(getvar,ucsxdir)),$(if,$(>=,0,$(index,1,$(getvar,ucsxdir))),-1,1)),2,1);ucs;w;

詳細解説は↓
http://www7b.biglobe.ne.jp/~den-eng/Free/ac/ac01.html#04
  • Den
  • 2021/02/18 (Thu) 11:12:38
Re: 法面勾配の作成方法について
三角関数使って
こんな感じにもできるか

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),line;1点目を指定(R-Clickで終了)^X\$M="""$(if,$(getvar,CMDACTIVE),\;lengthen;l;dy;;erase;l;;setenv;to;1,^Csetenv;to;0)""",,,)$(nth,$(getenv,to),,;L0;$(getvar,PERIMETER);;AN1;'cal;"""(180*$M=$(getvar,lastangle)/pi)""";\;to;2,,)$(nth,$(getenv,to),,,;L1;'cal;(cos($M=$(getenv,AN1))*$M=$(getenv,L0));\;L2;'cal;(sin($M=$(getenv,AN1))*$M=$(getenv,L0));\;to;3,)$(nth,$(getenv,to),,,,-text;non;0<0;;;$(rtos,$(getenv,L2),2,2):$(rtos,$(getenv,L1),2,2);copybase;0<0;l;;erase;l;;pasteclip;\setenv;to;0)^M

1.マクロ起動
2.斜辺の1点目を指定(R-Clickでマクロ終了します)
3.斜辺長さの位置を指定
4.文字を記入する位置を指定

2以降繰り返し
  • chibi-tom
  • 2021/02/18 (Thu) 11:23:27
Re: 法面勾配の作成方法について
そうか!

ちゃんと計算しなくてはいけないんですね
そりゃそうか_| ̄|○

自己満足です

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),line;1点目を指定(R-Clickで終了)^X\$M="""$(if,$(getvar,CMDACTIVE),\;lengthen;l;dy;;erase;l;;setenv;to;1,^Csetenv;to;0)""",,,)$(nth,$(getenv,to),,;L0;$(getvar,PERIMETER);;AN1;'cal;"""(180*$M=$(getvar,lastangle)/pi)""";\;to;2,,)$(nth,$(getenv,to),,,;L1;'cal;(cos($M=$(getenv,AN1))*$M=$(getenv,L0));\;L2;'cal;(sin($M=$(getenv,AN1))*$M=$(getenv,L0));\;to;3,)$(nth,$(getenv,to),,,,-text;non;0<0;;;1:$(/,$(rtos,$(getenv,L1),2,2),$(rtos,$(getenv,L2),2,2));copybase;0<0;l;;erase;l;;pasteclip;\setenv;to;0)^M
  • chibi-tom
  • 2021/02/18 (Thu) 11:27:30
Re: 法面勾配の作成方法について
chibi-tom様
お手数をおかけしました。
標準ではできなさそうなコマンドなのですね。

また、参考画像、添付ができていなく、申し訳ないです。
  • izayoi
  • 2021/02/18 (Thu) 13:00:32
Re: 法面勾配の作成方法について
Den様
ありがとうございます。
機能としてあると思いましたが、マクロ対応になるとは思わず、聞いてしまい申し訳ない。
  • izayoi
  • 2021/02/18 (Thu) 13:06:39
Re: 法面勾配の作成方法について
Denさんので良いのでしょうが

Denさんのマクロを参考に
『-』が付いてしまう不具合?を解消してみました

最後の自己満足です

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),line;1点目を指定(R-Clickで終了)^X\$M="""$(if,$(getvar,CMDACTIVE),\;lengthen;l;dy;;erase;l;;setenv;to;1,^Csetenv;to;0)""",,,,)$(nth,$(getenv,to),,;L0;$(getvar,PERIMETER);;AN1;'cal;"""(180*$M=$(getvar,lastangle)/pi)""";\;to;2,,,)$(nth,$(getenv,to),,,;L1;'cal;(cos($M=$(getenv,AN1))*$M=$(getenv,L0));\;L2;'cal;(sin($M=$(getenv,AN1))*$M=$(getenv,L0));\;to;3,,)$(nth,$(getenv,to),,,,;L3;$(/,$(rtos,$(getenv,L1),2,2),$(rtos,$(getenv,L2),2,2));;to;4,)$(nth,$(getenv,to),,,,,-text;non;0<0;$(getvar,DIMTXT);$(getenv,AN1);1:$(if,$(>=,0,$(getenv,L3)),$(*,$(getenv,L3),-1),$(*,$(getenv,L3),1));copybase;0<0;l;;erase;l;;pasteclip;\setenv;to;0)^M
  • chibi-tom
  • 2021/02/18 (Thu) 14:19:34
Re: 法面勾配の作成方法について
chibi-tom様
ありがとうございます。
お二方とも、ここまで複雑になってしまうと、もう読み解くだけで1日以上かかりそうです。
一つお聞きしたいことがあります。
1:X.xx(1:1.20など)のときに、X.xxの方の桁数を設定したい場合はどこか設定すればよろしいでしょうか?土木ではたいてい1~2桁、河川だと3桁固定とされたりする場合もあります。
これが設定できると非常に便利です。
重ね重ねすみません。
  • izayoi
  • 2021/02/18 (Thu) 16:02:37
Re: 法面勾配の作成方法について
余談ですが。

>機能としてあると思いましたが、

AutoCADは、世界中の様々な業種で使われている、2D分野ではトップシェアのCADです。

だから、

①日本独特の仕様は原則として存在しない。
②各業界独特の仕様は原則として存在しない。

ということです。

標準装備している機能は、世界中でどんな業種の人でも使える物に絞っているんです。
(それでも、覚えきれないくらい多くの機能が有ります。)

今回の機能も土木業界では必須なのかもしれませんが、
私の業界ではまず使わないでしょう。
土木業界だとしても海外で同じ表記方法とは限らない。

そんな局所的にしか使用されない機能まで搭載してしまうと、
膨大なコマンド数になってしまいます。

従って、細かな機能は各人でカスタマイズしなさい。ってスタンスなんです。
メーカーも、標準状態で使用することを進めていません。

日本人の多くは標準状態で不満タラタラ使ってるみたいですが。
  • Lon
  • 2021/02/18 (Thu) 17:10:36
Re: 法面勾配の作成方法について
>桁数を設定したい場合
ヘルプ内を参考にしてください

DIESEL 関数リファレンス
https://help.autodesk.com/view/ACDLT/2021/JPN/?guid=GUID-F94A885A-4DA2-432B-AC1A-EB49CC6C1C72

ちなみにこのマクロでは
$(rtos,$(getenv,L1),2,2)と$(rtos,$(getenv,L2),2,2)の

最後の『2』で小数以下の桁数に設定しています
  • chibi-tom
  • 2021/02/18 (Thu) 19:28:20
Re: 法面勾配の作成方法について
chibi-tom様
ありがとうございます。
このサイトの講座と、autodeskのリファレンスを読んで勉強します。
また色々と教えてください。
  • izayoi
  • 2021/02/19 (Fri) 07:59:25
Re: 法面勾配の作成方法について
>$(rtos,$(getenv,L1),2,2)と$(rtos,$(getenv,L2),2,2)の
>最後の『2』で小数以下の桁数に設定しています

ごめんなさい間違ってました

$(rtos,$(getenv,L3),2,2)にしないとダメでした
一応修正したので必要でしたらコピペし直してください

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),line;1点目を指定(R-Clickで終了)^X\$M="""$(if,$(getvar,CMDACTIVE),\;lengthen;l;dy;;erase;l;;setenv;to;1,^Csetenv;to;0)""",,,,)$(nth,$(getenv,to),,;L0;$(getvar,PERIMETER);;AN1;'cal;"""(180*$M=$(getvar,lastangle)/pi)""";\;to;2,,,)$(nth,$(getenv,to),,,;L1;'cal;(cos($M=$(getenv,AN1))*$M=$(getenv,L0));\;L2;'cal;(sin($M=$(getenv,AN1))*$M=$(getenv,L0));\;to;3,,)$(nth,$(getenv,to),,,,;L3;$(/,$(getenv,L1),$(getenv,L2));;to;4,)$(nth,$(getenv,to),,,,,-text;non;0<0;$(getvar,DIMTXT);$(getenv,AN1);1:$(if,$(>=,0,$(getenv,L3)),$(*,$(rtos,$(getenv,L3),2,2),-1),$(*,$(rtos,$(getenv,L3),2,2),1));copybase;0<0;l;;erase;l;;pasteclip;\setenv;to;0)^M
  • chibi-tom
  • 2021/02/19 (Fri) 11:24:21

返信フォーム






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