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