IMxDrawCurve 接口
控件中的曲线接口,实现了曲线的相关操作,如求曲线的长度,最近点,面积,曲线上任一点在曲线上的长度 切向方向,曲线交点,坐标变换,打断,偏移,离散等功能。
一、返回曲线组成的闭合区域面积
IMxDrawCurve::GetArea
返回曲线组成的闭合区域面积,具体详细如下:
参数 | 说明 |
---|---|
[out] DOUBLE* pArea |
返回闭合区域面积 |
C#代码计算闭合区域面积:
MxDrawPolyline pl = new MxDrawPolyline();
|
IMxDrawCurve::GetArea2
返回曲线组成的闭合区域面积。
js代码计算闭合区域面积:
将此段代码放入鼠标事件中:
// 得到鼠标位置
|
二、打断曲线
主要用到函数说明:
IMxDrawCurve::SplitCurves
打断曲线,详细说明如下:
参数 | 说明 |
---|---|
[in] IMxDrawResbuf* aryParam |
打断位置参数数组,或打断的点数组,是个MxDrawResbuf对象 |
[out] IMxDrawResbuf** aryNewId |
返回打断后生成的新曲线id,是个MxDrawResbuf对象 |
c#代码实现如下:
private void DoSplitCurves()
|
选择曲线,把曲线从中间1/4 到 3/ 4处断开:
MxDrawUtility mxUtility = new MxDrawUtility();
|
js代码打断曲线实现如下:
var ent = mxOcx.GetEntity( "选择打断的曲线:" );
|
三、得到曲线长度
主要用到函数说明:
IMxDrawCurve::GetLength2
返回曲线长度
js代码得到曲线长度实现如下:
function GetCLength() {
|
四、得到两曲线的交点
IMxDrawEntity::IntersectWith
求两个实体的交点,具体详细如下:
参数 | 说明 |
---|---|
[in] IDispatch* pIntersectObject |
另一个求交实体 |
[in] MCAD_McExtendOption exOption |
求交方式,现在不支持延伸实体求交点 |
[out,retval] IMxDrawPoints** intersectPoints |
返回实体的相交点 |
js代码得到两曲线的交点:
//求曲线的交点
|
四、曲线周围一点到曲线上的最近点
主要用到函数说明:
IMxDrawCurve::GetClosestPointTo2
返回曲线长度,具体说明如下:
参数 | 说明 |
---|---|
[in] IMxDrawPoint* givenPnt |
任一点 |
[in] VARIANT_BOOL isExtend |
暂不支持 |
[out,retval] IMxDrawPoint** pPointOnCurve |
返回曲线上的最近点 |
js代码求曲线周围一点到曲线上的最近点实现如下:
var ent = mxOcx.GetEntity( "选择曲线:" );
|
五、离散曲线
主要用到函数说明:
IMxDrawCurve::GetSamplePoints
离散曲线,具体说明如下:
参数 | 说明 |
---|---|
[in] DOUBLE dApproxEps |
离散后的曲线的最大弧高 |
[out,retval] IMxDrawPoints** ppPointArray |
返回离散的点数组 |
js代码实现如下:
var ent = mxOcx.GetEntity( "选择需要离散的曲线:" );
|
六、偏移
主要用到函数说明:
IMxDrawCurve::OffsetCurves
曲线偏移,具体说明如下:
参数 | 说明 |
---|---|
[in] DOUBLE dOffsetDist |
偏移距离 |
[in] IMxDrawPoint* ptOffsetRef |
偏移方向参考点,曲线向该点所在位置偏移 |
[out] IMxDrawResbuf** aryNewId |
返回偏移后新生成的曲线id数组 |
c#代码实现如下:
private void OffsetCurves()
|
js代码实现如下:
var ent = mxOcx.GetEntity( "选择偏移的曲线:" );
|
七、绘制pl线
js代码实现如下:
function DrawPolyline()
|
八、由曲线上的一点返回该点到曲线开始点的长度
主要用到函数说明:
IMxDrawCurve::GetDistAtPoint
由曲线上的一点返回该点到曲线开始点的长度,具体说明如下:
参数 | 说明 |
---|---|
[in] IMxDrawPoint* point |
曲线上的一点 |
[out] DOUBLE* pDis |
返回到开始点的曲线上长度 |
js代码实现如下:
var ent = mxOcx.GetEntity( "选择曲线:" );
|
九、返回指定参数在曲线上,到开始点的曲线上长度
主要用到函数说明:
IMxDrawCurve::GetDistAtParam
返回指定参数在曲线上,到开始点的曲线上长度,具体说明如下:
参数 | 说明 |
---|---|
[in] DOUBLE dParam |
曲线参数 |
[out] DOUBLE* pDis |
返回到开始点的曲线上长度 |
js代码实现如下:
var ent = mxOcx.GetEntity( "选择曲线:" );
|
十、得到指定参数在曲线上的点坐标
主要用到函数说明:
IMxDrawCurve::GetPointAtParam
得到指定参数在曲线上的点坐标,具体说明如下:
参数 | 说明 |
---|---|
[in] DOUBLE dParam |
曲线上的参数 |
[out] IMxDrawPoint** pPoint |
返回曲线的点 |
js代码实现如下:
var ent = mxOcx.GetEntity( "选择曲线:" );
|
十一、返回曲线上一点在曲线上的参数
主要用到函数说明:
IMxDrawCurve::GetParamAtPoint
返回曲线上一点在曲线上的参数,具体说明如下:
参数 | 说明 |
---|---|
[in] IMxDrawPoint* point |
曲线的点 |
[out] DOUBLE* pParam |
返回曲线上的参数 |
js代码实现如下:
var ent = mxOcx.GetEntity( "选择曲线:" );
|
十二、求曲线参数所在位置的一价导数,这就是切向方向
主要用到函数说明:
IMxDrawCurve::GetFirstDeriv
求曲线参数所在位置的一价导数,这就是切向方向,具体说明如下:
参数 | 说明 |
---|---|
[in] DOUBLE dParam |
曲线参数 |
[out] IMxDrawVector3d** pFirstDeriv |
返回切向方向 |
js代码实现如下:
var ent = mxOcx.GetEntity( "选择曲线:" );
|
十三、返回曲线上到开始点的曲线长度对应的曲线参数
主要用到函数说明:
IMxDrawCurve::GetParamAtDist
返回曲线上到开始点的曲线长度对应的曲线参数,具体说明如下:
参数 | 说明 |
---|---|
[in] DOUBLE dDis |
到开始点的曲线上长度 |
[out] DOUBLE* pParam |
返回曲线参数 |
js代码实现如下:
var ent = mxOcx.GetEntity( "选择曲线:" );
|
原文地址:https://www.cnblogs.com/yzy0224/p/10860909.html