/// <summary> /// Emit a Revit geometry Face object and /// return the number of resulting triangles. /// </summary> public int EmitFace( Face face, Color color, int shininess, int transparency) { Debug.Assert(0 <= shininess, "expected non-negative shininess"); Debug.Assert(128 >= shininess, "expected shininess between 0 and 128"); Debug.Assert(0 <= transparency, "expected non-negative transparency"); Debug.Assert(100 >= transparency, "expected transparency between 0 and 100"); Debug.Assert(100 * Math.Pow(2, 24) == 1677721600, "expected shifted transparency to fit into a signed integer"); Debug.Assert(1677721600 < int.MaxValue, "expected transparency to fit into a signed integer"); ++_faceCount; if (_add_color && _color_transparency_lookup .AddColorTransparency(color, shininess, transparency)) { StoreColorTransparency(color, transparency); } Mesh mesh = face.Triangulate(); int n = mesh.NumTriangles; Debug.Print(" {0} mesh triangles", n); for (int i = 0; i < n; ++i) { ++_triangleCount; MeshTriangle t = mesh.get_Triangle(i); StoreTriangle(t); } return(n); }
/// <summary> /// Emit a Revit geometry Face object and /// return the number of resulting triangles. /// </summary> public int EmitFace(Element e, Face face, Color color, int transparency) { ++_faceCount; var objModel = new ObjModel() { UniqueId = e.UniqueId, Faces = new List <VFace>(), vt = new List <object>() }; _objModels.Add(objModel); // 保存每个实体的材质颜色 if (_add_color && _color_transparency_lookup.AddColorTransparency(color, transparency)) { // 设置材质颜色id string name = ObjExportUtil.ColorTransparencyString(color, transparency); objModel.Mtl = name; } Mesh mesh = face.Triangulate(0 / 15.0); //Mesh mesh = face.Triangulate(); #region 保存 Vertex 及 Triangle 数据 int numTriangles = mesh.NumTriangles; for (int i = 0; i < numTriangles; ++i) { ++_triangleCount; MeshTriangle meshTriangle = mesh.get_Triangle(i); StoreTriangle(meshTriangle, objModel); } #endregion return(numTriangles); }