![見出し画像](https://assets.st-note.com/production/uploads/images/130489075/rectangle_large_type_2_2ef905e5152170c4110679396bc7d352.png?width=1200)
BricsCADで選択図形のアウトラインを生成するコマンド
BricsCADで選択図形のアウトライン作成をするコマンド。
— gizmon✧ (@gzlabs) February 11, 2024
入れ子も検出しちゃうけどええじゃろ。 pic.twitter.com/0muxjkIFi6
BricsCAD にアウトラインコマンドがない?という話題を見かけたので。
適当に拵えてみました。いりますかね?
追記:2024年2月12日
某所でいるよっていうコメントを頂いたので、ちょっと整えました。
上記のファイルは BricsCADで利用できる LISPプログラムです。
利用は自己責任においてご自由に。
BricsCAD向けアウトラインコマンドの使い方
BricsCAD を起動して appload コマンドを実行します。
gz_outline.des ファイルを追加してロードします。
(常用したい人は自動ロードにチェックを入れとくといいです。)ロードすると、_OUTLINE コマンドが追加されます。
OUTLINE コマンドを実行して、アウトラインがほしい図形を選択します。
アウトラインが現在のプロパティ(画層,色,線種)で生成されます。
元のオブジェクトを消すかい? [はい(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。)
選択した図形で閉じた領域が入れ子状になっている場合、島領域のアウトラインも作成されます。* 下イメージ参照
![](https://assets.st-note.com/img/1707702804222-wpqKTT7T3L.png)
そのうち GizmoTools に入れると思います。
では!
サポートありがとうございます。 モチベーション維持等々、有意義に使わせていただきます。