Exemple #1
0
        private static void DumpData(StringBuilder sb, byte[] ShapeData)
        {
            XbimTriangulatedModelStream m = new XbimTriangulatedModelStream(ShapeData);

            TextMeshDumper md = new TextMeshDumper(sb);
            XbimMatrix3D id = XbimMatrix3D.Identity;
            m.BuildWithNormals(md, id);

            // sb.Append(m.ToString());
        }
        private static void DumpData(StringBuilder sb, byte[] ShapeData)
        {
            XbimTriangulatedModelStream m = new XbimTriangulatedModelStream(ShapeData);

            TextMeshDumper md = new TextMeshDumper(sb);
            XbimMatrix3D   id = XbimMatrix3D.Identity;

            m.BuildWithNormals(md, id);

            // sb.Append(m.ToString());
        }
 /// <summary>
 /// Appends a geometry data object to the Mesh, returns false if the mesh would become too big and needs splitting
 /// </summary>
 /// <param name="geometryMeshData"></param>
 public bool Add(XbimGeometryData geometryMeshData)
 {
     XbimMatrix3D transform = geometryMeshData.Transform;
     if (geometryMeshData.GeometryType == XbimGeometryType.TriangulatedMesh)
     {
         XbimTriangulatedModelStream strm = new XbimTriangulatedModelStream(geometryMeshData.ShapeData);
         XbimMeshFragment fragment = strm.BuildWithNormals(this, transform);
         if (fragment.EntityLabel==int.MinValue) //nothing was added due to size being exceeded
             return false;
         else //added ok
         {
             fragment.EntityLabel = geometryMeshData.IfcProductLabel;
             fragment.EntityType = IfcMetaData.GetType(geometryMeshData.IfcTypeId);
             meshes.Add(fragment);
         }
     }
     else if (geometryMeshData.GeometryType == XbimGeometryType.BoundingBox)
     {
         XbimRect3D r3d = XbimRect3D.FromArray(geometryMeshData.ShapeData);
         this.Add(XbimMeshGeometry3D.MakeBoundingBox(r3d, transform), geometryMeshData.IfcProductLabel, IfcMetaData.GetType(geometryMeshData.IfcTypeId));
     }
     else
         throw new XbimException("Illegal geometry type found");
     return true;
 }
 public void FromXbimTriangulatedModelStream(XbimTriangulatedModelStream SourceStream)
 {
     SourceStream.BuildPNI(this);
 }
 public PositionsNormalsIndicesBinaryStreamWriter(byte[] ShapeData)
 {
     XbimTriangulatedModelStream SourceStream = new XbimTriangulatedModelStream(ShapeData);
     SourceStream.BuildPNI(this);
 }
 /// <summary>
 /// Appends a geometry data object to the Mesh, returns false if the mesh would become too big and needs splitting
 /// </summary>
 /// <param name="geometryMeshData"></param>
 public bool Add(XbimGeometryData geometryMeshData, short modelId = 0)
 {
     var transform = XbimMatrix3D.FromArray(geometryMeshData.DataArray2);
     if (geometryMeshData.GeometryType == XbimGeometryType.TriangulatedMesh)
     {
         var strm = new XbimTriangulatedModelStream(geometryMeshData.ShapeData);
         var fragment = strm.BuildWithNormals(this, transform, modelId);
         if (fragment.EntityLabel == -1) //nothing was added due to size being exceeded
             return false;
         fragment.EntityLabel = geometryMeshData.IfcProductLabel;
         fragment.EntityTypeId = geometryMeshData.IfcTypeId;
         _meshes.Add(fragment);
     }
     else if (geometryMeshData.GeometryType == XbimGeometryType.BoundingBox)
     {
         var r3D = XbimRect3D.FromArray(geometryMeshData.ShapeData);
         Add(MakeBoundingBox(r3D, transform), geometryMeshData.IfcProductLabel, IfcMetaData.GetType(geometryMeshData.IfcTypeId), modelId);
     }
     else
         throw new XbimException("Illegal geometry type found");
     return true;
 }