marbile 发表于 2022-7-6 12:53:48

Draworder错误

我使用draworder如下:
 
; ss不是空的!
(sssetfirst ss)
(命令“_.draworder”ss“_F”)
 
它工作正常,做它应该做的事情。唯一的问题是,在我执行它之后,我收到了以下消息:
 
未知命令“F”。按F1键获取帮助。
 
它似乎无法识别“F”最终标记
 
我在纸上(可能这就是问题所在?!),并且对象也在图纸空间中
 
谢谢

Lee Mac 发表于 2022-7-6 13:45:51

我在上面的代码中看不到任何错误,但您可能需要使用(sssetfirst nil ss)。
 
如果您仍然有问题,请考虑使用VL更改提取顺序。

Commandobill 发表于 2022-7-6 13:54:45

我写这个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]
查看完整版本: Draworder错误