public CAD.AssembliesType ToCADXMLOutput(TestBenchModel.TestBenchBase tb, bool metalink = false) { CAD.AssembliesType outputAssembliesType = new CAD.AssembliesType(); outputAssembliesType.VersionInfo = ""; List <CAD.AssemblyType> asmlist = new List <CAD.AssemblyType>(); foreach (var item in assemblies.Values) { CAD.AssemblyType assembly = item.ToCADXMLOutput(tb); asmlist.Add(assembly); pointCoordinatesList.AddRange(item.PointCoordinatesList); } if (asmlist.Count > 1 && metalink) { Logger.Instance.AddLogMessage("There's more than one unconnected assembly in the model. Meta-Link may not work with this model.", Severity.Warning); } if (orphans.Any()) { if (metalink) { CAD.AssemblyType topAssembly = asmlist.First(); List <CAD.CADComponentType> cadcomponentlist = topAssembly.CADComponent.CADComponent.ToList(); foreach (var orphan in orphans) { cadcomponentlist.Add(orphan.ToCADXMLOutput(tb.GetRepresentation(orphan))); } topAssembly.CADComponent.CADComponent = cadcomponentlist.ToArray(); } else { List <CAD.CADComponentType> orphanlist = new List <CAD.CADComponentType>(); CAD.UnassembledComponentsType orphancomponentParent = new CAD.UnassembledComponentsType(); orphancomponentParent._id = UtilityHelpers.MakeUdmID(); foreach (var orphan in orphans) { orphanlist.Add(orphan.ToCADXMLOutput(tb.GetRepresentation(orphan))); } orphancomponentParent.CADComponent = orphanlist.ToArray(); outputAssembliesType.UnassembledComponents = orphancomponentParent; } } outputAssembliesType.Assembly = asmlist.ToArray(); return(outputAssembliesType); }
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); }
public CAD.ConstraintType ToCADXMLOutput(TestBenchModel.TestBenchBase testBenchBase) { CAD.ConstraintType constraintout = new CAD.ConstraintType(); constraintout._id = UtilityHelpers.MakeUdmID(); CADComponent src = Src as CADComponent; CADComponent dst = Dst as CADComponent; string srcid = src.DisplayID; string dstid = dst.DisplayID; if (ConstraintPairs.Any()) { List <CAD.PairType> pairlist = new List <CAD.PairType>(); foreach (var item in ConstraintPairs) { List <CAD.ConstraintFeatureType> constrainfeaturelist = new List <CAD.ConstraintFeatureType>(); CAD.PairType pair = new CAD.PairType(); pair._id = UtilityHelpers.MakeUdmID(); pair.FeatureAlignmentType = item.Item1.Alignment; pair.FeatureGeometryType = item.Item1.Type.ToString().ToUpper(); pair.FeatureInterfaceType = "CAD_DATUM"; if (item.Item1.Guide || item.Item2.Guide) { pair.Guide = "True"; } CAD.ConstraintFeatureType afeature = new CAD.ConstraintFeatureType(); afeature._id = UtilityHelpers.MakeUdmID(); afeature.ComponentID = item.Item1.ComponentID; afeature.FeatureName = item.Item1.DatumName; afeature.FeatureOrientationType = item.Item1.Orientation; if (item.Item1.Marker != null) { afeature.GeometryMarker = item.Item1.Marker.ToCADXml(); } CAD.ConstraintFeatureType bfeature = new CAD.ConstraintFeatureType(); bfeature._id = UtilityHelpers.MakeUdmID(); bfeature.ComponentID = item.Item2.ComponentID; bfeature.FeatureName = item.Item2.DatumName; bfeature.FeatureOrientationType = item.Item2.Orientation; if (item.Item2.Marker != null) { bfeature.GeometryMarker = item.Item2.Marker.ToCADXml(); } constrainfeaturelist.Add(afeature); constrainfeaturelist.Add(bfeature); pair.ConstraintFeature = constrainfeaturelist.ToArray(); pairlist.Add(pair); } constraintout.Pair = pairlist.ToArray(); // META-3124 if (KinematicJointPair != null) { constraintout.Joint = KinematicJointPair.ToCADXMLOutput(); } // Associated geomnetries List <CAD.GeometryType> geoms = new List <CAD.GeometryType>(); foreach (var geom in SrcIntf.Geometry.Union(DstIntf.Geometry)) { geoms.Add(geom.ToCADXMLOutput()); } constraintout.Geometry = geoms.ToArray(); // Adjoining surface treatment (if any) if (testBenchBase is TestBenchModel.FEATestBench) { string surftreatment = GetAdjoiningSurfaceTreatment(testBenchBase as TestBenchModel.FEATestBench); constraintout.AdjoiningSurfaceType = surftreatment; } } return(constraintout); }