明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 391|回复: 1

[【IFoxCAD】] 结构详图配筋标注

[复制链接]
发表于 2025-6-8 14:43:47 | 显示全部楼层 |阅读模式
本帖最后由 wang2006zhi 于 2025-6-20 10:26 编辑

  1.     /// <summary>
  2.     ///     结构详图配筋标注
  3.     /// </summary>
  4.     [CommandMethod("W_XTBZ")]
  5.     public static void DimXiangTu()
  6.     {
  7.         if (!Env.Editor.GetPoint(out var getPt, "请点取一个点:"))
  8.             return;
  9.         var infoSysValue = AppX.InfoSysValue;//获取默认参数
  10.         var ct = infoSysValue.出图系数;
  11.         var txtHight = 250;
  12.         var strTxtUp = "上部文字";
  13.         var strTxtDown = "下部文字";
  14.         using var tr = new DBTrans();//开启事务
  15.         var infoDicLayer = infoSysValue.设计模型.GetInfoDicLayer();//获取图层字典
  16.         var txtLayerId = infoDicLayer[ETypeName.文字].MakeLayer();//创建文字标柱图层
  17.         var txtTypeId = MakeEntity.EnumTextStyle.Norm.MakeTxtStyle();//创建文字样式

  18.         var pline = new Polyline();//创建PL线
  19.         pline.SetDatabaseDefaults();
  20.         pline.AddVertexAt(0, getPt.Point2d(), 0, 0, 0);
  21.         pline.AddVertexAt(1, getPt.Point2d(), 0, 0, 0);
  22.         pline.AddVertexAt(2, getPt.Point2d(), 0, 0, 0);
  23.         pline.Closed = false;
  24.         pline.LayerId = txtLayerId;

  25.         var textUp = new DBText();//创建文字Up
  26.         textUp.SetDatabaseDefaults();
  27.         textUp.TextStyleId = txtTypeId;
  28.         textUp.LayerId = txtLayerId;
  29.         textUp.TextString = strTxtUp;
  30.         textUp.Height = txtHight * ct;
  31.         textUp.WidthFactor = 0.7;
  32.         textUp.HorizontalMode = TextHorizontalMode.TextLeft;
  33.         var textUpWidth = textUp.GetRecAng().Rec.Width;

  34.         var textDown = new DBText();
  35.         textDown.SetDatabaseDefaults();
  36.         textDown.TextStyleId = txtTypeId;
  37.         textDown.LayerId = txtLayerId;
  38.         textDown.TextString = strTxtDown;
  39.         textDown.Height = txtHight * ct;
  40.         textDown.WidthFactor = 0.7;
  41.         textDown.HorizontalMode = TextHorizontalMode.TextLeft;
  42.         var textDownWidth = textDown.GetRecAng().Rec.Width;
  43.         var dWidthMax = Math.Max(textUpWidth, textDownWidth);

  44.         var vecX = new Vector3d(1, 0, 0);
  45.         var vecY = new Vector3d(0, 1, 0);

  46.         using var jig = new JigEx((mpw, _) =>
  47.         {
  48.             var vec = mpw - getPt;
  49.             textUp.Position = mpw + vecY * textUp.Height * 0.05;
  50.             textDown.Position = mpw - vecY * textUp.Height * 1.05;
  51.             var ptEnd = mpw + vecX * dWidthMax;

  52.             var drag = vec.DotProduct(vecX);
  53.             if (drag < 0)
  54.             {
  55.                 ptEnd = mpw - vecX * dWidthMax;
  56.                 textUp.Position = ptEnd + vecY * textUp.Height * 0.05;
  57.                 textDown.Position = ptEnd - vecY * textUp.Height * 1.05;
  58.             }

  59.             pline.SetPointAt(1, mpw.Point2d());
  60.             pline.SetPointAt(2, ptEnd.Point2d());
  61.         });
  62.         jig.DatabaseEntityDraw(wd =>
  63.         {
  64.             wd.Geometry.Draw(pline);
  65.             wd.Geometry.Draw(textUp);
  66.             wd.Geometry.Draw(textDown);
  67.         });
  68.         jig.SetOptions("指定放入点:");
  69.         while (true)
  70.         {
  71.             var pr = Env.Editor.Drag(jig);
  72.             if (pr.Status != PromptStatus.OK)
  73.                 return;
  74.             if (strTxtDown.IsNullOrWhiteSpace())
  75.                 tr.CurrentSpace.AddEntity(pline, textUp);
  76.             else
  77.                 tr.CurrentSpace.AddEntity(pline, textUp, textDown);
  78.             return;
  79.         }
  80.     }

回复

使用道具 举报

发表于 2025-6-10 14:23:59 | 显示全部楼层
cad有自带的mleader不用?为防止误导他人已做下沉处理
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-7-4 04:15 , Processed in 0.223845 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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