Exemplo n.º 1
0
 public bool Load(String filename)
 {
     try
     {
         XmlHelper xh = new XmlHelper();
         bool fileExist = xh.Start(filename, "ApplicationConfig");
         XmlNode ac = xh.m_toplevel;
         m_LastModelFilename = xh.GetString(ac, "LastModelName","");
         m_cursliceprofilename = UVDLPApp.Instance().m_PathProfiles + UVDLPApp.m_pathsep + xh.GetString(ac, "SliceProfileName", "default.slicing");
         m_curmachineeprofilename = UVDLPApp.Instance().m_PathMachines + UVDLPApp.m_pathsep + xh.GetString(ac, "MachineProfileName", "NullMachine.machine");
         m_autoconnect = xh.GetBool(ac, "AutoConnect", false);
         m_loadlastmodel = xh.GetBool(ac, "LoadLastModel", true);
         m_slic3rloc = xh.GetString(ac, "Slic3rLocation", "");
         m_foregroundcolor =  xh.GetColor(ac, "ForegroundColor", Color.White);
         m_backgroundcolor = xh.GetColor(ac, "BackgroundColor", Color.Black);
         m_previewslicesbuilddisplay = xh.GetBool(ac, "PreviewSlices", false);
         if (!fileExist)
         {
             xh.Save(FILE_VERSION);
         }
         return true;
     }
     catch (Exception ex)
     {
         DebugLogger.Instance().LogRecord(ex.Message);
         return false;
     }
 }
 /// <summary>
 /// This allows for retrieve arbitrary variables from the machine XML configuration
 /// </summary>
 /// <param name="varname"></param>
 /// <returns></returns>
 public string GetStringVar(string varname) 
 {
     XmlHelper xh = new XmlHelper();
     bool fileExist = xh.Start(m_filename, "MachineConfig");
     XmlNode mc = xh.m_toplevel;
     string retstr = xh.GetString(mc, varname,"");
     return retstr;        
 }
 public void Save(String filename)
 {
     XmlHelper xh = new XmlHelper();
     xh.Start(filename, "SupportConfig");
     XmlNode sc = xh.m_toplevel;
     xh.SetParameter(sc, "XSpace", xspace);
     xh.SetParameter(sc, "YSpace", yspace);
     xh.SetParameter(sc, "HeadTopRadiusMM", htrad);
     xh.SetParameter(sc, "HeadBottomRadiusMM", hbrad);
     xh.SetParameter(sc, "FootTopRadiusMM", ftrad);
     xh.SetParameter(sc, "FootBottomRadiusMM", fbrad);
     xh.SetParameter(sc, "FootBottomIntraRadiusMM", fbrad2);
     xh.Save(FILE_VERSION);
 }
Exemplo n.º 4
0
 // load from xml file -SHS
 public bool Load(String filename)
 {
     m_commands.Clear();
     XmlHelper xh = new XmlHelper();
     xh.Start(filename, "ProjectorCmdList");
     List<XmlNode> ndlist = xh.GetAllSections(null, "Command");
     foreach (XmlNode nd in ndlist)
     {
         ProjectorCommand pc = new ProjectorCommand();
         pc.name = xh.GetString(nd, "Name", "none");
         pc.hex = xh.GetBool(nd, "IsHex", false);
         pc.command = xh.GetString(nd, "Cmd", "");
         m_commands.Add(pc);
     }
     return true;
 }
Exemplo n.º 5
0
        public void Save(String filename)
        {
            XmlHelper xh = new XmlHelper();

            xh.Start(filename, "SupportConfig");
            XmlNode sc = xh.m_toplevel;

            xh.SetParameter(sc, "XSpace", xspace);
            xh.SetParameter(sc, "YSpace", yspace);
            xh.SetParameter(sc, "HeadTopRadiusMM", htrad);
            xh.SetParameter(sc, "HeadBottomRadiusMM", hbrad);
            xh.SetParameter(sc, "FootTopRadiusMM", ftrad);
            xh.SetParameter(sc, "FootBottomRadiusMM", fbrad);
            xh.SetParameter(sc, "FootBottomIntraRadiusMM", fbrad2);
            xh.Save(FILE_VERSION);
        }
        public void Save(String filename)
        {
            XmlHelper xh = new XmlHelper();

            xh.Start(filename, "SupportConfig");
            XmlNode sc = xh.m_toplevel;

            xh.SetParameter(sc, "XSpace", xspace);
            xh.SetParameter(sc, "YSpace", yspace);
            xh.SetParameter(sc, "MinAdaptiveGap", mingap);
            xh.SetParameter(sc, "HeadTopRadiusMM", htrad);
            xh.SetParameter(sc, "HeadBottomRadiusMM", hbrad);
            xh.SetParameter(sc, "FootTopRadiusMM", ftrad);
            xh.SetParameter(sc, "FootBottomRadiusMM", fbrad);
            xh.SetParameter(sc, "FootBottomIntraRadiusMM", fbrad2);
            xh.SetParameter(sc, "DownwardAngle", downwardAngle);
            xh.SetParameter(sc, "GenerateOnDownward", m_onlydownward);
            xh.Save(FILE_VERSION);
        }
Exemplo n.º 7
0
        public void Load(String filename)
        {
            XmlHelper xh        = new XmlHelper();
            bool      fileExist = xh.Start(filename, "SupportConfig");
            XmlNode   sc        = xh.m_toplevel;

            xspace = xh.GetDouble(sc, "XSpace", 5.0);
            yspace = xh.GetDouble(sc, "YSpace", 5.0);
            htrad  = xh.GetDouble(sc, "HeadTopRadiusMM", 0.2);
            hbrad  = xh.GetDouble(sc, "HeadBottomRadiusMM", 0.5);
            ftrad  = xh.GetDouble(sc, "FootTopRadiusMM", 0.5);
            fbrad  = xh.GetDouble(sc, "FootBottomRadiusMM", 2.0);
            fbrad2 = xh.GetDouble(sc, "FootBottomIntraRadiusMM", 0.2);

            if (!fileExist)
            {
                xh.Save(FILE_VERSION);
            }
        }
        public void Load(String filename)
        {
            XmlHelper xh = new XmlHelper();
            bool fileExist = xh.Start(filename, "SupportConfig");
            XmlNode sc = xh.m_toplevel;

            xspace = xh.GetDouble(sc, "XSpace", 5.0);
            yspace = xh.GetDouble(sc, "YSpace", 5.0);
            htrad = xh.GetDouble(sc, "HeadTopRadiusMM", 0.2);
            hbrad = xh.GetDouble(sc, "HeadBottomRadiusMM", 0.5);
            ftrad = xh.GetDouble(sc, "FootTopRadiusMM", 0.5);
            fbrad = xh.GetDouble(sc, "FootBottomRadiusMM", 2.0);
            fbrad2 = xh.GetDouble(sc, "FootBottomIntraRadiusMM", 0.2);

            if (!fileExist)
            {
                xh.Save(FILE_VERSION);
            }
        }
        public void Load(String filename)
        {
            XmlHelper xh        = new XmlHelper();
            bool      fileExist = xh.Start(filename, "SupportConfig");
            XmlNode   sc        = xh.m_toplevel;

            xspace         = xh.GetDouble(sc, "XSpace", 5.0);
            yspace         = xh.GetDouble(sc, "YSpace", 5.0);
            mingap         = xh.GetDouble(sc, "MinAdaptiveGap", 5.0);
            htrad          = xh.GetDouble(sc, "HeadTopRadiusMM", 0.2);
            hbrad          = xh.GetDouble(sc, "HeadBottomRadiusMM", 0.5);
            ftrad          = xh.GetDouble(sc, "FootTopRadiusMM", 0.5);
            fbrad          = xh.GetDouble(sc, "FootBottomRadiusMM", 2.0);
            fbrad2         = xh.GetDouble(sc, "FootBottomIntraRadiusMM", 0.2);
            downwardAngle  = xh.GetDouble(sc, "DownwardAngle", 45.0);
            m_onlydownward = xh.GetBool(sc, "GenerateOnDownward", false);

            if (!fileExist)
            {
                xh.Save(FILE_VERSION);
            }
        }
Exemplo n.º 10
0
 public bool Load(String filename) 
 {
     try
     {
         XmlHelper xh = new XmlHelper();
         bool fileExist = xh.Start(filename, "ApplicationConfig");
         XmlNode ac = xh.m_toplevel;
         m_LastModelFilename = xh.GetString(ac, "LastModelName","");
         m_cursliceprofilename = UVDLPApp.Instance().m_PathProfiles + UVDLPApp.m_pathsep + xh.GetString(ac, "SliceProfileName", "default.slicing");
         m_curmachineeprofilename = UVDLPApp.Instance().m_PathMachines + UVDLPApp.m_pathsep + xh.GetString(ac, "MachineProfileName", "NullMachine.machine");
         m_autoconnect = xh.GetBool(ac, "AutoConnect", false);
         m_loadlastmodel = xh.GetBool(ac, "LoadLastModel", true);
         m_slic3rloc = xh.GetString(ac, "Slic3rLocation", "");
         m_slic3rparameters = xh.GetString(ac,"Slic3rParams","");
         m_foregroundcolor =  xh.GetColor(ac, "ForegroundColor", Color.White);
         m_backgroundcolor = xh.GetColor(ac, "BackgroundColor", Color.Black);
         m_previewslicesbuilddisplay = xh.GetBool(ac, "PreviewSlices", false);
         m_viewslice3d = xh.GetBool(ac, "Preview3dSlice", false);
         m_viewslice3dheight = xh.GetBool(ac, "Preview3dSliceHeight", false);
         m_driverdebuglog = xh.GetBool(ac, "DriverLogging", false);
         m_ignoreGCrsp = xh.GetBool(ac, "IgnoreGCRsp", false);
         m_showBoundingBox = xh.GetBool(ac, "ShowBoundingBox", true);
         m_showShaded = xh.GetBool(ac, "ShowShaded", false);
         m_showOutline = xh.GetBool(ac, "ShowOutline", false);
         m_licensekey = xh.GetString(ac, "LicenseKey", "00000000000000000000");
         m_serveraddress = xh.GetString(ac,"ServerAddress","www.buildyourownsla.com");
         m_contactform = xh.GetString(ac,"ContactForm","cwupdate.php");
         if (!fileExist)
         {
             xh.Save(FILE_VERSION);
         }
         return true;
     }
     catch (Exception ex) 
     {
         DebugLogger.Instance().LogRecord(ex.Message);
         return false;
     }
 }
Exemplo n.º 11
0
 public bool Save(String filename)
 {
     try
     {
         XmlHelper xh = new XmlHelper();
         bool fileExist = xh.Start(filename, "ApplicationConfig");
         XmlNode ac = xh.m_toplevel;
         xh.SetParameter(ac, "LastModelName", m_LastModelFilename);
         xh.SetParameter(ac, "SliceProfileName", Path.GetFileName(m_cursliceprofilename));
         xh.SetParameter(ac, "MachineProfileName", Path.GetFileName(m_curmachineeprofilename));
         xh.SetParameter(ac, "AutoConnect", m_autoconnect ? "True" : "False");
         xh.SetParameter(ac, "LoadLastModel", m_loadlastmodel ? "True" : "False");
         xh.SetParameter(ac, "Slic3rLocation", m_slic3rloc);
         xh.SetParameter(ac, "ForegroundColor", m_foregroundcolor);
         xh.SetParameter(ac, "BackgroundColor", m_backgroundcolor);
         xh.SetParameter(ac, "PreviewSlices", m_previewslicesbuilddisplay);
         xh.Save(FILE_VERSION);
         return true;
     }catch(Exception ex)
     {
         DebugLogger.Instance().LogRecord(ex.Message);
         return false;
     }
 }
Exemplo n.º 12
0
        public bool Load(string filename)
        {
            m_filename = filename;
            m_lstMonitorconfigs.Clear(); // clear any previously loaded monitors
            m_name = Path.GetFileNameWithoutExtension(filename);
            bool retval = false;
            XmlHelper xh = new XmlHelper();
            bool fileExist = xh.Start(m_filename, "MachineConfig");
            XmlNode mc = xh.m_toplevel;

            m_PlatXSize = xh.GetDouble(mc, "PlatformXSize", 102.0);
            m_PlatYSize = xh.GetDouble(mc, "PlatformYSize", 77.0);
            m_PlatZSize = xh.GetDouble(mc, "PlatformZSize", 100.0);
            m_XMaxFeedrate = xh.GetDouble(mc, "MaxXFeedRate", 100.0);
            m_YMaxFeedrate = xh.GetDouble(mc, "MaxYFeedRate", 100.0);
            m_ZMaxFeedrate = xh.GetDouble(mc, "MaxZFeedRate", 100.0);
            XRenderSize = xh.GetInt(mc, "XRenderSize", 1024);
            YRenderSize = xh.GetInt(mc, "YRenderSize", 768);
            MachineControls = xh.GetString(mc, "DisplayedControls", "XYZPG");
            m_machinetype = (eMachineType)xh.GetEnum(mc, "MachineType", typeof(eMachineType), eMachineType.UV_DLP);
            m_multimontype = (eMultiMonType)xh.GetEnum(mc, "MultiMonType", typeof(eMultiMonType), eMultiMonType.eHorizontal);
            
            if (m_driverconfig.Load(xh, mc))
            {
                retval = true;
            }

            //m_monitorconfig.Load(xh, mc);
            List<XmlNode> monitornodes = xh.FindAllChildElement(mc, "MonitorDriverConfig");
            m_lstMonitorconfigs = new List<MonitorConfig>();
            foreach (XmlNode node in monitornodes) 
            {
                MonitorConfig monc = new MonitorConfig();
                monc.Load(xh, node);
                m_lstMonitorconfigs.Add(monc);
            }
            if (m_lstMonitorconfigs.Count > 0)
            {
                // we need at least 1 monitor
                //m_monitorconfig = m_lstMonitorconfigs[0];
            }
            else 
            {
                DebugLogger.Instance().LogError("No monitor configurations found!");
            }

            CalcPixPerMM();

            if (!fileExist)
            {
                xh.Save(FILE_VERSION);
            }
            CorrectMonitorConfig();
            return retval;
        }
 public void Save(String filename)
 {
     XmlHelper xh = new XmlHelper();
     xh.Start(filename, "SupportConfig");
     XmlNode sc = xh.m_toplevel;
     xh.SetParameter(sc, "XSpace", xspace);
     xh.SetParameter(sc, "YSpace", yspace);
     xh.SetParameter(sc, "MinAdaptiveGap", mingap);
     xh.SetParameter(sc, "HeadTopRadiusMM", htrad);
     xh.SetParameter(sc, "HeadBottomRadiusMM", hbrad);
     xh.SetParameter(sc, "FootTopRadiusMM", ftrad);
     xh.SetParameter(sc, "FootBottomRadiusMM", fbrad);
     xh.SetParameter(sc, "FootBottomIntraRadiusMM", fbrad2);
     xh.SetParameter(sc, "DownwardAngle", downwardAngle);
     xh.SetParameter(sc, "GenerateOnDownward", m_onlydownward);
     xh.Save(FILE_VERSION);
 }
        public bool Load(string filename)
        {
            m_filename = filename;
            m_name = Path.GetFileNameWithoutExtension(filename);
            bool retval = false;
            XmlHelper xh = new XmlHelper();
            bool fileExist = xh.Start(m_filename, "MachineConfig");
            XmlNode mc = xh.m_toplevel;

            m_PlatXSize = xh.GetDouble(mc, "PlatformXSize", 102.0);
            m_PlatYSize = xh.GetDouble(mc, "PlatformYSize", 77.0);
            m_PlatZSize = xh.GetDouble(mc, "PlatformZSize", 100.0);
            m_XMaxFeedrate = xh.GetDouble(mc, "MaxXFeedRate", 100.0);
            m_YMaxFeedrate = xh.GetDouble(mc, "MaxYFeedRate", 100.0);
            m_ZMaxFeedrate = xh.GetDouble(mc, "MaxZFeedRate", 100.0);
            m_machinetype = (eMachineType)xh.GetEnum(mc, "MachineType", typeof(eMachineType), eMachineType.UV_DLP);

            if (m_driverconfig.Load(xh, mc))
            {
                retval = true;
            }

            m_monitorconfig.Load(xh, mc);
            CalcPixPerMM();

            if (!fileExist)
            {
                xh.Save(FILE_VERSION);
            }
            return retval;
        }
 public bool Load(string filename)
 {
     m_filename = filename;
     m_lstMonitorconfigs.Clear(); // clear any previously loaded monitors
     m_name = Path.GetFileNameWithoutExtension(filename);
     bool retval = false;
     XmlHelper xh = new XmlHelper();
     bool fileExist = xh.Start(m_filename, "MachineConfig");
     retval = Load(xh);
     if (!fileExist)
     {
         xh.Save(FILE_VERSION);
     }
     return retval;
 }
Exemplo n.º 16
0
 public bool Save(String filename)
 {
     try
     {
         XmlHelper xh = new XmlHelper();
         bool fileExist = xh.Start(filename, "ApplicationConfig");
         XmlNode ac = xh.m_toplevel;
         xh.SetParameter(ac, "LastModelName", m_LastModelFilename);
         xh.SetParameter(ac, "SliceProfileName", Path.GetFileName(m_cursliceprofilename));
         xh.SetParameter(ac, "MachineProfileName", Path.GetFileName(m_curmachineeprofilename));
         xh.SetParameter(ac, "AutoConnect", m_autoconnect ? "True" : "False");
         xh.SetParameter(ac, "LoadLastModel", m_loadlastmodel ? "True" : "False");
         xh.SetParameter(ac, "Slic3rLocation", m_slic3rloc);
         xh.SetParameter(ac, "Slic3rParams", m_slic3rparameters);
         xh.SetParameter(ac, "ForegroundColor", m_foregroundcolor);
         xh.SetParameter(ac, "BackgroundColor", m_backgroundcolor);
         xh.SetParameter(ac, "PreviewSlices", m_previewslicesbuilddisplay);
         xh.SetParameter(ac, "Preview3dSlice", m_viewslice3d);
         xh.SetParameter(ac, "Preview3dSliceHeight", m_viewslice3dheight);
         xh.SetParameter(ac, "DriverLogging", m_driverdebuglog);
         xh.SetParameter(ac, "IgnoreGCRsp", m_ignoreGCrsp);
         xh.SetParameter(ac, "ShowBoundingBox", m_showBoundingBox);
         xh.SetParameter(ac, "LicenseKey", m_licensekey);
         xh.Save(FILE_VERSION);
         return true;
     }catch(Exception ex)
     {
         DebugLogger.Instance().LogRecord(ex.Message);
         return false;
     }
 }
 public bool Save(string filename)
 {
     bool retval = false;
     m_filename = filename;
     m_name = Path.GetFileNameWithoutExtension(filename);
     XmlHelper xh = new XmlHelper();
     bool fileExist = xh.Start(m_filename, "MachineConfig");
     XmlNode mc = xh.m_toplevel;
     xh.SetParameter(mc, "PlatformXSize", m_PlatXSize);
     xh.SetParameter(mc, "PlatformYSize", m_PlatYSize);
     xh.SetParameter(mc, "PlatformZSize", m_PlatZSize);
     xh.SetParameter(mc, "MaxXFeedRate", m_XMaxFeedrate);
     xh.SetParameter(mc, "MaxYFeedRate", m_YMaxFeedrate);
     xh.SetParameter(mc, "MaxZFeedRate", m_ZMaxFeedrate);
     xh.SetParameter(mc, "MachineType", m_machinetype);
     if (m_driverconfig.Save(xh, mc))
     {
         retval = true;
     }
     m_monitorconfig.Save(xh, mc);
     xh.Save(FILE_VERSION);
     return retval;
 }
Exemplo n.º 18
0
 public bool Save(MemoryStream stream, string filename)
 {
     m_filename = filename;
     XmlHelper xh = new XmlHelper();
     bool fileExist = xh.Start(filename, "SliceBuildConfig");
     SaveInternal(ref xh);
     xh.Save(FILE_VERSION, ref stream);
     return true;
 }
Exemplo n.º 19
0
        public bool Load(String filename)
        {
            m_filename = filename;
            XmlHelper xh = new XmlHelper();
            bool fileExist = xh.Start(filename, "SliceBuildConfig");

            LoadInternal(ref xh);
            if (!fileExist)
            {
                return xh.Save(FILE_VERSION);
            }

            return true;
        }
        public void Load(String filename)
        {
            XmlHelper xh = new XmlHelper();
            bool fileExist = xh.Start(filename, "SupportConfig");
            XmlNode sc = xh.m_toplevel;

            xspace = xh.GetDouble(sc, "XSpace", 5.0);
            yspace = xh.GetDouble(sc, "YSpace", 5.0);
            mingap = xh.GetDouble(sc, "MinAdaptiveGap", 5.0);
            htrad = xh.GetDouble(sc, "HeadTopRadiusMM", 0.2);
            hbrad = xh.GetDouble(sc, "HeadBottomRadiusMM", 0.5);
            ftrad = xh.GetDouble(sc, "FootTopRadiusMM", 0.5);
            fbrad = xh.GetDouble(sc, "FootBottomRadiusMM", 2.0);
            fbrad2 = xh.GetDouble(sc, "FootBottomIntraRadiusMM", 0.2);
            downwardAngle = xh.GetDouble(sc, "DownwardAngle", 45.0);
            m_onlydownward = xh.GetBool(sc, "GenerateOnDownward", false);

            if (!fileExist)
            {
                xh.Save(FILE_VERSION);
            }
        }
        public bool Load(String filename)
        {
            m_filename = filename;

            LoadGCodes();
            XmlHelper xh = new XmlHelper();
            bool fileExist = xh.Start(filename, "SliceBuildConfig");
            XmlNode sbc = xh.m_toplevel;

            dpmmX = xh.GetDouble(sbc, "DotsPermmX", 102.4);
            dpmmY = xh.GetDouble(sbc, "DotsPermmY", 76.8);
            xres = xh.GetInt(sbc, "XResolution", 1024);
            yres = xh.GetInt(sbc, "YResolution", 768);
            ZThick = xh.GetDouble(sbc, "SliceHeight", 0.05);
            layertime_ms = xh.GetInt(sbc, "LayerTime", 1000); // 1 second default
            firstlayertime_ms = xh.GetInt(sbc, "FirstLayerTime", 5000);
            blanktime_ms = xh.GetInt(sbc, "BlankTime", 2000); // 2 seconds blank
            plat_temp = xh.GetInt(sbc, "PlatformTemp", 75);
            //exportgcode = xh.GetBool(sbc, "ExportGCode"));
            exportsvg = xh.GetBool(sbc, "ExportSVG", false);
            export = xh.GetBool(sbc, "Export", false); ;
            XOffset = xh.GetInt(sbc, "XOffset", 0);
            YOffset = xh.GetInt(sbc, "YOffset", 0);
            numfirstlayers = xh.GetInt(sbc, "NumberofBottomLayers", 3);
            direction = (eBuildDirection)xh.GetEnum(sbc, "Direction", typeof(eBuildDirection), eBuildDirection.Bottom_Up);
            liftdistance = xh.GetDouble(sbc, "LiftDistance", 5.0);
            slidetiltval = xh.GetDouble(sbc, "SlideTiltValue", 0.0);
            antialiasing = xh.GetBool(sbc, "AntiAliasing", false);
            usemainliftgcode = xh.GetBool(sbc, "UseMainLiftGCode", false);
            aaval = xh.GetDouble(sbc, "AntiAliasingValue", 1.5);
            liftfeedrate = xh.GetDouble(sbc, "LiftFeedRate", 50.0); // 50mm/s
            liftretractrate = xh.GetDouble(sbc, "LiftRetractRate", 100.0); // 100mm/s
            m_exportopt = xh.GetString(sbc, "ExportOption", "SUBDIR"); // default to saving in subdirectory
            m_flipX = xh.GetBool(sbc, "FlipX", false);
            m_flipY = xh.GetBool(sbc, "FlipY", false);
            m_notes = xh.GetString(sbc, "Notes", "");
            m_resinprice = xh.GetDouble(sbc, "ResinPriceL", 0.0);

            if (!fileExist)
            {
                return xh.Save(FILE_VERSION);
            }

            return true;
        }
        /*This is used to serialize to the GCode post-header info*/
        /*public bool Load(String filename)
        {
            Stream stream = null;
            try
            {
                m_filename = filename;
                stream = new FileStream(filename, FileMode.Open);
                if (Load(stream))
                {
                    stream.Close();
                    return true;
                }
                else
                {
                    stream.Close(); //close it anyway
                }
            }
            catch (Exception ex)
            {
                try
                {
                    stream.Close();
                }
                catch (Exception e)
                {
                    DebugLogger.Instance().LogError(e.Message);
                }
                DebugLogger.Instance().LogRecord(ex.Message);
            }
            return false;
        }*/
        public bool Save(String filename)
        {
            m_filename = filename;
            XmlHelper xh = new XmlHelper();
            bool fileExist = xh.Start(filename, "SliceBuildConfig");
            XmlNode sbc = xh.m_toplevel;

            xh.SetParameter(sbc, "DotsPermmX", dpmmX);
            xh.SetParameter(sbc, "DotsPermmY", dpmmY);
            xh.SetParameter(sbc, "XResolution", xres);
            xh.SetParameter(sbc, "YResolution", yres);
            xh.SetParameter(sbc, "SliceHeight", ZThick);
            xh.SetParameter(sbc, "LayerTime", layertime_ms);
            xh.SetParameter(sbc, "FirstLayerTime", firstlayertime_ms);
            xh.SetParameter(sbc, "BlankTime", blanktime_ms);
            xh.SetParameter(sbc, "PlatformTemp", plat_temp);
            // xh.SetParameter(sbc, "ExportGCode", exportgcode);
            xh.SetParameter(sbc, "ExportSVG", exportsvg);
            xh.SetParameter(sbc, "Export", export);
            xh.SetParameter(sbc, "XOffset", XOffset);
            xh.SetParameter(sbc, "YOffset", YOffset);
            xh.SetParameter(sbc, "NumberofBottomLayers", numfirstlayers);
            xh.SetParameter(sbc, "Direction", direction);
            xh.SetParameter(sbc, "LiftDistance", liftdistance);
            xh.SetParameter(sbc, "SlideTiltValue", slidetiltval);
            xh.SetParameter(sbc, "AntiAliasing", antialiasing);
            xh.SetParameter(sbc, "UseMainLiftGCode", usemainliftgcode);
            xh.SetParameter(sbc, "AntiAliasingValue", aaval);
            xh.SetParameter(sbc, "LiftFeedRate", liftfeedrate);
            xh.SetParameter(sbc, "LiftRetractRate", liftretractrate);
            xh.SetParameter(sbc, "ExportOption", m_exportopt);

            xh.SetParameter(sbc, "FlipX", m_flipX);
            xh.SetParameter(sbc, "FlipY", m_flipY);
            xh.SetParameter(sbc, "Notes", m_notes);
            xh.SetParameter(sbc, "ResinPriceL", m_resinprice);
            // xh.SetParameter(sbc, "Raise_Time_Delay",raise_time_ms);

            try
            {
                xh.Save(FILE_VERSION);
                SaveGCodes();
            }
            catch (Exception ex)
            {
                DebugLogger.Instance().LogRecord(ex.Message);
                return false;
            }
            return true;
        }