iain9876 Posted December 1, 2009 Share Posted December 1, 2009 Sorry about the miss-spelt title! should be "Low points and high points on a 3d poly"! Does anyone have a routine to put low points and high points on a 3d poly? I have a 3d poly which goes up and down (various sags and crests) over half a mile. I need a routine that puts a cross and the text "HP" for a high point on the crest and "LP" for the low point on a sag in varying locations along this polyline. I know this one is going to be a challenge as the 3d polylines are not curves but straights. Anyone heard of a routine like this or have one? Quote Link to comment Share on other sites More sharing options...
fuccaro Posted December 1, 2009 Share Posted December 1, 2009 Thread title adjusted. Quote Link to comment Share on other sites More sharing options...
fixo Posted December 1, 2009 Share Posted December 1, 2009 Sorry about the miss-spelt title! should be "Low points and high points on a 3d poly"! Does anyone have a routine to put low points and high points on a 3d poly? I have a 3d poly which goes up and down (various sags and crests) over half a mile. I need a routine that puts a cross and the text "HP" for a high point on the crest and "LP" for the low point on a sag in varying locations along this polyline. I know this one is going to be a challenge as the 3d polylines are not curves but straights. Anyone heard of a routine like this or have one? The sample picture would be easier for understanding ~'J'~ Quote Link to comment Share on other sites More sharing options...
David Bethel Posted December 1, 2009 Share Posted December 1, 2009 Here would be a basic starting point: [b][color=BLACK]([/color][/b]defun c:extz3dp [b][color=FUCHSIA]([/color][/b]/ ss i en ed vn vd pl maxz minz[b][color=FUCHSIA])[/color][/b] [color=#8b4513];;;ARG -> point text_value text_size[/color] [b][color=FUCHSIA]([/color][/b]defun make_tick [b][color=NAVY]([/color][/b]p v s[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]entmake [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]cons 10 [b][color=BLUE]([/color][/b]polar p [b][color=RED]([/color][/b]* pi 0.25[b][color=RED])[/color][/b] s[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]cons 11 [b][color=BLUE]([/color][/b]polar p [b][color=RED]([/color][/b]* pi 1.25[b][color=RED])[/color][/b] s[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]entmake [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]cons 10 [b][color=BLUE]([/color][/b]polar p [b][color=RED]([/color][/b]* pi 0.75[b][color=RED])[/color][/b] s[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]cons 11 [b][color=BLUE]([/color][/b]polar p [b][color=RED]([/color][/b]* pi 1.75[b][color=RED])[/color][/b] s[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]entmake [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]cons 0 [color=#2f4f4f]"TEXT"[/color][b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 1 v[b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 6 [color=#2f4f4f]"BYLAYER"[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]cons 7 [color=#2f4f4f]"STANDARD"[/color][b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 8 [color=#2f4f4f]"0"[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]cons 10 p[b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 11 p[b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 39 0.0[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]cons 40 s[b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 41 1.0[b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 62 256[b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 72 4[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 [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget [color=#2f4f4f]"X"[/color] [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"POLYLINE"[/color][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]cons 66 1[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]if [b][color=RED]([/color][/b]getvar [color=#2f4f4f]"CTAB"[/color][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]cons 410 [b][color=PURPLE]([/color][/b]getvar [color=#2f4f4f]"CTAB"[/color][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]cons 67 [b][color=PURPLE]([/color][/b]- 1 [b][color=TEAL]([/color][/b]getvar [color=#2f4f4f]"TILEMODE"[/color][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]cons -4 [color=#2f4f4f]"&"[/color][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]cons 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]setq i [b][color=MAROON]([/color][/b]sslength ss[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]not [b][color=GREEN]([/color][/b]minusp [b][color=BLUE]([/color][/b]setq i [b][color=RED]([/color][/b]1- i[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 en [b][color=GREEN]([/color][/b]ssname ss i[b][color=GREEN])[/color][/b] ed [b][color=GREEN]([/color][/b]entget en[b][color=GREEN])[/color][/b] vn [b][color=GREEN]([/color][/b]entnext en[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=MAROON]([/color][/b]while [b][color=GREEN]([/color][/b]and [b][color=BLUE]([/color][/b]= [color=#2f4f4f]"VERTEX"[/color] [b][color=RED]([/color][/b]cdr [b][color=PURPLE]([/color][/b]assoc 0 vd[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]= 32 [b][color=RED]([/color][/b]cdr [b][color=PURPLE]([/color][/b]assoc 70 vd[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 pl [b][color=BLUE]([/color][/b]cons [b][color=RED]([/color][/b]cdr [b][color=PURPLE]([/color][/b]assoc 10 vd[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] pl[b][color=BLUE])[/color][/b] vn [b][color=BLUE]([/color][/b]entnext vn[b][color=BLUE])[/color][/b] vd [b][color=BLUE]([/color][/b]entget vn[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]foreach v pl [b][color=MAROON]([/color][/b]if [b][color=GREEN]([/color][/b]not maxz[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq maxz v[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]if [b][color=GREEN]([/color][/b]not minz[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq minz v[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]if [b][color=GREEN]([/color][/b]>= [b][color=BLUE]([/color][/b]caddr v[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]caddr maxz[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq maxz v[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]if [b][color=GREEN]([/color][/b]<= [b][color=BLUE]([/color][/b]caddr v[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]caddr minz[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq minz v[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]make_tick minz [color=#2f4f4f]"LP"[/color] 2[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]make_tick maxz [color=#2f4f4f]"HP"[/color] 2[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] Some limits or thing to address: What happens if there are 2 or more points that have the min or max z values Filter only 3DPOLYINEs Uses VERTEX control points only A (ssget) filter to skip curved fitted 3DPOLYs would be nice Adjust the call to make_tick for size Adjust make_tick TEXT values to your needs -David Quote Link to comment Share on other sites More sharing options...
fixo Posted December 1, 2009 Share Posted December 1, 2009 Here would be a basic starting point: Some limits or thing to address: What happens if there are 2 or more points that have the min or max z values Filter only 3DPOLYINEs Uses VERTEX control points only A (ssget) filter to skip curved fitted 3DPOLYs would be nice Adjust the call to make_tick for size Adjust make_tick TEXT values to your needs -David Hi David Nice code as always! I have found one more limit: if the start point or end point have Z=0 program failed ~'J'~ Quote Link to comment Share on other sites More sharing options...
David Bethel Posted December 1, 2009 Share Posted December 1, 2009 if the start point or end point have Z=0program failed That doesn't surprise me Maybe this will help: [b][color=BLACK]([/color][/b]defun c:extz3dp [b][color=FUCHSIA]([/color][/b]/ ss i en ed vn vd pl maxz minz[b][color=FUCHSIA])[/color][/b] [color=#8b4513]; [b][color=FUCHSIA]([/color][/b]*-debug-* 9 [color=#2f4f4f]"extz3pd"[/color][b][color=FUCHSIA])[/color][/b][/color] [color=#8b4513];;;ARG -> point text_value text_size[/color] [b][color=FUCHSIA]([/color][/b]defun make_tick [b][color=NAVY]([/color][/b]p v s[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]entmake [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]cons 10 [b][color=BLUE]([/color][/b]polar p [b][color=RED]([/color][/b]* pi 0.25[b][color=RED])[/color][/b] s[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]cons 11 [b][color=BLUE]([/color][/b]polar p [b][color=RED]([/color][/b]* pi 1.25[b][color=RED])[/color][/b] s[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]entmake [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]cons 10 [b][color=BLUE]([/color][/b]polar p [b][color=RED]([/color][/b]* pi 0.75[b][color=RED])[/color][/b] s[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]cons 11 [b][color=BLUE]([/color][/b]polar p [b][color=RED]([/color][/b]* pi 1.75[b][color=RED])[/color][/b] s[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]entmake [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]cons 0 [color=#2f4f4f]"TEXT"[/color][b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 1 v[b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 6 [color=#2f4f4f]"BYLAYER"[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]cons 7 [color=#2f4f4f]"STANDARD"[/color][b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 8 [color=#2f4f4f]"0"[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]cons 10 p[b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 11 p[b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 39 1e-8[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]cons 40 s[b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 62 256[b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 72 4[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]setq ss [b][color=MAROON]([/color][/b]ssget [color=#2f4f4f]"X"[/color] [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"POLYLINE"[/color][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]if [b][color=RED]([/color][/b]getvar [color=#2f4f4f]"CTAB"[/color][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]cons 410 [b][color=PURPLE]([/color][/b]getvar [color=#2f4f4f]"CTAB"[/color][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]cons 67 [b][color=PURPLE]([/color][/b]- 1 [b][color=TEAL]([/color][/b]getvar [color=#2f4f4f]"TILEMODE"[/color][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]cons -4 [color=#2f4f4f]"<NOT"[/color][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]cons -4 [color=#2f4f4f]"&"[/color][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]cons 70 4[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]cons -4 [color=#2f4f4f]"NOT>"[/color][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]cons -4 [color=#2f4f4f]"&"[/color][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]cons 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]progn [b][color=MAROON]([/color][/b]setq i [b][color=GREEN]([/color][/b]sslength ss[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]while [b][color=GREEN]([/color][/b]not [b][color=BLUE]([/color][/b]minusp [b][color=RED]([/color][/b]setq i [b][color=PURPLE]([/color][/b]1- i[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 en [b][color=BLUE]([/color][/b]ssname ss i[b][color=BLUE])[/color][/b] ed [b][color=BLUE]([/color][/b]entget en[b][color=BLUE])[/color][/b] vn [b][color=BLUE]([/color][/b]entnext en[b][color=BLUE])[/color][/b] vd [b][color=BLUE]([/color][/b]entget vn[b][color=BLUE])[/color][/b] pl nil[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]while [b][color=BLUE]([/color][/b]= [color=#2f4f4f]"VERTEX"[/color] [b][color=RED]([/color][/b]cdr [b][color=PURPLE]([/color][/b]assoc 0 vd[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]setq pl [b][color=RED]([/color][/b]cons [b][color=PURPLE]([/color][/b]cdr [b][color=TEAL]([/color][/b]assoc 10 vd[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] pl[b][color=RED])[/color][/b] vn [b][color=RED]([/color][/b]entnext vn[b][color=RED])[/color][/b] vd [b][color=RED]([/color][/b]entget vn[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq maxz [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]car pl[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] minz [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]car pl[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]foreach v pl [b][color=BLUE]([/color][/b]cond [b][color=RED]([/color][/b][b][color=PURPLE]([/color][/b]equal v [b][color=TEAL]([/color][/b]car maxz[b][color=TEAL])[/color][/b] 1e-8[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=PURPLE]([/color][/b]> [b][color=TEAL]([/color][/b]caddr v[b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]caddr [b][color=OLIVE]([/color][/b]car maxz[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]setq maxz [b][color=TEAL]([/color][/b]list v[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=PURPLE]([/color][/b]equal [b][color=TEAL]([/color][/b]caddr v[b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]caddr [b][color=OLIVE]([/color][/b]car maxz[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b] 1e-8[b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]setq maxz [b][color=TEAL]([/color][/b]cons v maxz[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=PURPLE]([/color][/b]equal v [b][color=TEAL]([/color][/b]car minz[b][color=TEAL])[/color][/b] 1e-8[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=PURPLE]([/color][/b]< [b][color=TEAL]([/color][/b]caddr v[b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]caddr [b][color=OLIVE]([/color][/b]car minz[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]setq minz [b][color=TEAL]([/color][/b]list v[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=PURPLE]([/color][/b]equal [b][color=TEAL]([/color][/b]caddr v[b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]caddr [b][color=OLIVE]([/color][/b]car minz[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b] 1e-8[b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]setq minz [b][color=TEAL]([/color][/b]cons v minz[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]foreach p minz [b][color=BLUE]([/color][/b]make_tick p [color=#2f4f4f]"LP"[/color] 2[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]foreach p maxz [b][color=BLUE]([/color][/b]make_tick p [color=#2f4f4f]"HP"[/color] 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] [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...
Lee Mac Posted December 1, 2009 Share Posted December 1, 2009 This should mark all the Peaks and Troughs on your polyline: ;; High-Low Point ~ Lee McDonnell (Lee Mac) ~ 01.12.2009 (defun c:Hi_Low (/ mk_pt ent i pt dif t1 t2) (vl-load-com) (defun mk_pt (p txt) (entmake (list (cons 0 "LINE") (cons 10 (polar p (/ pi 4.) 2.)) (cons 11 (polar p (/ (* 5 pi) 4.) 2.)))) (entmake (list (cons 0 "LINE") (cons 10 (polar p (/ (* 3 pi) 4.) 2.)) (cons 11 (polar p (/ (* 7 pi) 4.) 2.)))) (entmake (list (cons 0 "TEXT") (cons 40 (getvar "TEXTSIZE")) (cons 1 txt) (cons 10 p) (cons 72 1) (cons 73 1) (cons 11 p)))) (while (progn (setq ent (car (entsel "\nSelect 3D-Polyline: "))) (cond ( (eq 'ENAME (type ent)) (if (eq "POLYLINE" (cdr (assoc 0 (entget ent)))) (if (and (not (eq 8 (logand 8 (cdr (assoc 70 (entget ent)))))) (eq 4 (logand 4 (cdr (assoc 70 (entget ent)))))) (princ "\n** Object Must not have Arc Vertices **") (progn (setq i (1- (vlax-curve-getStartParam ent))) (while (<= (setq i (1+ i)) (vlax-curve-getEndParam ent)) (setq pt (vlax-curve-getPointatParam ent i) dif (cond ( (eq (vlax-curve-getStartParam ent) i) (setq t2 (- (caddr pt) (caddr (vlax-curve-getPointatParam ent (+ i 0.5))))) (if (not (zerop t2)) t2)) ( (eq (vlax-curve-getEndParam ent) i) (setq t2 (- (caddr pt) (caddr (vlax-curve-getPointatParam ent (- i 0.5))))) (if (not (zerop t2)) t2)) (t (setq t1 (- (caddr pt) (caddr (vlax-curve-getPointatParam ent (+ i 0.5)))) t2 (- (caddr pt) (caddr (vlax-curve-getPointatParam ent (- i 0.5))))) (if (not (or (zerop t2) (minusp (/ t1 t2)))) t2)))) (if dif (mk_pt (vlax-curve-getPointatParam ent i) (if (minusp dif) "LP" "HP")))) t)) (princ "\n** Object Must be a 3D-Polyline **")))))) (princ)) Hope this helps, Lee Quote Link to comment Share on other sites More sharing options...
iain9876 Posted December 7, 2009 Author Share Posted December 7, 2009 Lee Mac, that was an awsome bit of clever programming there. 10/10:D Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted December 7, 2009 Share Posted December 7, 2009 Thanks Iain 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.