编辑LISP以接受argu
我有一个关于编辑LISP例程以允许参数的快速问题。在当前写入时,它允许用户选择外部参照,然后以只读方式打开。我想重写它,以便可以将其添加到CUI中,这样当选择外部参照时,然后右键单击可以选择以只读方式打开它。我应该使用什么函数代替entsel,以便参数接受当前选定的外部参照?我目前拥有:(setq sel (entsel "\nSelect an Xref: ")) 读一读这个 谢谢Tharwat!如果我理解正确,我需要像这样添加参数(defun c:xopenreadonly (x / other variables) ...rest of code )。我怎样才能让恩塞尔接受这个论点? 去掉前缀c:然后这样称呼它:
(if (setq sel (entsel "\nSelect an Xref: "))
(xopenreadonly sel)
)
c:代表命令,冒号后面的字符代表命令名,因此在您的情况下,您需要一个子函数,而不是独立的程序。 我想你需要这样的东西:
试试这个[未经测试的],然后告诉我。
(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)
)
这非常有效,我只需要做一个小调整。非常感谢你的帮助!
(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
)
)
)
)
杰出的不客气。
页:
[1]