c# - Revit API - Can't paint generated Direct Shapes
问题描述
I generate all of them the same, but some of them can't be colored (image on the bottom)
Steps:
I'm creating list of faces from solid
internal static List<List<XYZ>> GetFacesFromSolidTriangulate(Solid geomSolid) { List<List<XYZ>> faces = new List<List<XYZ>>(); foreach (Face face in geomSolid.Faces) { Mesh mesh_space = face.Triangulate(); for (int i = 0; i < mesh_space.NumTriangles; i++) { MeshTriangle triangle = mesh_space.get_Triangle(i); XYZ p1 = triangle.get_Vertex(0); XYZ p2 = triangle.get_Vertex(1); XYZ p3 = triangle.get_Vertex(2); List<XYZ> xyz = new List<XYZ>(); xyz.Add(triangle.get_Vertex(0)); xyz.Add(triangle.get_Vertex(1)); xyz.Add(triangle.get_Vertex(2)); faces.Add(xyz); } } return faces; }
I'm creating Direct Shape using
static public DirectShape NewDrawDirectShape(Document doc, List<List<XYZ>> faces, ElementId matId, string name) { TessellatedShapeBuilder builder = new TessellatedShapeBuilder(); builder.OpenConnectedFaceSet(true); foreach(List<XYZ> face in faces) { builder.AddFace(new TessellatedFace(face, matId)); } builder.CloseConnectedFaceSet(); builder.Build(); TessellatedShapeBuilderResult result = builder.GetBuildResult(); DirectShape ds = DirectShape.CreateElement(doc, new ElementId(BuiltInCategory.OST_GenericModel)); ds.SetShape(result.GetGeometricalObjects()); ds.Name = name; return ds; }
And here is the problem, I can't paint few of them even using Revit "paint" tool... Red arrow define what I'm trying achieve on this direct shape, blue direct shapes works correctly
解决方案
你检查过三角形的方向吗?可能对象中返回的某些三角形的MeshTriangle
方向不正确。要尝试一下,您可以在每个三角形的中心创建一条小模型线,指示其法线向量和边缘方向。
推荐阅读
- javascript - 使用 ajax 调用 php 函数,在该函数内部调用另一个不会触发的函数
- mysql - 在多个表上共享的自动增量
- vue.js - 如何在 Buefy 中配置 Font Awesome
- node.js - 如何使用 Azure api 启动容器实例?
- php - 无法使用 Outlook SMTP 帐户发送电子邮件
- html - 你好未定义
- java - java中的冒泡排序,方法(静态或非静态)?,(void or int[])?,需要实例变量吗?
- javascript - 删除任务函数 JQuery 删除键
- python - dev_appserver.py app.yaml 产生:ImportError: Importing the multiarray numpy extension module failed
- python - 为什么 add_child 方法在我使用 folium 库的地理映射代码中不起作用?