Beispiel #1
0
        protected override void DeserializeBrickTubeModel(BrickTubeModel brickTubeModel, XElement element)
        {
            DeserializePartCullingModel(brickTubeModel, element);

            //LEGACY
            if (element.HasElement(StudReference.NODE_NAME, out XElement tubeStudElem))
            {
                var studRef = StudReference.FromXml(tubeStudElem);
                if (!string.IsNullOrEmpty(brickTubeModel.LegacyConnectionID))
                {
                    studRef.ConnectionID = brickTubeModel.LegacyConnectionID;
                }
                brickTubeModel.ReferencedStuds.Add(studRef);
                //TubeStud = StudReference.FromXml(tubeStudElem);
                //if (!string.IsNullOrEmpty(LegacyConnectionID))
                //    TubeStud.ConnectionID = LegacyConnectionID;
            }

            brickTubeModel.TubeStud = brickTubeModel.ReferencedStuds.FirstOrDefault();

            brickTubeModel.AdjacentStuds.Clear();
            if (element.HasElement(nameof(BrickTubeModel.AdjacentStuds), out XElement adjStudsElem))
            {
                foreach (var adjStudElem in adjStudsElem.Elements(StudReference.NODE_NAME))
                {
                    var studRef = StudReference.FromXml(adjStudElem);
                    if (!string.IsNullOrEmpty(brickTubeModel.LegacyConnectionID))
                    {
                        studRef.ConnectionID = brickTubeModel.LegacyConnectionID;
                    }
                    brickTubeModel.AdjacentStuds.Add(studRef);
                }
            }
        }
Beispiel #2
0
        public override SurfaceComponent DeserializeSurfaceComponent(XElement element)
        {
            SurfaceComponent component = null;
            var componentType          = element.ReadAttribute <ModelComponentType>("Type");

            switch (componentType)
            {
            case ModelComponentType.Part:
                component = new PartModel();
                DeserializePartModel(component as PartModel, element);
                break;

            case ModelComponentType.MaleStud:
                component = new MaleStudModel();
                DeserializeMaleStudModel(component as MaleStudModel, element);
                break;

            case ModelComponentType.FemaleStud:
                component = new FemaleStudModel();
                DeserializeFemaleStudModel(component as FemaleStudModel, element);
                break;

            case ModelComponentType.BrickTube:
                component = new BrickTubeModel();
                DeserializeBrickTubeModel(component as BrickTubeModel, element);
                break;
            }

            if (element.HasElement(nameof(SurfaceComponent.Meshes), out XElement geomElem))
            {
                foreach (var elem in geomElem.Elements(ModelMeshReference.NODE_NAME))
                {
                    var mesh = new ModelMeshReference();
                    mesh.LoadFromXml(elem);
                    component.Meshes.Add(mesh);
                }
            }

            return(component);
        }
Beispiel #3
0
 protected abstract void DeserializeBrickTubeModel(BrickTubeModel brickTubeModel, XElement element);