//bool WriteData(string str_FileName) public void Test_WriteData() { bool bRetValue; Outwriter target = new Outwriter(); String strPartName = String.Empty; uint uFace = 0; float[] Vert = { 0.1f }; float[] Nor = { 0.1f }; float[] TC = { 0.2f }; uint[] Ind = { 3 }; uint[] FeaC = { 4 }; String ComName = "Test_addComponent 1"; double[] trans = { 0.1 }; double[] ComMat = { 0.2 }; double[] FeaMat = { 0.3 }; double[] TexMat = { 0.4 }; cl_DataStore SaveData = new cl_DataStore(); bRetValue = target.Init("Test_WriteData"); bRetValue = target.addpart(strPartName, uFace); bRetValue = target.addFaceRegion(strPartName, Vert, Nor, TC, Ind, FeaC); bRetValue = target.addComponent(strPartName, ComName, trans, ComMat, FeaMat, TexMat); Assert.IsTrue(bRetValue); bRetValue = target.WriteData(strPartName); Assert.IsTrue(bRetValue); }
//bool addpart(String PartName, UInt32 U_FaceCount) public void Test_addpart() { bool bRetValue; string strPartName = String.Empty; uint uFace = 0; Outwriter target = new Outwriter(); cl_DataStore TargetData = new cl_DataStore(); bRetValue = target.Init("Test_addpart"); Assert.IsTrue(bRetValue); strPartName = "Test_addpart"; bRetValue = target.addpart(strPartName, uFace); Assert.IsTrue(bRetValue); }
//bool addFaceRegion(String PartName, float[] Vert, float[] Nor, float[] TC, uint[] Ind, uint[] FeaC) public void Test_addFaceRegion() { bool bRetValue; string strPartName = "Test_addFaceRegion"; float[] Vert = { 0.1f }; float[] Nor = { 0.1f }; float[] TC = { 0.2f }; uint[] Ind = { 3 }; uint[] FeaC = { 4 }; Outwriter target = new Outwriter(); cl_DataStore TargetData = new cl_DataStore(); bRetValue = target.Init("Test_addFaceRegion"); uint uFace = 0; bRetValue = target.addpart(strPartName, uFace); Assert.IsTrue(bRetValue); bRetValue = target.addFaceRegion(strPartName, Vert, Nor, TC, Ind, FeaC); Assert.IsTrue(bRetValue); }
//bool addComponent(String PartName, String ComName, double[] trans, double[] ComMat, double[] FeaMat, double[] TexMat) public void Test_addComponent() { bool bRetValue; string strPartName = "Test_addComponent";; String ComName = "Test_addComponent 1"; double[] trans = { 0.1 }; double[] ComMat = { 0.2 }; double[] FeaMat = { 0.3 }; double[] TexMat = { 0.4 }; Outwriter target = new Outwriter(); cl_DataStore TargetData = new cl_DataStore(); bRetValue = target.Init("Test_addComponent"); uint uFace = 0; bRetValue = target.addpart(strPartName, uFace); Assert.IsTrue(bRetValue); bRetValue = target.addComponent(strPartName, ComName, trans, ComMat, FeaMat, TexMat); Assert.IsTrue(bRetValue); }
private void SendData(Element element, GeometryInstance instance) { try { double[] transformationMatrix = new double[16]; if (null != instance) { transformationMatrix[0] = instance.Transform.Scale * instance.Transform.BasisX.X; transformationMatrix[1] = instance.Transform.Scale * instance.Transform.BasisX.Y; transformationMatrix[2] = instance.Transform.Scale * instance.Transform.BasisX.Z; transformationMatrix[3] = 0; transformationMatrix[4] = instance.Transform.Scale * instance.Transform.BasisY.X; transformationMatrix[5] = instance.Transform.Scale * instance.Transform.BasisY.Y; transformationMatrix[6] = instance.Transform.Scale * instance.Transform.BasisY.Z; transformationMatrix[7] = 0; transformationMatrix[8] = instance.Transform.Scale * instance.Transform.BasisZ.X; transformationMatrix[9] = instance.Transform.Scale * instance.Transform.BasisZ.Y; transformationMatrix[10] = instance.Transform.Scale * instance.Transform.BasisZ.Z; transformationMatrix[11] = 0; transformationMatrix[12] = instance.Transform.Origin.X; transformationMatrix[13] = instance.Transform.Origin.Y; transformationMatrix[14] = instance.Transform.Origin.Z; transformationMatrix[15] = 1; } else { double[] d_TransformationTable = { 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 }; transformationMatrix = d_TransformationTable; } string Osa = element.Name.ToString() + " " + element.Id.ToString(); writeData.addpart(Osa, (uint)u_FeaturesIndList.Count); double[] d_featureBase = { 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0 }; for (double d_Ind = 0; d_Ind < (double)u_FeaturesIndList.Count; d_Ind++) { d_FeatureMaterialList.Add(d_Ind); for (int i_i = 0; i_i < d_featureBase.Length; i_i++) { d_FeatureMaterialList.Add(d_featureBase[i_i]); } } uint[] u_FeatureIndTable = new uint[u_FeaturesIndList.Count]; for (int k = 0; k < u_FeaturesIndList.Count; k++) { u_FeatureIndTable[k] = (uint)u_FeaturesIndList[k]; } float[] f_VerticesTable = new float[d_VerticesList.Count]; for (int k = 0; k < d_VerticesList.Count; k++) { f_VerticesTable[k] = (float)d_VerticesList[k]; } //float[] vert = vertices.ToArray(typeof(float)) as float[]; float[] f_NormalsTable = new float[d_NormalsList.Count]; for (int k = 0; k < d_NormalsList.Count; k++) { f_NormalsTable[k] = (float)d_NormalsList[k]; } //float[] norm = normals.ToArray(typeof(float)) as float[]; float[] f_TextureCoordsTable = new float[d_TextureCoordsList.Count]; for (int k = 0; k < d_TextureCoordsList.Count; k++) { f_TextureCoordsTable[k] = (float)d_TextureCoordsList[k]; } //float[] TeCo = textureCoords.ToArray(typeof(float)) as float[]; uint[] u_IndicesTable = new uint[u_IndicesList.Count]; for (int k = 0; k < u_IndicesList.Count; k++) { u_IndicesTable[k] = (uint)u_IndicesList[k]; } //uint[] inx = indices.ToArray(typeof(uint)) as uint[]; writeData.addFaceRegion(Osa, f_VerticesTable, f_NormalsTable, f_TextureCoordsTable, u_IndicesTable, u_FeatureIndTable); double[] d_FeatureMaterialTable = new double[d_FeatureMaterialList.Count]; for (int k = 0; k < d_FeatureMaterialList.Count; k++) { d_FeatureMaterialTable[k] = (uint)d_FeatureMaterialList[k]; } double[] d_ComponentMaterialtable = { 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0 }; double[] d_TextureMaterialTable = { 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 }; writeData.addComponent(Osa, element.UniqueId.ToString(), /*d_TransformationTable*/ transformationMatrix, d_ComponentMaterialtable, d_FeatureMaterialTable, d_TextureMaterialTable); } catch (Exception e) { string message; // Exception rised, report it by revit error reporting mechanism. message = e.ToString(); File.AppendAllText(@"C:\CadFaster\Revit\ExeWriter_log.txt", message); //return Autodesk.Revit.UI.Result.Failed; } //End of SendData }
private void SendData(Element element, GeometryInstance instance) { //if no vertex, skip if (Lid_Vertices.Count == 0) { return; } try { double[] transformationMatrix = new double[16]; if (null != instance) { transformationMatrix[0] = instance.Transform.Scale * instance.Transform.BasisX.X; transformationMatrix[1] = instance.Transform.Scale * instance.Transform.BasisX.Y; transformationMatrix[2] = instance.Transform.Scale * instance.Transform.BasisX.Z; transformationMatrix[3] = 0; transformationMatrix[4] = instance.Transform.Scale * instance.Transform.BasisY.X; transformationMatrix[5] = instance.Transform.Scale * instance.Transform.BasisY.Y; transformationMatrix[6] = instance.Transform.Scale * instance.Transform.BasisY.Z; transformationMatrix[7] = 0; transformationMatrix[8] = instance.Transform.Scale * instance.Transform.BasisZ.X; transformationMatrix[9] = instance.Transform.Scale * instance.Transform.BasisZ.Y; transformationMatrix[10] = instance.Transform.Scale * instance.Transform.BasisZ.Z; transformationMatrix[11] = 0; transformationMatrix[12] = instance.Transform.Origin.X; transformationMatrix[13] = instance.Transform.Origin.Y; transformationMatrix[14] = instance.Transform.Origin.Z; transformationMatrix[15] = 1; } else { double[] d_TransformationTable = { 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 }; transformationMatrix = d_TransformationTable; } String Kompo = element.GetType().Name; String Osa = element.Name.ToString() + " " + element.Id.ToString(); writeData.addpart(Osa, (uint)Liu_FeatureIndex.Count); //int Str_Ok=-1; //Str_Ok = Listr_Nodes.IndexOf(Kompo); //if (-1 == Str_Ok) //{ // writeData.addNode(Osa, Kompo); // Listr_Nodes.Add(Kompo); //} //writeData.addNode(Osa, Kompo); uint[] u_FeatureIndTable = new uint[Liu_FeatureIndex.Count]; for (int k = 0; k < Liu_FeatureIndex.Count; k++) { u_FeatureIndTable[k] = (uint)Liu_FeatureIndex[k]; } float[] f_VerticesTable = new float[Lid_Vertices.Count]; for (int k = 0; k < Lid_Vertices.Count; k++) { f_VerticesTable[k] = (float)Lid_Vertices[k]; } float[] f_NormalsTable = new float[Lid_Normals.Count]; for (int k = 0; k < Lid_Normals.Count; k++) { f_NormalsTable[k] = (float)Lid_Normals[k]; } //float[] f_TextureCoordsTable = null; float[] f_TextureCoordsTable = new float[Lid_TextureCoords.Count]; for (int k = 0; k < Lid_TextureCoords.Count; k++) { f_TextureCoordsTable[k] = (float)Lid_TextureCoords[k]; } //float[] TeCo = textureCoords.ToArray(typeof(float)) as float[]; uint[] u_IndicesTable = new uint[Liu_Indices.Count]; for (int k = 0; k < Liu_Indices.Count; k++) { u_IndicesTable[k] = (uint)Liu_Indices[k]; } //uint[] inx = indices.ToArray(typeof(uint)) as uint[]; writeData.addFaceRegion(Osa, f_VerticesTable, f_NormalsTable, f_TextureCoordsTable, u_IndicesTable, u_FeatureIndTable); double[] d_FeatureMaterialTable = new double[Lid_FeatureMaterial.Count]; for (int k = 0; k < Lid_FeatureMaterial.Count; k++) { d_FeatureMaterialTable[k] = Lid_FeatureMaterial[k]; } double[] d_ComponentMaterialtable = { 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0 }; if (0 < d_FeatureMaterialTable.Length) { for (int k = 0; k < 14; k++) { d_ComponentMaterialtable[k] = d_FeatureMaterialTable[k + 1]; } } double[] d_TextureMaterialTable = { 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 }; writeData.addComponent(Osa, Osa, /*d_TransformationTable*/ transformationMatrix, d_ComponentMaterialtable, d_FeatureMaterialTable, d_TextureMaterialTable); } catch (Exception e) { string message; // Exception rised, report it by revit error reporting mechanism. message = "SendData fails for Reason:" + Environment.NewLine; File.AppendAllText(@"C:\CadFaster\Revit\ExeWriter_log.txt", message); message = e.ToString(); //File.AppendAllText(@"C:\CadFaster\Revit\ExeWriter_log.txt", message); //return Autodesk.Revit.UI.Result.Failed; } //End of SendData }