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. UVa 557 Burger (概率+递推)

    题意:有 n 个牛肉堡和 n 个鸡肉堡给 2n 个客人吃,在吃之前抛硬币来决定吃什么,如果剩下的汉堡一样,就不用投了,求最后两个人吃到相同的概率. 析:由于正面考虑还要要不要投硬币,太麻烦,所以我们先 ...

  2. android opengl es 源码

    [转自:http://blog.csdn.net/happyhell/article/details/6086973] The entire OpenGL ES API on Android is i ...

  3. python---socket与socketserver

    1.socket的方socket.getaddrinfo(host, port, family=0, type=0, proto=0, flags=0) #获取要连接的对端主机地址sk.bind(ad ...

  4. lightoj 1027【数学概率】

    #include <bits/stdc++.h> using namespace std; typedef long long LL; const int N=1e2+10; int ma ...

  5. Lightoj 1129【字典树】

    题意:如果存在一个串是另一个串的公共前缀就是NO,否则就是YES 思路:利用字典树的特性搞搞就好了 #include <bits/stdc++.h> using namespace std ...

  6. [題解](最小生成樹/LCA)luogu_P1967貨車運輸

    一道好題不出所料又抄的題解 1.首先對於這張圖肯定要考慮走哪些邊不走哪些邊,發現我們想要的肯定那些邊權最大的邊,所以想到最大生成樹 這樣能保證選到盡量大的邊 2.跑完最大生成樹后每兩點之間就有唯一路徑 ...

  7. 大数加法 HDU 1002

    #include <iostream> #include <cstring> #include <string> #include <cstdio> # ...

  8. Django (五) modeld进阶

    day 05 models进阶 1.models基本操作   django中遵循 Code Frist 的原则,即:根据代码中定义的类来自动生成数据库表. 对于ORM框架里: 我们写的类表示数据库的表 ...

  9. 洛谷 P1121 环状最大两段子段和

    https://www.luogu.org/problemnew/show/P1121 不会做啊... 看题解讲的: 答案的两段可能有两种情况:一是同时包含第1和第n个,2是不同时包含第1和第n个 对 ...

  10. 将GitLab上面的代码克隆到本地

    1.安装GitLab客户端 2.去GitLab服务端找项目路径 3.去GitLab客户端去克隆代码 右键-->git Clone 4.最后结果