你好,塔瓦
谢谢,现在我知道我错了。。。我只是想问你,你是这样在控制台中检查它们的吗
- [color=#8b4513]; Start-End-UndoMark Testing:[/color]
- [color=#8b4513]; pick a series of entities, to draw for each one its boundingbox[/color]
- [color=#8b4513]; upon undoing [b][color=BLACK]([/color][/b]ctrl+Z[b][color=BLACK])[/color][/b], the Mark type [color=#2f4f4f]"A"[/color] should undo all the created BoundingBoxes[/color]
- [color=#8b4513]; upon undoing [b][color=BLACK]([/color][/b]ctrl+Z[b][color=BLACK])[/color][/b], the Mark type [color=#2f4f4f]"B"[/color] should undo one by one, every created BoundingBox[/color]
- [b][color=BLACK]([/color][/b]defun C:test [b][color=FUCHSIA]([/color][/b] / AcDocForA AcDocForB ent vla-obj ll ur p1 p2 p3 p4 [b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]vl-load-com[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setvar 'errno 0[b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]or
- [b][color=NAVY]([/color][/b]setq AcDocForA [b][color=MAROON]([/color][/b]vla-get-ActiveDocument [b][color=GREEN]([/color][/b]vlax-get-acad-object[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [color=#8b4513]; put semicolon here[/color]
- [b][color=NAVY]([/color][/b]setq AcDocForB [b][color=MAROON]([/color][/b]vla-get-ActiveDocument [b][color=GREEN]([/color][/b]vlax-get-acad-object[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [color=#8b4513]; or put semicolon here[/color]
- [b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]if AcDocForA [b][color=NAVY]([/color][/b]vla-StartUndoMark AcDocForA[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b][color=#8b4513]; Mark type: [color=#2f4f4f]"A"[/color][/color]
- [b][color=FUCHSIA]([/color][/b]while T
- [b][color=NAVY]([/color][/b]while
- [b][color=MAROON]([/color][/b]not
- [b][color=GREEN]([/color][/b]and
- [b][color=BLUE]([/color][/b]setq ent [b][color=RED]([/color][/b]car [b][color=PURPLE]([/color][/b]entsel [color=#2f4f4f]"\Pick an entity to draw its BBox: "[/color][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
- [b][color=BLUE]([/color][/b]setq vla-obj [b][color=RED]([/color][/b]vlax-ename->vla-object ent[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
- [b][color=GREEN])[/color][/b]
- [b][color=MAROON])[/color][/b]
- [b][color=MAROON]([/color][/b]if [b][color=GREEN]([/color][/b]or [b][color=BLUE]([/color][/b]member [b][color=RED]([/color][/b]getvar 'errno[b][color=RED])[/color][/b] '[b][color=RED]([/color][/b]7 52[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]null ent[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]princ [color=#2f4f4f]"\nYou missed, try again!"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
- [b][color=NAVY])[/color][/b][color=#8b4513]; while[/color]
-
- [b][color=NAVY]([/color][/b]if AcDocForB [b][color=MAROON]([/color][/b]vla-StartUndoMark AcDocForB[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][color=#8b4513]; Mark type: [color=#2f4f4f]"B"[/color][/color]
-
- [b][color=NAVY]([/color][/b]vla-GetBoundingBox vla-obj 'll 'ur[b][color=NAVY])[/color][/b]
- [b][color=NAVY]([/color][/b]setq
- p1 [b][color=MAROON]([/color][/b]vlax-safearray->list ll[b][color=MAROON])[/color][/b]
- p2 [b][color=MAROON]([/color][/b]vlax-safearray->list ur[b][color=MAROON])[/color][/b]
- p3 [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]car p2[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]cadr p1[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [color=#8b4513]; lr[/color]
- p4 [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]car p1[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]cadr p2[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [color=#8b4513]; ul[/color]
- [b][color=NAVY])[/color][/b]
- [b][color=NAVY]([/color][/b]LWPoly-Red [b][color=MAROON]([/color][/b]list p1 p3 p2 p4[b][color=MAROON])[/color][/b] 1[b][color=NAVY])[/color][/b]
-
- [b][color=NAVY]([/color][/b]if AcDocForB [b][color=MAROON]([/color][/b]vla-EndUndoMark AcDocForB[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][color=#8b4513]; Mark type: [color=#2f4f4f]"B"[/color][/color]
-
- [b][color=FUCHSIA])[/color][/b][color=#8b4513]; while T[/color]
- [b][color=FUCHSIA]([/color][/b]if AcDocForA [b][color=NAVY]([/color][/b]vla-EndUndoMark AcDocForA[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b][color=#8b4513]; Mark type: [color=#2f4f4f]"A"[/color][/color]
- [b][color=FUCHSIA]([/color][/b]princ[b][color=FUCHSIA])[/color][/b]
- [b][color=BLACK])[/color][/b]
- [b][color=BLACK]([/color][/b]defun LWPoly-Red [b][color=FUCHSIA]([/color][/b]lst cls[b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]entmakex
- [b][color=NAVY]([/color][/b]append
- [b][color=MAROON]([/color][/b]list
- [b][color=GREEN]([/color][/b]cons 0 [color=#2f4f4f]"LWPOLYLINE"[/color][b][color=GREEN])[/color][/b]
- [b][color=GREEN]([/color][/b]cons 100 [color=#2f4f4f]"AcDbEntity"[/color][b][color=GREEN])[/color][/b]
- [b][color=GREEN]([/color][/b]cons 100 [color=#2f4f4f]"AcDbPolyline"[/color][b][color=GREEN])[/color][/b]
- [b][color=GREEN]([/color][/b]cons 62 1[b][color=GREEN])[/color][/b]
- [b][color=GREEN]([/color][/b]cons 90 [b][color=BLUE]([/color][/b]length lst[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
- [b][color=GREEN]([/color][/b]cons 70 cls[b][color=GREEN])[/color][/b]
- [b][color=MAROON])[/color][/b]
- [b][color=MAROON]([/color][/b]mapcar [b][color=GREEN]([/color][/b]function [b][color=BLUE]([/color][/b]lambda [b][color=RED]([/color][/b]p[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]cons 10 p[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] lst[b][color=MAROON])[/color][/b]
- [b][color=NAVY])[/color][/b]
- [b][color=FUCHSIA])[/color][/b]
- [b][color=BLACK])[/color][/b]
当谈到回报和评估时,我还是有点绿。
然而,我做了一系列关于vl catch-***函数的测试代码,在某些情况下还有lambda,所以这里有一些打印结果:
- (or
- (setq AcDocForA (vla-get-ActiveDocument (vlax-get-acad-object)))
- (setq AcDocForB (vla-get-ActiveDocument (vlax-get-acad-object)))
- )
这段代码实际上是2合1:(我没有发布两个单独的代码,而是只做了一个代码,其中分号必须放在您评论的以下行之一之前。
or subr在代码中没有实际用途(我只是为了更容易的修订而这样做-以后如果需要的话),而不会在代码中出现任何错误(我通常将代码的一部分包装在or中,因此这意味着有几个选项可以工作)。
另一种方法是通过键入“或者这也可以工作/或者这是另一个选项”在代码的每一行/块后面进行注释,但我发现使用实际的or函数更可读。
抱歉给你带来困惑-我有这些奇怪的习惯,这对你来说没有意义(包括(whilet…代码的一部分)。
顺便说一句,我测试了我的结束/撤消标记尝试,并更改了
- _$ (not
- (vl-catch-all-error-p ; if theres an error this returns T
- (vl-catch-all-apply
- '(lambda ()
- (vla-put-LayerOn (vla-get-ActiveLayer (vla-get-ActiveDocument (vlax-get-acad-object))) :vlax-false)
- )
- )
- )
- )
- T
- _$ (vla-put-LayerOn (vla-get-ActiveLayer (vla-get-ActiveDocument (vlax-get-acad-object))) :vlax-false)
- nil
- _$
因此,现在撤销操作正在正确执行。
非常感谢你的帮助!对不起,我的回答太愚蠢了,我太好奇了。 |