structo Posted October 19, 2016 Share Posted October 19, 2016 (edited) Hi All, i am new to this site, any lisp program for Points Inserts at each intersection of Lines & at End of lines? here i have attached sample drawing.please provide lisp. Thanks. Points insert at intersections and end of the lines.dwg Edited October 20, 2016 by structo Quote Link to comment Share on other sites More sharing options...
BIGAL Posted October 20, 2016 Share Posted October 20, 2016 I have lost a solution or I called it some thing else so can not find, so here goes, only problem is you will get numerous points where multiple lines meet, so version two would be to remove duplicates. ; notested (defun c:test ( / ss x obj stpt endpt) (setq ss (ssget '((0 . "line")))) (repeat (setq x (sslength ss)) (setq obj (vlax-ename->vla-object(ssname ss (setq x (- x 1))))) (setq stpt (vlax-safearray->list (vlax-variant-value(vla-get-startpoint obj)))) (setq endpt (vlax-safearray->list (vlax-variant-value (vla-get-endpoint obj)))) (command "point" stpt "point" endpt) ) ) Quote Link to comment Share on other sites More sharing options...
structo Posted October 20, 2016 Author Share Posted October 20, 2016 (edited) Well reply BIGAL, yes duplicate points produced. code is good with respect to start and end points of lines. but missing intersection points. please have a look about intersection lines points. Thanks. Edited October 20, 2016 by structo Quote Link to comment Share on other sites More sharing options...
David Bethel Posted October 20, 2016 Share Posted October 20, 2016 It is possible, but would be very inefficient on large files. Are all entities 2D lines ? Are all line the same elevation ? You will need to specify a tolerance value If PDMODE = 0, The point will not be visible -David Quote Link to comment Share on other sites More sharing options...
structo Posted October 20, 2016 Author Share Posted October 20, 2016 Dear DAVID, Are all entities 2D lines ? >Yes Are all line the same elevation ? >Yes You will need to specify a tolerance value > Zero Tolerance If PDMODE = 0, The point will not be visible> Ok Thanks Quote Link to comment Share on other sites More sharing options...
David Bethel Posted October 20, 2016 Share Posted October 20, 2016 You will have to have some type of tolerance due the way REAL numbers are stored. Maybe something like this : [b][color=BLACK]([/color][/b]defun c:line-pt [b][color=FUCHSIA]([/color][/b]/ f pl ss i en ed p10 p11 c cn cd c10 c11 ip[b][color=FUCHSIA])[/color][/b] [color=#8b4513];;;ROUND WITH PRECESSION[/color] [b][color=FUCHSIA]([/color][/b]defun rnd [b][color=NAVY]([/color][/b]n m[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]* m [b][color=MAROON]([/color][/b]fix [b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]if [b][color=RED]([/color][/b]minusp n[b][color=RED])[/color][/b] - +[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]/ n m[b][color=BLUE])[/color][/b] 0.5[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]defun rp3 [b][color=NAVY]([/color][/b]p f[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]rnd [b][color=GREEN]([/color][/b]nth 0 p[b][color=GREEN])[/color][/b] f[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]rnd [b][color=GREEN]([/color][/b]nth 1 p[b][color=GREEN])[/color][/b] f[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]rnd [b][color=GREEN]([/color][/b]nth 2 p[b][color=GREEN])[/color][/b] f[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]initget 6[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq f [b][color=NAVY]([/color][/b]getdist [color=#2f4f4f]"\nFuzz Tolerance <1e-4>: "[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]or f [b][color=NAVY]([/color][/b]setq f 1e-4[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]not ss[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][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]setq i 0[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]setq en [b][color=MAROON]([/color][/b]ssname ss i[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq ed [b][color=MAROON]([/color][/b]entget en[b][color=MAROON])[/color][/b] p10 [b][color=MAROON]([/color][/b]rp3 [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 10 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] f[b][color=MAROON])[/color][/b] p11 [b][color=MAROON]([/color][/b]rp3 [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 11 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] f[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]if [b][color=MAROON]([/color][/b]not [b][color=GREEN]([/color][/b]member p10 pl[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]setq pl [b][color=GREEN]([/color][/b]cons p10 pl[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]if [b][color=MAROON]([/color][/b]not [b][color=GREEN]([/color][/b]member p11 pl[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]setq pl [b][color=GREEN]([/color][/b]cons p11 pl[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] [b][color=FUCHSIA]([/color][/b]princ [color=#2f4f4f]"\nSearching For Intersections...\n"[/color][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]setq en [b][color=MAROON]([/color][/b]ssname ss i[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]princ [color=#2f4f4f]"\r"[/color][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]prin1 en[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq ed [b][color=MAROON]([/color][/b]entget en[b][color=MAROON])[/color][/b] p10 [b][color=MAROON]([/color][/b]cdr [b][color=GREEN]([/color][/b]assoc 10 ed[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] p11 [b][color=MAROON]([/color][/b]cdr [b][color=GREEN]([/color][/b]assoc 11 ed[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] c 0[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]setq cn [b][color=GREEN]([/color][/b]ssname ss c[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]setq cd [b][color=GREEN]([/color][/b]entget cn[b][color=GREEN])[/color][/b] c10 [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 10 cd[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] c11 [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 11 cd[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]and [b][color=GREEN]([/color][/b]setq ip [b][color=BLUE]([/color][/b]inters p10 p11 c10 c11[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq ip [b][color=BLUE]([/color][/b]rp3 ip f[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]not [b][color=BLUE]([/color][/b]member ip pl[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq pl [b][color=BLUE]([/color][/b]cons ip pl[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]setq c [b][color=GREEN]([/color][/b]1+ c[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] [b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"PDMODE"[/color] 3[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]foreach p pl [b][color=NAVY]([/color][/b]entmake [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]cons 0 [color=#2f4f4f]"POINT"[/color][b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 10 p[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] I tried it on 400 lines and it took about 5 seconds. -David Quote Link to comment Share on other sites More sharing options...
structo Posted October 20, 2016 Author Share Posted October 20, 2016 Dear DAVID, thank you for your lisp. now all points are produced. but points are produced not at exact corners and end points. please find attached image. and why asking your lisp Fuzz tolerance? no need to ask. please set as points should be developed at each start, end, intersections of lines. and duplicate points are developed. please modify. Thanks. Quote Link to comment Share on other sites More sharing options...
David Bethel Posted October 20, 2016 Share Posted October 20, 2016 Try setting the tolerance to 1e-14. Comparing points is not an exact process. Especially if 1 of the point values is determined by another calculation call. ie. (inters) or (polar) Or a TRIM or EXTEND function has been applied. (member) tests must be exact equals in order to return T -David Quote Link to comment Share on other sites More sharing options...
structo Posted October 20, 2016 Author Share Posted October 20, 2016 Dear DAVID, After changing to 1e-14, points are producing good. but at some intersection areas, duplicate points are developed. please have a look. and please remove fuzz tolerance option at command prompt box to direct developing of points. Thanks. Quote Link to comment Share on other sites More sharing options...
David Bethel Posted October 20, 2016 Share Posted October 20, 2016 You're not listening very well Try this : Theoretically, these points are equal : (setq p1 (list 1000 3000 0)) (setq tp (inters (polar (list 1000 3000 0) (* pi 0.5) 1000) (polar (list 1000 4000 0) (* pi -0.5) 1000) (polar (list 1000 2000 0) pi 500) (polar (list 1500 2000 0) (* pi 0.5) 2000) )) (princ "\nEqual p1 tp : ") (prin1 (equal p1 tp)) (princ "\nEqual p1 tp 1e-1 : ") (prin1 (equal p1 tp 1e-1)) (princ "\nEqual p1 tp 1e-3 : ") (prin1 (equal p1 tp 1e-3)) (princ "\nEqual p1 tp 1e-5 : ") (prin1 (equal p1 tp 1e-5)) (princ "\nEqual p1 tp 1e-7 : ") (prin1 (equal p1 tp 1e-7)) (princ "\nEqual p1 tp 1e-9 : ") (prin1 (equal p1 tp 1e-9)) (princ "\nEqual p1 tp 1e-11 : ") (prin1 (equal p1 tp 1e-11)) (princ "\nEqual p1 tp 1e-13 : ") (prin1 (equal p1 tp 1e-13)) (princ "\nEqual p1 tp 1e-14 : ") (prin1 (equal p1 tp 1e-14)) But 1e-13 and 1e-14 return nil It is the way computer store numbers that have more than 14 significant digits. Otherwise you are going to have points that appear to be duplicate but are actually close but not exact. Quote Link to comment Share on other sites More sharing options...
marko_ribar Posted October 20, 2016 Share Posted October 20, 2016 (edited) Here, try my untested version... [b][color=#FF0000]([/color][/b][color=BLUE]defun[/color] c:line-pt [b][color=#80FF00]([/color][/b] [color=BLUE]/[/color] ss i li p1 p2 k m li1 li2 ip pl [b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]while[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]not[/color] ss[b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]setq[/color] ss [b][color=#0080FF]([/color][/b][color=BLUE]ssget[/color] '[b][color=#FF00FF]([/color][/b][b][color=#FF0000]([/color][/b]0 . [color=BROWN]"LINE"[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b] [b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]repeat[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]setq[/color] i [b][color=#0080FF]([/color][/b][color=BLUE]sslength[/color] ss[b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]setq[/color] li [b][color=#0080FF]([/color][/b][color=BLUE]ssname[/color] ss [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] i [b][color=#FF0000]([/color][/b][color=BLUE]1-[/color] i[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]setq[/color] p1 [b][color=#0080FF]([/color][/b][color=BLUE]cdr[/color] [b][color=#FF00FF]([/color][/b][color=BLUE]assoc[/color] 10 [b][color=#FF0000]([/color][/b][color=BLUE]entget[/color] li[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]setq[/color] p2 [b][color=#0080FF]([/color][/b][color=BLUE]cdr[/color] [b][color=#FF00FF]([/color][/b][color=BLUE]assoc[/color] 11 [b][color=#FF0000]([/color][/b][color=BLUE]entget[/color] li[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]if[/color] [b][color=#0080FF]([/color][/b][color=BLUE]not[/color] [b][color=#FF00FF]([/color][/b][color=BLUE]vl-member-if[/color] '[b][color=#FF0000]([/color][/b][color=BLUE]lambda[/color] [b][color=#80FF00]([/color][/b] x [b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]equal[/color] x p1 1e-10[b][color=#80FF00])[/color][/b][b][color=#FF0000])[/color][/b] pl[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]setq[/color] pl [b][color=#FF00FF]([/color][/b][color=BLUE]cons[/color] p1 pl[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b] [b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]if[/color] [b][color=#0080FF]([/color][/b][color=BLUE]not[/color] [b][color=#FF00FF]([/color][/b][color=BLUE]vl-member-if[/color] '[b][color=#FF0000]([/color][/b][color=BLUE]lambda[/color] [b][color=#80FF00]([/color][/b] x [b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]equal[/color] x p2 1e-10[b][color=#80FF00])[/color][/b][b][color=#FF0000])[/color][/b] pl[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]setq[/color] pl [b][color=#FF00FF]([/color][/b][color=BLUE]cons[/color] p2 pl[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b] [b][color=#00FFFF])[/color][/b] [b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]setq[/color] i [b][color=#00FFFF]([/color][/b][color=BLUE]sslength[/color] ss[b][color=#00FFFF])[/color][/b] k -1[b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]while[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]<[/color] [b][color=#0080FF]([/color][/b][color=BLUE]setq[/color] k [b][color=#FF00FF]([/color][/b][color=BLUE]1+[/color] k[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b] i[b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]setq[/color] m k[b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]setq[/color] li1 [b][color=#0080FF]([/color][/b][color=BLUE]ssname[/color] ss k[b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]while[/color] [b][color=#0080FF]([/color][/b][color=BLUE]<[/color] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] m [b][color=#FF0000]([/color][/b][color=BLUE]1+[/color] m[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] i[b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]setq[/color] li2 [b][color=#FF00FF]([/color][/b][color=BLUE]ssname[/color] ss m[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]if[/color] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] ip [b][color=#FF0000]([/color][/b][color=BLUE]inters[/color] [b][color=#80FF00]([/color][/b][color=BLUE]cdr[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]assoc[/color] 10 [b][color=#0080FF]([/color][/b][color=BLUE]entget[/color] li1[b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]cdr[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]assoc[/color] 11 [b][color=#0080FF]([/color][/b][color=BLUE]entget[/color] li1[b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]cdr[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]assoc[/color] 10 [b][color=#0080FF]([/color][/b][color=BLUE]entget[/color] li2[b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]cdr[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]assoc[/color] 11 [b][color=#0080FF]([/color][/b][color=BLUE]entget[/color] li2[b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]if[/color] [b][color=#FF0000]([/color][/b][color=BLUE]not[/color] [b][color=#80FF00]([/color][/b][color=BLUE]vl-member-if[/color] '[b][color=#00FFFF]([/color][/b][color=BLUE]lambda[/color] [b][color=#0080FF]([/color][/b] x [b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]equal[/color] x ip 1e-10[b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b] pl[b][color=#80FF00])[/color][/b][b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]setq[/color] pl [b][color=#80FF00]([/color][/b][color=BLUE]cons[/color] ip pl[b][color=#80FF00])[/color][/b][b][color=#FF0000])[/color][/b] [b][color=#FF00FF])[/color][/b] [b][color=#0080FF])[/color][/b] [b][color=#00FFFF])[/color][/b] [b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]foreach[/color] p pl [b][color=#00FFFF]([/color][/b][color=BLUE]entmake[/color] [b][color=#0080FF]([/color][/b][color=BLUE]list[/color] '[b][color=#FF00FF]([/color][/b]0 . [color=BROWN]"POINT"[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]cons[/color] 10 p[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b] [b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]princ[/color][b][color=#80FF00])[/color][/b] [b][color=#FF0000])[/color][/b] HTH, M.R. Edited October 20, 2016 by marko_ribar Quote Link to comment Share on other sites More sharing options...
structo Posted October 20, 2016 Author Share Posted October 20, 2016 DAVID, yes i dont know about lisp programming. i apologies for that, thank you for clarification. how to eliminate duplicates by your lisp. Thanks. Quote Link to comment Share on other sites More sharing options...
Grrr Posted October 20, 2016 Share Posted October 20, 2016 Interesting stuff, David ! Does that mean that the smallest tollerance in AutoCAD is 1e-14 ? If so, then the smallest number would be 1* 1e-14 ? Is there such thing as the smallest and the biggest number in Autocad ? Sorry to spam with questions, but I find this intriguing. Quote Link to comment Share on other sites More sharing options...
structo Posted October 20, 2016 Author Share Posted October 20, 2016 MARKO, your code is good, but duplicates (points) are produced. any solution by your lisp? Thanks. Quote Link to comment Share on other sites More sharing options...
marko_ribar Posted October 20, 2016 Share Posted October 20, 2016 MARKO, your code is good, but duplicates (points) are produced. any solution by your lisp? Thanks. Put little larger number in every appearance of number 1e-10... So try with 1e-8, or 1e-6... Quote Link to comment Share on other sites More sharing options...
structo Posted October 20, 2016 Author Share Posted October 20, 2016 (edited) Put little larger number in every appearance of number 1e-10... So try with 1e-8, or 1e-6... MARKO, Yes, it is working. Thanks. Edited October 20, 2016 by structo Quote Link to comment Share on other sites More sharing options...
David Bethel Posted October 20, 2016 Share Posted October 20, 2016 DAVID,yes i dont know about lisp programming. i apologies for that, thank you for clarification. how to eliminate duplicates by your lisp. Thanks. The same as with Marko's - Adjust the tolerance value Quote Link to comment Share on other sites More sharing options...
David Bethel Posted October 20, 2016 Share Posted October 20, 2016 Interesting stuff, David !Does that mean that the smallest tollerance in AutoCAD is 1e-14 ? Sorry to spam with questions, but I find this intriguing. The smallest on the release I use is 1e-14 The is a largest limit, but I down't remember it Google significant numbers for a better under standing computers store real numbers with whole numbers having having president. With a 15 digit significant limit 10. stores a max of 14 decimals 1000. stores a max of 12 decimals This really comes into play when comparing values (/ 2. 3.) always store the last decimal as 7 Command: (equal 0.666666 (/ 2. 3.))nil Command: (equal 0.666666 (/ 2. 3.) 1e-4)T[code] So by using a tolerance factor, we can force comparisons to workable values. HTH -David Quote Link to comment Share on other sites More sharing options...
BIGAL Posted October 21, 2016 Share Posted October 21, 2016 Grr have a look at this make sure you zoom in on lunar lander foot pad. SOLAR.DWG Quote Link to comment Share on other sites More sharing options...
Grrr Posted October 21, 2016 Share Posted October 21, 2016 grr have a look at this make sure you zoom in on lunar lander foot pad. BIGAL, These are the values I got after zoom extents on everything on that dwg: And this is the maximum possible zoom-in I could do: Ofcourse the luprec variable affects these numbers (valid integers for luprec are from 0 to 8 ), so thats why are shown 8 digits after the comma "." David, The info you provided is really helpful, thanks! I did some tests with your example: _$ (/ 2 3.) 0.666667 _$ (equal 0.666667 (/ 2 3.)) nil _$ (equal 0.666667 (/ 2 3.) 1e-5) T _$ (equal 0.666667 (/ 2 3.) 1e-6) T _$ (equal 0.666667 (/ 2 3.) 1e-7) nil I am not sure if there is a variable to increase/decrease the precision, after the division (/ 2 3.) operation. However I've found the smallest comparsion limit on ACAD2015 which I use: _$ (equal 0.6666666666666667 (/ 2 3.) 1e-16) nil _$ (equal 0.666666666666667 (/ 2 3.) 1e-15) T _$ And the further tests I did, perhaps show the limits: ; comparsion limit: _$ (= (* 1 1e+100) (* 1 1e+101)) nil _$ (= (* 1 1e+1000) (* 1 1e+1001)) T ; maximum/minimum number limit: _$ (* 1 1e+100) 1.0e+100 _$ (* 1 1e+1000) 1.#INF _$ (* 1 1e-100) 1.0e-100 _$ (* 1 1e-1000) 0.0 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.