見出し画像

BricsCADで選択図形のアウトラインを生成するコマンド

BricsCAD にアウトラインコマンドがない?という話題を見かけたので。
適当に拵えてみました。いりますかね?

追記:2024年2月12日

某所でいるよっていうコメントを頂いたので、ちょっと整えました。

上記のファイルは BricsCADで利用できる LISPプログラムです。
利用は自己責任においてご自由に。

BricsCAD向けアウトラインコマンドの使い方

  1. BricsCAD を起動して appload コマンドを実行します。

  2. gz_outline.des ファイルを追加してロードします。
    (常用したい人は自動ロードにチェックを入れとくといいです。)

  3. ロードすると、_OUTLINE コマンドが追加されます。

  4. OUTLINE コマンドを実行して、アウトラインがほしい図形を選択します。

  5. アウトラインが現在のプロパティ(画層,色,線種)で生成されます。

  6. 元のオブジェクトを消すかい? [はい(Y)/いいえ(N)] <Yes>:
    と聞いてくるので、アウトラインの元になった図形を削除すならYes、残したい場合は No 選択します。

以上です。

LISP から使う場合

プログラムを読み込むと、outline コマンドとは別に gz:outline という関数が追加されます。この関数が実質的に outline の処理を行っているところなので、LISP ルーティンとして使えます。

; アウトラインを作成して生成されたアウトライン図形を移動する&選択セットを返す例
; (setq olset (outline-test))
(defun outline-test (/ ss el s1)
  (setq el (entlast) ss (ssadd)) ; 最後の図形名を取っとく
  (setvar 'cmdecho 0)
  (gz:outline (ssget))         ; アウトラインを作成する(元図は残す)
  (while (and el (entnext el)) ; 取っといた最後の図形以降の図形(=アウトライン図形)を選択セットにしてまとめる
    (ssadd (entnext el) ss)
    (setq el (entnext el)
  )
)
(command "_move" ss "" pause pause) ; 選択セットだけ欲しければこれをコメントアウト
ss
)

関数: (gz:outline ss)
引数:ss はアウトラインを作成したい図形の選択セットです。

仕様

内部で BOUNDARYコマンドを使用しているので、Boundary の仕様に引きずられます。つまり以下のようなものがあります。

  • 作成されるアウトラインオブジェクトは、ポリラインかリージョンのどちらかになります。(リージョンのままだと困る場合は、分解すれば OK。)

  • 選択した図形で閉じた領域が入れ子状になっている場合、島領域のアウトラインも作成されます。* 下イメージ参照

入れ子状選択セット(左)からアウトライン’(右)を作成した例

そのうち GizmoTools に入れると思います。
では!

サポートありがとうございます。 モチベーション維持等々、有意義に使わせていただきます。