motee-z Posted May 18, 2014 Share Posted May 18, 2014 hello any help for a routine that can add new vertices at any place on 3d polyline same elevation of a picked point it is available as autocad command but it is long and need much time if i have a lot of points to be add thanks Quote Link to comment Share on other sites More sharing options...
David Bethel Posted May 18, 2014 Share Posted May 18, 2014 While I don't quite understand the elevation scenario that you are describing, this should add a vertex to a 3DPOLY based on a pick point: [b][color=BLACK]([/color][/b]defun c:add3dv [b][color=FUCHSIA]([/color][/b]/ p ss en ed vn vd vl tl fl[b][color=FUCHSIA])[/color][/b] [color=#8b4513];;;ARG -> TestPt LinePt1 LinePt2 Fuzz[/color] [color=#8b4513];;;RET T nil[/color] [b][color=FUCHSIA]([/color][/b]defun is_pt_online [b][color=NAVY]([/color][/b]pt l1 l2 fz[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]and [b][color=MAROON]([/color][/b]numberp fz[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]equal [b][color=GREEN]([/color][/b]distance l1 l2[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]+ [b][color=BLUE]([/color][/b]distance l1 pt[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]distance l2 pt[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] fz[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"OSMODE"[/color] [b][color=NAVY]([/color][/b]logior [b][color=MAROON]([/color][/b]getvar [color=#2f4f4f]"OSMODE"[/color][b][color=MAROON])[/color][/b] 512[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]setq p [b][color=MAROON]([/color][/b]getpoint [color=#2f4f4f]"\nSelect Point On a 3DPOLY: "[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq p [b][color=MAROON]([/color][/b]trans p 1 0[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget p '[b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]0 . [color=#2f4f4f]"POLYLINE"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]-4 . [color=#2f4f4f]"&"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]70 . 8[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]= [b][color=MAROON]([/color][/b]sslength ss[b][color=MAROON])[/color][/b] 1[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq en [b][color=MAROON]([/color][/b]ssname ss 0[b][color=MAROON])[/color][/b] ed [b][color=MAROON]([/color][/b]entget en[b][color=MAROON])[/color][/b] vn [b][color=MAROON]([/color][/b]entnext en[b][color=MAROON])[/color][/b] vd [b][color=MAROON]([/color][/b]entget vn[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]= [color=#2f4f4f]"VERTEX"[/color] [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 0 vd[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]setq vl [b][color=GREEN]([/color][/b]cons [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 10 vd[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] vl[b][color=GREEN])[/color][/b] vn [b][color=GREEN]([/color][/b]entnext vn[b][color=GREEN])[/color][/b] vd [b][color=GREEN]([/color][/b]entget vn[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq tl vl[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]> [b][color=MAROON]([/color][/b]length vl[b][color=MAROON])[/color][/b] 1[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq fl [b][color=MAROON]([/color][/b]cons [b][color=GREEN]([/color][/b]car vl[b][color=GREEN])[/color][/b] fl[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]equal p [b][color=BLUE]([/color][/b]car vl[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]alert [color=#2f4f4f]"Existing Vertex - Cannot Add Point"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]is_pt_online p [b][color=BLUE]([/color][/b]car vl[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]cadr vl[b][color=BLUE])[/color][/b] 1e-8[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq fl [b][color=BLUE]([/color][/b]cons p fl[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq vl [b][color=MAROON]([/color][/b]cdr vl[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq fl [b][color=NAVY]([/color][/b]cons [b][color=MAROON]([/color][/b]car vl[b][color=MAROON])[/color][/b] fl[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]= [b][color=MAROON]([/color][/b]length fl[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]length tl[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]alert [color=#2f4f4f]"No Vertices Added"[/color][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]progn [b][color=MAROON]([/color][/b]entdel en[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]entmake ed[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]foreach v fl [b][color=GREEN]([/color][/b]entmake [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]cons 0 [color=#2f4f4f]"VERTEX"[/color][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]assoc 8 vd[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]cons 10 v[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]cons 70 32[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]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"SEQEND"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]assoc 8 vd[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] [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b] -David Quote Link to comment Share on other sites More sharing options...
motee-z Posted May 18, 2014 Author Share Posted May 18, 2014 thank you Mr David for reply that,s okay but if i want to repeat adding points i add (while at the line number 10 )it closed start and end of the 3dpoly what the reason of that (while (and (setq p (getpoint "\nSelect Point On a 3DPOLY: ")) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.