本帖最后由 tigcat 于 2022-3-6 21:51 编辑
 - ;仅交流,不知道改的谁的了;注意事项1:程序不能用于直线(直线求形心俺不会)
- ;注意事项2:程序求形心未考虑多段线的面积(可补充函数获取面积来修正)
- (defun c:tt5 (/ ss i x0 y0 pt num e)
- ;;; (setvar "cmdecho" 0)
- (setq ss (ssget
- '((0 . "PLINE,LWPOLYLINE,LINE,ARC,CIRCLE,SPLINE,ELLIPSE"))
- )
- i -1
- x0 0
- y0 0
- num (sslength ss)
- )
- (while (setq e (ssname ss (setq i (1+ i))))
- (setq pt (centroid e)
- x0 (+ x0 (car pt))
- y0 (+ y0 (cadr pt))
- )
- (command "point" pt)
- )
- (command "point" "non"
- (list (/ x0 num) (/ y0 num))
- )
- (princ)
- )
- ;; 闭合曲线质心子函数by_xyp
- (defun Centroid (s1 / s2 pt)
- (vl-load-com)
- (command "copy" s1 "" '(0 0) '(0 0))
- (command "region" (entlast) "")
- (setq s2 (entlast)
- pt (vlax-get (vlax-ename->vla-object s2) 'Centroid)
- )
- (entdel s2)
- pt
- ;;; (princ)
- )
|