TOP PAGE > 記事閲覧
フィールド面積
投稿日 | : 2023/10/25(Wed) 13:23 |
投稿者 | : お〜〜 |
参照先 | : |
最近AutoCADよりARESへ変更になりました。
Autoの時にフィールドにてポリラインの面積を下記のlispにて動いていたのですが(先輩が作成したものです)aresでは動作しません。
これからlisp勉強しようとはおもいますが、時間がまだまだかかりそうで・・・
教えてください
(defun c:are
(/ ename vlobj obid pt mt fstr dsc c_unt pref suff pr_0 pr)
(setq pref "") ;接頭辞を指定
(setq suff "u") ;接尾辞を指定
(setq c_unt "1e-006") ;変換単位を指定 ただし、浮動小数点表示
(setq pr_0 "pr3") ;精度を指定 小数点以下の桁数をpr0〜pr8で表示 現在の精度の場合は空白
(setq pr (if (= pr_0 "")
""
(strcat "\%" pr_0)
)
) ;精度を示す文字列を作成
(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 fstr (strcat
"\%\<\\AcObjProp.16.2 Object(\%\<\\_ObjId "
obid "\>\%).Area \\f \"%lu2"
pr "\%ps["
pref ", "
suff "]%ct8["
c_unt "]\" \>\%"
)
) ;フィールド文字列を作成
;(setq tsty (getvar "TEXTSTYLE"));現在の文字スタイルを取得
(setq dsc (getvar "DIMSCALE")) ;DIMSCALEの値を取得
(setq mt (* dsc 1)) ;DIMSCALEのを1倍を文字高さとする
(setq pt (getpoint "\n文字挿入位置を指定: "))
;異尺度対応の文字スタイルを分岐
(if (LM:isAnnotative)
(command "text" pt "" fstr)
(command "text" pt 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))))
)
)
Re: フィールド面積
投稿日 | : 2023/11/05(Sun) 12:19 |
投稿者 | : え~ |
参照先 | : |
ARES ユーザーではありませんが・・・。
コマンドラインに何かエラーメッセージは出ていませんか?
文字挿入位置を指定: まで進むのであれば、
それ以降の異尺度対応判断でエラーということになります。