Draworder错误
我使用draworder如下:; ss不是空的!
(sssetfirst ss)
(命令“_.draworder”ss“_F”)
它工作正常,做它应该做的事情。唯一的问题是,在我执行它之后,我收到了以下消息:
未知命令“F”。按F1键获取帮助。
它似乎无法识别“F”最终标记
我在纸上(可能这就是问题所在?!),并且对象也在图纸空间中
谢谢 我在上面的代码中看不到任何错误,但您可能需要使用(sssetfirst nil ss)。
如果您仍然有问题,请考虑使用VL更改提取顺序。 我写这个Lisp程序是为了工作。我个人一直在使用它。你可以试着重新制作它来满足你的需要,或者只是按原样使用。
;|************************************************************************
**************************************************************************
********************A different approach at DRAWORDER*********************
******************************By: ZRABOIN*********************************
**************************************************************************
************************************************************************|;
(defun c:ndo( / cord goto adoc obj obj1 obj2 ent)
(vl-load-com)
(setq cord (vla-addobject
(vla-GetExtensionDictionary
(vla-get-modelspace
(setq adoc (vla-get-activedocument
(vlax-get-acad-object))))) "ACAD_SORTENTS" "AcDbSortentsTable"))
(initget "1 2 3 4 5 6")
(setq goto (cond ((getkword "\nWould you like to (1)-Bringtofront (2)-Sendtoback (3)-Sendbehind (4)-Bringabove (5)-SwapObjects (6)-Special ?: <bringtoFront> ")) ("1")))
(cond
((and (= goto "1")
(setq ent (mkar)))
(vla-Movetotop cord ent))
((and (= goto "2")
(setq ent (mkar)))
(vla-Movetobottom cord ent))
((and (= goto "3")
(setq ent (mkar)))
(setq obj (entsel "\nSelect Reference Object: "))
(setq obj (vlax-ename->vla-object (car obj)))
(vla-Movebelow cord ent obj))
((and (= goto "4")
(setq ent (mkar)))
(setq obj (entsel "\nSelect Reference Object: "))
(setq obj (vlax-ename->vla-object (car obj)))
(vla-Moveabove cord ent obj))
((and (= goto "5")
(setq obj1 (vlax-ename->vla-object(car(entsel))))
(setq obj2 (vlax-ename->vla-object(car(entsel)))))
(vla-SwapOrder cord obj1 obj2))
((and (= goto "6")
(setq obj (mksar)))
(vla-setRelativeDrawOrder cord obj)
)
)
(vla-regen adoc acActiveViewport)
)
;******************************Make Array**********************************************************************
(defun mkar ( / ss arobj)
(if (setq ss (ssop))
(setq ss (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
arobj (vlax-safearray-fill (vlax-make-safearray vlax-vbobject (cons 0 (- (length ss) 1))) ss)))
)
;******************************Make Array Multiple Selections**************************************************
(defun mksar ( / ss s1 arobj)
(while (setq s1 (ssop))
(setq ss (append (vl-remove-if '(lambda (z) (member z ss)) (vl-remove-if 'listp (mapcar 'cadr (ssnamex s1)))) ss)))
(setq arobj (vlax-safearray-fill (vlax-make-safearray vlax-vbobject (cons 0 (- (length ss) 1))) (mapcar 'vlax-ename->vla-object ss)))
)
;******************************Selection Set Options************************************************************
(defun ssop ( / ssmeth s1 ss)
(initget "1 2 3 4")
(setq ssmeth (cond ((getkword "\nSelect by: (1)-Specified Objects (2)-Layer (3)-Blockname (4)-Similar - <Specified Objects> : ")) ("1")))
(setq curt (getvar "ctab"))
(cond ((= ssmeth "1")
(setq ss(ssget)))
((= ssmeth "2")
(if (setq ss (entsel "\nSelect an object on the layer you want: "))
(ssget "X" (list (cons 410 curt) (cons 8 (cdr (assoc 8 (entget (car ss)))))))))
((= ssmeth "3")
(if (setq ss (entsel "\nSelect a block: "))
(if (= (cdadr (setq ss (entget (car ss)))) "INSERT")
(setq ss (ssget "X" (list (cons 410 curt) (cons 2 (cdr (assoc 2 ss)))))))
))
((= ssmeth "4")
(if (setq ss (entsel "\nSelect an object: "))
(progn
(if (= (cdadr (setq ss (entget (car ss)))) "INSERT")
(setq s1 (cons 2 (cdr (assoc 2 ss))))
(setq s1 (cons 0 (cdr (assoc 0 ss)))))
(setq ss (ssget "X" (list s1 (cons 410 curt) (cons 8 (cdr (assoc 8 ss)))))))
)))
)
页:
[1]