notview Posted September 20, 2013 Share Posted September 20, 2013 Help Guys, I want to break vertexes of polyline at once and the objects remained as polyline. Quote Link to comment Share on other sites More sharing options...
pBe Posted September 20, 2013 Share Posted September 20, 2013 Say that again? You mean if you have a 3 segment polyline and "breaks" it at the vertices. you have 3 separate polylines? Quote Link to comment Share on other sites More sharing options...
marko_ribar Posted September 20, 2013 Share Posted September 20, 2013 Use explode command, and then pedit multiple to convert lines and arcs to plines... Quote Link to comment Share on other sites More sharing options...
notview Posted September 20, 2013 Author Share Posted September 20, 2013 Exactly pBe. I could used the command break at point, but using this, you have to pick all the vertices. Same as when you are using the command Explode! But, the only different now, the objects remained as Polyline. Quote Link to comment Share on other sites More sharing options...
notview Posted September 20, 2013 Author Share Posted September 20, 2013 M.R. I used Explode command then pedit multiple to convert the lines to polylines. But having a lot number of objects in one place is not easy to select the exploded objects (lines). Quote Link to comment Share on other sites More sharing options...
pBe Posted September 20, 2013 Share Posted September 20, 2013 M.R.I used Explode command then pedit multiple to convert the lines to polylines. But having a lot number of objects in one place is not easy to select the exploded objects (lines). Previous.... A quickee sample (defun c:sample (/ pd ent) (setq pd (getvar 'PEDITACCEPT)) (setvar 'PEDITACCEPT 1) (setq ent (ssget '((0 . "LWPOLYLINE")))) (command "_explode" ent) (command "_pedit" "_m" "_P" "" "") (setvar 'PEDITACCEPT pd) ) Quote Link to comment Share on other sites More sharing options...
notview Posted September 20, 2013 Author Share Posted September 20, 2013 Nice sample!! I tried two objects. Only one polyline object break, the other not.. Can you make it running until "Esc" or .. Quote Link to comment Share on other sites More sharing options...
pBe Posted September 20, 2013 Share Posted September 20, 2013 (defun c:sample (/ pd ent) (setq pd (getvar 'PEDITACCEPT)) (setvar 'PEDITACCEPT 1) (while (setq ent (ssget '((0 . "LWPOLYLINE")))) (repeat (setq i (sslength ent)) (command "_explode" (ssname ent (setq i (1- i)))) (command "_pedit" "_m" "_P" "" "") ) ) (setvar 'PEDITACCEPT pd) ) Quote Link to comment Share on other sites More sharing options...
David Bethel Posted September 21, 2013 Share Posted September 21, 2013 (edited) Maybe : [b][color=BLACK]([/color][/b]defun c:exlwp [b][color=FUCHSIA]([/color][/b]/ ss i en ed v vl nd es[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget '[b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]0 . [color=#2f4f4f]"LWPOLYLINE"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]70 . 0[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 i 0[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]setq en [b][color=GREEN]([/color][/b]ssname ss i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]setq ed [b][color=GREEN]([/color][/b]entget en[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]setq vl nil[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]foreach g ed [b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]= [b][color=RED]([/color][/b]car g[b][color=RED])[/color][/b] 10[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]setq v [b][color=RED]([/color][/b]list g[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]member [b][color=RED]([/color][/b]car g[b][color=RED])[/color][/b] '[b][color=RED]([/color][/b]40 41 42[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]setq v [b][color=RED]([/color][/b]cons g v[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]= [b][color=RED]([/color][/b]car g[b][color=RED])[/color][/b] 42[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]setq vl [b][color=RED]([/color][/b]cons [b][color=PURPLE]([/color][/b]reverse v[b][color=PURPLE])[/color][/b] vl[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]setq vl [b][color=GREEN]([/color][/b]reverse vl[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]while [b][color=GREEN]([/color][/b]> [b][color=BLUE]([/color][/b]length vl[b][color=BLUE])[/color][/b] 1[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq nd [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]assoc 0 ed[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]cons 100 [color=#2f4f4f]"AcDbEntity"[/color][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]assoc 67 ed[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]assoc 8 ed[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]cons 100 [color=#2f4f4f]"AcDbPolyline"[/color][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]assoc 38 ed[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]assoc 39 ed[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]cons 70 0[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]cons 90 2[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]assoc 6 ed[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]setq nd [b][color=RED]([/color][/b]append nd [b][color=PURPLE]([/color][/b]list [b][color=TEAL]([/color][/b]assoc 6 ed[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 nd [b][color=RED]([/color][/b]append nd '[b][color=PURPLE]([/color][/b][b][color=TEAL]([/color][/b]6 . [color=#2f4f4f]"BYLAYER"[/color][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]if [b][color=BLUE]([/color][/b]assoc 48 ed[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]setq nd [b][color=RED]([/color][/b]append nd [b][color=PURPLE]([/color][/b]list [b][color=TEAL]([/color][/b]assoc 48 ed[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 nd [b][color=RED]([/color][/b]append nd '[b][color=PURPLE]([/color][/b][b][color=TEAL]([/color][/b]48 . 1.0[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]if [b][color=BLUE]([/color][/b]assoc 62 ed[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]setq nd [b][color=RED]([/color][/b]append nd [b][color=PURPLE]([/color][/b]list [b][color=TEAL]([/color][/b]assoc 62 ed[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 nd [b][color=RED]([/color][/b]append nd '[b][color=PURPLE]([/color][/b][b][color=TEAL]([/color][/b]62 . 256[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 nd [b][color=BLUE]([/color][/b]append nd [b][color=RED]([/color][/b]car vl[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq es [b][color=BLUE]([/color][/b]subst [b][color=RED]([/color][/b]cons 40 [b][color=PURPLE]([/color][/b]cdr [b][color=TEAL]([/color][/b]assoc 41 [b][color=OLIVE]([/color][/b]car vl[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]assoc 40 [b][color=PURPLE]([/color][/b]cadr vl[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]cadr vl[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq es [b][color=BLUE]([/color][/b]subst [b][color=RED]([/color][/b]cons 41 [b][color=PURPLE]([/color][/b]cdr [b][color=TEAL]([/color][/b]assoc 41 [b][color=OLIVE]([/color][/b]car vl[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]assoc 41 [b][color=PURPLE]([/color][/b]cadr vl[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] es[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq nd [b][color=BLUE]([/color][/b]append nd es[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq nd [b][color=BLUE]([/color][/b]append nd [b][color=RED]([/color][/b]list [b][color=PURPLE]([/color][/b]assoc 210 ed[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]entmake nd[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq vl [b][color=BLUE]([/color][/b]cdr vl[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]entdel en[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]setq i [b][color=GREEN]([/color][/b]1+ i[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]redraw[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b] You could deal with closed PLINEs, but it would a pain. -David Edited September 22, 2013 by David Bethel Better Bulge Factor conversion Quote Link to comment Share on other sites More sharing options...
Stefan BMR Posted September 21, 2013 Share Posted September 21, 2013 My variant, maintaining Layer, LineType, Color, Width etc. Works also on closed polylines and 3Drotated ones. (defun C:BreakPoly ( / *error* el en end head i ss start tail) (or acDoc (setq acDoc (vla-get-activedocument (vlax-get-acad-object)))) (vla-startundomark acDoc) (defun *error* (m) (and m (not (wcmatch (strcase m) "*CANCEL*,*QUIT*,*EXIT*")) (princ (strcat "\nError: " m))) (vla-endundomark acDoc) (princ) ) (if (setq ss (ssget '((0 . "LWPOLYLINE")))) (repeat (setq i (sslength ss)) (setq en (ssname ss (setq i (1- i))) el (entget en) head (vl-remove-if-not '(lambda (x) (vl-position (car x) '(0 100 67 410 8 62 6 370 43 38 39))) el) head (append head (list '(90 . 2) (cons 70 (logand (cdr (assoc 70 el)) 128)))) tail (member (assoc 10 el) el) start (if (= (logand (cdr (assoc 70 el)) 1) 1) (car tail)) end (append '((40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0)) (list (assoc 210 el))) ) (repeat (1- (cdr (assoc 90 el))) (entmake (append head (mapcar '(lambda (x) (nth x tail)) '(0 1 2 3 4 5)) end)) (setq tail (member (assoc 10 (cdr tail)) (cdr tail))) ) (if start (entmake (append head (mapcar '(lambda (x) (nth x tail)) '(0 1 2 3 4)) (list start) end)) ) (entdel en) ) ) (vla-endundomark acDoc) (princ) ) Quote Link to comment Share on other sites More sharing options...
pBe Posted September 21, 2013 Share Posted September 21, 2013 Command variant: (defun c:sample (/ pd ent) (setq pd (getvar 'PEDITACCEPT)) (setvar 'PEDITACCEPT 1) (while (setq ent (ssget '((0 . "LWPOLYLINE")))) (repeat (setq i (sslength ent)) (setq en (ssname ent (setq i (1- i)))) (repeat (- (cdr (assoc 90 (entget en))) 2) (command "_pedit" en "_E" "_N" "_B" "_G" "_X" "") (setq en (entlast)) ) ) ) (setvar 'PEDITACCEPT pd) ) Quote Link to comment Share on other sites More sharing options...
troggarf Posted September 22, 2013 Share Posted September 22, 2013 I don't have the link where Alan posted this code. It is either here or at the swamp... (defun c:BPV (/ _chop ss i e) ;; Break lwPolyline at each Vertex ;; Alan J. Thompson, 09.14.11 (vl-load-com) (defun _chop (lst e) (if (vlax-curve-isClosed e) (cdr lst) (reverse (cdr (reverse (cdr lst)))) ) ) (if (setq ss (ssget "_:L" '((0 . "LWPOLYLINE") (-4 . ">") (90 . 2)))) (repeat (setq i (sslength ss)) (foreach point (_chop (apply 'append (mapcar '(lambda (x) (if (eq (car x) 10) (list (trans (cdr x) 0 1)) ) ) (entget (setq e (ssname ss (setq i (1- i))))) ) ) e ) (vl-cmdf "_.break" e "_F" "_non" point "_non" point) (setq e (entlast)) ) ) ) (princ) ) Quote Link to comment Share on other sites More sharing options...
notview Posted September 30, 2013 Author Share Posted September 30, 2013 David, I got the same output of pBe.. only one object break at a time. Stefan BMR, I think this is the perfect lisp I want. Thank you!!! Cheers!! Quote Link to comment Share on other sites More sharing options...
notview Posted September 30, 2013 Author Share Posted September 30, 2013 The worked of Allan J.T. is good. But, polyline passing repeatedly on the vertices of same object polyline, after performing BPV, some parts of the polylines removed or deleted. 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.