js中实现代码说明:

动态拖放时的绘制事件:

  1. function DoDynWorldDrawFun(dX,dY,pWorldDraw,pData) {
  2. //自定义实体的GUID标识符
  3. var sGuid = pData.Guid;
  4. //设置自定义事件的返回值
  5. mxOcx.SetEventRet(0);
  6.  
  7. var curPt = mxOcx.NewPoint();
  8. curPt.x = dX;
  9. curPt.y = dY;
  10. if (sGuid == "DrawCircle") {
  11. var pt1 = pData.GetPoint("pt1");
  12. var dR = curPt.DistanceTo(pt1) * 0.5;
  13. var vec = curPt.SumVector(pt1);
  14. vec.Mult(0.5);
  15. pt1.Add(vec);
  16. pWorldDraw.DrawCircle(pt1.x, pt1.y, dR);
  17. }
  18.  
  19. }

动态拖放时的绘制事件:

  1. function DynWorldDrawComment2( pCustomEntity,pWorldDraw, curPt) {
  2. // 得到绘制参数.
  3.  
  4. var sText = pCustomEntity.GetString("Text");
  5. var dTextHeight = pCustomEntity.GetDouble("TextHeight");
  6. var iEdgeNumber = pCustomEntity.GetLong("EdgeNumber");
  7. var dShapRadius = pCustomEntity.GetDouble("ShapRadius");
  8. var basePoint = pCustomEntity.GetPoint("BasePoint");
  9. // 创建一个批注对象.
  10. var comment = mxOcx.NewEntity("IMxDrawComment");
  11. comment.Text = sText;
  12. comment.TextHeight = dTextHeight;
  13. comment.EdgeNumber = iEdgeNumber;
  14. comment.ShapRadius = dShapRadius;
  15. comment.basePoint = basePoint;
  16. comment.Position = curPt;
  17. // 设置文字样式。
  18. pWorldDraw.TextStyle = "MyCommentFont";
  19. // 动态绘制.
  20. pWorldDraw.DrawEntity(comment);
  21. }

动态绘制文字:

  1. function ExplodeFun(pCustomEntity, pWorldDraw, txt) {
  2. var sGuid = pCustomEntity.Guid;
  3. if (sGuid == "TestMxCustomEntity1") {
  4. if (!pCustomEntity.IsHave("First"))
  5. return;
  6. var stp = pCustomEntity.GetPoint("First");
  7. var ept = pCustomEntity.GetPoint("BasePoint");
  8. var dimpt = pCustomEntity.GetPoint("DimPoint");
  9. var txt = pCustomEntity.GetString("Text");
  10. var textH = pCustomEntity.GetDouble("TextHeight");
  11. var edgeNum = pCustomEntity.GetLong("EdgeNumber");
  12. var shapRadius = pCustomEntity.GetDouble("ShapRadius");
  13. var isCircle = pCustomEntity.GetLong("isCircle");
  14. var comment = mxOcx.NewEntity("IMxDrawComment");
  15. comment.Text = txt;
  16. comment.TextHeight = textH;
  17. comment.EdgeNumber = edgeNum;
  18. comment.ShapRadius = shapRadius;
  19. comment.basePoint = ept;
  20. comment.Position = dimpt;
  21. pWorldDraw.TextStyle = "MyCommentFont";
  22. // 动态绘制.
  23. pWorldDraw.DrawEntity(comment);
  24. // 绘制矩形框.
  25. if (isCircle) {
  26. var dR = stp.DistanceTo(ept) * 0.5;
  27. var vec = stp.SumVector(ept);
  28. vec.Mult(0.5);
  29. ept.Add(vec);
  30. pWorldDraw.DrawCircle(ept.x, ept.y, dR);
  31. }
  32. else {
  33. pWorldDraw.DrawLine(stp.x, stp.y, stp.x, ept.y);
  34. pWorldDraw.DrawLine(stp.x, ept.y, ept.x, ept.y);
  35. pWorldDraw.DrawLine(ept.x, ept.y, ept.x, stp.y);
  36. pWorldDraw.DrawLine(ept.x, stp.y, stp.x, stp.y);
  37. }
  38. mxOcx.SetEventRet(1);
  39. }
  40. }

动态绘制文字:

  1. function DoCloudLineComment() {
  2. var param = mxOcx.NewResbuf();
  3. param.AddString("");
  4. param.AddDouble(100);
  5. var ret = mxOcx.CallEx("Mx_ShowMTextDialog", param);
  6. if (ret.AtString(0) != "Ok") {
  7. return;
  8. }
  9. var txt = ret.AtString(1);
  10. var txtH = ret.AtDouble(2);
  11. var txtColorIndex = ret.AtLong(3);
  12. // 加入换行操作符\\P
  13. //txt = txt + "\\PTEST";
  14. // 创建一个文字样式,用于批注文字字体.
  15. mxOcx.AddTextStyle2("MyCommentFont", "黑体", 0.7);
  16. // 创建一个与用户交互取点的对象。
  17. var getPt = mxOcx.NewComObject("IMxDrawUiPrPoint");
  18. getPt.message = "输入标注插入基点";
  19. // 设置动态绘制参数.
  20. var spDrawData = getPt.InitUserDraw("DrawComment");
  21. spDrawData.SetString("Text", txt);
  22. spDrawData.SetDouble("TextHeight", txtH);
  23. spDrawData.SetLong("EdgeNumber", 0);
  24. spDrawData.SetDouble("ShapRadius", 300);
  25. // 开始取第一个点。
  26. if (getPt.go() != 1)
  27. return;
  28. // 创建一个与用户交互取点的对象。
  29. var getSecondPt = mxOcx.NewComObject("IMxDrawUiPrPoint");
  30. getSecondPt.message = "输入标注位置点";
  31. getSecondPt.basePoint = getPt.value();
  32. getSecondPt.setUseBasePt(false);
  33. spDrawData = getSecondPt.InitUserDraw("DrawComment2");
  34. // 设置动态绘制参数.
  35. spDrawData.SetPoint("BasePoint", getPt.value());
  36. spDrawData.SetString("Text", txt);
  37. spDrawData.SetDouble("TextHeight", txtH);
  38. spDrawData.SetLong("EdgeNumber", 0);
  39. spDrawData.SetDouble("ShapRadius", 300);
  40. // 开始取第二个点。
  41. if (getSecondPt.go() != 1)
  42. return;
  43. var ret = spDrawData.Draw();
  44. // 设置绘制的批注文字样式。
  45. for (var i = 0; i < ret.Count; i++) {
  46. var ent = ret.AtObject(i);
  47. ent.TextStyle = "MyCommentFont";
  48. ent.colorIndex = txtColorIndex;
  49. if(ent.ObjectName == "McDbComment")
  50. {
  51. ent.BoundingBoxType = 4;
  52. ent.ArrowType = 2;
  53. ent.ShapRadius = 40;
  54. }
  55. }
  56. }

CAD交互绘制云线批注(网页版)的更多相关文章

  1. CAD交互绘制样条线(网页版)

    在CAD设计时,需要绘制样条线,用户可以设置样条线线重及颜色等属性. 主要用到函数说明: _DMxDrawX::SendStringToExecuteFun 把命令当着函数执行,可以传参数.详细说明如 ...

  2. CAD参数绘制样条线(网页版)

    在CAD设计时,需要绘制样条线,用户可以设置样条线线重及颜色等属性. 主要用到函数说明: _DMxDrawX::PathLineTo 把路径下一个点移到指定位置.详细说明如下: 参数 说明 DOUBL ...

  3. CAD动态绘制样条线(网页版)

    在CAD设计时,需要绘制样条线,用户可以设置样条线线重及颜色等属性. 主要用到函数说明: _DMxDrawX::SendStringToExecuteFun 把命令当着函数执行,可以传参数.详细说明如 ...

  4. CAD交互绘制mcdbsolid对象(网页版)

    主要用到函数说明: _DMxDrawX::DrawSolid 绘McDbSolid对象.详细说明如下: 参数 说明 DOUBLE dX1 第一个点X DOUBLE dY1 第一个点Y DOUBLE d ...

  5. CAD交互绘制矩形框(网页版)

    主要用到函数说明: _DMxDrawX::DrawLine 绘制一个直线.详细说明如下: 参数 说明 DOUBLE dX1 直线的开始点x坐标 DOUBLE dY1 直线的开始点y坐标 DOUBLE ...

  6. CAD交互绘制样条线(com接口)

    在CAD设计时,需要绘制样条线,用户可以设置样条线线重及颜色等属性. 主要用到函数说明: _DMxDrawX::SendStringToExecuteFun 把命令当着函数执行,可以传参数.详细说明如 ...

  7. CAD参数绘制对齐标注(网页版)

    主要用到函数说明: _DMxDrawX::DrawDimAligned 绘制一个对齐标注.详细说明如下: 参数 说明 DOUBLE dExtLine1PointX 第一条界线开始点X值 DOUBLE ...

  8. CAD参数绘制线型标注(网页版)

    主要用到函数说明: _DMxDrawX::DrawDimRotated 绘制一个线型标注.详细说明如下: 参数 说明 DOUBLE dExtLine1PointX 输入第一条界线的起始点X值 DOUB ...

  9. CAD参数绘制图案填充(网页版)

    绘制工程图,常常需要将某种图案填充到某一区域,例如剖面线的绘制.MxCAD提供了丰富的填充图案,可以利用这些图案进行快速填充. js中实现代码说明: function DrawPathToHatch2 ...

随机推荐

  1. 甩掉 ashx/asmx,使用jQuery.ajaxWebService请求WebMethod,Ajax处理更加简练

    在WebForm下 开发ajax程序,需要借助于一般处理程序(*.ashx)或web服务(*.asmx),并且每一个ajax请求,都要建一个这样的文件,如此一来,如果在一个项目中ajax程序多了,势必 ...

  2. XSL简单实例

    利用xsl可以做到将数据和格式完全分离,下面比较一个xml+css和xml+xsl的区别. XML + css resume.xml文件内容如下: <?xml version="1.0 ...

  3. Spring入门(四):使用Maven管理Spring项目

    让我们先回顾下本系列的前3篇博客: Spring入门(一):创建Spring项目 Spring入门(二):自动化装配bean Spring入门(三):通过JavaConfig装配bean 1.为什么要 ...

  4. 洛谷 - P1390 - 公约数的和 - 莫比乌斯反演 - 欧拉函数

    https://www.luogu.org/problemnew/show/P1390 求 $\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m} gcd(i,j) $ ...

  5. Unity2016 Unity3D开发VR游戏的经验

    http://z.youxiputao.com/articles/8313 在4月12日的Unite 2016大会上,暴风魔镜高级产品经理吴涛分享他用Unity3D开发VR游戏的经验,以下为分享实录: ...

  6. 洛谷P2485 [SDOI2011]计算器(exgcd+BSGS)

    传送门 一题更比三题强 1操作直接裸的快速幂 2操作用exgcd求出最小正整数解 3操作用BSGS硬上 然后没有然后了 //minamoto #include<cstdio> #inclu ...

  7. chmod 详解

    http://man.linuxde.net/chmod chmod u+x,g+w f01 //为文件f01设置自己可以执行,组员可以写入的权限 chmod u=rwx,g=rw,o=r f01 c ...

  8. idea | 命名空间改过后重新导入项目方法

    file菜单-->Open-->找到项目中pom文件-->会提示as project 和as file-->选择as project,会自动生成idea所有相关的文件

  9. python_18(Django基础)

    第1章 web框架的本质 1.1 socket 1.2 空格后面是主体内容 1.3 HTTP协议 1.3.1 响应流程 1.4 HTTP请求方法 1.5 HTTP工作原理 1.6 URL 1.7 HT ...

  10. 遍历list集合的三种方式

    List<String> list1 = new ArrayList<String>(); list1.add("1"); list1.add(" ...