ipse Posted July 5, 2013 Posted July 5, 2013 Hi guys, I'm searching a method to select(filter) dimensions with dim roundoff different from 0. Any idea? Ssget or how? Thanks! Quote
marko_ribar Posted July 5, 2013 Posted July 5, 2013 Maybe this, if I understood correctly... [color=#FF0000]([/color][color=BLUE]defun[/color] [color=BLUE]c:ssfiltdimdecimal[/color] [color=#80FF00]([/color] [color=BLUE]/[/color] sss ss i dim d [color=#80FF00])[/color] [color=#80FF00]([/color][color=BLUE]setq[/color] sss [color=#00FFFF]([/color][color=BLUE]ssadd[/color][color=#00FFFF])[/color][color=#80FF00])[/color] [color=#80FF00]([/color][color=BLUE]setq[/color] ss [color=#00FFFF]([/color][color=BLUE]ssget[/color] [color=BROWN]"_:L"[/color] '[color=#0080FF]([/color][color=#FF00FF]([/color]0 . [color=BROWN]"DIMENSION"[/color][color=#FF00FF])[/color][color=#0080FF])[/color][color=#00FFFF])[/color][color=#80FF00])[/color] [color=#80FF00]([/color][color=BLUE]if[/color] ss [color=#00FFFF]([/color][color=BLUE]repeat[/color] [color=#0080FF]([/color][color=BLUE]setq[/color] i [color=#FF00FF]([/color][color=BLUE]sslength[/color] ss[color=#FF00FF])[/color][color=#0080FF])[/color] [color=#0080FF]([/color][color=BLUE]setq[/color] dim [color=#FF00FF]([/color][color=BLUE]ssname[/color] ss [color=#FF0000]([/color][color=BLUE]setq[/color] i [color=#80FF00]([/color][color=BLUE]1-[/color] i[color=#80FF00])[/color][color=#FF0000])[/color][color=#FF00FF])[/color][color=#0080FF])[/color] [color=#0080FF]([/color][color=BLUE]if[/color] [color=#FF00FF]([/color][color=BLUE]not[/color] [color=#FF0000]([/color][color=BLUE]equal[/color] [color=#80FF00]([/color][color=BLUE]fix[/color] [color=#00FFFF]([/color][color=BLUE]setq[/color] d [color=#0080FF]([/color][color=BLUE]cdr[/color] [color=#FF00FF]([/color][color=BLUE]assoc[/color] 42 [color=#FF0000]([/color][color=BLUE]entget[/color] dim[color=#FF0000])[/color][color=#FF00FF])[/color][color=#0080FF])[/color][color=#00FFFF])[/color][color=#80FF00])[/color] d[color=#FF0000])[/color][color=#FF00FF])[/color] [color=#FF00FF]([/color][color=BLUE]ssadd[/color] dim sss[color=#FF00FF])[/color] [color=#0080FF])[/color] [color=#00FFFF])[/color] [color=#00FFFF]([/color][color=BLUE]prompt[/color] [color=BROWN]"\nEmpty selection set - restart routine"[/color][color=#00FFFF])[/color] [color=#80FF00])[/color] [color=#80FF00]([/color][color=BLUE]prompt[/color] [color=BROWN]"\nDimensions with decimal places are highlighted"[/color][color=#80FF00])[/color] [color=#80FF00]([/color][color=BLUE]sssetfirst[/color] [color=BLUE]nil[/color] sss[color=#80FF00])[/color] [color=#80FF00]([/color][color=BLUE]princ[/color][color=#80FF00])[/color] [color=#FF0000])[/color] [color=#FF0000]([/color][color=BLUE]defun[/color] [color=BLUE]c:ssfdd[/color] [color=BLUE]nil[/color] [color=#80FF00]([/color][color=BLUE]c:ssfiltdimdecimal[/color][color=#80FF00])[/color][color=#FF0000])[/color] [color=#FF0000]([/color][color=BLUE]prompt[/color] [color=BROWN]"\nInvoke with : ssfdd"[/color][color=#FF0000])[/color] [color=#FF0000]([/color][color=BLUE]princ[/color][color=#FF0000])[/color] M.R. Quote
ipse Posted July 5, 2013 Author Posted July 5, 2013 I have a dimension 44 mm , then i rounded to 45 (using dim roundoff 5). I want to filter this kind of dimension. Quote
Stefan BMR Posted July 5, 2013 Posted July 5, 2013 (defun filter_round_distance (ss r / ss1 e o) (setq ss1 (ssadd)) (repeat (setq i (sslength ss)) (if (and (vlax-property-available-p (setq o (vlax-ename->vla-object (setq e (ssname ss (setq i (1- i)))))) 'RoundDistance) (equal (vla-get-RoundDistance o) r 1e- ) (setq ss1 (ssadd e ss1)) ) ) ss1 ) (defun C:TEST ( / s n) (if (and (setq s (ssget '((0 . "*DIM*")))) (setq n (getreal "\nRoundoff value: ")) ) (sssetfirst nil (filter_round_distance s n)) ) (princ) ) Quote
marko_ribar Posted July 5, 2013 Posted July 5, 2013 (edited) Try this : [b] [color=#FF0000]([/color][color=BLUE]defun[/color] c:ssfiltdimround [color=#80FF00]([/color] [color=BLUE]/[/color] _round sss ss i dim round d [color=#80FF00])[/color] [color=#80FF00]([/color][color=BLUE]vl-load-com[/color][color=#80FF00])[/color] [color=#80FF00]([/color][color=BLUE]defun[/color] _round [color=#00FFFF]([/color] n d [color=#00FFFF])[/color] [color=#00FFFF]([/color][color=BLUE]if[/color] [color=#0080FF]([/color][color=BLUE]<[/color] [color=#FF00FF]([/color][color=BLUE]-[/color] n [color=#FF0000]([/color][color=BLUE]*[/color] [color=#80FF00]([/color][color=BLUE]fix[/color] [color=#00FFFF]([/color][color=BLUE]/[/color] n d[color=#00FFFF])[/color][color=#80FF00])[/color] d[color=#FF0000])[/color][color=#FF00FF])[/color] [color=#FF00FF]([/color][color=BLUE]/[/color] d 2.0[color=#FF00FF])[/color][color=#0080FF])[/color] [color=#0080FF]([/color][color=BLUE]*[/color] [color=#FF00FF]([/color][color=BLUE]fix[/color] [color=#FF0000]([/color][color=BLUE]/[/color] n d[color=#FF0000])[/color][color=#FF00FF])[/color] d[color=#0080FF])[/color] [color=#0080FF]([/color][color=BLUE]*[/color] [color=#FF00FF]([/color][color=BLUE]+[/color] 1.0 [color=#FF0000]([/color][color=BLUE]fix[/color] [color=#80FF00]([/color][color=BLUE]/[/color] n d[color=#80FF00])[/color][color=#FF0000])[/color][color=#FF00FF])[/color] d[color=#0080FF])[/color] [color=#00FFFF])[/color] [color=#80FF00])[/color] [color=#80FF00]([/color][color=BLUE]setq[/color] sss [color=#00FFFF]([/color][color=BLUE]ssadd[/color][color=#00FFFF])[/color][color=#80FF00])[/color] [color=#80FF00]([/color][color=BLUE]setq[/color] ss [color=#00FFFF]([/color][color=BLUE]ssget[/color] [color=BROWN]"_:L"[/color] '[color=#0080FF]([/color][color=#FF00FF]([/color]0 . [color=BROWN]"DIMENSION"[/color][color=#FF00FF])[/color][color=#0080FF])[/color][color=#00FFFF])[/color][color=#80FF00])[/color] [color=#80FF00]([/color][color=BLUE]if[/color] ss [color=#00FFFF]([/color][color=BLUE]repeat[/color] [color=#0080FF]([/color][color=BLUE]setq[/color] i [color=#FF00FF]([/color][color=BLUE]sslength[/color] ss[color=#FF00FF])[/color][color=#0080FF])[/color] [color=#0080FF]([/color][color=BLUE]setq[/color] dim [color=#FF00FF]([/color][color=BLUE]ssname[/color] ss [color=#FF0000]([/color][color=BLUE]setq[/color] i [color=#80FF00]([/color][color=BLUE]1-[/color] i[color=#80FF00])[/color][color=#FF0000])[/color][color=#FF00FF])[/color][color=#0080FF])[/color] [color=#0080FF]([/color][color=BLUE]if[/color] [color=#FF00FF]([/color][color=BLUE]vlax-property-available-p[/color] [color=#FF0000]([/color][color=BLUE]vlax-ename->vla-object[/color] dim[color=#FF0000])[/color] 'rounddistance[color=#FF00FF])[/color] [color=#FF00FF]([/color][color=BLUE]progn[/color] [color=#FF0000]([/color][color=BLUE]setq[/color] round [color=#80FF00]([/color][color=BLUE]vla-get-rounddistance[/color] [color=#00FFFF]([/color][color=BLUE]vlax-ename->vla-object[/color] dim[color=#00FFFF])[/color][color=#80FF00])[/color][color=#FF0000])[/color] [color=#FF0000]([/color][color=BLUE]if[/color] [color=#80FF00]([/color][color=BLUE]not[/color] [color=#00FFFF]([/color][color=BLUE]equal[/color] [color=#0080FF]([/color][color=BLUE]setq[/color] d [color=#FF00FF]([/color][color=BLUE]vla-get-measurement[/color] [color=#FF0000]([/color][color=BLUE]vlax-ename->vla-object[/color] dim[color=#FF0000])[/color][color=#FF00FF])[/color][color=#0080FF])[/color] [color=#0080FF]([/color][color=BLUE]vl-catch-all-apply[/color] '_round [color=#FF00FF]([/color][color=BLUE]list[/color] d round[color=#FF00FF])[/color][color=#0080FF])[/color][color=#00FFFF])[/color][color=#80FF00])[/color] [color=#80FF00]([/color][color=BLUE]if[/color] [color=#00FFFF]([/color][color=BLUE]/=[/color] round 0.0[color=#00FFFF])[/color] [color=#00FFFF]([/color][color=BLUE]ssadd[/color] dim sss[color=#00FFFF])[/color][color=#80FF00])[/color] [color=#FF0000])[/color] [color=#FF00FF])[/color] [color=#0080FF])[/color] [color=#00FFFF])[/color] [color=#00FFFF]([/color][color=BLUE]prompt[/color] [color=BROWN]"\nEmpty selection set - restart routine"[/color][color=#00FFFF])[/color] [color=#80FF00])[/color] [color=#80FF00]([/color][color=BLUE]prompt[/color] [color=BROWN]"\nDimensions witch are rounded and have rounddistance are highlighted"[/color][color=#80FF00])[/color] [color=#80FF00]([/color][color=BLUE]sssetfirst[/color] [color=BLUE]nil[/color] sss[color=#80FF00])[/color] [color=#80FF00]([/color][color=BLUE]princ[/color][color=#80FF00])[/color] [color=#FF0000])[/color] [color=#FF0000]([/color][color=BLUE]defun[/color] c:ssfdr [color=BLUE]nil[/color] [color=#80FF00]([/color]c:ssfiltdimround[color=#80FF00])[/color][color=#FF0000])[/color] [color=#FF0000]([/color][color=BLUE]prompt[/color] [color=BROWN]"\nInvoke with : ssfdr"[/color][color=#FF0000])[/color] [color=#FF0000]([/color][color=BLUE]princ[/color][color=#FF0000])[/color] [/b] M.R. Edited July 5, 2013 by marko_ribar added (vl-catch-all-apply) in case of rounddistance 0.0 Quote
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.