明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 927|回复: 0

[【IFoxCAD】] 绘制方柱-JIG应用

  [复制链接]
发表于 2024-8-5 11:45:32 | 显示全部楼层 |阅读模式
本帖最后由 wang2006zhi 于 2025-2-14 12:05 编辑
  1. /// <summary>
  2. /// 绘制方柱
  3. /// </summary>
  4. [CommandMethod("W_HZFZ")]
  5. public static void ColuDraw()
  6. {
  7.     if (!Env.Editor.GetPoint(out Point3d point1, "选择方柱的第一个角点"))
  8.         return;
  9.     var pt1 = point1.Ucs2Wcs();

  10.     using var tr = new DBTrans();
  11.     var layerId = InfoDicLayer[ETypeName.砼柱].MakeLayer();
  12.     var txtTypeId = MakeEntity.MakeTxtStyle();

  13.     var pline = new Polyline();
  14.     pline.SetDatabaseDefaults();
  15.     pline.AddVertexAt(0, pt1.Point2d(), 0, 0, 0);
  16.     pline.AddVertexAt(1, pt1.Point2d(), 0, 0, 0);
  17.     pline.AddVertexAt(2, pt1.Point2d(), 0, 0, 0);
  18.     pline.AddVertexAt(3, pt1.Point2d(), 0, 0, 0);
  19.     pline.Closed = true;
  20.     pline.ConstantWidth = 5;
  21.     pline.LayerId = layerId;

  22.     var dbtextTempX = new DBText();
  23.     dbtextTempX.SetDatabaseDefaults();
  24.     dbtextTempX.Height = AppX.InfoSysValue.基本字高 * AppX.InfoSysValue.制图系数 * 0.5;
  25.     dbtextTempX.WidthFactor = 0.6;
  26.     dbtextTempX.TextStyleId = txtTypeId;
  27.     dbtextTempX.LayerId = layerId;

  28.     var pt2 = new Point2d();

  29.     using var jig1 = new JigEx((mpw, _) =>
  30.     {
  31.         var vec = mpw - pt1;
  32.         var vecXn = vec.Convert2d().GetNormal();
  33.         var length = vec.Length.ToRound(InfoSysValue.方柱模数);
  34.         pt2 = pt1.Point2d() + length * vecXn;
  35.         pline.SetPointAt(1, pt2);

  36.         dbtextTempX.TextString = length.ToString("F3");
  37.         dbtextTempX.Position = pt1 + 0.5 * vec;
  38.         dbtextTempX.Rotation = vecXn.Angle.AngleFormat();
  39.     });
  40.     jig1.DatabaseEntityDraw(wd =>
  41.     {
  42.         wd.Geometry.Draw(pline);
  43.         wd.Geometry.Draw(dbtextTempX);
  44.     });
  45.     jig1.SetOptions(pt1, msg: "\n  选择方柱的第二个点");
  46.     var ppr1 = Env.Editor.Drag(jig1);
  47.     if (ppr1.Status != PromptStatus.OK)
  48.         return;

  49.     var dbtextTempY = new DBText();
  50.     dbtextTempY.SetDatabaseDefaults();
  51.     dbtextTempY.Height = AppX.InfoSysValue.基本字高 * AppX.InfoSysValue.制图系数 * 0.5;
  52.     dbtextTempY.WidthFactor = 0.6;
  53.     dbtextTempY.TextStyleId = txtTypeId;
  54.     dbtextTempY.LayerId = layerId;

  55.     using var jig2 = new JigEx((mpw, _) =>
  56.     {
  57.         var ptFoot = mpw.GetFootPoint(pt1, pt2.Point3d());
  58.         var vec = mpw - ptFoot;
  59.         var vecYn = vec.Convert2d().GetNormal();
  60.         var length = vec.Length.ToRound(InfoSysValue.方柱模数);

  61.         pline.SetPointAt(2, pt2 + length * vecYn);
  62.         pline.SetPointAt(3, pt1.Point2d() + length * vecYn);

  63.         dbtextTempY.TextString = length.ToString("F3");
  64.         dbtextTempY.Position = pt1 + 0.5 * vec;
  65.         dbtextTempY.Rotation = vecYn.Angle.AngleFormat();
  66.     });
  67.     jig2.DatabaseEntityDraw(wd =>
  68.     {
  69.         wd.Geometry.Draw(pline);
  70.         wd.Geometry.Draw(dbtextTempY);
  71.     });
  72.     jig2.SetOptions(pt2.Point3d(), msg: "\n  选择方柱的第三个点");
  73.     var ppr2 = Env.Editor.Drag(jig2);
  74.     if (ppr2.Status != PromptStatus.OK)
  75.         return;
  76.     tr.CurrentSpace.AddEntity(pline);
  77. }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

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

GMT+8, 2025-2-19 06:36 , Processed in 0.153102 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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