jobschan 发表于 2005-4-17 12:59:00

根据交点重新绘制图形?

程序生成了一个由直线首尾相连的闭合回路,现在我想把这个闭合回路,用多义线重新绘制。我是这么想的,用IntersectWith获得直线相交的交点,然后按点绘制多义线。但是不知,此法可行否?而且绘制多义线的时候,如何让它逐点绘制呢?恳请高手指点迷津,谢过先……

cobalt 发表于 2005-4-17 20:09:00

我在VBA中经常碰到类似的问题,我的处理方法如下:


1.首先找到这个闭合回路里面的任意一条直线Line1。其端点为A和B。保存端点A的坐标。


2.对直线的一个端点A进行数学计算延伸其长度得到新的端点A2,从数学上构建一个经过A2和B这两个点的矩形Rect1,可以得到这个矩形的四个顶点E、F、G、H,从而构建一个顶点数组VertexArray。


3.屏幕缩放,确保你说的那个闭合回路被当前视图全部显示出来。然后进行选择,使用SelectByPolygon命令,选择模式为acSelectionSetFence,以VertexArray为选择区域。


4.在得到的选择集中寻找下一条直线。判断条件为两条直线真实相交,且交点即为Line1直线的端点A,这样总是可以找到与直线Line1首尾相交的直线Line2。


5.以直线Line2不与Line1相交的点为A,保存Line2的端点A的坐标。重复以上1~4过程,直到再次找到Line1为止。这样就可以把这个闭合回路中的所有直线照出来。


6.所有保存下来的不同直线端点A的坐标加上起始直线的B端点坐标,就是这个闭合回路的顶点数据。以这些顶点数据,就可以生成多段线了。最后使得多段线的Close为True即可。

jobschan 发表于 2005-4-18 10:25:00

谢过这位仁兄!
页: [1]
查看完整版本: 根据交点重新绘制图形?