Lisp 프로그램을 실행한 후에, Undo 를 하면, 명령창에

 

영문 오토캐드

command: GROUP (Lisp Expression) (Lisp Expression) (Lisp Expression) (Lisp Expression)....

 

한글 오토캐드

command: GROUP (Lisp 표현식) (Lisp 표현식) (Lisp 표현식) (Lisp 표현식)....

 

이라고 나타나는 경우가 있습니다.

 

XiCAD도 이 것 때문에 거슬려서 없애고 싶었으나, 그 동안 원인을 전혀 모르다가.. 이제서야 알아 냈습니다.

 

 

원인은 Lisp 해당 함수 내부에 command 구문이 두 번이상 반복될 경우에 나타납니다.

The reason is that the command syntax is repeated twice or more inside the Lisp function.

 

즉, 내부에 (command ~~)  로 시작하는 구문이 두개 이상 있다면.. Undo 할 때, command 사용 숫자만큼

(Lisp 표현식) (Lisp 표현식) (Lisp 표현식) (Lisp 표현식) 이라고 나타납니다.

In other words, if there are two or more statements that start with (command ~~) inside ..

When Undo, It will be displayed for the number of commands used.

 

 

아래를 두가지를 실행한 후 Undo 를 해보면 알 수 있습니다.

 

;;;=========================================================================;
;;;When undo (Lisp Expression) is not displayed.
;;;izzarder.com
(defun c:xxx ( / acadObj doc modelSpace Pt0 Pt1 Pt2 Pt3 Pt4 Pt5) 
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))
    (setq modelSpace (vla-get-ModelSpace doc))  
    (setq Pt0 (vlax-3d-point 0 0 0)
          Pt1 (vlax-3d-point 2000 2000 0)
          Pt2 (vlax-3d-point 2500 2500 0)
          Pt3 (vlax-3d-point 3000 3000 0)
          Pt4 (vlax-3d-point 3500 3500 0)
          Pt5 (vlax-3d-point 4000 4000 0)
    )
    (vla-StartUndoMark doc)
    (vla-AddLine modelSpace Pt0 Pt1)
    (vla-AddLine modelSpace Pt2 Pt3)
    (vla-AddLine modelSpace Pt4 Pt5)
    (vla-EndUndoMark doc)
    (princ)
)
;;;=========================================================================;

 

 

 

;;;=========================================================================;
;;;When undo (Lisp Expression) is displayed. (twice)
;;;izzarder.com
(defun c:xxx ( / acadObj doc modelSpace Pt0 Pt1 Pt2 Pt3 Pt4 Pt5) 
    (setq acadObj (vlax-get-acad-object)) 
    (setq doc (vla-get-ActiveDocument acadObj)) 
    (setq modelSpace (vla-get-ModelSpace doc)) 
    (setq Pt0 '(0 0 0) 
          Pt1 '(2000 2000 0) 
          Pt2 '(2500 2500 0) 
          Pt3 '(3000 3000 0) 
          Pt4 '(3500 3500 0) 
          Pt5 '(4000 4000 0) 
    ) 
    (vla-StartUndoMark doc) 
    (command "_.LINE" Pt0 Pt1 "") 
    (command "_.LINE" Pt2 Pt3 "") 
    (command "_.LINE" Pt4 Pt5 "") 
    (vla-EndUndoMark doc)
    (princ)
)
;;;=========================================================================;

 

 

+ Recent posts