乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 54|回复: 3

生成截面几何问题

[复制链接]

2

主题

3

帖子

1

银币

初来乍到

Rank: 1

铜币
11
发表于 2018-11-21 11:34:19 | 显示全部楼层 |阅读模式
大家好,
这是我的第一篇文章,所以你好,并提前感谢您的任何帮助!
我只是想知道是否有人能够成功重现生成多个对象的剖面视图?我希望实现“生成部分块”命令的无对话框版本。
在C#中,我试图使用“GenerateSectionGeometry”方法,但运气不好......任何人都可以帮忙吗?
谢谢,
詹姆斯

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2018-11-21 15:27:53 | 显示全部楼层
嗨,詹姆斯,欢迎加入!
GenerateSectionGeometry似乎是一个COM方法,所以我假设您已经加载了相关的设置和库。
您有任何代码要分享以开始使用吗?
另一个选择是HLR(隐藏线删除)引擎,但我不确定是否有. net包装器(?)。这是一个非常强大的工具,可以创建您想要的任何视图/s。
回复

使用道具 举报

2

主题

3

帖子

1

银币

初来乍到

Rank: 1

铜币
11
发表于 2018-11-22 04:33:00 | 显示全部楼层
感谢Mick的回复,
请查看下面我现有的方法(请忽略顶部的零碎部分创建,我已经包括它只是为了给出完整的图片)。
我的问题是GenerateSectionView方法似乎一次只能在单个实体上运行,它从未使用整个对象选择ie运行。(不锈钢。SetGenerationOptions(section type。Section2d,SectionGeneration。source all objects | section generation。DestinationNewBlock);
非常感谢任何帮助...也许是时候深入了解ObjectARX了?再次感谢詹姆斯代码0]
  1. [CommandMethod("CreateView", CommandFlags.UsePickSet | CommandFlags.Redraw | CommandFlags.Modal)]
  2. public void CreateView()
  3. {
  4.         Document doc = Application.DocumentManager.MdiActiveDocument;
  5.         Database db = doc.Database;
  6.         Editor ed = doc.Editor;
  7.         Point3dCollection pts = new Point3dCollection();
  8.         // Get Corner 1
  9.         PromptPointResult ppr1 = ed.GetPoint("\nPick Top Left Corner: ");
  10.         if (ppr1.Status != PromptStatus.OK)
  11.                 return;
  12.         // Get Corner 2
  13.         PromptCornerOptions pco2 = new PromptCornerOptions("\nPick Bottom Right Corner: ", ppr1.Value);
  14.         PromptPointResult ppr2 = ed.GetCorner(pco2);
  15.         if (ppr2.Status != PromptStatus.OK)
  16.                 return;
  17.         // Get Left, Right and Middle Points
  18.         double wHeight = ppr1.Value.Y - ppr2.Value.Y;
  19.         double midPoint = ppr2.Value.Y + (wHeight / 2);
  20.         Point3d lPt = new Point3d(ppr1.Value.X, midPoint, 80000);
  21.         Point3d rPt = new Point3d(ppr2.Value.X, midPoint, 80000);
  22.         pts.Add(lPt);
  23.         pts.Add(rPt);
  24.         // Start Transaction
  25.         using (Transaction tr = db.TransactionManager.StartTransaction())
  26.         {
  27.                 try
  28.                 {
  29.                         BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
  30.                         BlockTableRecord ms = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
  31.                         // Create Section
  32.                         Section sec = new Section(pts, Vector3d.YAxis);
  33.                         sec.State = SectionState.Plane;
  34.                         // Add section to the drawing
  35.                         ObjectId secId = ms.AppendEntity(sec);
  36.                         tr.AddNewlyCreatedDBObject(sec, true);
  37.                         // Set up some of its direct properties and settings
  38.                         sec.SetHeight(SectionHeight.HeightAboveSectionLine, wHeight / 2);
  39.                         sec.SetHeight(SectionHeight.HeightBelowSectionLine, wHeight / 2);
  40.                         SectionSettings ss = (SectionSettings)tr.GetObject(sec.Settings, OpenMode.ForWrite);
  41.                         ss.CurrentSectionType = SectionType.Section2d;
  42.                         ss.SetGenerationOptions(SectionType.Section2d, SectionGeneration.SourceAllObjects | SectionGeneration.DestinationNewBlock);
  43.                        
  44.                         ss.SetVisibility(SectionType.Section2d, SectionGeometry.IntersectionFill, false);
  45.                         ss.SetVisibility(SectionType.Section2d, SectionGeometry.IntersectionFill, false);
  46.                         ss.SetVisibility(SectionType.Section2d, SectionGeometry.CurveTangencyLines, false);
  47.                         ss.SetVisibility(SectionType.Section2d, SectionGeometry.BackgroundGeometry, true);
  48.                         ss.SetHiddenLine(SectionType.Section2d, SectionGeometry.BackgroundGeometry, false);
  49.                         Autodesk.AutoCAD.Colors.Color c = new Autodesk.AutoCAD.Colors.Color();
  50.                         c = Autodesk.AutoCAD.Colors.Color.FromColorIndex(Autodesk.AutoCAD.Colors.ColorMethod.ByLayer, 256);
  51.                         ss.SetColor(SectionType.Section2d, SectionGeometry.BackgroundGeometry, c);
  52.                         ss.SetLayer(SectionType.Section2d, SectionGeometry.BackgroundGeometry, "*_2D");
  53.                         ss.SetLinetype(SectionType.Section2d, SectionGeometry.BackgroundGeometry, "ByLayer");
  54.                         ss.SetLineWeight(SectionType.Section2d, SectionGeometry.BackgroundGeometry, LineWeight.ByLayer);
  55.                        
  56.                         tr.Commit();
  57.                         ed.WriteMessage("\n" + "Section created successfully");
  58.                 }
  59.                 catch (System.Exception ex)
  60.                 {
  61.                         ed.WriteMessage("\nException: " + ex.Message);
  62.                 }
  63.         }
  64. }

回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2018-11-22 14:34:59 | 显示全部楼层
双wHeight=ppr1.Value.Y-ppr2.Value.Y;
如果y1=10和y2=-10 wHeight=20
似乎不需要角,只需选择该部分的2个点
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 10:32 , Processed in 0.185094 second(s), 60 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表