|
![](https://clubstatic.excelhome.net/image/common/ico_lz.png)
楼主 |
发表于 2020-7-20 10:06
|
显示全部楼层
三,在图形中画样条曲线
- Sub Spline()
- Dim doct As Object
- Set doct = doc
- If doct Is Nothing Then Exit Sub
- Dim startpt(0 To 2) As Double '起点相切的三维矢量
- Dim endpt(0 To 2) As Double '终点相切的三维矢量
- Dim ptArr(0 To 11) As Double '拟合点
-
- startpt(0) = 1: startpt(1) = 0: startpt(2) = 0
- endpt(0) = 1: endpt(1) = 0: endpt(2) = 0
- ptArr(0) = 1: ptArr(1) = 1: ptArr(2) = 0
- ptArr(3) = 5: ptArr(4) = 5: ptArr(5) = 0
- ptArr(6) = 10: ptArr(7) = 0: ptArr(8) = 0
- ptArr(9) = 20: ptArr(10) = 5: ptArr(11) = 0
- Set splineObj = doct.ModelSpace.AddSpline(ptArr, startpt, endpt) '创建样条曲线
- '-----------------------------------------------------------------------
- '已下为控制样条曲线的属性和方法
- With splineObj
- Dim pt(0 To 2) As Double
- pt(0) = 2: pt(1) = 5: pt(2) = 0
- q = .GetWeight(0) '参数(索引从0开始)返回给定控制点索引的样条曲线权值。
- .SetWeight 0, 10 '参数(索引从0开始,双精度数)设置给定控制点索引的样条曲线权值。
-
- p1 = .IsPeriodic '样条曲线是否周期曲线。
- p2 = .IsPlanar '样条曲线是否二维平面。
- p3 = .IsRational '样条曲线是否为有理的。
-
- .AddFitPoint 1, pt '参数(索引从0开始,坐标数组)按给定索引位置添加拟合点到样条曲线上。
- '如果索引为负数,则点被添加到样条曲线的开始处。如果索引超出了样条曲线的拟合点数量,则点被添加到样条曲线的结束处。
-
- .DeleteFitPoint 0 '参数(索引从0开始)删除样条曲线上给定索引位置的拟合点。
- .SetFitPoint 1, pt '参数(索引从0开始,坐标数组)设置样条曲线的拟合点。
- ptn = .GetFitPoint(1) '参数(索引从0开始)返回给定索引的样条曲线拟合点
-
- J = .Degree '返回样条曲线阶数
- .ElevateOrder 10 '参数(一个大于当前阶数的正整数。最大阶数值为26)提高样条曲线阶数,一旦被提高,它就不能再降低。
- '提高阶数可以提高控制点数
- '注意:样条曲线不再拟合相切,其StartTangent(起点切向)和EndTangent(终点切向)的属性不可访问。
- '编辑样条曲线的唯一办法是通过控制点方法。
- .SetControlPoint 1, pt '参数(索引从0开始,坐标数组)设置样条曲线在给定索引的控制点。
- ptk = .GetControlPoint(1) '参数(索引从0开始)返回给定索引的样条曲线控制点。
- .PurgeFitData '清理样条曲线的拟合点,清理后拟合点不在存在,样条曲线由控制点控制。
- End With
- End Sub
复制代码 创建样条曲线方法,在ModelSpace集合中AddSpline (双精度数组)
该方法有3个参数
第1参数:双精度数组,数组大小必须为3的倍数。和不优化多段线参数一样,但是创建样条曲线是三维曲线有Z轴。
第2参数:起点相切的三维矢量坐标,1维3元素双精度数组。
第3参数:终点相切的三维矢量坐标,1维3元素双精度数组。
代码后半部分是总结出的样条曲线控制方法,已做了详细注释,可以自己去测试一下具体用途。
|
评分
-
1
查看全部评分
-
|