motee-z Posted October 31, 2014 Share Posted October 31, 2014 Hello would you please help me to convert arcs in polyline to lines, its length defined by user like in attached drawing test.dwg Quote Link to comment Share on other sites More sharing options...
ReMark Posted October 31, 2014 Share Posted October 31, 2014 One possible option available to you was posted over at the AUGI forum. "ToolPac by Dotsoft has a conversion command "Segments to Arcs". It will convert a bunch of little lines." Find ToolPac here: http://www.dotsoft.com/toolpac.htm Quote Link to comment Share on other sites More sharing options...
marko_ribar Posted October 31, 2014 Share Posted October 31, 2014 Try "pline-arcs-seg.lsp" posted here : http://www.theswamp.org/index.php?PHPSESSID=hmtqk9756vtniapdfvt3459046&topic=41837.msg523246#msg523246 You have to be member to download it... HTH Quote Link to comment Share on other sites More sharing options...
SLW210 Posted October 31, 2014 Share Posted October 31, 2014 I can't open your drawing, but...PEdit>Decurve will convert the polyline arc segments to lines. This thread may be of help...http://www.cadtutor.net/forum/showthread.php?67157-Convert-polyline-with-arc-to-polyline-with-straight-lines. Quote Link to comment Share on other sites More sharing options...
marko_ribar Posted October 31, 2014 Share Posted October 31, 2014 SLW210, OP wants segmentation of arcs, not straighten... This is what you'd see in posted *.dwg Quote Link to comment Share on other sites More sharing options...
motee-z Posted October 31, 2014 Author Share Posted October 31, 2014 thank you very much it is okay Quote Link to comment Share on other sites More sharing options...
marko_ribar Posted November 1, 2014 Share Posted November 1, 2014 (edited) "pline-arcs-seg.lsp" has small issue... To avoid creating LWPOLY with double vertices on some start/end segments, fix it with following mod. : (defun c:seg ( / unique unit LM:LWPoly->List en lst n ) (defun unique ( l ) (if l (cons (car l) (vl-remove-if '(lambda ( x ) (equal (car l) x 1e-) (unique (cdr l))))) ) ... Rest of code ... (if (and en (setq lst (unique (mapcar (function (lambda ( x ) (trans x 0 en))) (LM:LWPoly->List en n) ) ) ) ) (entmakex (append (list (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity") (cons 100 "AcDbPolyline") (cons 62 3) (cons 90 (length lst)) (cons 70 (if (eq 1 (logand (cdr (assoc 70 (entget en))) 1)) (if (eq 1 (getvar 'plinegen)) 129 1 ) (if (eq 1 (getvar 'plinegen)) 128 0 ) ) ) (assoc 38 (entget en)) (assoc 210 (entget en)) ) (mapcar '(lambda ( x ) (cons 10 x)) lst) ) ) ) (princ) ) I would suggest that you use pline-arcs-seg.lsp rather than my following code which is good if you want to specify unit distance of arcs segmentation... But after this kind of LWPOLY is created, than its not possible to convert it back to its original look with code I posted here : http://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/lisp-to-convert-polyline-containing-tessellated-segments-to-true/m-p/5345845/highlight/true#M326908 Please look in following bigger code that follows after you look into the link (you should do tests with newer code)... So here is my dirty one, which I suggest you to avoid it if its possible, but maybe it may be of some use in some special cases... (defun c:lw-arcs-seg-d ( / *error* unique segarc ss d i lw ptbptl al len p1 p2 ang rad mpa mp cen vp1 vp1ocs a1 a2 temp ptlst ) (vl-load-com) (defun *error* ( msg ) (if (and arc (entget arc)) (entdel arc)) (if msg (prompt msg)) (princ) ) (defun unique ( l ) (if l (cons (car l) (vl-remove-if '(lambda ( x ) (equal x (car l) 1e-) (unique (cdr l))))) ) (defun segarc ( arc d / acos stp enp ang len rad cosad ad da k dda p1 p2 pl ) (vl-load-com) ;; ArcCosine ;; Args: -1 <= x <= 1 (defun acos ( x ) (cond ( (equal x 1.0 1e-6) 0.0) ( (equal x -1.0 1e-6) PI) ( (equal x 0.0 1e- (/ PI 2)) ( (atan (/ (sqrt (- 1.0 (* x x))) x))) ) ) (setq stp (vlax-curve-getstartpoint arc)) (setq enp (vlax-curve-getendpoint arc)) ; (setq midp (vlax-curve-getpointatparam arc (+ (vlax-curve-getstartparam arc) (/ (- (vlax-curve-getendparam arc) (vlax-curve-getstartparam arc)) 2.0)))) (setq ang (abs (- (cdr (assoc 51 (entget arc))) (cdr (assoc 50 (entget arc)))))) (if (< (cdr (assoc 51 (entget arc))) (cdr (assoc 50 (entget arc)))) (setq ang (- 6.283185307179586476925286766559 ang))) (setq len (- (vlax-curve-getdistatparam arc (vlax-curve-getendparam arc)) (vlax-curve-getdistatparam arc (vlax-curve-getstartparam arc)))) (if (> len d) (progn (setq rad (cdr (assoc 40 (entget arc)))) (setq cosad (- 1.0 (/ (expt d 2) (* 2.0 (expt rad 2))))) (setq ad (acos cosad)) ; (setq c (polar midp (angle midp (mapcar '/ (mapcar '+ stp enp) (list 2.0 2.0 2.0))) rad)) (setq da (* ad (/ len ang))) (setq k 0.0) (while (< (setq dda (* da (setq k (1+ k)))) len) (setq p1 (vlax-curve-getpointatdist arc (- dda da))) (setq p2 (vlax-curve-getpointatdist arc dda)) (setq pl (cons p1 pl)) ) (setq pl (cons p2 pl) pl (cons enp pl)) pl ) (prompt "\nArgument unit distance is larger than total length of an arc... Unable to segment arc!") ) ) (prompt "\nSelect lwpolyline(s) to segment arcs if they exist with unit distance") (setq ss (ssget '((0 . "LWPOLYLINE")))) (while (null ss) (prompt "\nEmpty sel.set... Please select lwpolyline(s) again...") (setq ss (ssget '((0 . "LWPOLYLINE")))) ) (initget 7) (setq d (getdist "\nPick or specify unit distance for arcs segmentation : ")) (repeat (setq i (sslength ss)) (setq lw (ssname ss (setq i (1- i)))) (if (not (vl-every '(lambda ( x ) (equal x '(42 . 0.0))) (vl-remove-if-not '(lambda ( x ) (eq (car x) 42)) (entget lw)))) (progn (setq ptbptl (mapcar '(lambda ( a b c ) (list (if (eq (car a) 10) (cdr a)) (if (eq (car b) 42) (cdr b)) (if (eq (car c) 10) (cdr c)))) (setq al (vl-remove-if-not '(lambda ( x ) (eq (car x) 10)) (entget lw))) (vl-remove-if-not '(lambda ( x ) (eq (car x) 42)) (entget lw)) (if (eq 1 (logand (cdr (assoc 70 (entget lw))) 1)) (cdr (reverse (cons (car al) (reverse al)))) (cdr al)))) (foreach ptbpt ptbptl (if (not (eq (cadr ptbpt) 0.0)) (progn (setq len (- (if (equal (vlax-curve-getclosestpointto lw (trans (list (caaddr ptbpt) (cadr (caddr ptbpt)) (cdr (assoc 38 (entget lw)))) lw 0)) (vlax-curve-getendpoint lw) 1e- (progn (setq p2 (vlax-curve-getendpoint lw)) (vlax-curve-getdistatparam lw (vlax-curve-getendparam lw))) (vlax-curve-getdistatpoint lw (setq p2 (vlax-curve-getclosestpointto lw (trans (list (caaddr ptbpt) (cadr (caddr ptbpt)) (cdr (assoc 38 (entget lw)))) lw 0))))) (if (equal (vlax-curve-getclosestpointto lw (trans (list (caar ptbpt) (cadar ptbpt) (cdr (assoc 38 (entget lw)))) lw 0)) (vlax-curve-getstartpoint lw) 1e- (progn (setq p1 (vlax-curve-getstartpoint lw)) 0.0) (vlax-curve-getdistatpoint lw (setq p1 (vlax-curve-getclosestpointto lw (trans (list (caar ptbpt) (cadar ptbpt) (cdr (assoc 38 (entget lw)))) lw 0))))) ) ) (setq ang (* 4.0 (atan (cadr ptbpt)))) (setq rad (/ len (abs ang))) (setq mpa (vlax-curve-getpointatparam lw (+ (if (equal p1 (vlax-curve-getstartpoint lw) 1e- 0.0 (vlax-curve-getparamatpoint lw p1)) (/ (- (if (equal p2 (vlax-curve-getendpoint lw) 1e- (vlax-curve-getendparam lw) (vlax-curve-getparamatpoint lw p2)) (if (equal p1 (vlax-curve-getstartpoint lw) 1e- 0.0 (vlax-curve-getparamatpoint lw p1))) 2.0)))) (setq mp (mapcar '/ (mapcar '+ p1 p2) (list 2.0 2.0 2.0))) ;(entmake (list '(0 . "POINT") (cons 10 mpa) '(62 . 1))) ;(entmake (list '(0 . "POINT") (cons 10 mp) '(62 . 2))) (setq cen (mapcar '+ mpa (mapcar '* (mapcar '/ (mapcar '- mp mpa) (list (distance mp mpa) (distance mp mpa) (distance mp mpa))) (list rad rad rad)))) (setq vp1 (mapcar '- p1 cen)) (setq vp1ocs (trans vp1 0 lw)) (setq a1 (angle '(0.0 0.0 0.0) vp1ocs)) (setq a2 (+ a1 ang)) (if (> a2 6.283185307179586476925286766559) (setq a2 (- a2 6.283185307179586476925286766559))) (if (minusp ang) (setq temp a1 a1 a2 a2 temp)) (setq arc (entmakex (vl-remove nil (list '(0 . "ARC") (assoc 8 (entget lw)) (cons 10 (trans cen 0 lw)) (cons 40 rad) (cons 50 a1) (cons 51 a2) (if (assoc 62 (entget lw)) (assoc 62 (entget lw))) (if (assoc 420 (entget lw)) (assoc 420 (entget lw))) (assoc 210 (entget lw)))))) (if (null ptlst) (if (equal (vlax-curve-getstartpoint lw) (car (segarc arc d)) 1e- (setq ptlst (append ptlst (segarc arc d))) (setq ptlst (append ptlst (reverse (segarc arc d))))) (setq ptlst (append ptlst (if (equal (last ptlst) (car (segarc arc d)) 1e- (segarc arc d) (reverse (segarc arc d))))) ) (entdel arc) ) (progn (setq ptlst (append ptlst (list (vlax-curve-getclosestpointto lw (trans (list (caar ptbpt) (cadar ptbpt) (cdr (assoc 38 (entget lw)))) lw 0))))) (setq ptlst (append ptlst (list (vlax-curve-getclosestpointto lw (trans (list (caaddr ptbpt) (cadr (caddr ptbpt)) (cdr (assoc 38 (entget lw)))) lw 0))))) ) ) ) (setq ptlst (unique ptlst)) (entmake (append (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (assoc 38 (entget lw)) (cons 90 (length ptlst)) (cons 70 (if (eq 1 (logand (cdr (assoc 70 (entget lw))) 1)) (if (eq 1 (getvar 'plinegen)) 129 1 ) (if (eq 1 (getvar 'plinegen)) 128 0 ) ) ) '(62 . 3) ) (mapcar '(lambda ( x ) (cons 10 (list (car (trans x 0 lw)) (cadr (trans x 0 lw))))) ptlst) (list (assoc 210 (entget lw))) ) ) (setq ptlst nil) ) ) ) (*error* nil) ) HTH Edited November 3, 2014 by marko_ribar Quote Link to comment Share on other sites More sharing options...
motee-z Posted November 1, 2014 Author Share Posted November 1, 2014 results is same in my cases they all work fine thank you for help Quote Link to comment Share on other sites More sharing options...
David Bethel Posted November 1, 2014 Share Posted November 1, 2014 This is an old routine, but can deal both heavy and light plines as well as 3DPOLYs, splined fit or decurved [color=#8b4513];++++++++++++ FINDPATH +++++++++++++++++++++++++++++++++++++++++++[/color] [color=#8b4513];;;Returns ECS Point Values Of PLINE[/color] [b][color=BLACK]([/color][/b]defun findpath [b][color=FUCHSIA]([/color][/b]en / pl ed sp_flg cl_flg bf nl i vp bf vf pl_flg[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]= [color=#2f4f4f]"LWPOLYLINE"[/color] [b][color=MAROON]([/color][/b]cdr [b][color=GREEN]([/color][/b]assoc 0 [b][color=BLUE]([/color][/b]entget en[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]command [color=#2f4f4f]"_.CONVERTPOLY"[/color] [color=#2f4f4f]"_Heavy"[/color] en [color=#2f4f4f]""[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq ed [b][color=NAVY]([/color][/b]entget en[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]/= [color=#2f4f4f]"POLYLINE"[/color] [b][color=MAROON]([/color][/b]cdr [b][color=GREEN]([/color][/b]assoc 0 ed[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]princ [color=#2f4f4f]"\n*** FINDPATH For POLYLINEs Only *** "[/color][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]exit[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq pl_flg [b][color=NAVY]([/color][/b]cdr [b][color=MAROON]([/color][/b]assoc 70 ed[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]= [b][color=MAROON]([/color][/b]logand pl_flg 1[b][color=MAROON])[/color][/b] 1[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq cl_flg T[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]= [b][color=MAROON]([/color][/b]logand pl_flg 4[b][color=MAROON])[/color][/b] 4[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq sp_flg T[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]or [b][color=MAROON]([/color][/b]= [b][color=GREEN]([/color][/b]logand pl_flg 16[b][color=GREEN])[/color][/b] 16[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]= [b][color=GREEN]([/color][/b]logand pl_flg 64[b][color=GREEN])[/color][/b] 64[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]princ [color=#2f4f4f]"\nInvalid POLYLINE Mesh"[/color][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]exit[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]/= [color=#2f4f4f]"SEQEND"[/color] [b][color=MAROON]([/color][/b]cdr [b][color=GREEN]([/color][/b]assoc 0 [b][color=BLUE]([/color][/b]entget [b][color=RED]([/color][/b]entnext en[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=NAVY]([/color][/b]setq en [b][color=MAROON]([/color][/b]entnext en[b][color=MAROON])[/color][/b] ed [b][color=MAROON]([/color][/b]entget en[b][color=MAROON])[/color][/b] vp [b][color=MAROON]([/color][/b]cdr [b][color=GREEN]([/color][/b]assoc 10 ed[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] bf [b][color=MAROON]([/color][/b]cdr [b][color=GREEN]([/color][/b]assoc 42 ed[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] vf [b][color=MAROON]([/color][/b]cdr [b][color=GREEN]([/color][/b]assoc 70 ed[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]and [b][color=BLUE]([/color][/b]/= bf 0.0[b][color=BLUE])[/color][/b] cl_flg [b][color=BLUE]([/color][/b]= [color=#2f4f4f]"SEQEND"[/color] [b][color=RED]([/color][/b]cdr [b][color=PURPLE]([/color][/b]assoc 0 [b][color=TEAL]([/color][/b]entget [b][color=OLIVE]([/color][/b]entnext en[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]add_arc vp [b][color=BLUE]([/color][/b]last pl[b][color=BLUE])[/color][/b] bf[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]= [color=#2f4f4f]"SEQEND"[/color] [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 0 [b][color=PURPLE]([/color][/b]entget [b][color=TEAL]([/color][/b]entnext en[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]= bf 0.0[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]not cl_flg[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq pl [b][color=BLUE]([/color][/b]cons vp pl[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]/= bf 0.0[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]/= [color=#2f4f4f]"SEQEND"[/color] [b][color=RED]([/color][/b]cdr [b][color=PURPLE]([/color][/b]assoc 0 [b][color=TEAL]([/color][/b]entget [b][color=OLIVE]([/color][/b]entnext en[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]add_arc vp [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 10 [b][color=PURPLE]([/color][/b]entget [b][color=TEAL]([/color][/b]entnext en[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] bf[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]= bf 1.0[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]not cl_flg[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]= [color=#2f4f4f]"SEQEND"[/color] [b][color=RED]([/color][/b]cdr [b][color=PURPLE]([/color][/b]assoc 0 [b][color=TEAL]([/color][/b]entget [b][color=OLIVE]([/color][/b]entnext en[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]princ[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]and sp_flg [b][color=BLUE]([/color][/b]= bf 0.0[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]= [b][color=RED]([/color][/b]logand vf 8[b][color=RED])[/color][/b] 8[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq pl [b][color=BLUE]([/color][/b]cons vp pl[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]not sp_flg[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]= bf 0.0[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]/= [b][color=RED]([/color][/b]logand vf 8[b][color=RED])[/color][/b] 8[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq pl [b][color=BLUE]([/color][/b]cons vp pl[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]and cl_flg [b][color=NAVY]([/color][/b]not [b][color=MAROON]([/color][/b]equal [b][color=GREEN]([/color][/b]car pl[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]last pl[b][color=GREEN])[/color][/b] 1e-4[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq pl [b][color=MAROON]([/color][/b]cons [b][color=GREEN]([/color][/b]last pl[b][color=GREEN])[/color][/b] pl[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq i 0[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]< i [b][color=MAROON]([/color][/b]length pl[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]equal [b][color=GREEN]([/color][/b]nth i pl[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]nth [b][color=BLUE]([/color][/b]1+ i[b][color=BLUE])[/color][/b] pl[b][color=GREEN])[/color][/b] 0.0001[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=NAVY]([/color][/b]and [b][color=MAROON]([/color][/b]nth i pl[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]setq nl [b][color=GREEN]([/color][/b]cons [b][color=BLUE]([/color][/b]nth i pl[b][color=BLUE])[/color][/b] nl[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq i [b][color=MAROON]([/color][/b]1+ i[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] nl[b][color=BLACK])[/color][/b] [b][color=BLACK]([/color][/b]defun add_arc [b][color=FUCHSIA]([/color][/b]sp ep bulge / alist x1 x2 y1 y2 cotbce ce ra sa ea ia inc qty na temp[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq x1 [b][color=NAVY]([/color][/b]car sp[b][color=NAVY])[/color][/b][color=#8b4513];;Modified Bulge[/color] x2 [b][color=NAVY]([/color][/b]car ep[b][color=NAVY])[/color][/b][color=#8b4513];;Conversion By[/color] y1 [b][color=NAVY]([/color][/b]cadr sp[b][color=NAVY])[/color][/b][color=#8b4513];;Duff Kurland[/color] y2 [b][color=NAVY]([/color][/b]cadr ep[b][color=NAVY])[/color][/b][color=#8b4513];;Autodesk, Inc.[/color] cotbce [b][color=NAVY]([/color][/b]/ [b][color=MAROON]([/color][/b]- [b][color=GREEN]([/color][/b]/ 1.0 bulge[b][color=GREEN])[/color][/b] bulge[b][color=MAROON])[/color][/b] 2.0[b][color=NAVY])[/color][/b] ce [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]/ [b][color=GREEN]([/color][/b]+ x1 x2 [b][color=BLUE]([/color][/b]- [b][color=RED]([/color][/b]* [b][color=PURPLE]([/color][/b]- y2 y1[b][color=PURPLE])[/color][/b] cotbce[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] 2.0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]/ [b][color=GREEN]([/color][/b]+ y1 y2 [b][color=BLUE]([/color][/b]* [b][color=RED]([/color][/b]- x2 x1[b][color=RED])[/color][/b] cotbce[b][color=BLUE])[/color][/b] [b][color=GREEN])[/color][/b] 2.0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]caddr sp[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] ra [b][color=NAVY]([/color][/b]distance ce sp[b][color=NAVY])[/color][/b] sa [b][color=NAVY]([/color][/b]atan [b][color=MAROON]([/color][/b]- y1 [b][color=GREEN]([/color][/b]cadr ce[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]- x1 [b][color=GREEN]([/color][/b]car ce[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] ea [b][color=NAVY]([/color][/b]atan [b][color=MAROON]([/color][/b]- y2 [b][color=GREEN]([/color][/b]cadr ce[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]- x2 [b][color=GREEN]([/color][/b]car ce[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]if [b][color=NAVY]([/color][/b]minusp sa[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq sa [b][color=MAROON]([/color][/b]+ sa [b][color=GREEN]([/color][/b]* 2.0 pi[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]if [b][color=NAVY]([/color][/b]minusp ea[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq ea [b][color=MAROON]([/color][/b]+ ea [b][color=GREEN]([/color][/b]* 2.0 pi[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]if [b][color=NAVY]([/color][/b]minusp bulge[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq temp sa sa ea ea temp[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]> sa ea[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq ia [b][color=MAROON]([/color][/b]+ [b][color=GREEN]([/color][/b]- [b][color=BLUE]([/color][/b]* pi 2.0[b][color=BLUE])[/color][/b] sa[b][color=GREEN])[/color][/b] ea[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq ia [b][color=MAROON]([/color][/b]- ea sa[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq qty [b][color=NAVY]([/color][/b]max 2 [b][color=MAROON]([/color][/b]abs [b][color=GREEN]([/color][/b]fix [b][color=BLUE]([/color][/b]/ ia [b][color=RED]([/color][/b]/ pi 16[b][color=RED])[/color][/b] 2[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];;; SEGMENT QTY[/color] [b][color=FUCHSIA]([/color][/b]setq na sa inc [b][color=NAVY]([/color][/b]/ [b][color=MAROON]([/color][/b]abs ia[b][color=MAROON])[/color][/b] qty[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]repeat [b][color=NAVY]([/color][/b]1+ qty[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq alist [b][color=MAROON]([/color][/b]cons [b][color=GREEN]([/color][/b]polar ce na ra[b][color=GREEN])[/color][/b] alist[b][color=MAROON])[/color][/b] na [b][color=MAROON]([/color][/b]+ sa inc[b][color=MAROON])[/color][/b] sa na[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]not [b][color=MAROON]([/color][/b]equal sp [b][color=GREEN]([/color][/b]car alist[b][color=GREEN])[/color][/b] 0.0001[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq alist [b][color=MAROON]([/color][/b]reverse alist[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]foreach a alist [b][color=NAVY]([/color][/b]setq pl [b][color=MAROON]([/color][/b]cons a pl[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b] [b][color=BLACK]([/color][/b]defun c:test [b][color=FUCHSIA]([/color][/b]/ i pl[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]redraw[b][color=FUCHSIA])[/color][/b] [color=#8b4513]; [b][color=FUCHSIA]([/color][/b]load [color=#2f4f4f]"GRTXT"[/color][b][color=FUCHSIA])[/color][/b][/color] [b][color=FUCHSIA]([/color][/b]setq i 1[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]command [color=#2f4f4f]"_.3DPOLY"[/color][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]foreach v [b][color=NAVY]([/color][/b]setq pl [b][color=MAROON]([/color][/b]findpath [b][color=GREEN]([/color][/b]entlast[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]command v[b][color=NAVY])[/color][/b] [color=#8b4513]; [b][color=NAVY]([/color][/b]grtxt [b][color=MAROON]([/color][/b]rtos i 2 0[b][color=MAROON])[/color][/b] v 4 0[b][color=NAVY])[/color][/b][/color] [b][color=NAVY]([/color][/b]setq i [b][color=MAROON]([/color][/b]1+ i[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]command [color=#2f4f4f]""[/color][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...
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.