フィレットするときに、繰り返しフィレットしたいときってありませんか?
今回は、繰り返しフィレットする機能をLISPで作成したので紹介したいと思います!
とは、言ってもこの繰り返しフィレット、実は既存のコマンドにあります(笑)
上画像のように「フィレット」コマンドの「複数」オプションを選択すれば、繰り返しフィレットすることができます。
- 繰り返しフィレットのLISP作成方法
こちらの記事もおすすめです。
[article id=”49,” cat_name=”1″ layout=”list” ]
LISP構成
「繰り返しフィレット」のプログラムは、以下のようになってます。
- (defun c:CF ()
- (setq sel (ssget))
- (while (/= sel nil)
- (setq sel1 (ssname sel 0))
- (setq sel2 (ssname sel 1))
- (command-s “._FILLET” sel1 sel2 )
- (setq sel (ssget))
- )
- )
プログラムの説明
- コマンドエイリアスを「CF(CONTINUE FILLET)」に設定
- フィレットする線分2つを選択し、選択セット「sel」に代入
- while文、選択セット「sel」が「nil」でない限り繰り返す
- 選択セット「sel」内の1番目の線分を「sel1」に代入
- 選択セット「sel」内の2番目の線分を「sel2」に代入
- 線分「sel1」「sel2」で「フィレット」コマンドを使用する
- フィレットする線分2つを選択し、選択セット「sel」に代入
③の「while」文で、条件を満たす限り()で囲われたプログラムを繰り返し実行します。
⑦でオブジェクトを選択すれば、選択セット「sel」にオブジェクトが追加されnil以外になるので繰り返しプログラムを実行します。
何も選択せずにエンターまたはESCキーで選択セット「sel」は空の状態になるので繰り返さずにプログラムが終了します。
④⑤の「ssname」は、選択セット内の指定した番号のオブジェクトを取得します。
「ssname」で取得した線分を「sel1」「sel2」にそれぞれ代入し、「フィレット」コマンドで使用します。
実際の操作
実際の操作は、以下のようになります。
- コマンドエイリアスを「CF(CONTINUE FILLET)」を入力し、エンター
- フィレットする線分を選択し、エンター
- 続けてフィレットする線分を選択し、エンター
- 続けてフィレットする線分を選択し、エンター
- フィレットする線分がなければ、何も選択せずにエンターまたは、ESCキー
- フィレット完了
①コマンドエイリアスを「CF(CONTINUE FILLET)」を入力し、エンター
⑤フィレットする線分がなければ、何も選択せずにエンターまたは、ESCキー
時短率
通常の場合:15秒
LISPの場合:5秒
理由は、以下のようになります。
- 「フィレット」の「複数」オプションを選択しなくても、繰り返しフィレットできる
- 「ssget」を使うことで、一度に複数のオブジェクトを選択できる
以上の理由で作業効率を劇的に向上させることができます。
今回は、このLISPを作った後に、既存のコマンドで「繰り返しフィレット」があることに気付きました。
しかし、既存の「フィレット」→「複数」オプションを使用するにしても、一度オプションで「複数」を選択する手間があるので、このLISPを使った方が、その部分を省略できるので時短できます。
「フィレット」→「複数」オプションでLISPを作る
既存の「フィレット」コマンド→「複数」オプションで「繰り返しフィレット」LISPを作成すると以下のようになります。
- (defun c:CF ()
- (command-s “._FILLET” “U” )
- )
(command-s “._FILLET” “U” )の「”U”」と記述すると、「複数」オプションが実行されます。
しかし、このLISPの場合、既存のコマンドを使っている関係上、線分をひとつづつ選択するので作業性は少し悪いです。
まとめ
この記事では、「繰り返しフィレット」の自動化プログラムについて紹介しました。
- 「繰り返しフィレット」の自動化プログラムで作業効率3倍
こちらの記事もおすすめです。
[article id=”49,” cat_name=”1″ layout=”list” ]
コメント