broncos15 发表于 2022-7-5 18:12:15

编辑LISP以接受argu

我有一个关于编辑LISP例程以允许参数的快速问题。在当前写入时,它允许用户选择外部参照,然后以只读方式打开。我想重写它,以便可以将其添加到CUI中,这样当选择外部参照时,然后右键单击可以选择以只读方式打开它。我应该使用什么函数代替entsel,以便参数接受当前选定的外部参照?我目前拥有:
(setq sel (entsel "\nSelect an Xref: "))

Tharwat 发表于 2022-7-5 18:29:00

读一读这个

broncos15 发表于 2022-7-5 18:34:05

谢谢Tharwat!如果我理解正确,我需要像这样添加参数(defun c:xopenreadonly (x / other variables) ...rest of code )。我怎样才能让恩塞尔接受这个论点?

Tharwat 发表于 2022-7-5 18:40:09

去掉前缀c:然后这样称呼它:
 

(if (setq sel (entsel "\nSelect an Xref: "))
(xopenreadonly sel)
)

 
c:代表命令,冒号后面的字符代表命令名,因此在您的情况下,您需要一个子函数,而不是独立的程序。

Tharwat 发表于 2022-7-5 18:56:15

我想你需要这样的东西:
 
试试这个[未经测试的],然后告诉我。
 

(defun c:xopenreadonly2 (/ sel)
(if (setq sel (ssget "_I" '((0 . "INSERT"))))
   (xopen (ssname sel 0))
   (if (and (setq sel (car (entsel "\nSelect an Xref: ")))
            (eq (cdr (assoc 0 (entget sel))) "INSERT")
       )
   (xopen sel)
   )
)
(defun xopen (sel / blk path)
   (if (and (setq blk (vlax-ename->vla-object sel))
            (vlax-property-available-p blk 'Path)
            (setq path (vla-get-path blk))
            (setq path (findfile path))
       )
   (vla-activate
       (vla-open (vla-get-documents (vlax-get-acad-object))
               (strcat "\"" path "\"")
               :vlax-true
       )
   )
   )
)
(princ)
)

broncos15 发表于 2022-7-5 19:05:06

这非常有效,我只需要做一个小调整。非常感谢你的帮助!
(defun c:xopenreadonly2 (/ sel)
(if (setq sel (ssget "_I" '((0 . "INSERT"))))
   (xopen (ssname sel 0))
   (if (and (setq sel (car (entsel "\nSelect an Xref: ")))
            (eq (cdr (assoc 0 (entget sel))) "INSERT")
       )
   (xopen sel)
   )
)
(princ)
)
(defun xopen (sel / blk path)
   (if (and (setq blk (vlax-ename->vla-object sel))
            (vlax-property-available-p blk 'Path)
            (setq path (vla-get-path blk))
            (setq path (findfile path))
       )
   (vla-activate
       (vla-open (vla-get-documents (vlax-get-acad-object))
               (strcat "\"" path "\"")
               :vlax-true
       )
   )
   )
)

Tharwat 发表于 2022-7-5 19:19:42

 
杰出的不客气。
页: [1]
查看完整版本: 编辑LISP以接受argu