最初のブログ投稿 LISPの用語、構文、データ型について話し合い、学びました。また、いくつかの紹介機能の基本的な使用方法と、これらの概念の使用方法についても説明しました。このブログを初めて使用する場合は、少なくともお勧めします そのブログ投稿を確認する、完全に読んでいない場合。しかし、以前の投稿をレビューしないことを選択した場合でも、このエピソードをフォローして、以前に議論された内容のいくつかを取り上げることができると思います。

このブログ投稿(およびいくつかの今後の投稿)では、次のことを行います。

  • 使用 BricsCAD内でのエディターの「実践」
  • LISPに関する知識を強化するための一連の機能の進歩
  • 使用 助けて LISP関数の構文と引数を理解するコマンド
  • の機能を引き続き使用します 前の投稿
  • 新しいプログラムを作成し、その過程で数多くの新しい機能を探索する
  • 同じ結果を得る多くの方法を発見する

レビューする

終わりました 黒LISP – #01 ユーザーがポイントを選択し、指定された半径でそのポイントを中心とする円と、選択されたポイントを中心とする別の円を指定できる6行のコードを使用して、半径が指定された距離だけ増加します。

(setq CPT(getpoint“中心点を選択:“))
(setq RAD(getreal“ Enter a radius:“)))
(setq OFF(getreal“オフセット値を入力してください:“))
(setq NEWRAD(+ RAD OFF))
(コマンド「サークル」CPT RAD)
(コマンド「サークル」CPT NEWRAD)

HELP>Developer Tools>Developer Reference>LISP>Expand LISP(LISt Processing)>Expand BricsCAD LISP Functions

ダブルオフセットの円を描くたびに、これらのコード行を入力しなければならない場合、時間を節約できません。 LISPプログラムを個別のファイルとして保存することは、その問題に対する答えの始まりです。

  1. BricsCADを起動して入力 プロンプトで。次のウィンドウが開きます。LISPブレード
  2. 上記の6行のコードをコピーして、次のようにドキュメントウィンドウに貼り付けます。LISPブレードエディター
    注意: 10個の引用符をそれぞれ削除して再入力する必要があります。ブログ記事のフォントは、引用符に関してBLADEエディターと互換性がありません。

このエピソードでは、BLADEエディターのすべての利点を取り上げるわけではありませんが、色分けが発生することに注意してください。これは、「タイプミス」が少し目立つ場合があるので、特に使い始めるときに役立ちます。

  • 関数名
  • テキスト文字列 (引用符内)
  • シンボル
  • 数字

ほとんど作業プログラムがあります。これらのコード行を「1つのユニット」としてグループ化する必要があります。 (defun)関数はまさにそれを行います。

(defunリストシンボル式 式式…)

この関数は、「組み込み」関数として、またはコマンドとして使用できるユーザー定義関数を作成します。少なくとも3つの引数が必要です。

  1. リスト。 このリストは空にすることができます。後で詳しく説明する準備ができるまで、空のリストを使用します。
  2. 関数名 定義したい。関数名が「c:」で始まる場合、関数名は他の定義済みコマンドと同様にプロンプトに直接入力できます。
  3. 残りの引数 –定義された関数に実行させたい式。

エディターに次のコードを追加します。

コーディングLISPガイド学ぶ

注意: グラフィックの色が画面と一致しない場合は、引用符を削除して再入力するのを忘れている可能性があります。

プログラミングやCADで最も一般的なエラーの1つを作りたくありません– ファイルを保存してください! 誰もが知っている愛する保存アイコンを選択します(多くのユーザーがフロッピーディスクを使用したことがない場合でも!)。左側の行番号と右側の新しいコードの間にある赤いバーは、それらの行が最後の保存以降に変更されたことを意味します。 LISPというUSBドライブにフォルダーを作成したので、そのフォルダーに移動して使用します オフセット円 ファイル名。エディターは自動的に.lsp拡張子を添付します。

「インデント」を使用して、コードを読みやすく/表示しやすくすることをお勧めします。 BLADEエディターを使用して、これを適切かつ自動的に行います。 「再フォーマット(美化)」ボタンを選択します。

ブレードLISP BricscADエディター

これで動作するプログラムができたので、テストする必要があります。 「BricsCADにlispファイルを読み込む」ボタンを選択し、「BricsCADに切り替える」ボタンを選択します。 BricsCADの図面ファイルがアクティブになります。

プロンプトで「OffsetCircles」と入力し始めます。最初の数文字で始まるすべてのコマンドがショートカットリストに表示され、「OffsetCircles」がすでにリストに含まれていることに注意してください。矢印キーを使用して「OffsetCircles」を強調表示し、プログラムのプロンプトに従います。

lispプログラムファイルをロードして使用できるようにするもう1つの方法は、次のようにCommand:プロンプトで(load)関数を直接使用することです。Command:(load“ offsetrcircles”)“ .lsp”は必須ではありませんがより快適に感じる場合は、追加できます。 BricsCADの検索パス内にファイルの場所がある場合、パスは不要です。ファイルがBricsCADの検索パスにない場合、パスとファイル名を含めるための構文は次のとおりです。

コマンド:(load“ c:\\ some-where-else \\ box1”)

私たちのプログラムは、この図面が開いている間のみ機能します。 LISPプログラムは、それらが記述またはロードされている図面でのみアクティブです。新しい図面が開始されるか、BricsCADプログラムが閉じてから再び開くと、ロードされたlispルーチンが失われます。今後の投稿では、LISPプログラムを常に自動的に利用できるようにする多くの方法について説明します。

BLADEエディター

LISPの使用感が得られたので、BLADEエディターを使用して新しいプログラムを開始しましょう。プログラムの7バージョンまたは8バージョンを作成し、各バージョンで新しい機能とコンセプトを紹介します。

  1. まだ開いていない場合は、BLADEエディターを開きます。:EnterコマンドプロンプトでBLADEと入力します。
  2. エディターの左上隅にある「新規」アイコンを選択します。
    エディターは、作成するファイルの名前を要求します。
  3. 新しい名前として「Box1」と入力し、次のコード行を入力します。
    私たちが学んだことに基づいて、これらのコード行は理にかなっているはずです。
  4. すべてのコードを入力したら、 セーブ ツール。
  5. 「Load lisp…」ツール、「Switch to BricsCAD」ツールを選択し、プロンプトで「BOX1」と入力します。 (ショートカットリストに表示されます)
    コードが適切に実行されない(「クラッシュする」)場合は、上のグラフィックをタイプコードと比較してください。正確に一致している必要があります。

このコードには新しい概念が導入されています。テキストを次の行に表示させることです。私たちのOffsetCirclesプログラムでは、ユーザーの入力を求めるプロンプトが、コマンドプロンプトの同じ行に次々と表示されていたことにお気づきかもしれません。新しいプログラムのポイントのプロンプト文字列では、各プロンプトは「\ n…。」の「制御コード」で始まります。これにより、BricsCADは強制的に新しい行または次のコマンドプロンプト行にテキストを表示します。

2つの点に注意してください。バックスラッシュ文字である必要があり、小文字の「n」である必要があります。

これは、いわゆる「丁寧なプログラミング」の例です。ユーザーは次の行が次の行に表示されることを期待するようになります。これは、ほぼすべてのBricsCADコマンドが「機能する」方法であり、プログラマーとして、BricsCADの方法と一致させるように努める必要があります。

より丁寧なプログラミング

以下は、追加の丁寧なプログラミング手法と関数です。これらのほとんどは、作成するほとんどすべてのプログラムで使用されます。

(getvar str)
(setvar str val)

多くの場合、プログラムはBricsCAD内の設定を変更して、ユーザーの操作を少なくしてプログラムをよりスムーズに実行できるようにします。変更される設定の値を保存して、プログラムの完了時に復元できるようにすることは、一般的な慣行であり、礼儀です。

(プロンプトstr)

コマンドラインに文字列引数を表示するには、prompt関数を使用します。ユーザー(getxxx)関数の多くにはプロンプトを含めるオプションがありますが、プログラマーがユーザーにもう少し情報を提供したい場合があります。これは、(プロンプト)機能を使用できる場合です。

(princ str)

この機能はトラブルシューティングツールであり、「クリーンアップ」ツールとしても使用できます。オプションの文字列引数とともに使用できます。関数名(princ)は、「c」オンソール(コマンドライン)に「prin」するために使用されます。文字列引数なしで使用すると、何も起こりません。詳細は次のセクションで説明します。

これらの新しい概念でプログラムを更新する

新しいBOX1コマンドが実行されたときに、(コマンド)関数を含むコード行内で実行されたすべてがコマンド行に「エコー」されたことにお気づきかもしれません。
コマンドラインブレードLISP
これは、新しいプログラムを作成するときに役立ちます。プログラムにエラーが含まれている場合、コマンドのどの行部分を正確に確認できるか、問題が発生している可能性があります。プログラムが正しく実行されると、このコマンドのエコーをオフにするのが一般的な方法です。

また、プログラムが最後に実行したこと-描画したポリゴンを閉じるために「c」を入力すること-の後に、「nil」が画面にエコーされたことに気づいたかもしれません。使用するすべての関数は値を「返す」ことを覚えておく必要があります。式(+ 1 1)の場合、加算関数は1と1を加算した結果を返し、2が返されます。 (コマンド)関数は常に「nil」を返します...「完了」のコードと考えてください...その「nil」がコマンドラインにエコーされないようにするのは良いプログラミング手法です。

これらすべての新しい概念をBOXルーチンに組み込みましょう。レビューと学習のために、プログラムに変更を加えるたびに、それを連続番号の付いたファイルとして保存し、コマンド名の名前を順次変更します。プログラムに次のコードを追加します。

変更が完了したら、 名前を付けて保存 ツールを使用して、新しいファイル名としてBox2.lspを使用します。

変更および追加した内容についての行ごとの説明:

ライン1:

定義されているコマンドの名前をBOX2に変更しました

2行目:

(setq)関数内にネストされた「getvar」関数を追加しました。これは、システム変数CMDECHOの現在の値を取得して保存します。

3行目:

(setvar)関数が追加され、システム変数CMDECHOの値が0(オフ)に設定されました。

4行目:

(prompt)関数を追加し、プログラムが何をするのかをユーザーに知らせます。 (これは常に必要なわけではなく、この例ではおそらく少し「やりすぎ」ですが、それがどのように機能するかを示したいと思います!)

5-9行目:

変更なし。

行10:

(setvar)関数を追加して、システム変数CMDECHOを0に変更する前の状態に戻しました。

行11:

引数なしの(princ)関数を追加しました。 (princ)関数は、渡された引数の値を返します。私たちの不正な使用は「何も」をそれに渡すことではないので、「何も」が返されません!これはプログラムの最後の行なので、一般に「クリーン出口」と呼ばれるものがあります。

12行目:

これは、1行目のdefun関数を開くための閉じ括弧です。

行ごとのディスカッションに自信がある場合:

  1. 「フォーマット」ツールを選択します
  2. 「lispの読み込み…」ツールを選択します。
  3. 「BricsCADに切り替える」ツールを選択します。

これらの3つのステップは、各「編集」の後に必ず実行する必要があり、今後は詳しく説明しません。

コマンドラインでBOX2と入力し、プログラムがもう少し「きれいに」実行されることを確認します。

BLADE LISPによるコーディング

だから、あなたはそれを持っています– BLADEエディタといくつかの丁寧なプログラミング技術への素晴らしい紹介。次の投稿では、より丁寧なプログラミング手法とエラートラップの概要について説明します