然后试试这个:
- [b][color=BLACK]([/color][/b]defun C:test [b][color=FUCHSIA]([/color][/b] / *error* acDoc sUndo Svars R n oLst o ang[b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]defun *error* [b][color=NAVY]([/color][/b]m[b][color=NAVY])[/color][/b]
- [b][color=NAVY]([/color][/b]and sUndo [b][color=MAROON]([/color][/b]vla-EndUndoMark acDoc[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]redraw[b][color=NAVY])[/color][/b]
- [b][color=NAVY]([/color][/b]and Svars [b][color=MAROON]([/color][/b]mapcar 'setvar [b][color=GREEN]([/color][/b]mapcar 'car Svars[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]mapcar 'cdr Svars[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
- [b][color=NAVY]([/color][/b]and m [b][color=MAROON]([/color][/b]print m[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
- [b][color=NAVY]([/color][/b]princ[b][color=NAVY])[/color][/b]
- [b][color=FUCHSIA])[/color][/b][color=#8b4513]; defun *error*[/color]
- [b][color=FUCHSIA]([/color][/b]setq acDoc [b][color=NAVY]([/color][/b]vla-get-ActiveDocument [b][color=MAROON]([/color][/b]vlax-get-acad-object[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]vla-EndUndoMark acDoc[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq sUndo [b][color=NAVY]([/color][/b]not [b][color=MAROON]([/color][/b]vla-StartUndoMark acDoc[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]setq Svars [b][color=NAVY]([/color][/b]mapcar [b][color=MAROON]([/color][/b]function [b][color=GREEN]([/color][/b]lambda [b][color=BLUE]([/color][/b]x[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]cons x [b][color=RED]([/color][/b]getvar x[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][color=#2f4f4f]"CLIPROMPTLINES"[/color] [color=#2f4f4f]"PICKBOX"[/color] [color=#2f4f4f]"CMDECHO"[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]and Svars [b][color=NAVY]([/color][/b]mapcar 'setvar [b][color=MAROON]([/color][/b]mapcar 'car Svars[b][color=MAROON])[/color][/b] '[b][color=MAROON]([/color][/b]0 12 0[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]setvar 'errno 0[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]redraw[b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]/= 52 [b][color=MAROON]([/color][/b]getvar 'errno[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
- [b][color=NAVY]([/color][/b]initget 128 [color=#2f4f4f]"Distance"[/color][b][color=NAVY])[/color][/b]
- [b][color=NAVY]([/color][/b]setq R [b][color=MAROON]([/color][/b]entsel [b][color=GREEN]([/color][/b]strcat [color=#2f4f4f]"\nSpecify side to offset or [D]istance "[/color] [b][color=BLUE]([/color][/b]if oLst [b][color=RED]([/color][/b]vl-princ-to-string [b][color=PURPLE]([/color][/b]reverse oLst[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [color=#2f4f4f]""[/color][b][color=BLUE])[/color][/b] [color=#2f4f4f]" <exit>: "[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
- [b][color=NAVY]([/color][/b]cond
- [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]= 7 [b][color=BLUE]([/color][/b]getvar 'errno[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]princ [color=#2f4f4f]"\nNothing selected."[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setvar 'errno 0[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
- [b][color=MAROON]([/color][/b] [b][color=GREEN]([/color][/b]= 'STR [b][color=BLUE]([/color][/b]type R[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
- [b][color=GREEN]([/color][/b]while [b][color=BLUE]([/color][/b]setq n [b][color=RED]([/color][/b]getreal [b][color=PURPLE]([/color][/b]strcat [color=#2f4f4f]"\nSpecify offset value from the curve "[/color] [b][color=TEAL]([/color][/b]if oLst [b][color=OLIVE]([/color][/b]vl-princ-to-string [b][color=GRAY]([/color][/b]reverse oLst[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b] [color=#2f4f4f]""[/color][b][color=TEAL])[/color][/b] [color=#2f4f4f]" <enter>: "[/color][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
- [b][color=BLUE]([/color][/b]princ [b][color=RED]([/color][/b]strcat [color=#2f4f4f]"\nOffset values: "[/color] [b][color=PURPLE]([/color][/b]vl-princ-to-string [b][color=TEAL]([/color][/b]reverse [b][color=OLIVE]([/color][/b]setq oLst [b][color=GRAY]([/color][/b]cons n oLst[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
- [b][color=GREEN])[/color][/b]
- [b][color=GREEN]([/color][/b]setq oLst [b][color=BLUE]([/color][/b]reverse oLst[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
- [b][color=MAROON])[/color][/b]
- [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]and [b][color=BLUE]([/color][/b]vl-consp R[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]eq 'ENAME [b][color=RED]([/color][/b]type [b][color=PURPLE]([/color][/b]car R[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]setq o [b][color=RED]([/color][/b]vlax-ename->vla-object [b][color=PURPLE]([/color][/b]car R[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]not [b][color=RED]([/color][/b]vlax-method-applicable-p o 'Offset[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
- [b][color=GREEN]([/color][/b]princ [color=#2f4f4f]"\nThis object can not be offseted."[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq o nil[b][color=GREEN])[/color][/b]
- [b][color=MAROON])[/color][/b]
- [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]and o [b][color=BLUE]([/color][/b]eq [b][color=RED]([/color][/b]vla-get-Lock [b][color=PURPLE]([/color][/b]vla-item [b][color=TEAL]([/color][/b]vla-get-Layers acDoc[b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]vla-get-Layer o[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] :vlax-true[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
- [b][color=GREEN]([/color][/b]princ [color=#2f4f4f]"\nThis object is on a locked layer."[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq o nil[b][color=GREEN])[/color][/b]
- [b][color=MAROON])[/color][/b]
- [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]and o [b][color=BLUE]([/color][/b]not oLst[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
- [b][color=GREEN]([/color][/b]grdraw [b][color=BLUE]([/color][/b]cadr R[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]vlax-curve-getClosestPointTo o [b][color=RED]([/color][/b]cadr R[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] 1 7[b][color=GREEN])[/color][/b]
- [b][color=GREEN]([/color][/b]setq ang [b][color=BLUE]([/color][/b]angle [b][color=RED]([/color][/b]vlax-curve-getClosestPointTo o [b][color=PURPLE]([/color][/b]cadr R[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]cadr R[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
- [b][color=GREEN]([/color][/b]while [b][color=BLUE]([/color][/b]setq n [b][color=RED]([/color][/b]getreal [b][color=PURPLE]([/color][/b]strcat [color=#2f4f4f]"\nSpecify offset value from the curve "[/color] [b][color=TEAL]([/color][/b]if oLst [b][color=OLIVE]([/color][/b]vl-princ-to-string [b][color=GRAY]([/color][/b]reverse oLst[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b] [color=#2f4f4f]""[/color][b][color=TEAL])[/color][/b] [color=#2f4f4f]" <enter>: "[/color][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
- [b][color=BLUE]([/color][/b]princ [b][color=RED]([/color][/b]strcat [color=#2f4f4f]"\nOffset values: "[/color] [b][color=PURPLE]([/color][/b]vl-princ-to-string [b][color=TEAL]([/color][/b]reverse [b][color=OLIVE]([/color][/b]setq oLst [b][color=GRAY]([/color][/b]cons n oLst[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
- [b][color=GREEN])[/color][/b]
- [b][color=GREEN]([/color][/b]and [b][color=BLUE]([/color][/b]vl-consp oLst[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]apply 'and [b][color=RED]([/color][/b]mapcar 'numberp oLst[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]setvar 'errno 52[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
- [b][color=MAROON])[/color][/b]
- [b][color=MAROON]([/color][/b] [b][color=GREEN]([/color][/b]and o [b][color=BLUE]([/color][/b]vl-consp oLst[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]apply 'and [b][color=RED]([/color][/b]mapcar 'numberp oLst[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setvar 'errno 52[b][color=GREEN])[/color][/b] [b][color=MAROON])[/color][/b]
- [b][color=MAROON]([/color][/b]T nil[b][color=MAROON])[/color][/b]
- [b][color=NAVY])[/color][/b][color=#8b4513]; cond [/color]
- [b][color=FUCHSIA])[/color][/b][color=#8b4513]; while[/color]
- [b][color=FUCHSIA]([/color][/b]and o ang oLst
- [b][color=NAVY]([/color][/b]foreach x oLst
- [b][color=MAROON]([/color][/b]vla-Offset o
- [b][color=GREEN]([/color][/b]cond
- [b][color=BLUE]([/color][/b] [b][color=RED]([/color][/b]= ang 0[b][color=RED])[/color][/b] x[b][color=BLUE])[/color][/b] [color=#8b4513]; Right [Direction][/color]
- [b][color=BLUE]([/color][/b] [b][color=RED]([/color][/b]equal ang [b][color=PURPLE]([/color][/b]/ PI 2.[b][color=PURPLE])[/color][/b] 1e-2[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]- x[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [color=#8b4513]; UP[/color]
- [b][color=BLUE]([/color][/b] [b][color=RED]([/color][/b]equal ang PI 1e-2[b][color=RED])[/color][/b] x[b][color=BLUE])[/color][/b] [color=#8b4513]; Left[/color]
- [b][color=BLUE]([/color][/b] [b][color=RED]([/color][/b]equal ang [b][color=PURPLE]([/color][/b]* 1.5 PI[b][color=PURPLE])[/color][/b] 1e-2[b][color=RED])[/color][/b] x[b][color=BLUE])[/color][/b] [color=#8b4513]; Down[/color]
- [b][color=BLUE]([/color][/b] [b][color=RED]([/color][/b]< 0 ang [b][color=PURPLE]([/color][/b]/ PI 2.[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]- x[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [color=#8b4513]; Right Up [Quadrant][/color]
- [b][color=BLUE]([/color][/b] [b][color=RED]([/color][/b]< [b][color=PURPLE]([/color][/b]/ PI 2.[b][color=PURPLE])[/color][/b] ang PI[b][color=RED])[/color][/b] x[b][color=BLUE])[/color][/b] [color=#8b4513]; Left Up[/color]
- [b][color=BLUE]([/color][/b] [b][color=RED]([/color][/b]< PI ang [b][color=PURPLE]([/color][/b]* PI 1.5[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] x[b][color=BLUE])[/color][/b] [color=#8b4513]; Left Down[/color]
- [b][color=BLUE]([/color][/b] [b][color=RED]([/color][/b]< [b][color=PURPLE]([/color][/b]* PI 1.5[b][color=PURPLE])[/color][/b] ang [b][color=PURPLE]([/color][/b]* PI 2[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]- x[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [color=#8b4513]; Right Down[/color]
- [b][color=GREEN])[/color][/b][color=#8b4513]; cond[/color]
- [b][color=MAROON])[/color][/b][color=#8b4513]; vla-Offset[/color]
- [b][color=NAVY])[/color][/b][color=#8b4513]; foreach ; [b][color=NAVY]([/color][/b]command [color=#2f4f4f]"_.OFFSET"[/color] x [b][color=MAROON]([/color][/b]car R[b][color=MAROON])[/color][/b] [color=#2f4f4f]"_non"[/color] [b][color=MAROON]([/color][/b]cadr R[b][color=MAROON])[/color][/b] [color=#2f4f4f]"E"[/color][b][color=NAVY])[/color][/b] [/color]
- [b][color=FUCHSIA])[/color][/b][color=#8b4513]; and[/color]
- [b][color=FUCHSIA]([/color][/b]and sUndo [b][color=NAVY]([/color][/b]vla-EndUndoMark acDoc[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]and Svars [b][color=NAVY]([/color][/b]mapcar 'setvar [b][color=MAROON]([/color][/b]mapcar 'car Svars[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]mapcar 'cdr Svars[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]redraw[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]princ[b][color=FUCHSIA])[/color][/b]
- [b][color=BLACK])[/color][/b][color=#8b4513];| defun |; [b][color=BLACK]([/color][/b]vl-load-com[b][color=BLACK])[/color][/b] [b][color=BLACK]([/color][/b]princ[b][color=BLACK])[/color][/b][/color]
由于方向问题,我真的尽量避免vla偏移。 |