0
点赞
收藏
分享

微信扫一扫

CAD交互绘制圆弧(网页版)


1、在CAD设计时,需要绘制圆弧,用户可以在图面点圆弧起点,圆弧上的一点和圆弧的终点,这样就绘制出圆弧。

2、主要用到函数说明:_DMxDrawX::DrawArc2

由圆弧上的三点绘制一个圆弧。详细说明如下:

参数

说明

DOUBLE dStartPointX

开始点X坐标

DOUBLE dStartPointY

开始点Y坐标

DOUBLE dMidPointX

圆弧上的一点X坐标

DOUBLE dMidPointY

圆弧上的一点Y坐标

DOUBLE dEndPointX

结束点X坐标

DOUBLE dEndPointY

结束点Y坐标

3、IMxDrawCustomEntity::Draw

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

4、_DMxDrawXEvents::DynWorldDraw

动态拖放时的绘制事件。详细说明如下:

参数

说明

DOUBLE dX

当前鼠标位置X坐标

DOUBLE dY

当前鼠标位置Y坐标

IDispatch* pWorldDraw

IMxDrawWorldDraw对象,用于动态绘制

IDispatch* pData

IMxDrawCustomEntity对象,动态绘制数据

5、js中实现代码说明:

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

​​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);​​
​​}​​
​​}​​

(2)动态绘制圆弧:

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();​​
​​}​​

6、效果展示:

用户可以通过点击绘制圆弧按钮,在CAD控件视区点取圆弧的起点,再点取圆弧第二点,最后点取圆弧的终点。如下图所示:

CAD交互绘制圆弧(网页版)_自定义

举报

相关推荐

0 条评论