PDA

View Full Version : Flip about itself


Mr Cory
2007-10-29, 11:16 PM
A while ago i was looking for a lisp to flip objects about their own extents, no one seemed to have one which was sweet so i gave up til this morning when i had a brain storm lol works perfectly now :mrgreen: so i thought i'd share seem these forums have been such a great help.
I borrowed bits of code from a few other lisps i had so thanks to the people who helped me with them. :)

(defun c:fy ()
(setq ss1 (ssget))
(command "zoom" "o" ss1 "")
(setq pt1 (getvar "viewctr"))
(setq pt2 (polar pt1 (* pi 0.5) 1.0))
(command "mirror" ss1 "" "_non" pt1 "_non" pt2 "y")
(command "zoom" "p")
(princ))


(defun c:fx ()
(setq ss1 (ssget))
(command "zoom" "o" ss1 "")
(setq pt1 (getvar "viewctr"))
(setq pt2 (polar pt1 0 (* pi 1.0)))
(command "mirror" ss1 "" "_non" pt1 "_non" pt2 "y")
(command "zoom" "p")
(princ))

fixo
2007-10-30, 10:26 AM
Hay, mr. Cory
Minimum code and worked nice for me
I like that,
Cheers :)

~'J'~

Mr Cory
2007-10-30, 09:16 PM
Cheers Oleg :mrgreen:

CAB2k
2007-10-31, 01:02 AM
Here is another version. Took me a lot more code though.
;; Mirror each object on its center
;; CAB 10.29.2007
(defun c:MirrorX () (mirrorXY "x"))
(defun c:MirrorY () (mirrorXY "y"))
(defun MirrorXY (axis / doc dir ss sslst mid p2 NewObj ll ur)
(vl-load-com)
(setq doc (vla-get-activedocument (vlax-get-acad-object))
dir (if (= axis "x")(/ pi 2) pi))
(vla-startundomark doc)
(prompt (strcat "\nMirror each object on its center "axis"-axis."))
(prompt "\nSelect objects to mirror: ")
(if (setq ss (ssget))
(progn
(setq sslst (mapcar 'vlax-ename->vla-object
(vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))))
(foreach obj sslst
(if (not (vl-catch-all-error-p
(vl-catch-all-apply
'(lambda () (vla-getboundingbox obj 'll 'ur)))))
(progn
(setq ll (vlax-safearray->list ll)
ur (vlax-safearray->list ur)
mid (mapcar '(lambda (a b) (* (+ a b) 0.5)) ll ur)
p2 (vlax-invoke (vla-get-Utility doc) 'polarpoint mid dir 1.0)
)
(if (not (vl-catch-all-error-p
(vl-catch-all-apply
'(lambda ()
(setq NewObj (vla-mirror
obj
(vlax-3d-point mid)
(vlax-3d-point p2)))))))
(progn
(vla-delete obj)
(vlax-release-object obj)
(vlax-release-object NewObj)
)
)
)
)
)
)
)
(vla-endundomark doc)
(princ)
)
(prompt "\nMirror Object on its center loaded, Enter MirrorX to run.")
(princ)