cadplayer 发表于 2015-10-18 05:50:05

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

你好
在COM-API中有点混乱。是否可以为描述设置名称?
' Create the polyline basis for the breakline.
Dim o3DPoly as Acad3DPolyline
Dim dPoints(0 To 8) As Double
dPoints(0) = 1200: dPoints(1) = 1200: dPoints(2) = 150
dPoints(3) = 2000: dPoints(4) = 3000: dPoints(5) = 120
dPoints(6) = 3000: dPoints(7) = 2000: dPoints(8) = 100
Set o3DPoly = oAeccDocument.Database.ModelSpace _
.Add3DPoly(dPoints)
o3DPoly.Closed = False
Dim oBreakline As AeccSurfaceBreakline
Dim vBLines As Variant
' This has to be an array, even if we only have one entity.
Dim oEntityArray(0) As AcadEntity
Set oEntityArray(0) = oAeccDocument.Database.ModelSpace _
.Add3DPoly(dPoints)
Set oBreakline = oTinSurface.Breaklines.AddStandardBreakline _
(oEntityArray, "Sample Standard Break" , 1#)
但不在带有C#的Civil API中。net
Tinsurface.BreaklinesDefinition.AddStandardBreaklines(ObjIdColl, 10, 5, 5, 0);
是否有一种方法可以操纵描述。我总是得到一个名字“特征线集…”我不喜欢
**** Hidden Message *****

BlackBox 发表于 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
干杯

cadplayer 发表于 2015-10-19 03:59:37

谢谢,但是我没有找到可以设置断线集描述的选项。在我的代码中,我尝试过。
如果我读它可以工作,但如果我用TinSurface编写就不行了?!
是否可以将断线添加到定义断线集,或者可以修改我必须读取所有断线集并使用选定的行创建新断线集?
      public static IList
ReadBreaklineSet()
      {
            IList
m_BreaklineList = new List
();
            Document acadDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
            using (Transaction tr = acadDoc.TransactionManager.StartTransaction())
            {
                foreach (ObjectId surfId in CivilApplication.ActiveDocument.GetSurfaceIds())
                {
                  TinSurface surf = tr.GetObject(surfId, OpenMode.ForRead) as TinSurface;
                  if (surf != null)
                  {
                        SurfaceDefinitionBreaklines brkdefs = surf.BreaklinesDefinition;
                        for (int i = 0; i
    {
      public SurfaceBreakline this { get; }
      public SurfaceBreaklineType BreaklineType { get; }
      public int Count { get; }
      public string Description { get; set; }
      public double MaximumDistance { get; }
      public double MidOrdinateDistance { get; }
      public double WeedingAngle { get; }
      public double WeedingDistance { get; }
      public virtual IEnumerator GetEnumerator();
      public IEnumerator GetObjectEnumerator();
      public ObjectIdCollection InsertIntoDrawing();
    }
必须能够设置特征线集的描述,或者?!

cadplayer 发表于 2015-10-19 04:15:33

我明白了:
      public void AddBreaklinesBySset()
      {
            Surface surf = new Surface();
            surf.SelectTinSurface();
            ObjectIdCollection coll = Selection.SsetFilter("Layer1", "LWPOLYLINE");
            surf.Tinsurface.BreaklinesDefinition.AddStandardBreaklines(coll, 10, 5, 5, 0);
            SurfaceDefinitionBreaklines brkdefs = surf.Tinsurface.BreaklinesDefinition;
            SurfaceOperationAddBreakline brklines = brkdefs;
            brklines.Description = "Test";
      }

cadplayer 发表于 2015-10-19 04:40:48


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

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

huiz 发表于 2015-10-19 08:25:25

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

cadplayer 发表于 2015-10-19 09:09:50

不能修改特征线集,因此最好将其删除并添加新的特征线集。

huiz 发表于 2015-10-19 13:30:28

再次感谢,我明白了。
页: [1]
查看完整版本: 使用自己的描述添加/修改特征线集