无痕兄的意思是对于多个顶点的多段线来说,如果起端边或终端边与另外的线是同线,则应该合并。
无痕兄所说的多端点的polyline所有端点都是在一条直线上么?如果不是那当然不能合并.对于所有端点在同一直线上的polyline,程序只取最外端的两个点,与该polyline的起端边和终端边无关.
哦,知道了。我没仔细看程序,因为不用vba,所以偷懒了一回:)。谢谢释疑
明总的getline函数中,如果选择的实体不是直线或多段线,应该就退不出循环语句了。应该把do放在ThisDrawing.Utility.GetEntity ent, pnt, PromptTxt前
但如果这样,按取消键就不能退出命令。
程序已改过,纠正一个错误.
对于第一根线段为多于3个顶点的polyline,执行到“line1.Coordinates = basepnt”时即出现“FATAL ERROR:Unhandled Access Violation Reading 0x0000 Exception at 6721a714h”错误,然后CAD退出。由于该程序对于3个顶点的polyline能够运行通过,说明polyline的Coordinates属性能够重新定义大小,那么为什么对于更多顶点的polyline就出错呢?我觉得不是我程序的故障,请老大指点迷津。后来经过实验,可以一次减少一个端点.现在我是将多端点的polyline一次减少一个端点,直到只剩2个,然后再合并.
就取头尾两点不行么?为什么一次减少一个端点?
如果多端点的pl线其端点都在一个直线上,它的area属性=0!!!!!
以此可以做出判断
只取头尾两点不能保证是最外侧的两点.
通过调试程序发现,多端点的polyline一次只能减少一个端点,所以要一次减少一个端点,直到只剩两个.
多端点的pl都在一条直线上,如果端点是反复的话(1-3-2-4-5-3),在vb里它的area不是等于0,而是一个非常小的数值
其实可以取出所有点后(包括两个物体),对所有点排序,并判定是否共线。
程序会简洁很多
会么?我现在是只取线段的两个端点(共4个)排序,没道理比取很多点排序复杂吧?
好东西!