当前位置: 首页 > news >正文

Revit二次开发 钢筋生成API(二)

2、自由钢筋生成API

创建一条无约束的自由形状钢筋。之后无法对该钢筋添加约束。

public static Rebar CreateFreeForm(Document doc,RebarBarType barType,Element host,IList<IList<Curve>> curves,out RebarFreeFormValidationResult error
)

这个合自由钢筋生成API(一)本质上没有区别,唯一的区别就是参数

IList<CurveLoop> curves 和IList<IList<Curve>> curves的不同。

这个就要看CurveLoop和IList<Curve>的区别。

  • CurveLoop:曲线循环的集合,通常用于定义建筑模型的几何边界或路径,默认会把首位相连
  • IList<Curve>:可以定义一个有多个线段组成的整线,比较适合各种形状的钢筋。

此函数的案例如下:

using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Structure;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Selection;
using System;
using System.Collections.Generic;namespace RebarExample.Cmds
{[Transaction(TransactionMode.Manual)][Regeneration(RegenerationOption.Manual)]public class CreateFreeForm3 : IExternalCommand{public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements){try{Document doc = commandData.Application.ActiveUIDocument.Document;if (doc == null)return Result.Failed;//查找到钢筋类型FilteredElementCollector fec = new FilteredElementCollector(doc).OfClass(typeof(RebarBarType));if (fec.GetElementCount() <= 0)return Result.Failed;RebarBarType barType = fec.FirstElement() as RebarBarType;//启动事务using (Transaction tran = new Transaction(doc, "CreateFreeForm2")){Element host = null;Selection sel = commandData.Application.ActiveUIDocument.Selection;try{//选择主体对象Reference hostRef = sel.PickObject(ObjectType.Element, "Select Host");host = doc.GetElement(hostRef.ElementId);if (host == null)return Result.Failed;}catch (Exception e){message = e.Message;return Result.Failed;}tran.Start();this.CreateFreeForm(doc, barType, host);tran.Commit();}return Result.Succeeded;}catch (Exception ex){message = ex.Message;return Result.Failed;}}/// <summary>/// 创建钢筋/// </summary>/// <param name="doc"></param>/// <param name="barType"></param>/// <param name="host"></param>private void CreateFreeForm(Document doc, RebarBarType barType, Element host){IList<IList<Curve>> curves = new List<IList<Curve>>();if (host is Wall wall){//创建钢筋var wline = (wall.Location as LocationCurve).Curve;if (wline != null){for (var i = 0; i < 5; i++){List<Curve> ps = new List<Curve>();var start = wline.GetEndPoint(0);var end = wline.GetEndPoint(1);var v1 = new XYZ(start.X+0.5, start.Y, start.Z + i * 0.1);var v2 = new XYZ(end.X-0.5, end.Y, end.Z + i * 0.1);Curve l1 = Line.CreateBound(v1, v2);var v3 = new XYZ(end.X-0.5, end.Y + 0.5, end.Z + i * 0.1);Curve l2 = Line.CreateBound(v2, v3);ps.Add(l1);ps.Add(l2);curves.Add(ps);}}}RebarFreeFormValidationResult error;Rebar rebar = Rebar.CreateFreeForm(doc, barType, host, curves, out error);}}
}


生成结果展示如下:

image

 

http://www.wxhsa.cn/company.asp?id=6794

相关文章:

  • 创建会计凭证报错:FI/CO接口:待更新的不一致的FI/CO凭证标题数据(转)
  • Uri uri = new Uri(Path); 这行代码的作用
  • Qt函数方法传入参数未使用-警告warning错误error提示解决
  • mysql 性能监控,关键指标解析与优化案例剖析
  • 如何提取docker镜像用于NAS手动安装
  • 百家大型企业共同选择:2025年人力资源管理系统权威推荐榜单
  • 不修改环境变量的基础下使用Java
  • new 和make 切片和map
  • 三台ubuntu22相互免密登录最快
  • 状态机
  • 设计模式
  • Rhinoceros 8.23.25251.13001 犀牛3D建模
  • Git 常用操作指南
  • 《深入理解计算机系统》计算机系统漫游(一) - Invinc
  • 从几何分离到语义理解:深度解析3D点云分割与语义分割的本质区别
  • 欧拉筛(线性筛)算法分析
  • 2021年安徽省大数据与人工智能应用竞赛 大数据(网络赛)-高职组赛题
  • 一些写了和没写的数学!
  • 【光照】[自发光Emission]以UnityURP为例
  • mybatis-plus初体验,解决报错Invalid value type for attribute factoryBeanObjectType: java.lang.String
  • 04_UDP协议
  • 从0到1搭建数据分析自动化程序链,AI应用架构师的实战指南
  • IOS App技术支持网址(URL)
  • Alexandresku设计的loki小对象内存分配器
  • C++ 内存管理
  • 浅谈制氢电源及英飞凌解决方案
  • 微算法科技(NASDAQ:MLGO)研究分布式量子计算,释放量子计算潜能
  • AI 重塑招聘三角:Moka 招聘智能体如何实现 HR、候选人与企业的三方共赢
  • Flash Attention原理
  • MSMQ 跨服务器读写队列的“消息队列系统的访问被拒绝”的解决方案