お帰りなさい!以前のブログ投稿を読んだ後、CAD作業を簡略化するためにいくつかのLispルーチンを書き始めることを決定したことを願っています。しかし、まだ行っていない場合、どこから始めればよいですか?開始するのに最適なルーチンは、図面設定を自動化するルーチンだと思います。私のような人なら、新しい図面を開始するたびに多くの設定を変更するでしょう。これらの設定のほとんど:レイヤー、スタイル、システム変数は、テンプレート図面(.dwt)に保存できます。ただし、他の人が作成した図面を開くと、それがどのように設定されたか正確にわかりません。

このため、外部ソースからのファイルでは、個々の図面ファイルの設定を調整するために数分を費やす必要があります。フェンスの反対側:クライアントにファイルを送信する場合は、「あなたのやり方で」で図面を作成しますが、クライアントの標準に準拠するように設定を調整します。以下の最初のLispルーチンの例は、図面設定プロセスを自動化するためのフレームワークです。

シンプルなソリューション

この簡単な描画設定ルーチンは、最小限の変更でうまくいくかもしれません。以下に、コメントと詳細なメモを含むコードを示します。

(defun c:mysetup()                   ;コマンドライン関数「mysetup」を定義します
 (コマンド「audit」「y」)                ;現在の図面を監査する
 (コマンド "-purge" "all" "*" "n")     ;未使用のスタイルなどをすべて削除します
 (コマンド "-layer" "m" "1" "c" "1" "" "")  ;レイヤー「1」の色「1」を作成します
 (コマンド "-layer" "m" "2" "c" "2" "" "")
 (コマンド "-layer" "m" "3" "c" "3" "" "")
 (コマンド "-layer" "m" "4" "c" "4" "" "")
 (コマンド "viewres" "y" "20000")      ;ビューの解像度を最大に設定します
 (コマンド "facetres" "10")            ;ファセット解像度を最大に設定
 (setvar "filedia" 1)                 ;ファイルダイアログをオンにする
 (setvar "attdia" 1)                  ;属性ダイアログをオンにする
 (setvar "attreq" 1)                  ;配置時に属性編集を有効にする
 (setvar "cecolor" "bylayer")         ;現在のカラーバイレイヤーを設定
 (setvar "clayer" "0")                ;現在のレイヤーを「0」に設定します
 (setvar "maxsort" 5000)              ;最大レイヤーソートを5,000に設定
 (コマンド "zoom" "e" "zoom" "0.95x")  ;範囲をズームしてから、少し外に出します
 )                                    ;関数を終了します
 

この図面設定ルーチンはどのように機能しますか?

最初に、この図面設定ルーチンの各行がBricsCADのコマンドラインに入力されている可能性があることがわかります。おそらく今日はそうです。それらをLispルーチンにラップすることにより、 Defun (関数を定義する)メニューから、またはBricsCADコマンドラインにその名前を入力して、図面設定ルーチンを「呼び出し可能」にします。

  • 含まない場合 Defun、プログラムをファイル名でロードすると、プログラムは1回実行されます。を使用して Defun、およびこのルーチンを lsp 関数名を入力することで、いつでも関数を使用できるようになります。 mysetup.

次に、 コマンド ストリング自体。前にダッシュが付いているコマンド(例 -層-パージ)は、コマンドのダイアログボックスが起動しないようにするために使用されます。他からファイルを開くときの最初のステップとして、私は通常、 監査 続いて パージ 未使用のアイテムを削除します。

の場合 パージ コマンド、私はしばしばそれを複数回実行してネストされたアイテムを削除します。以下は、3ピートを実現できるLispロジックを少し追加したものです。

(繰り返し3(コマンド "-purge" "all" "*" "n"))

そのことに注意してください パージ 新しい空のレイヤーを追加する前に行われます...後で削除すると削除されます!

コマンド レイヤーを設定する呼び出しを1つのコマンドステートメントにまとめることもできますが、各行が独立していると読みやすいと思います。 Filedia グローバル設定(別名「システム変数」)であるため、描画に依存しません。これらのタイプの設定をこのようなルーチンに追加して、新しい図面から期待する動作が確実に得られるようにします。

マックス何?

私は maxsort 設定には2つの理由があります。最初に、一部の設定ではテキスト文字列ではなく数値が必要であることを示します(欠落している引用符に注意してください) maxsortのコマンドライン)。 マックスソート ソートされるダイアログボックスエントリの最大数を制御します。 2番目の理由は、「工場出荷時のデフォルト」が maxsort 1,000です。今日のコンピューターでは、より大きなプロジェクトファイルが見つかることが多く、その数は少なすぎる場合があります。レイヤー名がアルファベット順にソートされない図面を開くと、デフォルト maxsort 値が理由かもしれません!

追加 setvar 「呼び出し」には、寸法やテキストのスタイル設定、単位設定などが含まれます…

描画設定ルーチンのためのより用途の広いレイヤーメーカー

ここでは、mysetup.lspのバージョンに追加できる次の例を使用します。メモ帳などのエディターで簡単なテキストファイルを作成することにより、ルーチンの実行時に作成されるレイヤー名のリストを追加できます。これは、上記のハードコードされたプロセスの代替手段です。を使用して findfile 関数では、BricsCADはまず現在のディレクトリを検索し、次に定義されたサポートフォルダーを順番に検索して、layers.txtファイルを見つけます。これは既知であり、デフォルトのレイヤ設定テキストファイルをサポートパスに配置し、の代替バージョンを個々のプロジェクトフォルダに配置できます。これにより、複数のレイヤーレイアウトを簡単にサポートできます。

 (if(not(findfile "Layers.txt"))    ;“ not” = findfileから結果を探していません
 (アラート「Layers.txtが見つかりません!」)     ;ファイルがない?ユーザーに怒鳴りつけて終了します!
 (progn                               ;それ以外の場合は、prognグループで作業を行います
 (setq layerfile(open(findfile "Layers.txt") "r")) ; layers.txtを開いて「読む」
 (while(setq layername(read-line layerfile))       ;各行を読みながら、テキストをlayernameに保存します
 (コマンド "-layer" "m" layername "")                 ;レイヤー名でレイヤーを作成
 )                                    ; whileループを終了します
 (レイヤーファイルを閉じる)                    ; Layers.txtファイルを閉じます
 )                                    ;プログラムを終了します
 )                                    ; ifを終了します

次回は、外部設定ファイルに追加情報を追加し、既存のエンティティをあるレイヤーから別のレイヤーに移動することにより、このセットアッププログラムのプロセスをさらに進めます。それまで、コーディングをお楽しみください。