/* * 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); }
public CAD.AssemblyType ToCADXMLOutput(TestBenchModel.TestBenchBase tb) { CAD.AssemblyType cadassemblyoutput = new CAD.AssemblyType(); cadassemblyoutput._id = UtilityHelpers.MakeUdmID(); cadassemblyoutput.ConfigurationID = ConfigID; CAD.CADComponentType cadassemblycomponentoutput = new CAD.CADComponentType(); cadassemblycomponentoutput._id = UtilityHelpers.MakeUdmID(); cadassemblycomponentoutput.ComponentID = ConfigID; cadassemblycomponentoutput.Type = "ASSEMBLY"; cadassemblycomponentoutput.Standalone = false; cadassemblycomponentoutput.SpecialInstruction = ""; cadassemblycomponentoutput.Name = this.Name; cadassemblycomponentoutput.DisplayName = DisplayName; cadassemblycomponentoutput.MaterialID = ""; cadassemblycomponentoutput.Representation = ""; cadassemblycomponentoutput.Classification = ""; Dictionary<string, List<CAD.ConstraintType>> compidToConstraint = new Dictionary<string, List<CAD.ConstraintType>>(); // Dictionary<Id, List<Constraints>> var sortedEdges = ChildEdges.OrderBy(x => x.DstPortName).ToList(); foreach (CADEdge edge in sortedEdges) //foreach (CADEdge edge in ChildEdges) { CAD.ConstraintType constraintout = edge.ToCADXMLOutput(tb); if (!compidToConstraint.ContainsKey(edge.Dst.Id)) { compidToConstraint.Add(edge.Dst.Id, new List<CAD.ConstraintType>()); } compidToConstraint[edge.Dst.Id].Add(constraintout); } var sortedS2FEdges = ChildSize2FitEdges.OrderBy(x => x.DstPortName).ToList(); foreach (CADEdge edge in sortedS2FEdges) //foreach (CADEdge edge in ChildSize2FitEdges) { CAD.ConstraintType constraintout = edge.ToCADXMLOutput(tb); if (!compidToConstraint.ContainsKey(edge.Dst.Id)) { compidToConstraint.Add(edge.Dst.Id, new List<CAD.ConstraintType>()); } compidToConstraint[edge.Dst.Id].Add(constraintout); } // META-2885 //Dictionary<string, CAD.CADComponentType> tmpComponents = new Dictionary<string, CAD.CADComponentType>(); List<CAD.CADComponentType> tmpComponents = new List<CAD.CADComponentType>(); var sortedComponents = ChildComponents.OrderBy(x => x.Value.Name).ToDictionary(x => x.Key, x => x.Value).Values.ToList(); foreach (CADComponent component in sortedComponents) //foreach (CADComponent component in ChildComponents.Values) { CAD.CADComponentType componentout = component.ToCADXMLOutput(tb.GetRepresentation(component)); // root constraint if (component.Id == RootComponentID) { bool rootIsAsmType = component.ModelType == "Assembly"; //bool rootIsAsmType = component.ModelType == "PART"; List<CAD.PairType> pairlist = new List<CAD.PairType>(); CAD.ConstraintType rootconstraintout = new CAD.ConstraintType(); rootconstraintout._id = UtilityHelpers.MakeUdmID(); // front pair pairlist.Add(MakeRootConstraint("FRONT", component.DisplayID, ConfigID, rootIsAsmType)); // top pair pairlist.Add(MakeRootConstraint("TOP", component.DisplayID, ConfigID, rootIsAsmType)); // right pair pairlist.Add(MakeRootConstraint("RIGHT", component.DisplayID, ConfigID, rootIsAsmType)); rootconstraintout.Pair = pairlist.ToArray(); componentout.Constraint = new CAD.ConstraintType[1]; componentout.Constraint[0] = rootconstraintout; } else { if (compidToConstraint.ContainsKey(component.Id)) { componentout.Constraint = compidToConstraint[component.Id].ToArray(); } } //tmpComponents[component.Id] = componentout; tmpComponents.Add(componentout); } var size2fitCompSorted = ChildSize2FitComponents.OrderBy(x => x.Value.Name).ToDictionary(x => x.Key, x => x.Value).Values.ToList(); foreach (CADComponent component in size2fitCompSorted)//foreach (CADComponent component in ChildSize2FitComponents.Values) // META-2885 { CAD.CADComponentType componentout = component.ToCADXMLOutput(tb.GetRepresentation(component)); if (compidToConstraint.ContainsKey(component.Id)) { componentout.Constraint = compidToConstraint[component.Id].ToArray(); } //tmpComponents[component.Id] = componentout; tmpComponents.Add(componentout); } // Fill MetaLinkData. Only needed in case if data is prepared for Meta-Link communication if (MetaLinkData != null && MetaLinkData.Components.Count>0) { cadassemblyoutput.MetaLinkData = new CAD.MetaLinkDataType(); cadassemblyoutput.MetaLinkData.CadComponentMLData = new CAD.CadComponentMLDataType[MetaLinkData.Components.Count]; int i = 0; foreach (MetaLinkData.Component comp in MetaLinkData.Components) { cadassemblyoutput.MetaLinkData.CadComponentMLData[i] = new CAD.CadComponentMLDataType(); cadassemblyoutput.MetaLinkData.CadComponentMLData[i].ID = comp.ID; cadassemblyoutput.MetaLinkData.CadComponentMLData[i].AvmID = comp.AvmID; if (comp.Connectors.Count>0) { cadassemblyoutput.MetaLinkData.CadComponentMLData[i].ConnectorMLData = new CAD.ConnectorMLDataType[comp.Connectors.Count]; int j = 0; foreach (MetaLinkData.Connector conn in comp.Connectors) { cadassemblyoutput.MetaLinkData.CadComponentMLData[i].ConnectorMLData[j] = new CAD.ConnectorMLDataType(); cadassemblyoutput.MetaLinkData.CadComponentMLData[i].ConnectorMLData[j].ID = conn.ID; cadassemblyoutput.MetaLinkData.CadComponentMLData[i].ConnectorMLData[j].DisplayName = conn.DisplayName; if (conn.Datums.Count > 0) { cadassemblyoutput.MetaLinkData.CadComponentMLData[i].ConnectorMLData[j].DatumMLData = new CAD.DatumMLDataType[conn.Datums.Count]; int k = 0; foreach (MetaLinkData.Datum d in conn.Datums) { cadassemblyoutput.MetaLinkData.CadComponentMLData[i].ConnectorMLData[j].DatumMLData[k] = new CAD.DatumMLDataType(); cadassemblyoutput.MetaLinkData.CadComponentMLData[i].ConnectorMLData[j].DatumMLData[k].ID = d.ID; cadassemblyoutput.MetaLinkData.CadComponentMLData[i].ConnectorMLData[j].DatumMLData[k].DisplayName = d.DisplayName; k++; } } j++; } } i++; } } cadassemblycomponentoutput.CADComponent = tmpComponents.ToArray(); //cadassemblycomponentoutput.CADComponent = tmpComponents.Values.ToArray(); cadassemblyoutput.CADComponent = cadassemblycomponentoutput; CAD.PropertiesType asmproperties = new CAD.PropertiesType(); asmproperties._id = UtilityHelpers.MakeUdmID(); CAD.UnitsType asmunit = new CAD.UnitsType(); asmunit._id = UtilityHelpers.MakeUdmID(); asmunit.Value = "value1"; asmproperties.Units = asmunit; cadassemblyoutput.Properties = asmproperties; return cadassemblyoutput; }
// META-2262: Modify orientation here instead of in CADData.cs private void ModifyRootComponentOrientation(CAD.CADComponentType componentParent, string assemblyID) { List <string> orientations = new List <string>(); orientations.Add("ASM_TOP"); orientations.Add("ASM_RIGHT"); orientations.Add("ASM_FRONT"); // Not doing recursive right now, just changing it at the first level //foreach (var aComponent in componentParent.CADComponent) if (componentParent.CADComponent != null) { foreach (var aComponent in componentParent.CADComponent) { if (aComponent.Constraint != null) { foreach (var constraint in aComponent.Constraint) { if (constraint.Pair != null) { foreach (var pair in constraint.Pair) { if (pair.ConstraintFeature != null) { foreach (var feature in pair.ConstraintFeature) { if (feature.ComponentID == assemblyID) { if (feature.FeatureName == "ASM_TOP") { feature.FeatureName = "ASM_FRONT"; orientations.Remove("ASM_TOP"); if (!orientations.Any()) { return; } } else if (feature.FeatureName == "ASM_RIGHT") { feature.FeatureName = "ASM_TOP"; orientations.Remove("ASM_RIGHT"); if (!orientations.Any()) { return; } } else if (feature.FeatureName == "ASM_FRONT") { feature.FeatureName = "ASM_RIGHT"; orientations.Remove("ASM_FRONT"); if (!orientations.Any()) { return; } } } } } } } } } } } }
/* 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; }
public CAD.AssemblyType ToCADXMLOutput(TestBenchModel.TestBenchBase tb) { CAD.AssemblyType cadassemblyoutput = new CAD.AssemblyType(); cadassemblyoutput._id = UtilityHelpers.MakeUdmID(); cadassemblyoutput.ConfigurationID = ConfigID; CAD.CADComponentType cadassemblycomponentoutput = new CAD.CADComponentType(); cadassemblycomponentoutput._id = UtilityHelpers.MakeUdmID(); cadassemblycomponentoutput.ComponentID = ConfigID; cadassemblycomponentoutput.Type = "ASSEMBLY"; cadassemblycomponentoutput.Standalone = false; cadassemblycomponentoutput.SpecialInstruction = ""; cadassemblycomponentoutput.Name = this.Name; cadassemblycomponentoutput.DisplayName = DisplayName; cadassemblycomponentoutput.MaterialID = ""; cadassemblycomponentoutput.Representation = ""; cadassemblycomponentoutput.Classification = ""; Dictionary <string, List <CAD.ConstraintType> > compidToConstraint = new Dictionary <string, List <CAD.ConstraintType> >(); // Dictionary<Id, List<Constraints>> var sortedEdges = ChildEdges.OrderBy(x => x.DstPortName).ToList(); foreach (CADEdge edge in sortedEdges) //foreach (CADEdge edge in ChildEdges) { CAD.ConstraintType constraintout = edge.ToCADXMLOutput(tb); if (!compidToConstraint.ContainsKey(edge.Dst.Id)) { compidToConstraint.Add(edge.Dst.Id, new List <CAD.ConstraintType>()); } compidToConstraint[edge.Dst.Id].Add(constraintout); } var sortedS2FEdges = ChildSize2FitEdges.OrderBy(x => x.DstPortName).ToList(); foreach (CADEdge edge in sortedS2FEdges) //foreach (CADEdge edge in ChildSize2FitEdges) { CAD.ConstraintType constraintout = edge.ToCADXMLOutput(tb); if (!compidToConstraint.ContainsKey(edge.Dst.Id)) { compidToConstraint.Add(edge.Dst.Id, new List <CAD.ConstraintType>()); } compidToConstraint[edge.Dst.Id].Add(constraintout); } // META-2885 //Dictionary<string, CAD.CADComponentType> tmpComponents = new Dictionary<string, CAD.CADComponentType>(); List <CAD.CADComponentType> tmpComponents = new List <CAD.CADComponentType>(); var sortedComponents = ChildComponents.OrderBy(x => x.Value.Name).ToDictionary(x => x.Key, x => x.Value).Values.ToList(); foreach (CADComponent component in sortedComponents) //foreach (CADComponent component in ChildComponents.Values) { CAD.CADComponentType componentout = component.ToCADXMLOutput(tb.GetRepresentation(component)); // root constraint if (component.Id == RootComponentID) { bool rootIsAsmType = component.ModelType == "Assembly"; //bool rootIsAsmType = component.ModelType == "PART"; List <CAD.PairType> pairlist = new List <CAD.PairType>(); CAD.ConstraintType rootconstraintout = new CAD.ConstraintType(); rootconstraintout._id = UtilityHelpers.MakeUdmID(); // front pair pairlist.Add(MakeRootConstraint("FRONT", component.DisplayID, ConfigID, rootIsAsmType, component.SpecialDatums.Where(d => d.DatumName == "FRONT").FirstOrDefault())); // top pair pairlist.Add(MakeRootConstraint("TOP", component.DisplayID, ConfigID, rootIsAsmType, component.SpecialDatums.Where(d => d.DatumName == "TOP").FirstOrDefault())); // right pair pairlist.Add(MakeRootConstraint("RIGHT", component.DisplayID, ConfigID, rootIsAsmType, component.SpecialDatums.Where(d => d.DatumName == "RIGHT").FirstOrDefault())); rootconstraintout.Pair = pairlist.ToArray(); componentout.Constraint = new CAD.ConstraintType[1]; componentout.Constraint[0] = rootconstraintout; } else { if (compidToConstraint.ContainsKey(component.Id)) { componentout.Constraint = compidToConstraint[component.Id].ToArray(); } } //tmpComponents[component.Id] = componentout; tmpComponents.Add(componentout); // 3/7/2016 - Export_All_Component_Points at TB level pointCoordinatesList.AddRange(component.PointCoordinatesList); } var size2fitCompSorted = ChildSize2FitComponents.OrderBy(x => x.Value.Name).ToDictionary(x => x.Key, x => x.Value).Values.ToList(); foreach (CADComponent component in size2fitCompSorted)//foreach (CADComponent component in ChildSize2FitComponents.Values) // META-2885 { CAD.CADComponentType componentout = component.ToCADXMLOutput(tb.GetRepresentation(component)); if (compidToConstraint.ContainsKey(component.Id)) { componentout.Constraint = compidToConstraint[component.Id].ToArray(); } //tmpComponents[component.Id] = componentout; tmpComponents.Add(componentout); // 3/7/2016 - Export_All_Component_Points at TB level pointCoordinatesList.AddRange(component.PointCoordinatesList); } // Fill MetaLinkData. Only needed in case if data is prepared for Meta-Link communication if (MetaLinkData != null && MetaLinkData.Components.Count > 0) { cadassemblyoutput.MetaLinkData = new CAD.MetaLinkDataType(); cadassemblyoutput.MetaLinkData.CadComponentMLData = new CAD.CadComponentMLDataType[MetaLinkData.Components.Count]; int i = 0; foreach (MetaLinkData.Component comp in MetaLinkData.Components) { cadassemblyoutput.MetaLinkData.CadComponentMLData[i] = new CAD.CadComponentMLDataType(); cadassemblyoutput.MetaLinkData.CadComponentMLData[i].ID = comp.ID; cadassemblyoutput.MetaLinkData.CadComponentMLData[i].AvmID = comp.AvmID; if (comp.Connectors.Count > 0) { cadassemblyoutput.MetaLinkData.CadComponentMLData[i].ConnectorMLData = new CAD.ConnectorMLDataType[comp.Connectors.Count]; int j = 0; foreach (MetaLinkData.Connector conn in comp.Connectors) { cadassemblyoutput.MetaLinkData.CadComponentMLData[i].ConnectorMLData[j] = new CAD.ConnectorMLDataType(); cadassemblyoutput.MetaLinkData.CadComponentMLData[i].ConnectorMLData[j].ID = conn.ID; cadassemblyoutput.MetaLinkData.CadComponentMLData[i].ConnectorMLData[j].DisplayName = conn.DisplayName; if (conn.Datums.Count > 0) { cadassemblyoutput.MetaLinkData.CadComponentMLData[i].ConnectorMLData[j].DatumMLData = new CAD.DatumMLDataType[conn.Datums.Count]; int k = 0; foreach (MetaLinkData.Datum d in conn.Datums) { cadassemblyoutput.MetaLinkData.CadComponentMLData[i].ConnectorMLData[j].DatumMLData[k] = new CAD.DatumMLDataType(); cadassemblyoutput.MetaLinkData.CadComponentMLData[i].ConnectorMLData[j].DatumMLData[k].ID = d.ID; cadassemblyoutput.MetaLinkData.CadComponentMLData[i].ConnectorMLData[j].DatumMLData[k].DisplayName = d.DisplayName; k++; } } j++; } } i++; } } cadassemblycomponentoutput.CADComponent = tmpComponents.ToArray(); //cadassemblycomponentoutput.CADComponent = tmpComponents.Values.ToArray(); cadassemblyoutput.CADComponent = cadassemblycomponentoutput; CAD.PropertiesType asmproperties = new CAD.PropertiesType(); asmproperties._id = UtilityHelpers.MakeUdmID(); CAD.UnitsType asmunit = new CAD.UnitsType(); asmunit._id = UtilityHelpers.MakeUdmID(); asmunit.Value = "value1"; asmproperties.Units = asmunit; cadassemblyoutput.Properties = asmproperties; return(cadassemblyoutput); }