Inheritance: IDisposable
Example #1
0
        public GeoObject loadGeoObject(GeoRefObject refObject, GeoObject geoObject)
        {
            GeoObject returnObject = geoObject;

            if (refObject.hasReturnMode(GeoReturnModes.ClosesNode))
            {
                //todo
            }
            if (refObject.hasReturnMode(GeoReturnModes.OpensNode))
            {
                //todo
            }
            if (refObject.hasReturnMode(GeoReturnModes.Scaling))
            {
                //geo scaling
                returnObject.objScale.SetScale((uint)elem.geoParams[1].GetVal());
            }
            if (refObject.hasReturnMode(GeoReturnModes.Translation) || refObject.hasReturnMode(GeoReturnModes.Rotation))
            {
                if (refObject.hasReturnMode(GeoReturnModes.Translation) && refObject.hasReturnMode(GeoReturnModes.Rotation))
                {
                    //geo translation and rotation
                    returnObject.objTrans.xTrans = (short)elem.geoParams[1].GetVal();
                    returnObject.objTrans.yTrans = (short)elem.geoParams[2].GetVal();
                    returnObject.objTrans.zTrans = (short)elem.geoParams[3].GetVal();

                    returnObject.objRot.xRot = (short)elem.geoParams[4].GetVal();
                    returnObject.objRot.yRot = (short)elem.geoParams[5].GetVal();
                    returnObject.objRot.zRot = (short)elem.geoParams[6].GetVal();
                }
                else
                {
                    if (refObject.hasReturnMode(GeoReturnModes.Translation))
                    {
                        //geo translation
                        returnObject.objTrans.xTrans = (short)elem.geoParams[1].GetVal();
                        returnObject.objTrans.yTrans = (short)elem.geoParams[2].GetVal();
                        returnObject.objTrans.zTrans = (short)elem.geoParams[3].GetVal();
                    }
                    if (refObject.hasReturnMode(GeoReturnModes.Rotation))
                    {
                        //geo rotation
                        returnObject.objRot.xRot = (short)elem.geoParams[1].GetVal();
                        returnObject.objRot.yRot = (short)elem.geoParams[2].GetVal();
                        returnObject.objRot.zRot = (short)elem.geoParams[3].GetVal();
                    }
                }
            }

            if (refObject.hasReturnMode(GeoReturnModes.GeoDL))
            {
                returnObject.f3d.SetInitialDataFromLabelName(elem.geoParams[elem.geoParams.Count - 1].GetVal());
            }
            return(returnObject);
        }
Example #2
0
        public List <GeoObject> GetGeoObjectsFromGeoElems(List <GeoElem> geoElems, string labelName, GeoObject prevObject = null)
        {
            List <GeoObject> geoObjects = new List <GeoObject>();
            GeoObject        curObject;

            if (prevObject == null)
            {
                curObject = new GeoObject(GeoObjectTypes.RenderObject);
            }
            else
            {
                curObject = prevObject;
            }

            foreach (GeoElem geoElem in geoElems)
            {
                if (labelName != null)
                {
                    string[] name = MISCUtils.ParseAsmbd(geoElem.geoName);
                    if (name[0] == "glabel")
                    {
                        if (name[1] != labelName)
                        {
                            continue;
                        }
                    }
                }
                if (geoElem.type == GeoType.ListCloser)
                {
                    geoObjects.Add(new GeoObject(GeoObjectTypes.PopMatrix));
                }
                GeoCMDs CMD = new GeoCMDs();
                CMD.elem  = geoElem;
                curObject = CMD.loadGeoObject(CMD.getRefObject(), curObject);
                if (curObject.f3d.fileName != null)
                {
                    geoObjects.Add(curObject);
                    curObject = new GeoObject(GeoObjectTypes.RenderObject);
                }
                if (geoElem.type == GeoType.ListOpener)
                {
                    geoObjects.Add(new GeoObject(GeoObjectTypes.PushMatrix));
                    geoObjects.AddRange(GetGeoObjectsFromGeoElems(geoElem.geoElems, labelName, curObject));
                }
            }

            return(geoObjects);
        }