以梦为马,不负韶华

搜索
查看: 686|回复: 0
收起左侧

CAD选择实体成块(网页版)

[复制链接]
发表于 2019-6-27 14:58:04 显示全部楼层 |阅读模式
js代码如下:
  1. //实例化一个构造选择集进行过滤,该类封装了选择集及其处理函数。
  2. var ss = mxOcx.NewSelectionSet();
  3. //构造一个过滤链表
  4. var spFilte = mxOcx.NewResbuf();
  5. //用户选择对象  得到用户选取的实体
  6. ss.Select2(8, null, null, null, spFilte);

  7. var aryId = new Array();
  8. for (var i = 0; i < ss.Count; i++)
  9. {
  10.     var ent = ss.Item(i);
  11.     if (ent != null)
  12.     {
  13.         aryId.push(ent.ObjectID);
  14.         ent.Close();
  15.     }
  16. }
  17. //返回控件的数据库对象
  18. var curDatabase =mxOcx.GetDatabase();
  19. var dMinX = 0, dMinY = 0, dMaxX = 0, dMaxY = 0;
  20. var isFirstEnt = true;
  21. for (var l = 0; l < aryId.length; l++)
  22. {
  23.     var pObj = curDatabase.ObjectIdToObject(aryId[l]);
  24.     if (pObj == null)
  25.         continue;
  26.     var pEnt = pObj;
  27.     if (pEnt == null)
  28.         continue;
  29.     var  points = pEnt.GetBoundingBox2();

  30.     var minPt = points.Item(0);
  31.     var maxPt = points.Item(1);

  32.     if (minPt != null && maxPt != null)
  33.     {
  34.         if(isFirstEnt)
  35.         {
  36.             dMinX = minPt.x;
  37.             dMinY = minPt.y;
  38.             dMaxX = maxPt.x;
  39.             dMaxY = maxPt.y;
  40.             isFirstEnt = false;
  41.         }
  42.         else
  43.         {
  44.             if (dMinX > minPt.x)
  45.                 dMinX = minPt.x;

  46.             if (dMinY > minPt.y)
  47.                 dMinY = minPt.y;

  48.             if (dMaxX < maxPt.x)
  49.                 dMaxX = maxPt.x;

  50.             if (dMaxY < maxPt.y)
  51.                 dMaxY = maxPt.y;
  52.         }
  53.     }
  54. }

  55. if(isFirstEnt)
  56. {
  57.     // 没有实体
  58.     return;
  59. }
  60. var pos = mxOcx.NewPoint();
  61. pos.x = dMinX + (dMaxX - dMinX) / 2.0;
  62. pos.y = dMinY + (dMaxY - dMinY) / 2.0;

  63. // 检查新创建的块名,在当前数据库是否已经存在.

  64. var blkTable = curDatabase.GetBlockTable();
  65. var curSpace = curDatabase.CurrentSpace();

  66. var sNewBlakName;

  67. var blkNewRec = blkTable.Add("");
  68. sNewBlakName = blkNewRec.Name;

  69. blkNewRec.Origin = pos;

  70. for (var l = 0; l < aryId.length; l++)
  71. {

  72.     blkNewRec.AddCloneEntity(aryId[l]);
  73.     // 把以前实体删除 。
  74.     var pObj = curDatabase.ObjectIdToObject(aryId[l]);
  75.     if (pObj == null)
  76.         continue;
  77.     pObj.Erase();
  78. }
  79. if (blkNewRec != null)
  80. {
  81.     var blkRef = curSpace.InsertBlock(pos.x,pos.y, sNewBlakName, 1.0, 0.0);
  82.     var attrib = blkRef.AppendAttribute();
  83.     attrib.Position = pos;
  84.     attrib.AlignmentPoint = pos;
  85.     attrib.Oblique = 0.0;
  86.     attrib.Rotation = 0.0;
  87.     attrib.Height = 2.0;
  88.     attrib.Tag = "TestTag";
  89.     attrib.IsInvisible = false;

  90.     blkRef.Position = blkRef.Position;

  91. }

  92. return;
复制代码

不想打字就选择快捷回复吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|以梦为马,不负韶华

GMT+8, 2025-4-7 12:03

Powered by 以梦为马,不负韶华

© 2024-2099 Meng.Horse

快速回复 返回顶部 返回列表