【AutoCAD LISP】繰り返しフィレット

  • URLをコピーしました!
みなさん、こんにちは!音門仁です!

フィレットするときに、繰り返しフィレットしたいときってありませんか?

今回は、繰り返しフィレットする機能をLISPで作成したので紹介したいと思います!

とは、言ってもこの繰り返しフィレット、実は既存のコマンドにあります(笑)


上画像のように「フィレット」コマンドの「複数」オプションを選択すれば、繰り返しフィレットすることができます。

今回のLISPでは、「while文」という構文を使っているので、参考までに紹介したいと思います!
この記事で分かる事
  • 繰り返しフィレットのLISP作成方法

こちらの記事もおすすめです。

[article id=”49,” cat_name=”1″ layout=”list” ]

Contents

LISP構成

繰り返しフィレット」のプログラムは、以下のようになってます。

  1. (defun c:CF ()
  2. (setq sel (ssget))
  3. (while (/= sel nil)
  4. (setq sel1 (ssname sel 0))
  5. (setq sel2 (ssname sel 1))
  6. (command-s “._FILLET” sel1 sel2 )
  7. (setq sel (ssget))
  8. )
  9. )

プログラムの説明

  1. コマンドエイリアスを「CF(CONTINUE FILLET)」に設定
  2. フィレットする線分2つを選択し、選択セット「sel」に代入
  3. while文、選択セット「sel」が「nil」でない限り繰り返す
  4. 選択セット「sel」内の1番目の線分を「sel1」に代入
  5. 選択セット「sel」内の2番目の線分を「sel2」に代入
  6. 線分「sel1」「sel2」で「フィレット」コマンドを使用する
  7. フィレットする線分2つを選択し、選択セット「sel」に代入

③の「while」文で、条件を満たす限り()で囲われたプログラムを繰り返し実行します。

今回の条件は、(/= sel nil)なので、選択セット「sel」内が空でなければ繰り返し実行します!

⑦でオブジェクトを選択すれば、選択セット「sel」にオブジェクトが追加されnil以外になるので繰り返しプログラムを実行します。

何も選択せずにエンターまたはESCキーで選択セット「sel」は空の状態になるので繰り返さずにプログラムが終了します。

④⑤の「ssname」は、選択セット内の指定した番号のオブジェクトを取得します。

(ssname sel 0)で選択セット「sel」の1番目の線分、(ssname sel 1)で選択セット「sel」の2番目の線分を取得します!

「ssname」で取得した線分を「sel1」「sel2」にそれぞれ代入し、「フィレット」コマンドで使用します。

プログラムを貼り付けておくので、良かったら実際に試してみてください!

連続フィレット

実際の操作

実際の操作は、以下のようになります。

  1. コマンドエイリアスを「CF(CONTINUE FILLET)」を入力し、エンター
  2. フィレットする線分を選択し、エンター
  3. 続けてフィレットする線分を選択し、エンター
  4. 続けてフィレットする線分を選択し、エンター
  5. フィレットする線分がなければ、何も選択せずにエンターまたは、ESCキー
  6. フィレット完了


①コマンドエイリアスを「CF(CONTINUE FILLET)」を入力し、エンター


②フィレットする線分を選択し、エンター


③続けてフィレットする線分を選択し、エンター


④続けてフィレットする線分を選択し、エンター


⑤フィレットする線分がなければ、何も選択せずにエンターまたは、ESCキー


⑥フィレット完了

③でオブジェクトを選択するときに、全体を囲んでもいいし、一部分だけ囲んでも選択することができます!

時短率

このプログラムを使うことで、「繰り返しフィレット」の作業効率は、約3倍になります。

通常の場合:15秒

LISPの場合:5秒

理由は、以下のようになります。

  • 「フィレット」の「複数」オプションを選択しなくても、繰り返しフィレットできる
  • 「ssget」を使うことで、一度に複数のオブジェクトを選択できる

以上の理由で作業効率を劇的に向上させることができます。

今回は、このLISPを作った後に、既存のコマンドで「繰り返しフィレット」があることに気付きました。

しかし、既存の「フィレット」→「複数」オプションを使用するにしても、一度オプションで「複数」を選択する手間があるので、このLISPを使った方が、その部分を省略できるので時短できます。

既存のフィレットだと、線分をひとつづつ選択する必要がありますが、今回のLISPは「ssget」で囲って一度に線分を選択できるのも便利な点です!

「フィレット」→「複数」オプションでLISPを作る

既存の「フィレット」コマンド→「複数」オプションで「繰り返しフィレット」LISPを作成すると以下のようになります。

  1. (defun c:CF ()
  2. (command-s “._FILLET” “U” )
  3. )
なんと、たったの3行で「繰り返しフィレット」のLISP完成です(笑)

(command-s “._FILLET” “U” )の「”U”」と記述すると、「複数」オプションが実行されます。

しかし、このLISPの場合、既存のコマンドを使っている関係上、線分をひとつづつ選択するので作業性は少し悪いです。

まとめ

この記事では、「繰り返しフィレット」の自動化プログラムについて紹介しました。

まとめ
  • 「繰り返しフィレット」の自動化プログラムで作業効率3倍
このように簡単なプログラムを組むだけでも、日頃の作業効率が劇的に上がります!
今回、紹介したプログラムを以下からダウンロードできるので是非試してみてください!

連続フィレット

こちらの記事もおすすめです。

[article id=”49,” cat_name=”1″ layout=”list” ]

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

Contents