santalin 发表于 2018-10-5 12:23:43

【算法精英们】一个分割区域的几何算法,请数学家和大神们讨论下

本帖最后由 santalin 于 2018-10-5 12:39 编辑

用两条多段线切割封闭多段线,求两条封闭多段线间的阴影区域面积,如下图,求算法和代码,大神们看看啊


;选择封闭多段线
(princ "\n 选择封闭多段线:")
(setq epl (ssname (ssget) 0))
(princ "\n 选择两根要用来切割的多段线:")
(setq ss (ssget))
(setq ecut1 (ssname ss 0) ecut2 (ssname ss 1))
(princ "\n 求得封闭多段线切割后的阴影部分面积之和=")
(princ (pl_cutarea epl ecut1 ecut2))
;请大神们帮忙看看这个(pl_cutarea epl ecut1 ecut2)函数算法该怎么写

(defun pl_cutarea (epl ecut1 ecut2 / ret)
        ......
   ret
)

自贡黄明儒 发表于 2018-10-5 12:53:40

面域相交就可以了

santalin 发表于 2018-10-5 13:01:12

自贡黄明儒 发表于 2018-10-5 12:53
面域相交就可以了

面域相交是个好主意,不过LISP的函数是用哪个接口

santalin 发表于 2018-10-5 13:03:26

是不是生成两个面域,用CAD的布尔交集生成新面域,求面域面积,应该是个好主意

santalin 发表于 2018-10-5 13:06:34

本帖最后由 santalin 于 2018-10-6 08:18 编辑

自贡黄明儒 发表于 2018-10-5 12:53
面域相交就可以了
面域可以实现,只是在批量执行过程中,生成面域命令窗口会输出很多提示,有点烦,(setvar "cmdecho" 0)也没用,像MATCHPROP命令也是如此,有没有什么办法让输出窗口不输出这些信息




santalin 发表于 2018-10-5 13:08:30

如果有数学上的的算法自己写个函数比用CAD自带的命令效率更高,又不会出现很多烦人的提示,影响程序输出内容,大神们有兴趣可以考虑下算法

dragoon33333 发表于 2018-10-7 00:29:27

lisp不好实现,怎也也得借助实体图元计算,纯数学算法不好搞呀

mahuan1279 发表于 2018-10-23 09:17:19

可以先转化为求一条多段线与封闭图形的面积,剩下的事就是分别求两条多段线与封闭图形形成的面积,最后求差值。

无尽的手残 发表于 2018-10-24 10:54:15


好代码,学习一下喽
页: [1]
查看完整版本: 【算法精英们】一个分割区域的几何算法,请数学家和大神们讨论下