本帖最后由 作者 于 2009-2-1 22:33:31 编辑
Dim PL As AcadLWPolyline '声明一条优化(二维)多段线 Dim P(7) As Double '声明优化多段线顶点坐标数组 P(0) = 0: P(1) = 0 '第一个顶点坐标(0,0) P(2) = 10: P(3) = 0 '第二个顶点坐标(10,0) P(4) = 10: P(5) = 10 '第三个顶点坐标(10,10) P(6) = (0): P(7) = 10 '第四个顶点坐标(0,10) Set PL = ThisDrawing.ModelSpace.AddLightWeightPolyline(P) '在模型空间画多段线 PL.SetBulge 1, Tan(ThisDrawing.Utility.AngleToReal(180 / 4, acDegrees)) '把该多段线的第二、三顶点间直线改为圆心角180度的圆弧 上面代码的最后一行使用了优化多段线对象的SetBulge方法,它有两个参数,第一个参数是圆弧起点的顶点索引值(从0开始),这里要把二、三顶点间的线段改为圆弧,所以这个参数用第二个顶点索引也就是1;第二个参数是该圆弧的圆心角的四分之一的正切值,这里用了一个表达式 Tan(ThisDrawing.Utility.AngleToReal(180 / 4, acDegrees)) 其中180 / 4是圆弧圆心角(180度)的四分之一,ThisDrawing.Utility.AngleToReal(180 / 4, acDegrees)是用实用工具集Utility的AngleToReal方法把角度制换算为弧度制,Tan() 是正切函数。 因为想画180度圆弧,180度的四分之一是45度,45度的正切值是1,所以这行也可以直接写成 PL.SetBulge 1, 1 第二个参数可以是正的,也可以是负的。它的正负和圆弧相邻两顶点的位置关系共同决定了圆弧的凸起方向,这和在图形界面用起点、端点、角度画圆弧的道理是一样的。 |