parkerdepriest Posted January 4, 2013 Share Posted January 4, 2013 Hi everyone, here's what I'm trying to do: I have a lot of curved bridge girders, and I am using MASSPROP to find the centroid location, and then manually typing in the centroid coordinates as the center point of a sphere. Awhile back, I found this code that is supposed to do precisely that, but these days it is adding a sphere at a corner point, not the centroid. Any help would be greatly appreciated! (defun c:masscent(/ sset1 slng1 cnt1 cnt2 clist sent1 xlist ylist zlist xpt ypt zpt cpt rad vol1 vlist ucp) (vl-cmdf "._undo" "_end") (vl-cmdf "._undo" "_group") (vl-cmdf "._ucs" "_w") (prompt "\nSelect solids for centroid location. ") (setq sset1 (ssget) slng1 (sslength sset1) cnt1 0 cnt2 0 clist nil ) (repeat slng1 (setq sent1 (vlax-ename->vla-object (ssname sset1 cnt2))) (if (vlax-property-available-p sent1 "Centroid") (progn (setq clist (append clist (list (vlax-get sent1 "Centroid")))) (setq vlist (append vlist (list (vlax-get sent1 "Volume")))) (setq cnt1 (1+ cnt1)) ) ) (Setq cnt2 (1+ cnt2)) ) (setq xlist (mapcar 'car clist)) (setq xpt (car xlist)) (setq ylist (mapcar 'cadr clist)) (setq ypt (car ylist)) (setq zlist (mapcar 'caddr clist)) (Setq zpt (car zlist)) (setq vol1 (car vlist)) (repeat (fix (- (vl-list-length clist) 1)) (setq xlist (cdr xlist)) (setq xpt (+ xpt (car xlist))) (setq ylist (cdr ylist)) (setq ypt (+ ypt (car ylist))) (setq zlist (cdr zlist)) (setq zpt (+ zpt (car zlist))) (setq vlist (cdr vlist)) (Setq vol1 (+ vol1 (car vlist))) ) (setq cpt (list xpt ypt zpt)) (setq cpt (mapcar '(lambda (x) (/ x cnt1)) cpt)) (setq vol1 (strcat (rtos vol1 2 5) " cu. in.")) (setq rad (getreal "\nEnter radius: ")) (vl-cmdf "._sphere" cpt rad) (vl-cmdf "._ucs" "_p") (vl-cmdf "._undo" "_end") (princ "\n") (princ "Centroid point: ") (princ cpt) (princ (strcat " - Volume: " vol1)) (princ) ) Quote Link to comment Share on other sites More sharing options...
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.