但我需要这些线的中心距 没有必要重复回答。
您想要单个线或一组线的“cog”?如果它是一组线,那么我会认为“组”是一个单独的实体,因此李的建议应该适用。 这就是我要做的。
从左侧所示的原始线条集(白色)开始。
添加连接线(红色),如中间所示。
执行REGION命令以创建区域,如右侧(红色)所示。
运行MASSPROP命令。结果显示在最右侧的文本框中。
由于每条线的重心位于其中心点,我不确定创建一个以每条线的投影长度为边界的区域是否会给出正确的结果。
我们必须将每条线关于重心的力矩求和(无论它在哪里),这样结果就是零。在我看来,AutoCAD并不是这样做的。
AutoCAD可以处理区域,但这种情况需要处理某种空间框架。我的数学不行 黑暗中的一枪。。。
(defun C:CGLIN ( / ss l i e p1 p2 d pm)
(if
(setq ss (ssget '((0 . "LINE"))))
(progn
(setq l '(0.0 0.0 0.0 0.0))
(repeat (setq i (sslength ss))
(setq e (entget (ssname ss (setq i (1- i))))
p1 (cdr (assoc 10 e))
p2 (cdr (assoc 11 e))
d(distance p1 p2)
pm (mapcar '(lambda (a b) (* (+ a b) 0.5 d)) p1 p2)
)
(setq l (mapcar '+ l (cons d pm)))
)
(entmake
(list
'(0 . "POINT")
(cons 10 (mapcar '(lambda (a) (/ a (car l))) (cdr l)))
)
)
)
)
(princ)
) 也许这两个线程中的解决方案会起作用。
http://www.cadtutor.net/forum/showthread.php?48143-LISP查找多条直线的中点
http://www.cadtutor.net/forum/showthread.php?49675-.线性元素的网格查找COG
页:
1
[2]