Ejemplo n.º 1
0
        /*
         * private void FindMatchingSolidModelingFeatures(CyPhy.CADDatum datum,
         *                                             CyPhy.CADModel acadmodel)
         * {
         *  // META-947: Creates a virtual connector
         *
         *  Dictionary<string, DataRep.Datum> featuremap = new Dictionary<string, DataRep.Datum>();
         *  FindMatchingDatums(datum,
         *                     acadmodel,
         *                     featuremap);
         *
         *  if (featuremap.Count > 0)
         *  {
         *      // virtual connector
         *      DataRep.StructuralInterfaceConstraint sirep = new StructuralInterfaceConstraint(datum, this.Id);
         *      sirep.DatumList = featuremap;
         *      sirep.DegreeFreedom = sirep.GetDegreesOfFreedom();
         *      StructuralInterfaceNodes[datum.ID] = sirep;
         *  }
         * }
         *
         * private void FindMatchingSolidModelingFeatures(CyPhy.Connector a,
         *                                             CyPhy.CADModel acadmodel)
         * {
         *  // META-947: Connector instead of StructuralInterface
         *  // [1] Connectors can be nested so find all cad datums within a connector recursively
         *  // [2] Find connected datums
         *  //     Skip Connector without any Datum Ports
         *
         *  List<CyPhy.CADDatum> CadDatum_List = new List<CyPhy.CADDatum>();
         *  FindCadDatumsInConnector(a, CadDatum_List);
         *
         *  Dictionary<string, DataRep.Datum> featuremap = new Dictionary<string, DataRep.Datum>();
         *
         *  if (CadDatum_List.Count() > 0)
         *  {
         *      foreach (CyPhy.CADDatum item in CadDatum_List)
         *      {
         *          FindMatchingDatums(item,
         *                             acadmodel,
         *                             featuremap);
         *      }
         *
         *  }
         *
         *  if (featuremap.Count > 0)
         *  {
         *      DataRep.StructuralInterfaceConstraint sirep = new StructuralInterfaceConstraint(a, this.Id);
         *      sirep.DatumList = featuremap;
         *      sirep.DegreeFreedom = sirep.GetDegreesOfFreedom();
         *      StructuralInterfaceNodes[a.ID] = sirep;
         *  }
         * }
         *
         *
         * private void FindMatchingDatums(CyPhy.CADDatum datum,
         *                              CyPhy.CADModel cadmodel,
         *                              Dictionary<string, DataRep.Datum> featuremap)
         * {
         *  string cadmodel_id = cadmodel.ID;
         *  string alignment = "ALIGN";
         *  string orientation = "NONE";
         *
         *
         *  if (datum.Kind == "Surface")
         *  {
         *      alignment = (datum as CyPhy.Surface).Attributes.Alignment.ToString();
         *  }
         *
         *  CadDatumTraversal traversal = new CadDatumTraversal(datum,
         *                                                      cadmodel_id);
         *
         *  if (traversal.datumFound.Count > 0)
         *  {
         *      if (traversal.datumFound.Count > 1)
         *      {
         *          Logger.Instance.AddLogMessage("Connector datum connected to multiple datums in the same CADModel [" + datum.Path + "]", Severity.Error);
         *          return;
         *      }
         *
         *      CyPhy2CAD_CSharp.DataRep.Datum datumRep = new DataRep.Datum(traversal.datumFound.First().Attributes.DatumName,
         *                                                                    datum.Kind,
         *                                                                    this.DisplayID);
         *      if (datum.Kind == "Surface")
         *      {
         *          if (traversal.ReverseMap)
         *              orientation = "SIDE_B";
         *          else
         *              orientation = "SIDE_A";
         *      }
         *
         *      if (datum.Kind == "CoordinateSystem")
         *      {
         *          alignment = "CSYS";
         *      }
         *
         *      datumRep.Alignment = alignment;
         *      datumRep.Orientation = orientation;
         *
         *      if (!featuremap.ContainsKey(datum.Name))
         *      {
         *          featuremap[datum.Name] = datumRep;
         *      }
         *  }
         * }
         *
         * // Connectors can be nested!
         * private void FindCadDatumsInConnector(CyPhy.Connector connector,
         *                         List<CyPhy.CADDatum> caddatum_list)
         * {
         *  caddatum_list.AddRange(connector.Children.CADDatumCollection);
         *
         *  //foreach (CyPhy.Connector conn in connector.Children.ConnectorCollection)
         *  //{
         *  //    FindCadDatumsInConnector(conn, caddatum_list);
         *  //}
         *
         * }
         */

        public CAD.CADComponentType ToCADXMLOutput(string representation)
        {
            CAD.CADComponentType cadoutput = new CAD.CADComponentType();
            cadoutput._id                = UtilityHelpers.MakeUdmID();
            cadoutput.Type               = ModelType.ToUpper();
            cadoutput.Standalone         = false;
            cadoutput.SpecialInstruction = Size2Fit ? "SIZE_TO_FIT" : "";
            if (!String.IsNullOrEmpty(SpecialInstructions))
            {
                cadoutput.SpecialInstruction += (cadoutput.SpecialInstruction.Length != 0 ? "," : "") + SpecialInstructions;
            }
            cadoutput.Name           = String.IsNullOrEmpty(ModelName) ? "" : ModelName;
            cadoutput.DisplayName    = Name;
            cadoutput.MaterialID     = MaterialName;
            cadoutput.ComponentID    = DisplayID;
            cadoutput.Classification = Classification;


            if (CadParameters.Any())
            {
                CAD.ParametricParametersType parameterRoot = new CAD.ParametricParametersType();
                parameterRoot._id = UtilityHelpers.MakeUdmID();

                List <CAD.CADParameterType> paramarray = new List <CAD.CADParameterType>();
                foreach (var item in CadParameters)
                {
                    CAD.CADParameterType parameter = new CAD.CADParameterType();
                    parameter._id         = UtilityHelpers.MakeUdmID();
                    parameter.Type        = item.Type;
                    parameter.Name        = item.Name;
                    parameter.Value       = item.Value;
                    parameter.Units       = new CAD.UnitsType();
                    parameter.Units._id   = UtilityHelpers.MakeUdmID();
                    parameter.Units.Value = item.Unit;
                    paramarray.Add(parameter);
                }
                parameterRoot.CADParameter     = paramarray.ToArray();
                cadoutput.ParametricParameters = parameterRoot;
            }

            if (ManufacturingParameters != null && ManufacturingParameters.Count != 0)
            {
                cadoutput.ManufacturingParameter = new CAD.ManufacturingParameterType[ManufacturingParameters.Count];

                int i = 0;
                foreach (var param in ManufacturingParameters)
                {
                    cadoutput.ManufacturingParameter[i++] = new CAD.ManufacturingParameterType()
                    {
                        Name  = param.Key,
                        Value = param.Value
                    };
                }
            }

            if (MetaData != null && MetaData.Count != 0)
            {
                cadoutput.MetaData = new CAD.MetaDataType[MetaData.Count];

                int i = 0;
                foreach (var param in MetaData)
                {
                    cadoutput.MetaData[i++] = new CAD.MetaDataType()
                    {
                        Key   = param.Key,
                        Value = param.Value
                    };
                }
            }

            cadoutput.Representation = representation;
            if (this.CadElementsList.Count > 0)
            {
                cadoutput.Elements = new CAD.ElementsType()
                {
                    _id = UtilityHelpers.MakeUdmID()
                };

                cadoutput.Elements.Element = this.CadElementsList.ToArray();
            }

            return(cadoutput);
        }
Ejemplo n.º 2
0
        /*
        private void FindMatchingSolidModelingFeatures(CyPhy.CADDatum datum,
                                                       CyPhy.CADModel acadmodel)
        {
            // META-947: Creates a virtual connector

            Dictionary<string, DataRep.Datum> featuremap = new Dictionary<string, DataRep.Datum>();
            FindMatchingDatums(datum,
                               acadmodel,
                               featuremap);

            if (featuremap.Count > 0)
            {
                // virtual connector
                DataRep.StructuralInterfaceConstraint sirep = new StructuralInterfaceConstraint(datum, this.Id);
                sirep.DatumList = featuremap;
                sirep.DegreeFreedom = sirep.GetDegreesOfFreedom();
                StructuralInterfaceNodes[datum.ID] = sirep;
            }
        }

        private void FindMatchingSolidModelingFeatures(CyPhy.Connector a,
                                                       CyPhy.CADModel acadmodel)
        {
            // META-947: Connector instead of StructuralInterface
            // [1] Connectors can be nested so find all cad datums within a connector recursively
            // [2] Find connected datums
            //     Skip Connector without any Datum Ports

            List<CyPhy.CADDatum> CadDatum_List = new List<CyPhy.CADDatum>();
            FindCadDatumsInConnector(a, CadDatum_List);

            Dictionary<string, DataRep.Datum> featuremap = new Dictionary<string, DataRep.Datum>();    

            if (CadDatum_List.Count() > 0)
            {
                foreach (CyPhy.CADDatum item in CadDatum_List)
                {
                    FindMatchingDatums(item,
                                       acadmodel,
                                       featuremap);
                }

            }

            if (featuremap.Count > 0)
            {
                DataRep.StructuralInterfaceConstraint sirep = new StructuralInterfaceConstraint(a, this.Id);
                sirep.DatumList = featuremap;
                sirep.DegreeFreedom = sirep.GetDegreesOfFreedom();
                StructuralInterfaceNodes[a.ID] = sirep;
            }
        }


        private void FindMatchingDatums(CyPhy.CADDatum datum,
                                        CyPhy.CADModel cadmodel,
                                        Dictionary<string, DataRep.Datum> featuremap)
        {
            string cadmodel_id = cadmodel.ID;
            string alignment = "ALIGN";
            string orientation = "NONE";


            if (datum.Kind == "Surface")
            {
                alignment = (datum as CyPhy.Surface).Attributes.Alignment.ToString();
            }

            CadDatumTraversal traversal = new CadDatumTraversal(datum,
                                                                cadmodel_id);

            if (traversal.datumFound.Count > 0)
            {
                if (traversal.datumFound.Count > 1)
                {
                    Logger.Instance.AddLogMessage("Connector datum connected to multiple datums in the same CADModel [" + datum.Path + "]", Severity.Error);
                    return;
                }

                CyPhy2CAD_CSharp.DataRep.Datum datumRep = new DataRep.Datum(traversal.datumFound.First().Attributes.DatumName,
                                                                              datum.Kind,
                                                                              this.DisplayID);
                if (datum.Kind == "Surface")
                {
                    if (traversal.ReverseMap)
                        orientation = "SIDE_B";
                    else
                        orientation = "SIDE_A";
                }

                if (datum.Kind == "CoordinateSystem")
                {
                    alignment = "CSYS";
                }

                datumRep.Alignment = alignment;
                datumRep.Orientation = orientation;

                if (!featuremap.ContainsKey(datum.Name))
                {
                    featuremap[datum.Name] = datumRep;
                }
            }
        }

        // Connectors can be nested!
        private void FindCadDatumsInConnector(CyPhy.Connector connector,
                                   List<CyPhy.CADDatum> caddatum_list)
        {
            caddatum_list.AddRange(connector.Children.CADDatumCollection);
            
            //foreach (CyPhy.Connector conn in connector.Children.ConnectorCollection)
            //{
            //    FindCadDatumsInConnector(conn, caddatum_list);                  
            //}

        }
        */

        public CAD.CADComponentType ToCADXMLOutput(string representation)
        {
            CAD.CADComponentType cadoutput = new CAD.CADComponentType();
            cadoutput._id = UtilityHelpers.MakeUdmID();
            cadoutput.Type = ModelType.ToUpper();
            cadoutput.Standalone = false;
            cadoutput.SpecialInstruction = Size2Fit ? "SIZE_TO_FIT" : "";
            if (!String.IsNullOrEmpty(SpecialInstructions))
            {
                cadoutput.SpecialInstruction += (cadoutput.SpecialInstruction.Length != 0 ? "," : "") + SpecialInstructions;
            }
            cadoutput.Name = String.IsNullOrEmpty(ModelName) ? "" : ModelName;
            cadoutput.DisplayName = Name;
            cadoutput.MaterialID = MaterialName;
            cadoutput.ComponentID = DisplayID;
            cadoutput.Classification = Classification;


            if (CadParameters.Any())
            {
                CAD.ParametricParametersType parameterRoot = new CAD.ParametricParametersType();
                parameterRoot._id = UtilityHelpers.MakeUdmID();

                List<CAD.CADParameterType> paramarray = new List<CAD.CADParameterType>();
                foreach (var item in CadParameters)
                {
                    CAD.CADParameterType parameter = new CAD.CADParameterType();
                    parameter._id = UtilityHelpers.MakeUdmID();
                    parameter.Type = item.Type;
                    parameter.Name = item.Name;
                    parameter.Value = item.Value;
                    parameter.Units = new CAD.UnitsType();
                    parameter.Units._id = UtilityHelpers.MakeUdmID();
                    parameter.Units.Value = item.Unit;
                    paramarray.Add(parameter);
                }
                parameterRoot.CADParameter = paramarray.ToArray();
                cadoutput.ParametricParameters = parameterRoot;
            }

            if (ManufacturingParameters != null && ManufacturingParameters.Count != 0)
            {
                cadoutput.ManufacturingParameter = new CAD.ManufacturingParameterType[ManufacturingParameters.Count];

                int i = 0;
                foreach (var param in ManufacturingParameters)
                {
                    cadoutput.ManufacturingParameter[i++] = new CAD.ManufacturingParameterType()
                    {
                        Name = param.Key,
                        Value = param.Value
                    };
                }
            }

            if (MetaData != null && MetaData.Count != 0)
            {
                cadoutput.MetaData = new CAD.MetaDataType[MetaData.Count];

                int i = 0;
                foreach (var param in MetaData)
                {
                    cadoutput.MetaData[i++] = new CAD.MetaDataType()
                    {
                        Key = param.Key,
                        Value = param.Value
                    };
                }

            }

            cadoutput.Representation = representation;

            return cadoutput;
        }