乐筑天下

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

使用自己的描述添加/修改特征线集

[复制链接]

30

主题

125

帖子

30

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
218
发表于 2015-10-18 05:50:05 | 显示全部楼层 |阅读模式
你好
在COM-API中有点混乱。是否可以为描述设置名称?
  1. ' Create the polyline basis for the breakline.
  2. Dim o3DPoly as Acad3DPolyline
  3. Dim dPoints(0 To 8) As Double
  4. dPoints(0) = 1200: dPoints(1) = 1200: dPoints(2) = 150
  5. dPoints(3) = 2000: dPoints(4) = 3000: dPoints(5) = 120
  6. dPoints(6) = 3000: dPoints(7) = 2000: dPoints(8) = 100
  7. Set o3DPoly = oAeccDocument.Database.ModelSpace _
  8.   .Add3DPoly(dPoints)
  9. o3DPoly.Closed = False
  10. Dim oBreakline As AeccSurfaceBreakline
  11. Dim vBLines As Variant
  12. ' This has to be an array, even if we only have one entity.
  13. Dim oEntityArray(0) As AcadEntity
  14. Set oEntityArray(0) = oAeccDocument.Database.ModelSpace _
  15.   .Add3DPoly(dPoints)
  16. Set oBreakline = oTinSurface.Breaklines.AddStandardBreakline _
  17.   (oEntityArray, "Sample Standard Break" , 1#)

但不在带有C#的Civil API中。net
  1. Tinsurface.BreaklinesDefinition.AddStandardBreaklines(ObjIdColl, 10, 5, 5, 0);

是否有一种方法可以操纵描述。我总是得到一个名字“特征线集…”我不喜欢

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

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

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2015-10-18 11:01:13 | 显示全部楼层
AddStandardBreaklines() 方法返回一个 SurfaceOperationAddBreakline 对象,该对象提供一个 Description 属性。
参考:
http://docs.autodesk.com/CIV3D/2016/ENU/API_Reference_Guide/html/5897aaea-ff18-097a-ffda-25e84385826d.htm
http://docs.autodesk.com/CIV3D/2016/ENU/API_Reference_Guide/index.html
干杯
回复

使用道具 举报

30

主题

125

帖子

30

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
218
发表于 2015-10-19 03:59:37 | 显示全部楼层
谢谢,但是我没有找到可以设置断线集描述的选项。在我的代码中,我尝试过。
如果我读它可以工作,但如果我用TinSurface编写就不行了?!
是否可以将断线添加到定义断线集,或者可以修改我必须读取所有断线集并使用选定的行创建新断线集?
  1.         public static IList
  2. ReadBreaklineSet()
  3.         {
  4.             IList
  5. m_BreaklineList = new List
  6. ();
  7.             Document acadDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
  8.             using (Transaction tr = acadDoc.TransactionManager.StartTransaction())
  9.             {
  10.                 foreach (ObjectId surfId in CivilApplication.ActiveDocument.GetSurfaceIds())
  11.                 {
  12.                     TinSurface surf = tr.GetObject(surfId, OpenMode.ForRead) as TinSurface;
  13.                     if (surf != null)
  14.                     {
  15.                         SurfaceDefinitionBreaklines brkdefs = surf.BreaklinesDefinition;
  16.                         for (int i = 0; i
  17.     {
  18.         public SurfaceBreakline this[int index] { get; }
  19.         public SurfaceBreaklineType BreaklineType { get; }
  20.         public int Count { get; }
  21.         public string Description { get; set; }
  22.         public double MaximumDistance { get; }
  23.         public double MidOrdinateDistance { get; }
  24.         public double WeedingAngle { get; }
  25.         public double WeedingDistance { get; }
  26.         public virtual IEnumerator GetEnumerator();
  27.         public IEnumerator GetObjectEnumerator();
  28.         public ObjectIdCollection InsertIntoDrawing();
  29.     }

必须能够设置特征线集的描述,或者?!
回复

使用道具 举报

30

主题

125

帖子

30

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
218
发表于 2015-10-19 04:15:33 | 显示全部楼层
我明白了:
  1.         public void AddBreaklinesBySset()
  2.         {
  3.             Surface surf = new Surface();
  4.             surf.SelectTinSurface();
  5.             ObjectIdCollection coll = Selection.SsetFilter("Layer1", "LWPOLYLINE");
  6.             surf.Tinsurface.BreaklinesDefinition.AddStandardBreaklines(coll, 10, 5, 5, 0);
  7.             SurfaceDefinitionBreaklines brkdefs = surf.Tinsurface.BreaklinesDefinition;
  8.             SurfaceOperationAddBreakline brklines = brkdefs[0];
  9.             brklines.Description = "Test";
  10.         }

回复

使用道具 举报

30

主题

125

帖子

30

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
218
发表于 2015-10-19 04:40:48 | 显示全部楼层

这样,您就认为只有一个隔断线集。可能有多个特征线集合。
添加特征线的函数没有用于描述的参数。添加绘图对象确实具有一次添加ObjectIdCollection和描述的功能。但是隔断线没有。可以创建新的隔断线集对象,但该对象没有添加ObjectIdCollection的选项。
最好的方法是添加一个特征线集,然后更改最后一个特征线集的描述。
  1. brkdefs[brkdefs.Count - 1].Description = "Test";

当然,在尝试/捕捉中,可以肯定的是
回复

使用道具 举报

14

主题

275

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
331
发表于 2015-10-19 08:25:25 | 显示全部楼层
是的,谢谢你对我来说很好。
你在想什么操作断线集,是删除并创建一个新的更好,还是可以将断线添加到定义断线集?
也许你终于回复了,所以我想我必须阅读所有断线集,获取排序号(Surface中的断线位置),然后创建一个新的断线(定义)并移动到相同的位置对Surface中的所有断线集进行排序
问题是,我可以删除Surface中的“一个”断线集并在与之前相同的位置上创建一个新的断线集吗?图片显示使用metod RemveAt(0)删除Surface中的所有断线。但是我有2或3个Surface断裂线定义,并且只想删除例如第2个。然后在第二个位置创建一个新的断裂线集
回复

使用道具 举报

30

主题

125

帖子

30

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
218
发表于 2015-10-19 09:09:50 | 显示全部楼层
不能修改特征线集,因此最好将其删除并添加新的特征线集。
回复

使用道具 举报

14

主题

275

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
331
发表于 2015-10-19 13:30:28 | 显示全部楼层
再次感谢,我明白了。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-5-26 01:32 , Processed in 0.424417 second(s), 79 queries .

© 2020-2025 乐筑天下

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