public List<CADGeometry> Geometry = new List<CADGeometry>(); // If geometries are associated with this interface

        public StructuralInterfaceConstraint(GmeCommon.Interfaces.FCO impl, 
                                             string parentID, 
                                             string parentinstanceGUID)
        {
            CyPhyImpl = impl;
            PortID = impl.ID;
            ParentID = parentID;
            ParentInstanceGUID = parentinstanceGUID;
            DatumList = new Dictionary<string, Datum>();
            DegreeFreedom = 0;

            if (impl is CyPhy.Connector)
            {
                InterfaceDefinition = (impl as CyPhy.Connector).Attributes.Definition;
                Name = impl.Name;

            }
            else if (impl is CyPhy.CADDatum)
            {
                InterfaceDefinition = (impl as CyPhy.CADDatum).Attributes.Definition;
                Name = impl.Name;
            }
            else
            {
                InterfaceDefinition = "";
                Name = "";
            }
        }
        private CyPhyML.ComponentAssembly FindTopLevelAssembly(GmeCommon.Interfaces.FCO componentasm)
        {
            CyPhyML.ComponentAssembly topassembly = null;
            if (componentasm.ParentContainer.Kind == "ComponentAssemblies")             // Top Level Assembly
            {
                topassembly = (componentasm as CyPhyML.ComponentAssembly);
            }
            else if (componentasm.ParentContainer.Kind == "ComponentAssembly")
            {
                topassembly = FindTopLevelAssembly(componentasm.ParentContainer as CyPhyML.ComponentAssembly);
            }

            return topassembly;
        }
        public CommonTraversal(GmeCommon.Interfaces.FCO start, CyPhy.ComponentAssembly topassembly)
        {
            Initialize();
            startNodeID = start.ID;

            this.topAssembly = topassembly;

            if (start is CyPhy.Connector)
            {
                VisitConnector(start as CyPhy.Connector, (MgaFCO)start.ParentContainer.Impl);
            }
            else if (start is CyPhy.CADDatum)
            {
                VisitCADDatum(start as CyPhy.CADDatum);
            }
        }