在CAD设计时,需要绘制圆弧,用户可以在图面点圆弧起点,圆弧上的一点和圆弧的终点,这样就绘制出圆弧。
主要用到函数说明:
_DMxDrawX::DrawArc2
由圆弧上的三点绘制一个圆弧。详细说明如下:
参数 | 说明 |
---|---|
DOUBLE dStartPointX |
开始点X坐标 |
DOUBLE dStartPointY |
开始点Y坐标 |
DOUBLE dMidPointX |
圆弧上的一点X坐标 |
DOUBLE dMidPointY |
圆弧上的一点Y坐标 |
DOUBLE dEndPointX |
结束点X坐标 |
DOUBLE dEndPointY |
结束点Y坐标 |
IMxDrawCustomEntity::Draw
把实体绘制到图上。一般用于动态拖放时,在拖放结束时,绘制到图上。
_DMxDrawXEvents::DynWorldDraw
动态拖放时的绘制事件。详细说明如下:
参数 | 说明 |
---|---|
DOUBLE dX |
当前鼠标位置X坐标 |
DOUBLE dY |
当前鼠标位置Y坐标 |
IDispatch* pWorldDraw |
IMxDrawWorldDraw对象,用于动态绘制 |
IDispatch* pData |
IMxDrawCustomEntity对象,动态绘制数据 |
js中实现代码说明:
动态拖放时的绘制事件:
function DoDynWorldDrawFun(dX,dY,pWorldDraw,pData) { //自定义实体的GUID标识符 var sGuid = pData.Guid; //设置自定义事件的返回值 mxOcx.SetEventRet(0); if (sGuid == "DrawArc") { //与用户交互到在图上提取一个点 var pt1 = pData.GetPoint("pt1"); if (pt1 == null) return; var pt2 = pData.GetPoint("pt2"); if (pt2 == null) return; //由圆弧上的三点绘制一个圆弧 //参数一为开始点X坐标 ;参数二为开始点Y坐标 ;参数三为结束点X坐标 //参数四为结束点Y坐标 ;参数五为圆弧上的一点X坐标 ;参数六为圆弧上的一点Y坐标 pWorldDraw.DrawArc2(pt1.x, pt1.y, pt2.x, pt2.y, dX, dY); } }
动态绘制圆弧:
function DrawArc() { // 新建一个COM组件对象 var getPt1 = mxOcx.NewComObject("IMxDrawUiPrPoint"); getPt1.message = "指定圆弧的起点"; if (getPt1.go() != 1) { return; } // 新建一个COM组件对象 var getPt2 = mxOcx.NewComObject("IMxDrawUiPrPoint"); getPt2.message = "指定圆弧的第二个点"; //基点 getPt2.basePoint = getPt1.value(); //设置是否启用拖放基点 true:使用,false:不使用 getPt2.setUseBasePt(true); if (getPt2.go() != 1) { return; } // 新建一个COM组件对象 var getPt3 = mxOcx.NewComObject("IMxDrawUiPrPoint"); getPt3.message = "指定圆弧的端点"; //初始动态绘制; 动态绘制Id,在动态绘制函数里,这个值用于判断是那个动态绘制 var spDrawData = getPt3.InitUserDraw("DrawArc"); //设置point类型的属性 spDrawData.SetPoint("pt1", getPt1.value()); spDrawData.SetPoint("pt2", getPt2.value()); if (getPt3.go() != 1) { return; } //把实体绘制到图上。一般用于动态拖放时,在拖放结束时,绘制到图上;返回新绘制的实体的id spDrawData.Draw(); }