コマンド プロンプトでのユーザ対話処理を定義し、値を計算する

庭園の歩道を描くには、歩道の境界とタイルを定義するための情報をユーザが提供する必要があります。庭園の歩道を描くための情報は、3 つの関数を使用して要求します。

Gardenpath 関数のユーザとの対話処理は、3 つのセカンダリ関数で定義されています。これらのセカンダリ関数は、AutoLISP プログラミング言語の一部である getxxx 関数を 1 つまたは複数使用して、庭園の歩道の寸法と配置だけでなく、庭園の歩道内に配置するタイルも定義します。ユーザからの入力を取得するために使用するセカンダリ関数は、次のとおりです。

庭園の歩道の入力関数の LSP ファイルを作成する

次に、Gardenpath 関数のユーザとの対話処理関数を格納するために使用する LSP ファイルの作成方法を説明します。

Windows
  1. 次のいずれかの操作を行います。
    • (Windows 7) [スタート]ボタン [すべてのプログラム] [アクセサリ] [メモ帳]をクリックします。
    • (Windows 8) [スタート]画面で、note と入力し、[メモ帳]をクリックします。
  2. メモ帳で、[ファイル]メニュー [名前を付けて保存]を選択します。
  3. [名前を付けて保存]ダイアログ ボックスで、[ドキュメント] (または[マイ ドキュメント])フォルダに移動し、GardenPath フォルダをダブルクリックしてそれを現在のフォルダにします。
  4. [ファイル名]テキスト ボックスに、gp-io.lsp と入力します。
  5. [ファイルの種類]ドロップダウン リストをクリックし、[すべてのファイル(*.*)]を選択します。
  6. [文字コード]ドロップダウン リストをクリックし、[ANSI]を選択します。[保存]をクリックします。

    LSP ファイルは閉じません。

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

    LSP ファイルは閉じません。

歩道の境界の入力を取得する

次の手順では、gp:getPathInput という名前の関数を定義します。この関数は、2 点と距離を指定するようユーザに求めます。ユーザに求める 1 番目と 2 番目の値は、庭園の歩道の中心と長さを定義するために使用する点の値です。ユーザに求める 3 番目の値は、庭園の歩道の 1/2 幅です。これらの 3 つの値は、庭園の歩道の全体の幅と角度を計算するためにも使用されます。

gp:getPathInput 関数の戻り値は、5 つのドット ペアを含むリストです。

DXF コード 説明

10

庭園の歩道の始点を表す 3 つの実数のリスト。

11

庭園の歩道の終点を表す 3 つの実数のリスト。

40

庭園の歩道の幅を示す実数。

41

庭園の歩道の長さを表す実数。

50

庭園の歩道の角度を示す実数。

  1. [メモ帳]または TextEdit のエディタ領域に、次のように入力します。
    (defun gp:getPathInput ( / StartPt EndPt HalfWidth)
      ; Prompt for the start point of the path
      (if (setq StartPt (getpoint "\nSpecify start point of path: "))
    
        ; If a valid start point was prompted, prompt for an endpoint
        (if	(setq EndPt (getpoint StartPt "\nSpecify endpoint of path: "))
    
          ; If a valid enpoint was provided, prompt for the paths half width
          (if (setq HalfWidth (getdist EndPt "\nSpecify half width of path: "))
    
            ; Return a list of the values that define the path based on the input provided
            (list
              (cons 10 StartPt)                   ;| Start point                   |;
              (cons 11 EndPt)                     ;| Endpoint                      |;
              (cons 40 (* HalfWidth 2.0))         ;| Calculated full width of path |;
              (cons 50 (angle StartPt EndPt))     ;| Angle of path                 |;
              (cons 41 (distance StartPt EndPt))  ;| Length of the path            |;
            )
          )
        )
      )
    )
  2. LSP ファイルを保存します。

タイルの入力を取得する

次の手順では、gp:getTileInput という名前の関数を定義します。この関数は、2 つの距離とキーワードを指定するようユーザに求めます。距離の値は、庭園の歩道に配置するタイルの半径とタイルの間隔を定義するために使用します。キーワードは、描画するタイルの形状(円または六角形)を指定するために使用します。

gp:getTileInput 関数の戻り値は、3 つのドット ペアを含むリストです。

DXF コード 説明

42

庭園の歩道のタイルの半径を示す実数。

43

庭園の歩道のタイルの間隔を示す実数。

5

庭園の歩道に描画するタイルの形状を示す文字列。有効な値: Circular および Hexagon

  1. [メモ帳]または TextEdit のエディタ領域で、gp:getPathInput 関数の最後の閉じ括弧の直後で[Enter]を 2 回押します。次のように入力します。
    (defun gp:getTileInput ( / tileSize tileOffset tileShape)
      ; Prompt for the radius of the tiles
      (if (setq tileSize (getdist "\nSpecify radius of tiles: "))
    
        ; If a valid start point was prompted, prompt for an endpoint
        (if	(setq tileOffset (getdist "\nSpecify spacing between tiles: "))
          (progn
            (initget "Circular Hexagonal")
            (if (setq tileShape (getkword "\nSpecify tile shape [Circular/Hexagonal]: "))
              ; Return a list of the values that define the tile size and offset
              ; based on the input provided
              (list
                (cons 42 tileSize)                ;| Radius of the tile            |;
                (cons 43 tileOffset)              ;| Offset distance between tiles |;
                (cons 5 tileShape)                ;| Shape of the tile             |;
              )
            )
          )
        )
      )
    )
  2. LSP ファイルを保存します。

歩道の境界のスタイルを取得する

次の手順では、gp:getBorderStyleInput という名前の関数を定義します。この関数は、ユーザにキーワードを求めます。指定されたキーワードは、庭園の歩道の境界を描画するポリラインのタイプ(旧スタイルのポリラインまたはライトウェイト ポリライン)をコントロールします。

gp:getBorderStyleInput 関数の戻り値は、1 つのドット ペアを含むリストです。

DXF コード 説明

4

庭園の歩道の境界を描くために使用するポリ ラインのタイプを示す文字列。有効な値: Pline および Light

  1. [メモ帳]または TextEdit のエディタ領域で、gp:getTileInput 関数の最後の閉じ括弧の直後で[Enter]を 2 回押します。次のように入力します。
    (defun gp:getBorderStyleInput ( / borderStyle)
      ; Prompt for the border style keyword
      (initget "Pline Light")
      (if (setq borderStyle (getkword "\nSpecify polyline style of path boundary [Pline/Light]: "))
    
        ; Return a list containing the keyword the user specified
        (list
          (cons 4 borderStyle)                    ;| Polyline style for path       |;
        )
      )
    )
  2. LSP ファイルを保存します。