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内以及其相关类型来进行的实体创建。
假如本文对你有所帮助,请点个赞吧
- 点赞