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

好东西!
页: 1 [2] 3
查看完整版本: 合并一根直线上的两根线段