Example #1
0
        //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);
        }
Example #2
0
        //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);
        }
Example #3
0
        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
        }
Example #4
0
        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
        }