😊

AutoCAD 面積を描き出すコード 2

に公開

AutoCADで面積を描き出すLISPを作った話(設計編)

はじめに

AutoCADで図形の面積を自動で描き出すLISPを作りました。今回はその設計編として、どんな決め事をして、どんな流れでコードに落とし込んだかを紹介します。


決め事を描き出してみる

処理をするには、その前提になる決め事をしないといけません。面積を描き出すにあたって、以下の条件を整理しました。

決め事

  1. 描き出す文字は?
    → TEXT(MTEXTは処理が複雑なので今回は除外)
  2. 文字の高さは?
    → 固定値でOK(将来的には入力対応もあり)
  3. 単位は必要?
    → 建設業界では m²、ha、建築では「坪」も使うので選択できるように
  4. 「A=」を付ける?
    → オプションで選択可能に

ストーリーを考える

条件設定をしたら、次はオペレーションの流れをイメージします。

  • クリック → 境界線作成(BOUNDARYコマンド)
  • 境界線オブジェクトを取得 → DXFコードから面積を抽出
  • 面積を拾って → TEXTコマンドでクリックした点に描き出す
  • 完了!

実際にAutoCADで試してみる

まずは BOUNDARY コマンドで内側の点をクリックし、エンターで境界線を作成します。
次に、その図形を取得して面積を抽出します。

(setq ename (car (entsel)))
(setq elist (entget ename))

これ、よく使いますよね。
でも…あれ?面積が出ない!AutoCADのプロパティでは出ているのに!!

ハマりポイント
色々調べて、AutoCADカスタムガイドで「AREA」コマンドを発見しました。
面積は getvar で取得できます。

(getvar "area")

こんな試行錯誤を繰り返しをしながらコードを書いていきます。

まとめ
今回は設計編でした。
次回は実装編で、実際のLISPコードを公開しようと思います。

ほいたらねー!

Discussion