Revit二次开发——三角面创建

Revit二次开发——三角面创建


前言

三角面是创建实体的基础,在Revit中,大多数的插件来进行不同模型格式之间的转化大多也是通关三角面来进行的,本文将讲述最基础的,采用三个点来生成面的方法。


一、三角面是什么?

由三个点来构成的一个面。

二、三角网

三角网是由一系列连续三角面构成的网状的平面控制图形

三、使用步骤

1.引入库

代码如下(示例):

using System;
using System.Collections.Generic;
using System.Linq;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB.Architecture;
using Autodesk.Revit.DB.ExtensibleStorage;
using Autodesk.Revit.DB.Plumbing;
using Autodesk.Revit.UI.Selection;

2.开启事务

代码如下(示例):

[Transaction(TransactionMode.Manual)]
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements){
		UIDocument uidoc = commandData.Application.ActiveUIDocument;
        Document doc = commandData.Application.ActiveUIDocument.Document;
         using (var trans = new Transaction(doc, "Create")){
		trans.Start();
		//详细代码
		trans.Commit();
		return Result.Succeeded;
}
}

3.创建

				//测试数据,三个点
				XYZ start1 = new XYZ(0, 0, 0);
                XYZ end = new XYZ(100, 0, 0);
                XYZ end6 = new XYZ(100, 100, 0);
 				var outVertices = new List<XYZ>();

                outVertices.Add(start1);
                outVertices.Add(end);
                outVertices.Add(end6);
                //1.输入点集合、材料ID 创建细分面
 				var tessFace = new TessellatedFace(outVertices, new ElementId(392544));
 				//2.创建细分容器
                var tessShape = new TessellatedShapeBuilder();
                //3.允许放入细分面
                tessShape.OpenConnectedFaceSet(true);
             	//4.加入细分面
                tessShape.AddFace(tessFace);
                //5.允许创建不闭合细分体
                tessShape.CloseConnectedFaceSet();
                //6.创建
                tessShape.Build();
                //(不必须)7.得到细分的几何实例
                var geos = tessShape.GetBuildResult().GetGeometricalObjects();
				//(不必须)8.创建矩阵
                Transform transform = Transform.Identity;
				//(不必须)9.移动
                var geometoryInstance = DirectShape.CreateGeometryInstance(doc,"555", transform);
                

总结

例如:以上是从点数据到实体的一种方式。
也可以采用这种方式来建立项目内的内建模型。
在这里插入图片描述
主要是利用 TessellatedShapeBuilder内以及其相关类型来进行的实体创建。


假如本文对你有所帮助,请点个赞吧

  • 点赞
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,以下是Revit二次开发角度标注的创建C#的方法: 1. 首先,需要使用Revit API扩展方式,识别出Revit模型各楼层平图的建筑构件,提取房间坐标数据信息。 2. 接着,结合SQL server,建立BIM数据库(Epplus库),存储提取的数据信息。 3. 然后,利用Visual Studio创建一个新的C#项目,将Revit API添加到项目引用中。 4. 在C#代码中,使用FilteredElementCollector类获取需要标注的元素,例如房间或者墙体。 5. 创建标注的API,可以使用Dimension类创建标注。首先需要定义标注的起点和终点,然后使用Dimension.Create方法创建标注。 6. 最后,将标注添加到所属的视图属性中,即可完成标注的创建。 以下是一个简单的示例代码: ```csharp // 获取需要标注的元素 FilteredElementCollector collector = new FilteredElementCollector(doc); List<Element> elements = collector.OfClass(typeof(Room)).ToList(); // 创建标注 foreach (Element element in elements) { Room room = element as Room; XYZ point1 = room.Location.Point; XYZ point2 = new XYZ(point1.X + 10, point1.Y + 10, point1.Z); Line line = Line.CreateBound(point1, point2); Dimension dimension = Dimension.Create(doc, line, view.Id); // 将标注添加到所属的视图属性中 using (Transaction transaction = new Transaction(doc)) { transaction.Start("Add Dimension"); view.AddDimensionStyleOverride(dimension.Id, OverrideGraphicSettings()); transaction.Commit(); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值