戏男
发表于 2015-7-28 14:54:22
好复杂 看得我头晕了
GILES.LEI
发表于 2016-10-13 16:36:21
;;; 对大师作品做了一些修改,框选多个闭合图形画质心点 by:langjs;;;
;;; =================
(defun c:XX (/ en ent i obj pt ptls snap ss ss1)
(setvar "cmdecho" 0) ; 关闭命令行显示
(if (setq ss (ssget '((0 . "PLINE,LWPOLYLINE,LINE,ARC,CIRCLE,SPLINE,ELLIPSE"))))
(progn
(setq snap (getvar "osmode"))
(setvar "osmode" 0)
(setq en (entlast))
(command ".region" ss ""); 对选择集做面域
(if en
(progn
(setq ss (ssadd))
(while (setq en (entnext en))
(ssadd en ss)
)
(if (zerop (sslength ss))
(setq ss nil)
)
)
(setq ss (ssget "_x"))
)
(setq ss1 (ssadd))
(repeat (setq i (sslength ss))
(setq ent (ssname ss (setq i (1- i))))
(if (= (cdr (assoc 0 (entget ent))) "REGION"); 如果成功生成面域
(progn
(vl-load-com)
(setq obj (vlax-ename->vla-object ent))
(setq pt (vlax-safearray->list (vlax-variant-value (vla-get-centroid obj)))); 取得质心坐标
(command ".point" pt); 画质心点
(setq ptls (entlast))
(command ".explode" ent); 分解面域
(setq NS (ssget "p"))
(command "Peditaccept" "0" ""); 打开多段线合并询问提示
(command "pedit" "m" NS "" "y" "j" "" ""); 合并
(setq ss1 (ssadd ptls ss1))
)
)
)
(sssetfirst nil ss1); 夹点亮显质心点
(setvar "osmode" snap)
)
(princ "\n没有选择对象.")
)
(setvar "cmdecho" 1) ; 开启命令行显示
(princ)
)
luojie110
发表于 2017-12-27 12:09:41
正好需要啊非常感谢
m809289064j
发表于 2017-12-30 19:50:18
没搞定
半夜星星
发表于 2018-3-16 21:28:34
如果是两个分开的H型钢(2个独立的封闭H形,但是中间是有空隙的)只能画右侧的质心,不知道如何可以画联合的质心呢,还有算其他的一些参数呢
梨子·桃
发表于 2024-2-23 09:35:27
GILES.LEI 发表于 2016-10-13 16:36
;;; 对大师作品做了一些修改,框选多个闭合图形画质心点 by:langjs;;;
;;; ============== ...
大佬,能不能把生成的点改为十字中心线:loveliness: