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

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

面積から体積をだし重量を計算
とってぃ様
いつも拝見させていただいております。表題の様に、線分で閉じられた領域をクリックし面積を拾い(㎡) その後 値1を入力、続いて値2を入力しマクロ内で 面積×値1×値2=重量(ton) を計算し記入する。というようなマクロを作っていただきたいのです。
1.マクロの起動
2.線分で閉じられた領域の中をクリック
3.値1を入力(躯体の厚さm)
4.値2を入力(比重)
5.計算結果を図面に描く
このように考えてみました。よろしくお願いいたします。
  • over
  • 2019/12/17 (Tue) 21:49:19
Re: 面積から体積をだし重量を計算
こんな感じでしょうか

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),id;領域内を指定^X\-hatch;non;@;;area;o;l;erase;l;;setenv;to;1,;ar1;$(*,$(getvar,area),0.000001);;m1;躯体の厚さ^X\;gr1;比重^X\;to;2,,)$(nth,$(getenv,to),,,;vo1;$(*,$(*,$(getenv,ar1),$(getenv,m1)),$(getenv,gr1));;to;3,text;\;;$(getenv,vo1);;setenv;to;0)^M

文字の大きさ等は『text;\;;』の部分を修正してください

  • chibi-tom
  • 2019/12/18 (Wed) 08:55:12
Re: 面積から体積をだし重量を計算
chibi-tom様
早速の対応 ありがとうございます。
動作確認いたしました。希望通りです。あと2点 お願いしてよろしいでしょうか
1.マルチテキストで書きたい
2.答えを下二けたにしてtの単位を末尾につくようにしたい
お忙しいところ恐縮ではございますが よろしくお願いいたします。
  • over
  • 2019/12/18 (Wed) 11:20:26
Re: 面積から体積をだし重量を計算
マルチテキストあまり使わないのでとりあえず基準は左上固定です

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),id;領域内を指定^X\-hatch;non;@;;area;o;l;erase;l;;setenv;to;1,;ar1;$(*,$(getvar,area),0.000001);;m1;躯体の厚さ^X\;gr1;比重^X\;ME;$(getvar,mtexted);;to;2,,)$(nth,$(getenv,to),,,;vo1;$(rtos,$(*,$(*,$(getenv,ar1),$(getenv,m1)),$(getenv,gr1)),2,2);;to;3,mtexted;internal;-mtext;文字列の始点を指定^X\@;$(getenv,vo1)t;;mtexted;$(getenv,ME);setenv;to;0)^M

2.答えを下二けたにして
→ちょっとわからないのでとりあえず小数点以下を2桁にしました
  • chibi-tom
  • 2019/12/18 (Wed) 12:34:57
Re: 面積から体積をだし重量を計算
chibi-tom様
改良ありがとうございます。
動作不良があるため最後まで行きません。
一応 貼り付けてみました。
3回目の値(C)の入力で止まります。
なにとぞ よろしくお願いいたします。 


マンド: setenv
変数名を入力: to
値 <0>: 0
コマンド: id
点を指定: 領域内を指定*削除*
領域内を指定 X = 11249.4761 Y = -5168.7446 Z = 0.0000
コマンド: -hatch
現在のハッチング パターン: ANGLE
内側の点を指定 または [プロパティ(P)/オブジェクトを選択(S)/境界を作成(W)/境界を除外(B)/拡張(A)/表示順序(DR)/原点(O)/異尺度対応(AN)/ハッチングの色(CO)/画層(LA)/透過性(T)]: non
@
すべてを選択中...
表示されているすべてのオブジェクトを選択中...
選択されたデータを分析中...
内側の島を分析中...
現在のハッチング パターン: ANGLE
内側の点を指定 または [プロパティ(P)/オブジェクトを選択(S)/境界を作成(W)/境界を除外(B)/拡張(A)/表示順序(DR)/原点(O)/異尺度対応(AN)/ハッチングの色(CO)/画層(LA)/透過性(T)]:
コマンド: area
コーナーの 1 点目を指定 または [オブジェクト(O)/面積を加算(A)/面積を減算(S)] <オブジェクト(O)>: o
オブジェクトを選択: l
領域 = 80843.3018, 周長 = 1184.0299
コマンド: erase
オブジェクトを選択: l
認識された数: 1
オブジェクトを選択:
ハッチング境界の自動調整が除去されました。
コマンド: setenv
変数名を入力: to
値 <0>: 1
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <1>: 0
コマンド:
SETENV
変数名を入力: ar1
値 <0.0808433>: 0.0808433
コマンド:
SETENV
変数名を入力: m1
値 <0.2>: 躯体の厚さ*削除*
躯体の厚さ0.2
コマンド:
SETENV
変数名を入力: gr1
値 <2.4>: 比重*削除*
比重2.4
コマンド:
SETENV
変数名を入力: ME
値 <c:>: c:
  • over
  • 2019/12/18 (Wed) 12:56:07
Re: 面積から体積をだし重量を計算
マルチテキストのエディターを取得する部分になります

たぶん『¥』が入っているのでマクロではユーザー入力になってしまっていると思われます
『internal』でないと動かない仕様になります
先ほども書きましたがマルチテキストあまり使わないので普段自分は『OldEditor』を使用しているため
元に戻す為、マルチテキストのエディターを取得しています

マクロ起動前にマルチテキストのエディターを『internal』して起動してみてください

申し訳ありませんが、自分にはそれしか対応方法が思いつきません
  • chibi-tom
  • 2019/12/18 (Wed) 13:08:10
Re: 面積から体積をだし重量を計算
>『internal』でないと動かない仕様になります
ごめんなさい勘違いかも

とりあえずエディターの変更を削除してみました
『OldEditor』では普通に動きました

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),id;領域内を指定^X\-hatch;non;@;;area;o;l;erase;l;;setenv;to;1,;ar1;$(*,$(getvar,area),0.000001);;m1;躯体の厚さ^X\;gr1;比重^X\;to;2,,)$(nth,$(getenv,to),,,;vo1;$(rtos,$(*,$(*,$(getenv,ar1),$(getenv,m1)),$(getenv,gr1)),2,2);;to;3,-mtext;文字列の始点を指定^X\@;$(getenv,vo1)t;;setenv;to;0)^M

  • chibi-tom
  • 2019/12/18 (Wed) 13:32:28
Re: 面積から体積をだし重量を計算
chibi-tom様
改訂ありがとうございます。
当方のテキストエディターばずいぶん昔のを使っているためinternalに戻しかねています。そこでまたお願いですが一番最初のままで
下二けたで t を付けて書くことはできますでしょうか。再三お手数をおかけしますがなにとぞよろしくお願いいたします。

コマンド: setenv
変数名を入力: to
値 <0>: 0
コマンド: id
点を指定: 領域内を指定*削除*
領域内を指定 X = 9780.4054 Y = -5241.6137 Z = 0.0000
コマンド: -hatch
現在のハッチング パターン: ANGLE
内側の点を指定 または [プロパティ(P)/オブジェクトを選択(S)/境界を作成(W)/境界を除外(B)/拡張(A)/表示順序(DR)/原点(O)/異尺度対応(AN)/ハッチングの色(CO)/画層(LA)/透過性(T)]: non
@
すべてを選択中...
表示されているすべてのオブジェクトを選択中...
選択されたデータを分析中...
内側の島を分析中...
現在のハッチング パターン: ANGLE
内側の点を指定 または [プロパティ(P)/オブジェクトを選択(S)/境界を作成(W)/境界を除外(B)/拡張(A)/表示順序(DR)/原点(O)/異尺度対応(AN)/ハッチングの色(CO)/画層(LA)/透過性(T)]:
コマンド: area
コーナーの 1 点目を指定 または [オブジェクト(O)/面積を加算(A)/面積を減算(S)] <オブジェクト(O)>: o
オブジェクトを選択: l
領域 = 102996.3963, 周長 = 1404.5478
コマンド: erase
オブジェクトを選択: l
認識された数: 1
オブジェクトを選択:
ハッチング境界の自動調整が除去されました。
コマンド: setenv
変数名を入力: to
値 <0>: 1
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <1>: 0
コマンド:
SETENV
変数名を入力: ar1
値 <0.1029964>: 0.1029964
コマンド:
SETENV
変数名を入力: m1
値 <0.2>: 躯体の厚さ*削除*
躯体の厚さ
コマンド:
SETENV
変数名を入力: gr1
値 <2.4>: 比重*削除*
比重
コマンド:
SETENV
変数名を入力: to
値 <0>: 2
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <2>: 0
コマンド:
SETENV
変数名を入力: vo1
値 <0.05>: 0.05
コマンド:
SETENV
変数名を入力: to
値 <0>: 3
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <3>: 0
コマンド: -mtext
現在の文字スタイル: "Standard" 文字高さ: 35.0000 異尺度対応: いいえ
最初のコーナーを指定: 文字列の始点を指定*削除*
文字列の始点を指定
もう一方のコーナーを指定 または [高さ(H)/位置合わせ(J)/行間隔(L)/回転角度(R)/文字スタイル(S)/幅(W)/段組み(C)]: @
文字列を入力: 0.05t
文字列を入力:
コマンド: setenv
変数名を入力: to
値 <0>: 0
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <0>: 0
コマンド: id
点を指定: 領域内を指定*削除*
領域内を指定*キャンセル*
  • over
  • 2019/12/18 (Wed) 14:01:07
Re: 面積から体積をだし重量を計算
>下二けたで
先ほども書いたのですが正解がわからないのです

>0.05t
この場合05tになるのですか?
  • chibi-tom
  • 2019/12/18 (Wed) 14:11:56
Re: 面積から体積をだし重量を計算
chibi-tom様
何度も 申し訳ありません。ご協力感謝いたします。
おっしゃる通り 0.05t と書き入れたいのです。
  • over
  • 2019/12/18 (Wed) 14:52:58
Re: 面積から体積をだし重量を計算
また早とちりしたかな

textで良いということでしょうか?
それならばこうなります

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),id;領域内を指定^X\-hatch;non;@;;area;o;l;erase;l;;setenv;to;1,;ar1;$(*,$(getvar,area),0.000001);;m1;躯体の厚さ^X\;gr1;比重^X\;to;2,,)$(nth,$(getenv,to),,,;vo1;$(rtos,$(*,$(*,$(getenv,ar1),$(getenv,m1)),$(getenv,gr1)),2,2);;to;3,text;\;;$(getenv,vo1)t;setenv;to;0)^M
  • chibi-tom
  • 2019/12/18 (Wed) 15:05:15
解決です
chibi-tom様
いろいろとありがとうございました。
おかげさまで 理想通りの動作をしています。
本当にありがとうございました。
解決とさせていただきます。

今後ともよろしくお願いいたします。
  • over
  • 2019/12/18 (Wed) 15:49:07
Re: 面積から体積をだし重量を計算
バージョンが書かれていなかったので古いバージョンではできませんが
2017.1 Update以降にTXT2MTEXTコマンドがあることを思い出したので
とりあえずご報告です

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),id;領域内を指定^X\-hatch;non;@;;area;o;l;erase;l;;setenv;to;1,;ar1;$(*,$(getvar,area),0.000001);;m1;躯体の厚さ^X\;gr1;比重^X\;to;2,,)$(nth,$(getenv,to),,,;vo1;$(rtos,$(*,$(*,$(getenv,ar1),$(getenv,m1)),$(getenv,gr1)),2,2);;to;3,text;\;;$(getenv,vo1)t;txt2mtxt;l;;setenv;to;0)^M

これでマルチテキストにすることはできます



  • chibi-tom
  • 2020/01/17 (Fri) 09:06:13

返信フォーム






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