CAD 如何用VBA读取某一根多段线的长度
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CAD 如何用VBA读取某一根多段线的长度相关的知识,希望对你有一定的参考价值。
先定义一个变量为acadpolyline或者AcadLWPolyline,前者是旧的多义线,后面是新版的多义线。然后使用ThisDrawing.Utility.GetEntity 变量名,拾取靶框中心点变量,“描述”。或者建立选择集,只要是name是多段线的全部遍历,适合大批量筛选或者提取。
最后使用“多段线.length”获取多段线的长度。
当然了,读取是读取了,还要写入到text文档里面,不过我一般都是读取到excel里面的。 参考技术A 如果是多段线的话,你可以用 Li 命令,如果单线的话,就只有单段计算了。
多段线步骤如下:单击所要的多段线→在命令框内输入:Li→回车→单击键盘上F2→在图文本框内就有该多段线的长度和面积等信息,请注意的是该数据均为:mm单位。
多段线切割多边形
参考技术A多段线切割多边形,直观上来说首先就是求多段线与多边形之间的交点,然后利用这些交点与多边形顶点构成多边形,这样一个多边形就被切割成多个多边形。如下图所示:
以下图所示的分割为例,做简短说明:
对于上述难点,本文主要是利用geos中构建多边形的方法来解决,尤其是难点1,具体的原理可参考 直线切割凹多边形
1.获取带分割的几何图形,注意该几何图形是线形的,主要包括待切割的闭合环(如多边形的边界)以及分割线;
2.构建多边形,在geos主要是Polygonizer类,获取所有分割的多边形,当然也包括类似C23这样不合理的多边形,下一步是剔除这些多边形;
3.剔除不合理多边形,理论上来说,切割出来的多变如果被原始多边形包含就可以保留,调用geos中的Cover或Contains等拓扑计算便可以,但是在实际操作过程中有两个问题:
(1) 拓扑计算不正确 ,每次返回值都是false,猜测可能是精度问题,因为如果坐标都是整型,可以返回正确结果;
(2) 效率不高 ,相对于contain和within,建议在geos中优先使用cover或coverby。具体可参考 九交模型
所以选取一个折中方案,如下所示:
4.最后得到的就是一个vector集合,数据类型是geos::geom::Polygon*
GEOS库一些自己的见解和注意点
GEOS库学习之三:空间关系、DE-9IM和谓词
以上是关于CAD 如何用VBA读取某一根多段线的长度的主要内容,如果未能解决你的问题,请参考以下文章