使用自己的描述添加/修改特征线集
你好在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 ***** 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
干杯 谢谢,但是我没有找到可以设置断线集描述的选项。在我的代码中,我尝试过。
如果我读它可以工作,但如果我用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();
}
必须能够设置特征线集的描述,或者?! 我明白了:
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";
}
这样,您就认为只有一个隔断线集。可能有多个特征线集合。
添加特征线的函数没有用于描述的参数。添加绘图对象确实具有一次添加ObjectIdCollection和描述的功能。但是隔断线没有。可以创建新的隔断线集对象,但该对象没有添加ObjectIdCollection的选项。
最好的方法是添加一个特征线集,然后更改最后一个特征线集的描述。
brkdefs.Description = "Test";
当然,在尝试/捕捉中,可以肯定的是
是的,谢谢你对我来说很好。
你在想什么操作断线集,是删除并创建一个新的更好,还是可以将断线添加到定义断线集?
也许你终于回复了,所以我想我必须阅读所有断线集,获取排序号(Surface中的断线位置),然后创建一个新的断线(定义)并移动到相同的位置对Surface中的所有断线集进行排序
问题是,我可以删除Surface中的“一个”断线集并在与之前相同的位置上创建一个新的断线集吗?图片显示使用metod RemveAt(0)删除Surface中的所有断线。但是我有2或3个Surface断裂线定义,并且只想删除例如第2个。然后在第二个位置创建一个新的断裂线集 不能修改特征线集,因此最好将其删除并添加新的特征线集。 再次感谢,我明白了。
页:
[1]