🍣

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