主要用到函数说明:
_DMxDrawX::DrawSolid
绘McDbSolid对象。详细说明如下:
参数 | 说明 |
---|---|
DOUBLE dX1 |
第一个点X |
DOUBLE dY1 |
第一个点Y |
DOUBLE dX2 |
第二个点X |
DOUBLE dY2 |
第二个点Y |
DOUBLE dX3 |
第三个点X |
DOUBLE dY3 |
第三个点Y |
DOUBLE dX4 |
第四个点X |
DOUBLE dY4 |
第四个点Y |
js中实现代码说明:
动态拖放时的绘制事件:
function DynWorldDrawMcDbSolid( pCustomEntity, pWorldDraw, curPt) { //与用户交互在图面上提取一个点 var vFirstPt = pCustomEntity.GetPoint("vFirstPt"); var vSecondPt = pCustomEntity.GetPoint("vSecondPt"); var vThirdPt = pCustomEntity.GetPoint("vThirdPt"); pWorldDraw.DrawSolid(vFirstPt.x, vFirstPt.y,vSecondPt.x, vSecondPt.y, vThirdPt.x, vThirdPt.y, curPt.x, curPt.y); }
动态绘制mcdbsolid对象:
function DrawSolid () { // 创建一个与用户交互取点的对象。 var point1 = mxOcx.GetPoint(false,0,0,"点取第一点:"); if(point1 == null) { return; } var getSecondPt = mxOcx.NewComObject("IMxDrawUiPrPoint"); getSecondPt.message = "点取第二点"; getSecondPt.basePoint = point1; //开启皮筋效果 getSecondPt.setUseBasePt(true); // 开始点第二点。 if (getSecondPt.go() != 1) return; var getThirdPt = mxOcx.NewComObject("IMxDrawUiPrPoint"); getThirdPt.message = "点取第三点"; getThirdPt.basePoint = getSecondPt.value(); //开启皮筋效果 getThirdPt.setUseBasePt(true); // 开始第三点。 if (getThirdPt.go() != 1) return; var getFourthPt = mxOcx.NewComObject("IMxDrawUiPrPoint"); getFourthPt.message = "点取第四点"; var spDrawData = getFourthPt.InitUserDraw("TestDynDrawMcDbSolid"); spDrawData.SetPoint("vFirstPt", point1); spDrawData.SetPoint("vSecondPt", getSecondPt.value()); spDrawData.SetPoint("vThirdPt", getThirdPt.value()); getFourthPt.basePoint = getThirdPt.value(); //不开启皮筋效果 getFourthPt.setUseBasePt(false); //调用 // 开始第四点。 if (getFourthPt.go() != 1) return; var ret = spDrawData.Draw(); }
原文:https://www.cnblogs.com/yzy0224/p/11081238.html