最初由 绘图员 发布
[B]请问斑竹:
有没有这样的程序:过曲线上一点M(x,y),画出曲线的法线?
这是我上一个帖子的简化,其他的程序代码我都已形成,就缺这个功能。
经常看你的帖子,在我看来你的经验比我丰富多了。我这个程序节后?.. [/B]
两个办法:
1 xdrx_api(推荐)
- xdrx_getperpline
- 功 能:求AcDbCurve曲线上(line,polyline,lwpolyline,arc,circle,ellipse,spline)
- 任一点的切线和法线角度值(0--2PI)或切线的单位矢量和法线的单位矢量
- 调用格式:(xdrx_getperpline <AcDbCurve实体名> <参考点> [标志])
- 说 明: 若参数[标志]存在且为t, 则返回切线和法线的单位矢量。
- 返 回 值:LISP表 '(切线角度 法线角度) 或 '(切线单位矢量 法线单位矢量)
复制代码
2 ActiveX (方向有时会反,我测试时是这样,不知其他朋友的结果如何)

- 语法
- (vlax-curve-getSecondDeriv curve-obj param)
- 功能
- 返回曲线在指定位置的二阶导数(在 WCS 中)。
-
- 说明
- 1)参数 curve-obj 为要测量的 VLA 对象。
- 2)参数 param 为数值,指定曲线上的参数。
- 返回值:
- 若成功则返回三维矢量表,否则返回 nil。
- 范例
- 假定 splineObj 指向 vlax-curve-getDistAtParam 范例中的样条曲线。
- 1)获取曲线的开始参数:
- _$ (setq stparameter (vlax-curve-getStartParam splineObj))
- 0.0
- 2)获取曲线的结束参数:
- _$ (setq endparameter (vlax-curve-getEndParam splineObj))
- 18.2920
- 3)确定沿曲线中点参数的二阶导数:
- _$ (vlax-curve-getSecondDeriv splineObj
- ( / (- endspline startspline) 2))
- (0.0365863 0.256155 0.0)
|