🍣
AutoCAD 面積を描き出すコード 3
AutoCADで面積を描き出すLISPを作った話(条件コード編)
;-----------------------------------文字の高さ設定
(initget 4);ゼロ不可,マイナス不可
(setq p1 (getpoint "\n 文字高 1点目 (Enter=直接入力)"))
(if (/= p1 nil);-----正
(setq p2 (getpoint "\n 文字高 2点目")
tsz (distance p1 p2))
(progn
(initget (+ 2 4));ゼロ不可,マイナス不可
(setq tsz (getreal "\n 文字高 <2.5>:"))
(if (= tsz nil)(setq tsz 2.5))
)
)
前にも説明したのですが、文字の高さ指定です
「文字の高さ 1点目をクリックするか? エンターして直接数値を入れるか?」
;-----------------------------------文字の作図条件
;小数点以下桁数
(initget 4);null,マイナス不可
(setq dec (getint (strcat "\n 少数点以下桁数 <" (itoa (getvar "dimdec")) ">:")))
(if (= dec nil)(setq dec (getvar "dimdec")))
小数点以下の桁数指定です
dimdec寸法設定から取り出して初期値に入れます。 数値を入れれば指定されます
;作図縮尺
(initget (+ 2 4))
(setq ss (getreal "\n 作図の縮尺 1m=1/1m=1000 <1>:"))
(if (= ss nil)
(setq ss 1)
)
作図した大きさ指定です
CADの1=1mですか? 1mmですか?
;面積単位
(setq scl (getstring "\n 面積の単位 m=m2/h=ha <m>:"))
(if (or (= scl "m")(= scl ""))
(setq scl "m2")
(setq scl "ha")
)
単位指定です
「m2」or「ha」 「坪」は、無視しました。(土木科なので)
;境界図形(PLINE)を残すか?残さないか?←現在層/色/線種で書かれる.
(initget 0 "Y N")
(setq kwd (getkword "\n 境界図形の作成 <N>:"))
境界線を残す指示です。
残す「Y」削除「N]
;面積記号"A="を作図?
(initget 0 "Y N")
(setq aa (getkword "\n Y=面積記号の作成[A=]/N=作図なし <Y>:"))
(if (or (= aa "Y")(= aa nil))
(setq aa "A=")
(setq aa "")
)
面積記号を入れますか?
入れる時は、何もせずにエンター 入れない時は、「N」を入力
;単位作図
(initget 0 "Y N")
(setq mm (getkword (strcat "\n 単位図形の作図 [" scl "] <Y>:")))
(if (or (= mm "Y")(= mm nil))
(setq mm scl)
(setq mm "")
)
作図の単位「m2」「ha」を記載しますか?
記載する時は、何もせうにエンター 入れない時は、「N」を入力
;面積の換算
(if (and (= ss 1)(= scl "ha"))
(setq ss 0.0001)
)
(if (and (= ss 1000)(= scl "m2"))
(setq ss 0.000001)
)
(if (and (= ss 1000)(= scl "ha"))
(setq ss 0.0000000001)
)
スケール(1=何単位)と単位(m2 ha)で計算します。
1=1m の時 1m2=1 10,000m2=1ha になるので、0.0001を掛けてhaにします。
坪計算も同様に考えればできますねー
こんな感じで条件を設定しておけば 色々な場面で使えそうです
これができれば、あとは 操作手順を解読していけばえいがでー
ほいたらねー
Discussion