1、主要用到函数说明:_DMxDrawX::DrawLine

绘制一个直线。详细说明如下:

参数

说明

DOUBLE dX1

直线的开始点x坐标

DOUBLE dY1

直线的开始点y坐标

DOUBLE dX2

直线的结束点x坐标

DOUBLE dY2

直线的结束点y坐标

2、IMxDrawCustomEntity::Draw

把实体绘制到图上。一般用于动态拖放时,在拖放结束时,绘制到图上。

3、js中实现代码说明:

(1)动态拖放时的绘制事件:

function​​​ ​​DynWorldDrawMatrix1( pCustomEntity, pWorldDraw, curPt) {​​
​​//与用户交互在图面上提取一个点​​
​​var​​​ ​​vBasePt = pCustomEntity.GetPoint(​​​​"BasePoint"​​​​);​​
​​//绘制一个直线​​
​​//参数一直线的开始点x坐标,参数二直线的开始点y坐标,参数三直线的结束点x坐标,参数四直线的结束点y坐标​​
​​pWorldDraw.DrawLine (vBasePt.x, vBasePt.y, vBasePt.x, curPt.y);​​
​​pWorldDraw.DrawLine (vBasePt.x, curPt.y, curPt.x, curPt.y);​​
​​pWorldDraw.DrawLine (curPt.x, curPt.y, curPt.x, vBasePt.y);​​
​​pWorldDraw.DrawLine (curPt.x, vBasePt.y, vBasePt.x, vBasePt.y);​​
​​}​​

(2)动态绘制矩形框:

​​function​​​ ​​DrawPathToPolyline() {​​
​​// 创建一个与用户交互取点的对象。​​
​​var​​​ ​​point1 = mxOcx.GetPoint(​​​​false​​​​,0,0,​​​​"\n 点取开始点:"​​​​);​​
​​if​​​​(point1 == ​​​​null​​​​)​​
​​{​​
​​return​​​​;​​
​​}​​
​​var​​​ ​​getSecondPt = mxOcx.NewComObject(​​​​"IMxDrawUiPrPoint"​​​​);​​
​​getSecondPt.message = ​​​​"第二点"​​​​;​​
​​getSecondPt.basePoint = point1;​​
​​//不开启皮筋效果​​
​​getSecondPt.setUseBasePt(​​​​false​​​​);​​
​​//调用​​
​​var​​​ ​​spDrawData = getSecondPt.InitUserDraw(​​​​"TestDynDrawMatrix1"​​​​);​​
​​// 设置动态绘制参数.​​
​​spDrawData.SetPoint(​​​​"BasePoint"​​​​, point1);​​
​​// 开始取第二个点。​​
​​if​​​ ​​(getSecondPt.go() != 1)​​
​​return​​​​;​​
​​var​​​ ​​ret = spDrawData.Draw();​​
​​}​​

4、效果展示:

通过点击绘制矩形框按钮,触发DrawPathToPolyline()事件,则用户可以在CAD控件视区绘制所需的矩形框。如下图所示:

CAD交互绘制矩形框(网页版)_用户交互