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

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

フィールドで㎡ 坪
AutoCAD 2024使用してます。

フィールドで㎡ 坪を一度に出したいのですが・・・。
添付したようLISPないでしょうか?
また図面によっては小数点第3までや第2までといろいろですので
ここの部分直せば対応できるってところも教えてください。
  • syu
  • 2025/06/13 (Fri) 10:30:53
Re: フィールドで㎡ 坪
ここに㎡表記は有ります。坪にも応用出来ると思います。
https://totthi.bbs.fc2bbs.net/?act=reply&tid=16680411#24247076
  • さかな
  • 2025/06/14 (Sat) 08:22:30
Re: フィールドで㎡ 坪
小数点以下の桁数は入力、2行のマルチテキストで書き込みます。
コマンド名はfht
サブルーチンは前と同じです。

2025/6/16 13:30 編集しました。
㎡(坪)表記と㎡表記のみを選択できるようにしました。

---------------------------------------------
(defun c:fht (/ ename vlobj obid pt mt fstr fstr1 dsc c_unt1 pref1 suff1 pr pref2 suff2 c_unt2 fstr2 flg)
(setq pref1 "") ;接頭辞1を指定
(setq suff1 "㎡") ;接尾辞1を指定
(setq pref2 "") ;接頭辞2を指定
(setq suff2 "坪") ;接尾辞2を指定
(setq c_unt1 "1e-06") ;変換単位1を指定 ただし、浮動小数点表示
(setq c_unt2 "3025e-10") ;変換単位2を指定 ただし、浮動小数点表示
(setq keta (getint "\n小数点以下の桁数を入力(0-8):"))

(while (or (< keta 0)(> keta 8))
(prompt "\n桁数は0から8の間で指定してください")
(setq keta (getint "\n小数点以下の桁数を入力(0-8):"))
)
(initget "B S")
(or (setq flg (getkword "\n[㎡(坪)(B) / ㎡ のみ(S)] <㎡(坪)(B)> : ")) (setq flg "B"))

(setq pr (strcat "\%" "pr" (itoa keta))) ;精度を指定 小数点以下の桁数をpr0~pr8で表示 現在の精度の場合は空白

(vl-load-com)
(setq ename (car (entsel)))
(setq vlobj (vlax-ename->vla-object ename))
(setq obid (itoa (vla-get-objectid vlobj)))
;図形IDを10進法に変換 itoa必要(rtosだと64bitで不具合)

(setq fstr1 (strcat
"\%\<\\AcObjProp.16.2 Object(\%\<\\_ObjId "
obid "\>\%).Area \\f \"%lu2"
pr "\%ps["
pref1 ","
suff1 "]%ct8["
c_unt1 "]\" \>\%"
)
) ;フィールド文字列1を作成(㎡)

(setq fstr2 (strcat
"\%\<\\AcObjProp.16.2 Object(\%\<\\_ObjId "
obid "\>\%).Area \\f \"%lu2"
pr "\%ps["
pref2 ","
suff2 "]%ct8["
c_unt2 "]\" \>\%"
)
) ;フィールド文字列2を作成(坪)

(if (= flg "S")
(setq fstr fstr1)
(setq fstr (strcat fstr1 "\\P(" fstr2 ")"))
)

(setq dsc (getvar "DIMSCALE")) ;DIMSCALEの値を取得
(setq mt (* dsc 2.8)) ;DIMSCALEのを2.8倍を文字高さとする
(setq pt (getpoint "\n文字挿入位置を指定: "))
;異尺度対応の文字スタイル・文字高さを設定した文字スタイルを分岐
(if (or (LM:isAnnotative) (textHeight))
(command "-mtext" pt "@" fstr "")
(command "-mtext" pt "h" mt "@" fstr "")
)
(princ)
)

'異尺度対応の文字スタイルかどうかを判定
(defun LM:isAnnotative ( / object annotx )
(and
(setq object (tblobjname "STYLE" (getvar "TEXTSTYLE")))
(setq annotx (cadr (assoc -3 (entget object '("AcadAnnotative")))))
(= 1 (cdr (assoc 1070 (reverse annotx))))
)
)

'文字高さ設定した文字スタイルかどうかを判定
(defun textHeight ( / object txtH )
(and
(setq object (tblobjname "STYLE" (getvar "TEXTSTYLE")))
(setq txtH (cdr (assoc 40 (entget object))))
(/= 0 txtH)
)
)
  • LUNE
  • 2025/06/16 (Mon) 11:03:59 New
Re: フィールドで㎡ 坪
LUNE様

最高です。求めていたものです。
いつもありがとうござます。
助かりました。
小数点以下の選択ができるのは素晴らしいです。
一つ教えてください。

㎡だけ表示したい場合
以下の部分削除でいいのですか?

(setq pref2 "") ;接頭辞2を指定
(setq suff2 "坪") ;接尾辞2を指定
(setq c_unt2 "3025e-10") ;変換単位2を指定 ただし、浮動小数点表示
) ;フィールド文字列2を作成(坪)

(setq fstr (strcat fstr1 "\\P(" fstr2 ")"))

(setq dsc (getvar "DIMSCALE")) ;DIMSCALEの値を取得
(setq mt (* dsc 2.8)) ;DIMSCALEのを2.8倍を文字高さとする
(setq pt (getpoint "\n文字挿入位置を指定: "))
;異尺度対応の文字スタイル・文字高さを設定した文字スタイルを分岐
(if (or (LM:isAnnotative) (textHeight))
(command "-mtext" pt "@" fstr "")
(command "-mtext" pt "h" mt "@" fstr "")
)
(princ)
)
の部分を削除したLISPでいいですか?

私が持っているフィールド㎡のLISPでは小数点以下が選択できないので・・・。
  • syu
  • 2025/06/16 (Mon) 12:25:18 New
Re: フィールドで㎡ 坪
先ほど投稿したLispを、㎡(坪)表記と㎡表記のみの選択ができるように修正しました。

ご確認ください。
  • LUNE
  • 2025/06/16 (Mon) 13:32:43 New

返信フォーム






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