revit二次开发之参数化族类型
创建参数化族类型(脚手杆长度)
因为我是用的族为构建组,并非系统族,在网上并没有找到适合构建族的方法,所以用的方法比较笨
大概方法为自己规定一套命名方法,然后遍历族类型找到同名族类型,若没找到,则先进行复制再参数化,所以要两个方法配合使用才能确保返回需求;
1 protected static FamilySymbol Symbols(Document document, Family family, double railLength,string scaffoldName) 2 { 3 FamilySymbol railType = null; 4 int count = 1; 5 6 foreach (ElementId railId in family.GetFamilySymbolIds()) //遍历每个族类型的族ID 7 { 8 railType = document.GetElement(railId) as FamilySymbol; //获取族类型 9 if (railType != null) 10 { 11 if (railType.Name == scaffoldName + "(" + railLength + "mm" + ")") 12 { 13 return railType; //返回需求的族类型 14 } 15 if (count == family.GetFamilySymbolIds().Count()) //当不存在时重新创建族类型 16 { 17 Transaction transaction = new Transaction(document); 18 transaction.Start("开始创建新参数化"); 19 20 ElementType elementType = railType.Duplicate(scaffoldName + "(" + railLength + "mm" + ")"); //复制 21 ParameterSet Parameters = elementType.Parameters; //参数集合 22 foreach (Autodesk.Revit.DB.Parameter lengthParameter in Parameters) 23 { 24 if (lengthParameter.Definition.Name == "杆长") 25 { 26 if (!lengthParameter.IsReadOnly) //参数是否只读 27 { 28 lengthParameter.Set((railLength) / 304.8); 29 } 30 31 } 32 33 } 34 transaction.Commit(); 35 return null; 36 } 37 38 } 39 count++; 40 } 41 42 return null; 43 }
1 public static FamilySymbol ReturnSymbols(Document document, Family family, double Length, string scaffoldName) 2 { 3 FamilySymbol railSymbol = Symbols(document, family, Length, scaffoldName); 4 5 if (railSymbol == null) //此处若运行说明并没有直接找到而是进行了参数化 6 { 7 railSymbol = Symbols(document, family, Length, scaffoldName); 8 return railSymbol; 9 } 10 else 11 { 12 return railSymbol; 13 } 14 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器