😊
AutoCAD 面積を描き出すコード 2
AutoCADで面積を描き出すLISPを作った話(設計編)
はじめに
AutoCADで図形の面積を自動で描き出すLISPを作りました。今回はその設計編として、どんな決め事をして、どんな流れでコードに落とし込んだかを紹介します。
決め事を描き出してみる
処理をするには、その前提になる決め事をしないといけません。面積を描き出すにあたって、以下の条件を整理しました。
決め事
-
描き出す文字は?
→ TEXT(MTEXTは処理が複雑なので今回は除外) -
文字の高さは?
→ 固定値でOK(将来的には入力対応もあり) -
単位は必要?
→ 建設業界では m²、ha、建築では「坪」も使うので選択できるように -
「A=」を付ける?
→ オプションで選択可能に
ストーリーを考える
条件設定をしたら、次はオペレーションの流れをイメージします。
-
クリック → 境界線作成(
BOUNDARYコマンド) - 境界線オブジェクトを取得 → DXFコードから面積を抽出
- 面積を拾って →
TEXTコマンドでクリックした点に描き出す - 完了!
実際にAutoCADで試してみる
まずは BOUNDARY コマンドで内側の点をクリックし、エンターで境界線を作成します。
次に、その図形を取得して面積を抽出します。
(setq ename (car (entsel)))
(setq elist (entget ename))
これ、よく使いますよね。
でも…あれ?面積が出ない!AutoCADのプロパティでは出ているのに!!
ハマりポイント
色々調べて、AutoCADカスタムガイドで「AREA」コマンドを発見しました。
面積は getvar で取得できます。
(getvar "area")
こんな試行錯誤を繰り返しをしながらコードを書いていきます。
まとめ
今回は設計編でした。
次回は実装編で、実際のLISPコードを公開しようと思います。
ほいたらねー!
Discussion