作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
更改族类别后,我试图通过 Revit 的 API 更改族的零件类型。
我可以检索相应的参数并设置其值,但是(尽管事务已成功提交)部分类型未更改。
由于“零件类型”UI 元素显示空字符串,因此我通过“Revit 查找”检查了尝试更改后参数的值。它仍然是旧的零件类型,该系列类别甚至不存在。
到目前为止,这是我的代码:
Family f = familyDocument.OwnerFamily;
Category c = f.FamilyCategory;
Parameter p = f.get_Parameter(BuiltInParameter.FAMILY_CONTENT_PART_TYPE);
f.FamilyCategoryId = new ElementId(BuiltInCategory.OST_LightingFixture);
p.Set((int) PartType.Normal);
最佳答案
我在 Revit 2018.3 和 2020.2 中尝试了同样的方法并成功。只需创建任何族类型(我使用了照明设备模板),然后将以下代码段插入到新宏中。
var f = Document.OwnerFamily;
var c = f.FamilyCategory;
var partTypeParam = f.get_Parameter(BuiltInParameter.FAMILY_CONTENT_PART_TYPE);
using(var t = new Transaction(Document, "Change part type"))
{
t.Start();
f.FamilyCategoryId = new ElementId(BuiltInCategory.OST_DuctAccessory);
partTypeParam.Set((int)PartType.Elbow);
t.Commit();
}
internal class FamilyOption : IFamilyLoadOptions
{
bool IFamilyLoadOptions.OnFamilyFound(bool familyInUse, out bool overwriteParameterValues)
{
overwriteParameterValues = false;
return true;
}
bool IFamilyLoadOptions.OnSharedFamilyFound(Family sharedFamily, bool familyInUse, out FamilySource source, out bool overwriteParameterValues)
{
source = FamilySource.Family;
overwriteParameterValues = false;
return true;
}
}
public void PartTypeTester()
{
var f = new FilteredElementCollector(Document)
.OfClass(typeof(Family))
.First(ff => ff.Name == "ExampleFamily")
as Family;
var familyDoc = Document.EditFamily(f);
f = familyDoc.OwnerFamily;
var c = f.FamilyCategory;
var partTypeParam = f.get_Parameter(BuiltInParameter.FAMILY_CONTENT_PART_TYPE);
using(var t = new Transaction(familyDoc, "Change part type"))
{
t.Start();
f.FamilyCategoryId = new ElementId(BuiltInCategory.OST_DuctAccessory);
partTypeParam.Set((int)PartType.Elbow);
t.Commit();
}
var opt = new FamilyOption();
f = familyDoc.LoadFamily(Document, opt);
familyDoc.Close(false);
}
关于revit-api - RevitAPI : How can I change a family's part type?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59175101/
我是一名优秀的程序员,十分优秀!