我正在以编程方式定义标题栏系列,并且尝试使标题栏系列模板中包含的图纸边缘不可见。我希望当图纸导出为 DWG 格式时边缘保持不可见。
我发现可以通过手动编辑标题栏系列并将类别“”分配到图纸边缘来实现此目的,但我无法以编程方式执行此操作。
我正在从标题块系列模板创建一个 Document 对象,并检索其第一个 ViewSheet 对象,如下所示:
Document = Application.uiApplication.Application.NewFamilyDocument(TITLEBLOCK_FAMILY_TEMPLATE);
ViewSheet = new FilteredElementCollector(tbFamilyDoc)
.OfClass(typeof(ViewSheet))
.Cast<ViewSheet>()
.First();
我认为我需要设置相关线条的“LineStyle”属性,我打算使用以下代码来完成此操作,但它需要一个我无法获取的 GraphicsStyle 对象。
var lines = new FilteredElementCollector(Document, ViewSheet.Id)
.WhereElementIsNotElementType()
.OfClass(typeof(CurveElement))
.Cast<CurveElement>()
.ToList()
.ForEach(line => line.LineStyle = graphicsStyleInvisibleLines)
我认为这个对象应该使用类别类别的“GetGraphicsStyle”方法来检索。我使用了插件“RevitLookup”来查看相应类别的数据,该类别似乎也称为“”并且 ID 为 -2000064。
BuiltInCategory 集合包含值“OST_InvisibleLines”,该值的整数值等于上面的 ID,但是当我运行以下命令时,它返回 null。
Category invisibleLinesCat = Document.Settings.Categories.get_Item(BuiltInCategory.OST_InvisibleLines);
RevitLookup 还向我显示,父类别的名称为“内部对象样式”,ID 为 -2000059。我再次找到了一个具有匹配名称和整数值的BuiltInCategory值:“OST_IOS”。我尝试获取此父类别,然后使用下面的行导航到所需的子类别,但它也返回 null。
Category internalCat = Document.Settings.Categories.get_Item(BuiltInCategory.OST_IOS);
有人知道如何获取对此类别或其 GraphicsStyle 对象的引用吗?
提前感谢您的宝贵时间。
您应该能够像查询线条一样查询这些线条样式。以下对我有用:
var graphicsStyles = new FilteredElementCollector(Document)
.WhereElementIsNotElementType()
.OfClass(typeof(GraphicsStyle))
.Cast<GraphicsStyle>()
.ToList();
var lineStyle = graphicsStyles.FirstOrDefault(x => x.Name == "<Invisible lines>");
if (lineStyle != null)
{
using (var t = new Transaction(Document, "update line type"))
{
t.Start();
lines.ForEach(line => line.LineStyle = lineStyle);
t.Commit();
}
}