如何用用VBA绘制带圆弧的多样线
本帖最后由 作者 于 2009-2-1 14:28:20 编辑 <br /><br /> <p>在论坛里只找到纯直线的多样线VBA绘制方法,但是不知道带圆弧的要怎么绘制。请大侠们帮帮忙。。。帖个例程给我。</p> 本帖最后由 作者 于 2009-2-1 22:33:31 编辑 <br /><br /> <p>Dim PL As AcadLWPolyline '声明一条优化(二维)多段线<br/>Dim P(7) As Double '声明优化多段线顶点坐标数组<br/>P(0) = 0: P(1) = 0 '第一个顶点坐标(0,0)<br/>P(2) = 10: P(3) = 0 '第二个顶点坐标(10,0)<br/>P(4) = 10: P(5) = 10 '第三个顶点坐标(10,10)<br/>P(6) = (0): P(7) = 10 '第四个顶点坐标(0,10)<br/>Set PL = ThisDrawing.ModelSpace.AddLightWeightPolyline(P) '在模型空间画多段线<br/>PL.SetBulge 1, Tan(ThisDrawing.Utility.AngleToReal(180 / 4, acDegrees)) '把该多段线的第二、三顶点间直线改为圆心角180度的圆弧</p><p></p><p>上面代码的最后一行使用了优化多段线对象的SetBulge方法,它有两个参数,第一个参数是圆弧起点的顶点索引值(从0开始),这里要把二、三顶点间的线段改为圆弧,所以这个参数用第二个顶点索引也就是1;第二个参数是该圆弧的圆心角的四分之一的正切值,这里用了一个表达式</p><p>Tan(ThisDrawing.Utility.AngleToReal(180 / 4, acDegrees))</p><p>其中180 / 4是圆弧圆心角(180度)的四分之一,ThisDrawing.Utility.AngleToReal(180 / 4, acDegrees)是用实用工具集Utility的AngleToReal方法把角度制换算为弧度制,Tan() 是正切函数。</p><p>因为想画180度圆弧,180度的四分之一是45度,45度的正切值是1,所以这行也可以直接写成</p><p>PL.SetBulge 1, 1</p><p>第二个参数可以是正的,也可以是负的。它的正负和圆弧相邻两顶点的位置关系共同决定了圆弧的凸起方向,这和在图形界面用起点、端点、角度画圆弧的道理是一样的。</p> 本帖最后由 作者 于 2009-2-3 11:50:34 编辑 <br /><br /> <p> 问题又来了,如图中的一个打散的形状。。。非曲样线。。我如何用程序判断 Tan的正与负呢???。。。也就是弧的方向要怎么判断。</p><p></p><p></p><p>再请高手指点一下,我试了很多方法,还是没用。结果生成的曲线还是乱七八糟的。</p> <p>我前面说过,这和在图形界面用起点、端点、角度画圆弧的道理是一样的。Tan如果是正的,就从起点到端点逆时针画弧;如果是负的,就顺时针画弧。</p> 本帖最后由 作者 于 2009-2-7 20:56:10 编辑 <br /><br /> <p>问题就在于。我如何去判断 这个TAN的正负。。是用程序来判断...而不是我用手工去判断。。</p><p></p><p>TAN 正负代表不同的方向。我已经知道了。。。。问题就在于我如果去判断原先的图中的圆弧的方向。。。是用程序去判断,而且不是手工。。不是手工。。。。。</p>
页:
[1]