查看单个帖子
旧 2009-04-28, 03:51 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】绘制一段渐开线

绘制一段渐开线
www.dimcax.com
绘制一段渐开线
我已经计算出一段渐开线的点坐标,如何绘制渐开线

把点坐标放在数组里,然后用向图形添加多段线或样条曲线的的方法创建

从顶点列表创建多段线。
参阅 | 示例
语法
retval = object.addpolyline(verticeslist)
object
modelspace 集合, paperspace 集合, block
使用该方法的对象。
verticeslist
variant[变体] (双精度数组); 仅用于输入
用于创建多段线顶点的ocs坐标数组。每一顶点用三个元素表示,前两个元素为ocs的x和y坐标;而第三个元素为忽略。至少需要两点(六个元素)来构成一个多段线对象。该数组的大小必须为3的倍数。
retval
polyline 对象
新创建的 polyline 对象。
sub example_addpolyline()
' 该示例在模型空间中创建多段线。

dim plineobj as acadpolyline
dim points(0 to 14) as double

' 定义二维多段线顶点
points(0) = 1: points(1) = 1: points(2) = 0
points(3) = 1: points(4) = 2: points(5) = 0
points(6) = 2: points(7) = 2: points(8) = 0
points(9) = 3: points(10) = 2: points(11) = 0
points(12) = 4: points(13) = 4: points(14) = 0

' 在模型空间中创建多段线
set plineobj = thisdrawing.modelspace.addpolyline(points)
zoomall

end sub

创建二次或三次nurbs(非一致有理b样条)曲线。
参阅 | 示例
语法
retval = object.addspline(pointsarray, starttangent, endtangent)
object
modelspace 集合, paperspace 集合, block
使用该方法的对象。
pointsarray
variant[变体] (双精度数组); 仅用于输入
定义样条曲线的三维wcs坐标数组。至少需要两个点(六个元素)来构成 spline 对象。该数组大小必须为3的倍数。
starttangent
variant[变体] (三元素双精度数组); 仅用于输入
指定样条曲线第一点相切的三维矢量。
endtangent
variant[变体] (三元素双精度数组); 仅用于输入
指定样条曲线最后一点相切的三维矢量。
retval
spline 对象
新创建的 spline 对象。
说明
starttangent 和 endtangent 参数指定了样条曲线两个端点的相切矢量。默认时,创建的样条曲线为开放的。要闭合样条曲线,可在样条曲线创建后调用 closed 属性。
sub example_addspline()
' 该示例在模型空间中创建样条曲线对象。
' 创建样条曲线
dim splineobj as acadspline
dim starttan(0 to 2) as double
dim endtan(0 to 2) as double
dim fitpoints(0 to 8) as double

starttan(0) = 0.5: starttan(1) = 0.5: starttan(2) = 0
endtan(0) = 0.5: endtan(1) = 0.5: endtan(2) = 0
fitpoints(0) = 1: fitpoints(1) = 1: fitpoints(2) = 0
fitpoints(3) = 5: fitpoints(4) = 5: fitpoints(5) = 0
fitpoints(6) = 10: fitpoints(7) = 0: fitpoints(8) = 0
set splineobj = thisdrawing.modelspace.addspline(fitpoints, starttan, endtan)
zoomall

end sub

'抛物线程序
public sub pwx()
dim p as double, x as double, y as double, i as integer,point(62) as double
p = 5
for y = -10 to 10
x = y ^ 2 / (2 * p)
point(i) = x
point(i + 1) = y
point(i + 2) = 0
i = i + 3
next y
thisdrawing.modelspace.addpolyline point
thisdrawing.sendcommand "zoom" & vbcr & "e" & vbcr
end sub
点的坐标就在point(62)数组里
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)