0

非常に基本的な AutoLisp インターフェイスを作成しようとしています。私はまったくの初心者なので、ゼロからのコーディングに失敗した後、DCL をきちんと勉強するようになりました。私はこのチュートリアルに従いました:

http://www.afralisp.net/dialog-control-language/tutorials/dialog-boxes-and-autolisp-part-1.php

そして、同じエラーが発生しました。AutoCAD は基本的に、あたかも dcl ファイルが存在しないかのように、関数の実行を終了します。

アドレスを丸ごと打ち込んでみましたが、同じフォルダ内の画像にHTMLをリンクするような感じで動作するはずです。

以下に私のコードがあります:

DCL:

samp1 : dialog {
    label = "Structural Holes";

    ok_cancel;
}

舌足らずの発音:

(defun C:samp1()
  (setq dcl_id (load_dialog "samp1.dcl"))
  (if (not (new_dialog "samp1" dcl_id))
    (exit)
    )

  (action_tile
       "cancel"
       "(done_dialog)(setq userclick nil)"
       )
  (action_tile
    "accept"
    "(done_dialog)(setq userclick T))"
    )

  (start_dialog)

  (unload_dialog dcl_id)

  (princ)

 )

(princ)

これを手伝ってくれる人に感謝します。私はかなり絶望的になり始めており、これは私の最初で唯一の autolisp プロジェクトなので、まったく経験がありません...

LE: dcl ファイルと lisp ファイルは両方とも同じフォルダーにあり、他のサブフォルダーやその他のものではないことに注意してください。

4

2 に答える 2

4
  1. ** .DCLファイルが見つかりませんでした
  2. エラー:終了/終了中止
  3. エラー:ロードに失敗しました

    これは通常、autolispファイルまたはDCLファイルが見つからなかったことを意味します。この問題を解決するには、AutoLispファイルとDCLファイルをAutoCADの検索パス内に配置してください。具体的には、「サポートファイルと検索パス」の一部であるディレクトリに配置します。AutoCADサポートファイルと検索パスリストを見つけるには、次の手順を実行します。

  4. AutoCADで、[ツール]ドロップダウンメニューをクリックします。

  5. OPTIONSメニュー項目に移動します。
  6. [ファイル]タブをクリックします。
  7. サポートファイルと検索パスの前にあるプラス記号+をクリックします。

    これは検索パスの場所です。そこにリストされているディレクトリは、ロードしようとしているautolispプログラムを上から下に順番に検索されます。また、ブロックやDCLファイルの検索にも使用されます。

    autolispファイルとDCLファイルを保存するディレクトリを追加するか、autolispファイルとDCLファイルをここにリストされているディレクトリの1つに移動します。これにより、上記のエラーが終了します。

私はここで偶然この情報に出くわしました:

http://www.jefferypsanders.com/autolisp_nodcl.html

JefferyPSandersに感謝します......

于 2012-05-27T21:22:44.853 に答える
3

その価値のために、「既知のディレクトリ」(たとえば、AutoCAD が存在するディレクトリなど) にその場でダイアログを作成することもできます。以下にそれを示します。

(defun _make-getstring-dialog-on-the-fly ( / fn f dcl dcl_id userclick str) 
  (setq fn (strcat
             (vl-filename-directory
               (findfile "acad.exe")) "\\$vld$.dcl")
        f (open fn "w")
        dcl
        '(
          "stringdlg : dialog {"
          "label = \"Charater Array\";"
          ": edit_box {"
          "label = \">>:\";"
          "edit_width = 20;"
          "key = \"stringdlg\";"
          "is_default = true;"
          "}"
          ": row {"
          "alignment   = centered;"
          "fixed_width = true;"
          " : button {"
          " label      = \"OK\";"
          " key        = \"dcl_accept\";"
          " width      = 10;"
          " allow_accept = true;"
          " }"
          "}"
          "}"
          )
        )
  (mapcar 
    (function
      (lambda ( x )
        (write-line x f)
        (write-line "\n" f)))
    dcl)
  (close f)
  (setq dcl_id (load_dialog fn))
  (new_dialog "stringdlg" dcl_id)
  (action_tile "stringdlg" "(setq str $value)(done_dialog)")
  (setq userclick (start_dialog))
  (unload_dialog dcl_id)
  str
  )
于 2012-06-12T13:03:12.933 に答える