- [color=#8b4513]; written by: Grrr[/color]
- [color=#8b4513]; Create Spline from 2D/3D Polyline, and match the closed status:[/color]
- [b][color=BLACK]([/color][/b]defun C:Pline2Spline [color=#8b4513];| credits to: Lee Mac |; [b][color=FUCHSIA]([/color][/b] / Get3DpolyVertices AddSpline e pLst spl [b][color=FUCHSIA])[/color][/b][/color]
-
- [b][color=FUCHSIA]([/color][/b]defun Get3DpolyVertices [b][color=NAVY]([/color][/b] e / pLst [b][color=NAVY])[/color][/b]
- [b][color=NAVY]([/color][/b]if [b][color=MAROON]([/color][/b]and [b][color=GREEN]([/color][/b]eq 'ENAME [b][color=BLUE]([/color][/b]type e[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]= [color=#2f4f4f]"POLYLINE"[/color] [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 0 [b][color=PURPLE]([/color][/b]entget e[b][color=PURPLE])[/color][/b][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]reverse
- [b][color=GREEN]([/color][/b]while [b][color=BLUE]([/color][/b]and [b][color=RED]([/color][/b]setq e [b][color=PURPLE]([/color][/b]entnext e[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]/= [color=#2f4f4f]"SEQEND"[/color] [b][color=PURPLE]([/color][/b]cdr [b][color=TEAL]([/color][/b]assoc 0 [b][color=OLIVE]([/color][/b]entget e[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=BLUE]([/color][/b]setq pLst [b][color=RED]([/color][/b]cons [b][color=PURPLE]([/color][/b]cdr [b][color=TEAL]([/color][/b]assoc 10 [b][color=OLIVE]([/color][/b]entget e[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] pLst[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
- [b][color=GREEN])[/color][/b]
- [b][color=MAROON])[/color][/b]
- [b][color=NAVY])[/color][/b]
- [b][color=FUCHSIA])[/color][/b][color=#8b4513]; defun Get3DpolyVertices[/color]
-
- [b][color=FUCHSIA]([/color][/b]defun AddSpline [b][color=NAVY]([/color][/b] 3DPtLst / Spline [b][color=NAVY])[/color][/b]
- [b][color=NAVY]([/color][/b]if
- [b][color=MAROON]([/color][/b]and
- [b][color=GREEN]([/color][/b]vl-consp 3DPtLst[b][color=GREEN])[/color][/b]
- [b][color=GREEN]([/color][/b]vl-every [b][color=BLUE]([/color][/b]function [b][color=RED]([/color][/b]lambda [b][color=PURPLE]([/color][/b]x[b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]and [b][color=TEAL]([/color][/b]vl-consp x[b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]= 3 [b][color=OLIVE]([/color][/b]length x[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]apply 'and [b][color=OLIVE]([/color][/b]mapcar 'numberp x[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] 3DPtLst[b][color=GREEN])[/color][/b]
- [b][color=MAROON])[/color][/b][color=#8b4513]; and[/color]
- [b][color=MAROON]([/color][/b]setq Spline
- [b][color=GREEN]([/color][/b]vla-AddSpline
- [b][color=BLUE]([/color][/b]vlax-get [b][color=RED]([/color][/b]vla-get-ActiveDocument [b][color=PURPLE]([/color][/b]vlax-get-acad-object[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
- [b][color=RED]([/color][/b]if [b][color=PURPLE]([/color][/b]equal [b][color=TEAL]([/color][/b]getvar [color=#2f4f4f]"CVPORT"[/color][b][color=TEAL])[/color][/b] 1[b][color=PURPLE])[/color][/b] 'PaperSpace 'ModelSpace[b][color=RED])[/color][/b]
- [b][color=BLUE])[/color][/b]
- [b][color=BLUE]([/color][/b]vlax-safearray-fill
- [b][color=RED]([/color][/b]vlax-make-safearray vlax-vbDouble [b][color=PURPLE]([/color][/b]cons 0 [b][color=TEAL]([/color][/b]1- [b][color=OLIVE]([/color][/b]length [b][color=GRAY]([/color][/b]apply 'append 3DPtLst[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=RED]([/color][/b]apply 'append 3DPtLst[b][color=RED])[/color][/b]
- [b][color=BLUE])[/color][/b]
- [b][color=BLUE]([/color][/b]vlax-3d-point '[b][color=RED]([/color][/b]0. 0. 0.[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
- [b][color=BLUE]([/color][/b]vlax-3d-point '[b][color=RED]([/color][/b]0. 0. 0.[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
- [b][color=GREEN])[/color][/b]
- [b][color=MAROON])[/color][/b][color=#8b4513]; setq Spline[/color]
- [b][color=NAVY])[/color][/b][color=#8b4513]; if [/color]
- [b][color=FUCHSIA])[/color][/b][color=#8b4513]; defun AddSpline [/color]
-
- [b][color=FUCHSIA]([/color][/b]setvar 'errno 0[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]setq e [b][color=MAROON]([/color][/b]car [b][color=GREEN]([/color][/b]entsel [color=#2f4f4f]"\nPick a pline <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]"\nMissed, try again."[/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]e
- [b][color=GREEN]([/color][/b]cond
- [b][color=BLUE]([/color][/b][b][color=RED]([/color][/b]wcmatch [b][color=PURPLE]([/color][/b]cdr [b][color=TEAL]([/color][/b]assoc 0 [b][color=OLIVE]([/color][/b]entget e[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [color=#2f4f4f]"~*POLYLINE"[/color][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]princ [color=#2f4f4f]"\nInvalid object."[/color][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
- [b][color=BLUE]([/color][/b][b][color=RED]([/color][/b]= [color=#2f4f4f]"POLYLINE"[/color] [b][color=PURPLE]([/color][/b]cdr [b][color=TEAL]([/color][/b]assoc 0 [b][color=OLIVE]([/color][/b]entget e[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
- [b][color=RED]([/color][/b]and
- [b][color=PURPLE]([/color][/b]setq spl [b][color=TEAL]([/color][/b]AddSpline [b][color=OLIVE]([/color][/b]Get3DpolyVertices e[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
- [b][color=PURPLE]([/color][/b]vla-put-Closed2 spl [b][color=TEAL]([/color][/b]vla-get-Closed [b][color=OLIVE]([/color][/b]vlax-ename->vla-object e[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
- [b][color=PURPLE]([/color][/b]setvar 'errno 52[b][color=PURPLE])[/color][/b]
- [b][color=RED])[/color][/b][color=#8b4513]; and[/color]
- [b][color=BLUE])[/color][/b]
- [b][color=BLUE]([/color][/b][b][color=RED]([/color][/b]= [color=#2f4f4f]"LWPOLYLINE"[/color] [b][color=PURPLE]([/color][/b]cdr [b][color=TEAL]([/color][/b]assoc 0 [b][color=OLIVE]([/color][/b]entget e[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
- [b][color=RED]([/color][/b]and
- [b][color=PURPLE]([/color][/b]setq pLst [b][color=TEAL]([/color][/b]mapcar 'cdr [b][color=OLIVE]([/color][/b]vl-remove-if-not [b][color=GRAY]([/color][/b]function [b][color=AQUA]([/color][/b]lambda [b][color=LIME]([/color][/b]x[b][color=LIME])[/color][/b] [b][color=LIME]([/color][/b]= 10 [b][color=SILVER]([/color][/b]car x[b][color=SILVER])[/color][/b][b][color=LIME])[/color][/b][b][color=AQUA])[/color][/b][b][color=GRAY])[/color][/b] [b][color=GRAY]([/color][/b]entget e[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
- [b][color=PURPLE]([/color][/b]if [b][color=TEAL]([/color][/b]= 2 [b][color=OLIVE]([/color][/b]length [b][color=GRAY]([/color][/b]car pLst[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b] [color=#8b4513]; convert to 3D point list[/color]
- [b][color=TEAL]([/color][/b]setq pLst [b][color=OLIVE]([/color][/b]mapcar [b][color=GRAY]([/color][/b]function [b][color=AQUA]([/color][/b]lambda [b][color=LIME]([/color][/b]x[b][color=LIME])[/color][/b] [b][color=LIME]([/color][/b]append x [b][color=SILVER]([/color][/b]list [b][color=YELLOW]([/color][/b]cdr [b][color=WHITE]([/color][/b]assoc 38 [b][color=BLACK]([/color][/b]entget e[b][color=BLACK])[/color][/b][b][color=WHITE])[/color][/b][b][color=YELLOW])[/color][/b][b][color=SILVER])[/color][/b][b][color=LIME])[/color][/b][b][color=AQUA])[/color][/b][b][color=GRAY])[/color][/b] pLst[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b] [color=#8b4513]; assoc 38, elevation[/color]
- pLst
- [b][color=PURPLE])[/color][/b]
- [b][color=PURPLE]([/color][/b]setq spl [b][color=TEAL]([/color][/b]AddSpline pLst[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
- [b][color=PURPLE]([/color][/b]vla-put-Closed2 spl [b][color=TEAL]([/color][/b]vla-get-Closed [b][color=OLIVE]([/color][/b]vlax-ename->vla-object e[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
- [b][color=PURPLE]([/color][/b]setvar 'errno 52[b][color=PURPLE])[/color][/b]
- [b][color=RED])[/color][/b][color=#8b4513]; and[/color]
- [b][color=BLUE])[/color][/b]
- [b][color=GREEN])[/color][/b][color=#8b4513]; cond[/color]
- [b][color=MAROON])[/color][/b][color=#8b4513]; e[/color]
- [b][color=NAVY])[/color][/b][color=#8b4513]; cond[/color]
- [b][color=FUCHSIA])[/color][/b][color=#8b4513]; while[/color]
-
- [b][color=BLACK])[/color][/b][color=#8b4513];| defun Spline2Pline |; [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]
2D:
3D:
我不知道为什么marko_ribar没有回应这个帖子(通常他喜欢这些东西-[曲线:普林斯,样条])。 |