ユーティリティ関数を書く

プログラムを書くときに、他のプログラムでも使用できる小さな論理サブルーチンを書くと便利です。Gardenpath マクロは、一連の一次関数と二次(ユーティリティ)関数、そしてサブルーチンを使用して定義されます。

図面に追加するオブジェクトの多くでは、角度値の入力または操作が必要です。図面内の角度はラジアン単位で保存されるため、AutoCAD COM ライブラリ内のメソッドではラジアン単位の角度値が必要です。ただし、ほとんどのユーザはラジアン単位ではなく度単位で考えるため、ユーザには度数を求めるプロンプトを表示し、次にコード内でラジアンへの変換を処理することが重要です。

ユーティリティ ライブラリを作成する

ここでは、Gardenpath 関数によって使用されるユーティリティ関数を格納するために使用される LSP ファイルを作成する方法を説明します。

Windows
  1. 次のいずれかの操作を行います。
    • (Windows 7) [スタート]ボタン [すべてのプログラム] [アクセサリ] [メモ帳]をクリックします。
    • (Windows 8) [スタート]画面で、note と入力し、[メモ帳]をクリックします。
  2. メモ帳で、[ファイル]メニュー [名前を付けて保存]を選択します。
  3. [名前を付けて保存]ダイアログ ボックスで、[ドキュメント] (または[マイ ドキュメント])フォルダを参照します。ファイル上やフォルダ上ではなく、空白領域で右クリックして、[新規作成]、[フォルダー]の順に選択します。新しいフォルダに GardenPath という名前を入力し、[Enter]を押します。新しいフォルダをダブルクリックして、これが現在のフォルダとなるようにします。
  4. [ファイル名]テキスト ボックスに、utils.lsp と入力します。
  5. [ファイルの種類]ドロップダウン リストをクリックし、[すべてのファイル(*.*)]を選択します。
  6. [文字コード]ドロップダウン リストをクリックし、[ANSI]を選択します。[保存]をクリックします。

    LSP ファイルは閉じないでください。

Mac OS
  1. [Finder]で、Mac OS のメニュー バーから[移動]メニュー [アプリケーション]を選択します。
  2. [アプリケーション]ウィンドウで、[テキストエディット]をダブルクリックします。
  3. テキストエディットで、Mac OS のメニュー バーから[テキストエディット]メニュー [環境設定]を選択します。
  4. [環境設定]ダイアログ ボックスで、次の操作を行います。
    • [標準テキスト]をオンにします。
    • [スマート引用符]オプションをオフにします。
    • [スマート ダッシュ記号]オプションをオフにします。
    • [スマート リンク]オプションをオフにします。
    • [閉じる]ボタンをクリックします。
  5. Mac OS のメニュー バーから[ファイル]メニュー [保存]を選択します。
  6. [名称未設定]ダイアログ ボックスで、[書類]フォルダを参照し、[新規フォルダ]をクリックします。[新規フォルダ]ダイアログ ボックスで、GardenPath と入力し、[作成]をクリックします。新しいフォルダを選択して、これが現在のフォルダとなるようにします。
  7. [別名で保存]テキスト ボックスに、utils.lsp と入力します。[保存]をクリックします。
  8. ファイル拡張子 .lsp を使用するように求めるプロンプトが表示されたら、[.LSP を使用]をクリックします。

    LSP ファイルは閉じないでください。

度をラジアンに変換する

次の計算式を使用して、度をラジアンに変換します。

(numberOfDegrees / 180) * π

次の手順では、十進法度数単位の角度計測値を受け入れ、ラジアン単位で返す Degrees->Radians という名前の関数を定義します。

  1. メモ帳またはテキストエディットのエディタ領域に、次のように入力します。
    ; Converts an angular measurement in degrees to radians
    ; Usage: (Degrees->Radians 90)
    (defun Degrees->Radians (numberOfDegrees)
      (* pi (/ numberOfDegrees 180.0))
    )
  2. LSP ファイルを保存します。

3D 点を 2D 点に変換する

次の手順では、リストを受け入れ、関数に渡されたリストの最初の 2 つの要素のみを含む新しいリストを返す 3dPoint->2dPoint という名前の関数を定義します。

  1. メモ帳またはテキスト エディットのエディタ領域で、Degrees->Radians 関数の最後の右括弧の後ろで、[Enter]を 2 回押します。その後、次のように入力します。
    ; Returns the first two elements of a list
    ; Usage: (3dPoint->2dPoint '(0 5 0))
    (defun 3dPoint->2dPoint (3dpt)
      (list (float (car 3dpt)) (float (cadr 3dpt)))
    )
  2. LSP ファイルを保存します。