FazBear Posted May 8, 2009 Share Posted May 8, 2009 Hi All what is the best way of zooming to a group of selected objects? i have tried (command "zoom" "o") as i would type it directly into the command line but for some reason in the lisp it doesnt work. Anyone any ideas? Quote Link to comment Share on other sites More sharing options...
feargt Posted May 8, 2009 Share Posted May 8, 2009 Is it just a lisp for zooming to objects or does it make up part of another lisp? Quote Link to comment Share on other sites More sharing options...
FazBear Posted May 8, 2009 Author Share Posted May 8, 2009 Its part of a lisp for setting up views on a spool drawing containing 11 viewports, i need it to zoom to the spooled objects (CadDuct) that i have selected. Quote Link to comment Share on other sites More sharing options...
ronjonp Posted May 8, 2009 Share Posted May 8, 2009 You could use the boundingbox of the object and vla-zoomwindow. Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted May 8, 2009 Share Posted May 8, 2009 Maybe this - (supply with selection set) [i][color=#990099];; Zoom Object[/color][/i] [i][color=#990099];; by Lee McDonnell 08.05.2009[/color][/i] [i][color=#990099];; ARGS:[/color][/i] [i][color=#990099];; ss ~ Selection Set[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] ZmObj [b][color=RED]([/color][/b]ss [b][color=BLUE]/[/color][/b] Minp Maxp lst[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]foreach[/color][/b] Obj [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-remove-if[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]listp[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]ssnamex[/color][/b] ss[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-getBoundingBox[/color][/b] Obj [b][color=DARKRED]'[/color][/b]Minp [b][color=DARKRED]'[/color][/b]Maxp[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] lst [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vlax-safearray->list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] Minp Maxp[b][color=RED])[/color][/b][b][color=RED])[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-ZoomWindow[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]min[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]car[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]car[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]min[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]car[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#009999]0.0[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]max[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]car[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]max[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#009999]0.0[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] Quote Link to comment Share on other sites More sharing options...
wizman Posted May 8, 2009 Share Posted May 8, 2009 lee, another way to get max and min of point list is through maxminpnt (defun ZmObj (ss / Minp Maxp lst) (vl-load-com) (foreach Obj (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))) (vla-getBoundingBox Obj 'Minp 'Maxp) (setq lst (cons (mapcar 'vlax-safearray->list (list Minp Maxp)) lst))) (vla-ZoomWindow (vlax-get-acad-object) (vlax-3D-point (car (maxminpnt (mapcar 'car lst)))) (vlax-3D-point (cadr (maxminpnt (mapcar 'cadr lst)))))) Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted May 8, 2009 Share Posted May 8, 2009 I never knew that function existed.... Why is it not recognised by VLIDE? Quote Link to comment Share on other sites More sharing options...
wizman Posted May 8, 2009 Share Posted May 8, 2009 i cant answer why it is not recognized by vlide, just found it also through experiment. Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted May 8, 2009 Share Posted May 8, 2009 i cant answer why it is not recognized by vlide, just found it also through experiment. haha - how on earth did you randomly stumble upon that one... Quote Link to comment Share on other sites More sharing options...
nataca Posted May 9, 2009 Share Posted May 9, 2009 maybe it's function in acad.lsp, express lisp...? Quote Link to comment Share on other sites More sharing options...
ronjonp Posted May 9, 2009 Share Posted May 9, 2009 Maybe this - (supply with selection set) [i][color=#990099];; Zoom Object[/color][/i] [i][color=#990099];; by Lee McDonnell 08.05.2009[/color][/i] [i][color=#990099];; ARGS:[/color][/i] [i][color=#990099];; ss ~ Selection Set[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] ZmObj [b][color=RED]([/color][/b]ss [b][color=BLUE]/[/color][/b] Minp Maxp lst[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]foreach[/color][/b] Obj [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-remove-if[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]listp[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]ssnamex[/color][/b] ss[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-getBoundingBox[/color][/b] Obj [b][color=DARKRED]'[/color][/b]Minp [b][color=DARKRED]'[/color][/b]Maxp[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] lst [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vlax-safearray->list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] Minp Maxp[b][color=RED])[/color][/b][b][color=RED])[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-ZoomWindow[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]min[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]car[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]car[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]min[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]car[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#009999]0.0[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]max[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]car[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]max[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#009999]0.0[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] Lee you give away all the answers ... I was baiting the hook and you cooked the fish. maybe it's just a Swamp thing. *edit No Offense meant towards you Lee....I just belong to another CAD community that leans much more towards teaching than handing over the "whole enchilada". Quote Link to comment Share on other sites More sharing options...
wizman Posted May 9, 2009 Share Posted May 9, 2009 Lee you give away all the answers ... I was baiting the hook and you cooked the fish. maybe it's just a Swamp thing. *edit No Offense meant towards you Lee....I just belong to another CAD community that leans much more towards teaching than handing over the "whole enchilada". that's exactly how i learned lisp, my first lisp question/request was not answered but i was encouraged/challenged to learn by hot tip harry. Learning/teaching in forums is very fun but i learned to practice 2 things also and those are giving respect also not only to the OP but also to our fellow forum members who has given his thoughts/answers already on a particular thread by not answering unless not solved. Second is giving due credit to original authors by not posting there works even they had their names on headers unless we ask their permission. I was zapped before for doing that when i was still learning and now i am still learning... Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted May 9, 2009 Share Posted May 9, 2009 Lee you give away all the answers ... I was baiting the hook and you cooked the fish. maybe it's just a Swamp thing. *edit No Offense meant towards you Lee....I just belong to another CAD community that leans much more towards teaching than handing over the "whole enchilada". I am also a member of the Swamp (haven't been there long though...) No Offence taken by your comments Ron (its takes a lot more than that to offend me... ) I suppose I should try to help the user to the solution - but I like to learn also by seeing if I can create the code required. And hence, when I have made the code, I can't resist the urge to post it, when I have the answer to the OP's problem sitting in front of me. Quote Link to comment Share on other sites More sharing options...
ronjonp Posted May 9, 2009 Share Posted May 9, 2009 I am also a member of the Swamp (haven't been there long though...) No Offence taken by your comments Ron (its takes a lot more than that to offend me... ) I suppose I should try to help the user to the solution - but I like to learn also by seeing if I can create the code required. And hence, when I have made the code, I can't resist the urge to post it, when I have the answer to the OP's problem sitting in front of me. Lee, I completely understand the urge to just give the answer....it's easier than taking the time to teach:P. A lot of times the OP does not even want to learn they just want an answer....so carry on, you help many people here and it is appreciated. Ron Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted May 9, 2009 Share Posted May 9, 2009 Lee, I completely understand the urge to just give the answer....it's easier than taking the time to teach:P. A lot of times the OP does not even want to learn they just want an answer....so carry on, you help many people here and it is appreciated. Ron Thanks Ron, I shall keep your thoughts in mind Lee Quote Link to comment Share on other sites More sharing options...
sivapathasunderam Posted September 18, 2021 Share Posted September 18, 2021 On 5/8/2009 at 8:46 PM, Lee Mac said: Maybe this - (supply with selection set) [i][color=#990099];; Zoom Object[/color][/i] [i][color=#990099];; by Lee McDonnell 08.05.2009[/color][/i] [i][color=#990099];; ARGS:[/color][/i] [i][color=#990099];; ss ~ Selection Set[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] ZmObj [b][color=RED]([/color][/b]ss [b][color=BLUE]/[/color][/b] Minp Maxp lst[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]foreach[/color][/b] Obj [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-remove-if[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]listp[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]ssnamex[/color][/b] ss[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-getBoundingBox[/color][/b] Obj [b][color=DARKRED]'[/color][/b]Minp [b][color=DARKRED]'[/color][/b]Maxp[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] lst [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vlax-safearray->list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] Minp Maxp[b][color=RED])[/color][/b][b][color=RED])[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-ZoomWindow[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]min[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]car[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]car[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]min[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]car[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#009999]0.0[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]max[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]car[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]max[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#009999]0.0[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] Please combine this for me (defun c:moveyourblocks ( / ass x x1 y1 ) (vl-load-com) (setq x1 0.0) (setq y1 0.0) (mapcar '(lambda (x) (setvar 'ctab x) (if (setq ass (ssget "_x" '((0 . "INSERT") (2 . "border-(900x700)")))) (Progn (command "_.cutclip" ass "" ) (command "_tilemode" "1") (command "_.pasteclip" "_Non" (list (setq x1 (+ x1 900)) (setq y1 (+ y1 800)) 0.0)) (command "_.zoom" "_object" (sectionset) "")) (princ "\n--> No Blocks found on the name - border-(900x700)."))) (layoutlist)) (princ)) (defun zmobj (ss / minp maxp lst) (vl-load-com) (foreach obj (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))) (vla-getboundingbox obj 'minp 'maxp) (setq lst (cons (mapcar 'vlax-safearray->list (list minp maxp)) lst))) (vla-zoomwindow (vlax-get-acad-object) (vlax-3d-point (list (apply 'min (mapcar 'car (mapcar 'car lst))) (apply 'min (mapcar 'cadr (mapcar 'car lst))) 0.0)) (vlax-3d-point (list (apply 'max (mapcar 'car (mapcar 'cadr lst))) (apply 'max (mapcar 'cadr (mapcar 'cadr lst))) 0.0)))) Quote Link to comment Share on other sites More sharing options...
BIGAL Posted September 18, 2021 Share Posted September 18, 2021 If reposting old code remove all the BBC coding ie [b][color=RED] it is a known forum problem, also this subject is 12 years old. Quote Link to comment Share on other sites More sharing options...
sivapathasunderam Posted September 19, 2021 Share Posted September 19, 2021 It is a color code for the route to display on the web correct?, I really don't know how it works . . . for me always it shows all black, not showing any color coding Quote Link to comment Share on other sites More sharing options...
enthralled Posted January 23 Share Posted January 23 Once I change the UCS to a selected object and reset the plan to current UCS, the code no longer zooms accurately to selected objects. Can anyone fix this to account for different UCS and plan rotations please? ;;; https://www.cadtutor.net/forum/topic/10334-zoom-to-selected-objects/ ;;; Zoom Object[/i] ;;; by Lee McDonnell 08.05.2009[/i] ;;; ARGS:[/i] ;;; ss ~ Selection Set[/i] (vl-load-com) (defun ZmObj (ss / Minp Maxp lst) (foreach Obj (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))) (vla-getBoundingBox Obj 'Minp 'Maxp) (setq lst (cons (mapcar 'vlax-safearray->list (list Minp Maxp)) lst))) (vla-ZoomWindow (vlax-get-acad-object) (vlax-3D-point (list (apply 'min (mapcar 'car (mapcar 'car lst))) (apply 'min (mapcar 'cadr (mapcar 'car lst))) 0.0)) (vlax-3D-point (list (apply 'max (mapcar 'car (mapcar 'cadr lst)))(apply 'max (mapcar 'cadr (mapcar 'cadr lst))) 0.0)) ) ) (defun c:zz () (ZmObj (ssget)) (princ)) (princ "\nType zz to select & zoom to object(s)") Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted January 23 Share Posted January 23 That's some old code... To account for variation in the UCS & View, you would need to calculate a bounding box relative to the current UCS - consider the following example: (defun c:zz ( / box sel ) (cond ( (not (setq sel (ssget)))) ( (not (setq box (LM:ucsssboundingbox sel (vlax-tmatrix (LM:transmatrix 1 0))))) (princ "\nUnable to obtain UCS selection set bounding box.") ) ( (vla-zoomwindow (vlax-get-acad-object) (vlax-3D-point (trans (car box) 1 0)) (vlax-3D-point (trans (cadr box) 1 0)) ) ) ) (princ) ) ;; UCS Selection Set Bounding Box - Lee Mac ;; Returns a list of the lower-left & upper-right UCS coordinates of a rectangular frame bounding all ;; objects in a supplied selection set following transformation by the supplied transformation matrix ;; sel - [sel] Selection set for which to return bounding box ;; mat - [var] Variant representing a 4x4 transformation matrix (defun LM:ucsssboundingbox ( sel mat / box idx ls1 ls2 obj ) (repeat (setq idx (sslength sel)) (if (setq idx (1- idx) obj (vlax-ename->vla-object (ssname sel idx)) box (LM:ucsboundingbox obj mat) ) (setq ls1 (cons (car box) ls1) ls2 (cons (cadr box) ls2) ) ) ) (if (and ls1 ls2) (mapcar '(lambda ( a b ) (apply 'mapcar (cons a b))) '(min max) (list ls1 ls2)) ) ) ;; UCS Bounding Box - Lee Mac ;; Returns a list of the lower-left & upper-right UCS coordinates of a rectangular frame ;; bounding the supplied object following transformation by the supplied transformation matrix ;; obj - [vla] VLA-Object for which to return bounding box ;; mat - [var] Variant representing a 4x4 transformation matrix (defun LM:ucsboundingbox ( obj mat / cpy llp rtn urp ) (if (and (vlax-write-enabled-p obj) (vlax-method-applicable-p obj 'getboundingbox) (setq cpy (LM:catchapply 'vla-copy (list obj))) (LM:catchapply 'vla-transformby (list cpy mat)) (LM:catchapply 'vla-getboundingbox (list cpy 'llp 'urp)) ) (setq rtn (list (vlax-safearray->list llp) (vlax-safearray->list urp))) ) (if (and (= 'vla-object (type cpy)) (vlax-write-enabled-p cpy)) (vla-delete cpy) ) rtn ) ;; Catch Apply - Lee Mac ;; Applies a function to a list of parameters and catches any exceptions. (defun LM:catchapply ( fnc prm / rtn ) (if (not (vl-catch-all-error-p (setq rtn (vl-catch-all-apply fnc prm)))) (cond ( rtn ) ( t )) ) ) ;; Trans Matrix - Lee Mac ;; Returns a 4x4 matrix encoding a transformation from one coordinate system to another (defun LM:transmatrix ( src dst ) (append (mapcar '(lambda ( v o ) (append (trans v src dst t) (list o)) ) '( (1.0 0.0 0.0) (0.0 1.0 0.0) (0.0 0.0 1.0) ) (trans '(0.0 0.0 0.0) dst src) ) '((0.0 0.0 0.0 1.0)) ) ) (vl-load-com) (princ) 1 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.