Efeezy 发表于 2022-7-5 17:35:24

DCL位置

我想知道我的DCL文件放在哪里才能让我的LISP工作。我正在尝试再次安装DDnumb。。。我把它放在C/Autocad支持文件夹中。我似乎每隔几年就会问这个问题。。。这是一个路径问题吗?任何帮助或意见都会很好。
 
加载错误消息:
 
命令:ddnumb
_.撤消当前设置:自动=打开,控制=全部,组合=是,图层=是
输入要撤消的操作数或[自动/控制/开始/结束/标记/返回]:
命令:
错误:退出/退出中止

Tharwat 发表于 2022-7-5 17:41:57

如果它是一个。dcl文件,因此有两个选项:
1-放置。dcl文件保存到AutoCAD Support文件夹中,并使用findfile功能查找该文件。
2-将其放在任何需要的地方,但需要将完整路径添加到lisp文件中才能找到该文件,否则findfile无法找到它。

Efeezy 发表于 2022-7-5 17:50:45

那么我们可以在这里链接Lisp和DCL吗?C: \用户\ ian。anderson\Desktop\LISP库,或者我甚至可以将其链接到我的USB驱动器。
 
我添加了我试图使用的lisp。如果您更新了lisp,您能告诉我需要更新的位置,以链接DCL文件以供将来参考吗?我已经遇到这个问题一两次了。。。
 
DDNUMB.LSP for release 15
;Auto numbers text strings.
;Written by: S. Restmeyer 3/01

;;;
;;;----------------------ERROR FUNCTION----------------------------
;;;
(DEFUN ERR (S)                                ;if an error (such as CTRL-C)
                                ;occurs while this command is active...
(if (not (member s '("console break" "Function cancelled")))
   (princ (strcat "\nError: " s))
)
(command "_.UNDO" "_E")                ;end any outstanding UNDO group
(setvar "cmdecho" cmd)                ;restore saved mode
(setq *error* olderr)
(princ)
)
;;;---------------------- MAIN PROGRAM ----------------------------
;;;
(defun C:DDNUMB (/ CMD dcl_id1 olderr)
(setq        olderr        *error*
*error*        err
)
(SETQ CMD (GETVAR "CMDECHO"))
(command "_.UNDO" "_G")
(setvar "cmdecho" 0)
(defun set_replace ()
   (cond
   ((= (get_tile "do_replace") "0")
      (set_tile "sort_type" "0")
      (mode_tile "sort_type" 1)
      (set_tile "start_no" " ")
      (mode_tile "start_no" 1)
      (set_tile "txt_inc" " ")
      (mode_tile "txt_inc" 1)
   )
   )
   (cond
   ((= (get_tile "do_replace") "1")
      (mode_tile "sort_type" 0)
      (mode_tile "start_no" 0)
      (mode_tile "txt_inc" 0)
      (if sort_type
   (set_tile "sort_type" sort_type)
   (set_tile "sort_type" "0")
   )
      (if txt_inc
   (set_tile "txt_inc" (rtos txt_inc 2 0))
   (set_tile "txt_inc" "1")
   )
      (if start_no
   (set_tile "start_no" (rtos start_no 2 0))
   (set_tile "start_no" "1")
   )
   )
   )
   )
(defun my_help ()
   (setq file_name (findfile "autonumb.pdf"))
   (startapp "acrobat.exe" (strcat "\"" file_name "\""))
   )
      (defun get_data ()
(setq suffix (get_tile "suffix"))
(setq prefix (get_tile "prefix"))
(setq start_no (atoi (get_tile "start_no")))
(setq txt_inc (atoi (get_tile "txt_inc")))
(setq sort_type (get_tile "sort_type"))
(setq do_replace (get_tile "do_replace"))
   )
;;;-------------------------------------------------------------------
;;;-----------THIS SECTION RETRIEVES USER INPUT INFORMATION------------
;;;
    (setq dcl_id1 (load_dialog "autonumb.dcl"))
   (if (not (new_dialog "ddstart" dcl_id1))
(exit)
   )
(setq sort_list '("Selection" "Top-Bottom" "Left-Right" "Bottom-Top" "Right-Left"))
        (start_list "sort_type")
(mapcar 'add_list sort_list)
        (end_list)
(if sort_type
   (set_tile "sort_type" sort_type)
   (set_tile "sort_type" "0")
   )
(if prefix
   (set_tile "prefix" prefix)
   )
(if suffix
   (set_tile "suffix" suffix)
   )
(if start_no
   (set_tile "start_no" (rtos start_no 2 0))
   (set_tile "start_no" "1")
   )
(if txt_inc
   (set_tile "txt_inc" (rtos txt_inc 2 0))
   (set_tile "txt_inc" "1")
   )
   (action_tile "do_replace" "(set_replace)")
   (action_tile "numb_hlp" "(my_help)")
   (action_tile "accept" "(setq start_ok T)(get_data)(done_dialog 1)")
   (action_tile "cancel" "(setq start_ok nil)(done_dialog 0)")
   (start_dialog)
   (unload_dialog dcl_id1)
;;;-------------------------------------------------------------------
;;;---------------THIS SECTION MODIFIES SELECTED TEXT-----------------
;;;
(defun get_txt (/ sset sset1 sset2 sset3 test num llen temp old)
   (setq sset (ssget '((0 . "TEXT"))))
   (setq num 0)
(if (= do_replace "1")
    (progn
   (cond
   ((= sort_type "0")
    (while (< num (sslength sset))
      (setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcat prefix (rtos start_no 2 0) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq start_no (+ start_no txt_inc))
      (setq num (+ num 1))
      )
      )
   ((= sort_type "1")
      (setq temp (caddr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (list temp))
      (setq num (+ num 1))
    (while (< num (sslength sset))
      (setq temp (caddr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (append sset1 (list temp)))
      (setq num (+ num 1))
      )
      (setq sset2 (list ""))
      (while (< (- (length sset2) 1) (sslength sset))
    (setq temp (apply 'max sset1))
    (setq sset2 (append sset2 (list temp)))
    (setq sset3 (list ""))
    (setq num (- (length sset1) 1))
   (while (> num -1)
(setq test (nth num sset1))
(if (not (member test sset2))
(setq sset3 (append sset3 (list test)))
)
(setq num (- num 1))
)
      (setq sset1 (cdr sset3))
   )
      (setq sset2 (cdr sset2))
      (setq llen 0)
      (while (< llen (length sset2))
(setq test (nth llen sset2))
(setq num 0)
(while (not (= (caddr (assoc 10 (entget (ssname sset num)))) test))
   (setq num (+ num 1))
   )
(setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcat prefix (rtos start_no 2 0) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq start_no (+ start_no txt_inc))
      (setq llen (+ llen 1))
      )
      )
   ((= sort_type "2")
      (setq temp (cadr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (list temp))
      (setq num (+ num 1))
    (while (< num (sslength sset))
      (setq temp (cadr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (append sset1 (list temp)))
      (setq num (+ num 1))
      )
      (setq sset2 (list ""))
      (while (< (- (length sset2) 1) (sslength sset))
    (setq temp (apply 'max sset1))
    (setq sset2 (append sset2 (list temp)))
    (setq sset3 (list ""))
    (setq num (- (length sset1) 1))
   (while (> num -1)
(setq test (nth num sset1))
(if (not (member test sset2))
(setq sset3 (append sset3 (list test)))
)
(setq num (- num 1))
)
      (setq sset1 (cdr sset3))
   )
      (setq sset2 (cdr sset2))
   (setq llen (- (length sset2) 1))
      (while (> llen -1)
(setq test (nth llen sset2))
(setq num 0)
(while (not (= (cadr (assoc 10 (entget (ssname sset num)))) test))
   (setq num (+ num 1))
   )
(setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcat prefix (rtos start_no 2 0) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq start_no (+ start_no txt_inc))
      (setq llen (- llen 1))
      )
      )
   ((= sort_type "3")
      (setq temp (caddr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (list temp))
      (setq num (+ num 1))
    (while (< num (sslength sset))
      (setq temp (caddr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (append sset1 (list temp)))
      (setq num (+ num 1))
      )
      (setq sset2 (list ""))
      (while (< (- (length sset2) 1) (sslength sset))
    (setq temp (apply 'max sset1))
    (setq sset2 (append sset2 (list temp)))
    (setq sset3 (list ""))
    (setq num (- (length sset1) 1))
   (while (> num -1)
(setq test (nth num sset1))
(if (not (member test sset2))
(setq sset3 (append sset3 (list test)))
)
(setq num (- num 1))
)
      (setq sset1 (cdr sset3))
   )
      (setq sset2 (cdr sset2))
      (setq llen (- (length sset2) 1))
      (while (> llen -1)
(setq test (nth llen sset2))
(setq num 0)
(while (not (= (caddr (assoc 10 (entget (ssname sset num)))) test))
   (setq num (+ num 1))
   )
(setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcat prefix (rtos start_no 2 0) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq start_no (+ start_no txt_inc))
      (setq llen (- llen 1))
      )
      )
   ((= sort_type "4")
      (setq temp (cadr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (list temp))
      (setq num (+ num 1))
    (while (< num (sslength sset))
      (setq temp (cadr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (append sset1 (list temp)))
      (setq num (+ num 1))
      )
      (setq sset2 (list ""))
      (while (< (- (length sset2) 1) (sslength sset))
    (setq temp (apply 'max sset1))
    (setq sset2 (append sset2 (list temp)))
    (setq sset3 (list ""))
    (setq num (- (length sset1) 1))
   (while (> num -1)
(setq test (nth num sset1))
(if (not (member test sset2))
(setq sset3 (append sset3 (list test)))
)
(setq num (- num 1))
)
      (setq sset1 (cdr sset3))
   )
      (setq sset2 (cdr sset2))
      (setq llen 0)
      (while (< llen (length sset2))
(setq test (nth llen sset2))
(setq num 0)
(while (not (= (cadr (assoc 10 (entget (ssname sset num)))) test))
   (setq num (+ num 1))
   )
(setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcat prefix (rtos start_no 2 0) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq start_no (+ start_no txt_inc))
      (setq llen (+ llen 1))
      )
      )
   )
   )
    (progn
      (setq start_no nil)
      (setq txt_inc nil)
   (while (< num (sslength sset))
      (setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcatprefix (cdr old) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq num (+ num 1))
      )
      )
    )
   )
(if start_ok
   (get_txt)
)
(setq *error* olderr)
(setvar "cmdecho" cmd)
   )

Efeezy 发表于 2022-7-5 17:56:49

这里是DCL文件不确定是否需要更新?非常感谢。
 
//----------------------------------------------------------------------------
//
// Corresponding dialogue for DDNUMB.LSP
//
//----------------------------------------------------------------------------

//dcl_settings : default_dcl_settings { audit_level = 3; }


ddstart : dialog {
    label = "Auto Number";
initial_focus = "prefix";
        : row {
        : boxed_column {
                fixed_width = true;
                label = "&Prefix";
                        : edit_box {
                                key = "prefix";
                                mnemonic = "P";
                                fixed_width = true;
                                 }
                        }
        : boxed_column {
                fixed_width = true;
                label = "Start &No";
                        : edit_box {
                                key = "start_no";
                                mnemonic = "N";
                                fixed_width = true;
                                 }
                        }
        : boxed_column {
                fixed_width = true;
                label = "&Suffix";
                        : edit_box {
                                key = "suffix";
                                mnemonic = "S";
                                fixed_width = true;
                                   }
                        }
                }
: row {
        : boxed_column {
                fixed_width = true;
                label = "&Increment";
                        : edit_box {
                                key = "txt_inc";
                                mnemonic = "I";
                                fixed_width = true;
                                   }
                        }
        : boxed_column {
                fixed_width = true;
                label = "Sort &By";
                        : popup_list {
                                key = "sort_type";
                                width = 13;
                                fixed_width = true;
                                }
                        }
        : toggle {
                label = "Replace";
                key = "do_replace";
                value = 1;
                }
        }
        spacer_1;
        : row {
ok_cancel;
                : button {
                        key = "numb_hlp";
                        label = "Help";
                        mnemonic = "H";
                        }
                }
        }

Tharwat 发表于 2022-7-5 18:03:19

只需将DCL代码保存为一个名称:utonum。dcl并将其定位到AutoCAD support文件夹中,然后进行尝试。
但是如果你想把它放到另一个位置,只需要得到该位置的完整路径,并确保在完整路径名中有两个反斜杠或一个正斜杠。

Efeezy 发表于 2022-7-5 18:09:05

我需要支持路径的管理员权限,我不知道如何将Lisp更改到新位置。

Tharwat 发表于 2022-7-5 18:11:53

如果您想按照前面提供的路径将其定位到特定文件夹中,则必须如下所示:
C:\\Users\\ian.anderson\\Desktop\\LISP LIBRARY\\autonumb.dcl
或者:
C:/Users/ian.anderson/Desktop/LISP LIBRARY/autonumb.dcl

Efeezy 发表于 2022-7-5 18:21:36

因此,如果我使用C:\\Users\\ian。anderson\\Desktop\\LISP LIBRARY\\autonumb。dcl
 
我应该在lisp中的什么位置插入它?我不知道怎么写这些。我所能做的就是做一个热键。

Tharwat 发表于 2022-7-5 18:25:17

在以下将对话框加载到lisp文件的路径中。

(setq dcl_id1 (load_dialog "C:\\Users\\ian.anderson\\Desktop\\LISP LIBRARY\\autonumb.dcl"))

 
注意:我修改了我的上一篇文章,因为我错误地错过了dcl文件的第一个字符,即“a”。

Efeezy 发表于 2022-7-5 18:29:58

哇,谢谢你。你教会了我一些新的东西。让我度过了一整天:)
页: [1] 2
查看完整版本: DCL位置