Program.cs 65 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182
  1. using Resources;
  2. using SmartCoalApplication.Base;
  3. using SmartCoalApplication.Base.AutoMeasure;
  4. using SmartCoalApplication.Base.CommTool;
  5. using SmartCoalApplication.Base.Enum;
  6. using SmartCoalApplication.Base.MeasureModel;
  7. using SmartCoalApplication.Base.SettingModel;
  8. using SmartCoalApplication.Core;
  9. using SmartCoalApplication.Core.DbOpreate;
  10. using SmartCoalApplication.Core.DbOpreate.DbBll;
  11. using SmartCoalApplication.Core.DbOpreate.DbModel;
  12. using SmartCoalApplication.ParameterSet;
  13. using SmartCoalApplication.SystemLayer;
  14. using System;
  15. using System.Collections.Generic;
  16. using System.Configuration;
  17. using System.Data.Entity.Core.Mapping;
  18. using System.Data.Entity.Core.Metadata.Edm;
  19. using System.Data.Entity.Infrastructure;
  20. using System.Globalization;
  21. using System.IO;
  22. using System.Linq;
  23. using System.Reflection;
  24. using System.Text;
  25. using System.Threading;
  26. using System.Threading.Tasks;
  27. using System.Windows.Forms;
  28. using SenseShield;
  29. using SmartCoalApplication.Base.FunctionModel;
  30. namespace SmartCoalApplication
  31. {
  32. internal sealed class Program
  33. {
  34. public static Program instance;
  35. public SplashForm splashForm = null;
  36. /// <summary>
  37. /// 图像处理参数
  38. /// </summary>
  39. public ImageMenu imageMenuModel;
  40. /// <summary>
  41. /// 相机是否合法
  42. /// </summary>
  43. public static bool cameraSNLegal = false;
  44. /// <summary>
  45. /// 启动时传进来的参数,需要进行解析
  46. /// 在自定义快捷方式的时候会用到
  47. /// 读取不同的配置路径的配置信息
  48. /// </summary>
  49. private string[] args;
  50. /// <summary>
  51. /// 主窗体
  52. /// </summary>
  53. private MainForm mainForm;
  54. /// <summary>
  55. /// 设置信息所在的文件夹
  56. /// </summary>
  57. public string SettingPrefix = "Default";
  58. /// <summary>
  59. /// 系统配置
  60. /// </summary>
  61. public ConfigModel configModel;
  62. /// <summary>
  63. /// 系统配置
  64. /// </summary>
  65. public FileNameRule fileNameRule;
  66. /// <summary>
  67. /// 快捷键配置
  68. /// </summary>
  69. public HotkeyModel hotkeyModel;
  70. /// <summary>
  71. /// 工具栏
  72. /// </summary>
  73. public ToolbarModel toolbarModel;
  74. /// <summary>
  75. /// 快捷栏
  76. /// </summary>
  77. public ShortcutbarModel shortcutbarModel;
  78. /// <summary>
  79. /// 测量样式信息
  80. /// </summary>
  81. public MeasureStyleModel measureStyleModel;
  82. /// <summary>
  83. /// 测量样式信息
  84. /// </summary>
  85. public MeasureAreaModel measureAreaModel;
  86. /// <summary>
  87. /// 换算完的标尺信息,包含所有系统内得单位
  88. /// </summary>
  89. public Dictionary<MeasurementUnit, double> rules = new Dictionary<MeasurementUnit, double>();
  90. /// <summary>
  91. /// 系统内选定的单位
  92. /// </summary>
  93. public MeasurementUnit measurementUnit;
  94. /// <summary>
  95. /// 当前系统标尺
  96. /// </summary>
  97. public mic_rulers ruleDB;
  98. /// <summary>
  99. /// 标尺集合
  100. /// </summary>
  101. public List<mic_rulers> mic_rulersAll;
  102. /// <summary>
  103. /// 单位对应的枚举数字
  104. /// </summary>
  105. public Dictionary<string, int> companyEnume;
  106. /// <summary>
  107. /// 是否开启加密锁验证
  108. /// </summary>
  109. public static/*const*/ bool useSenseShield = false;// true;//
  110. /// <summary>
  111. /// 将value为FALSE的菜单隐藏显示,key为要隐藏的menuID
  112. /// </summary>
  113. public static Dictionary<uint, bool> shieldValue = new Dictionary<uint, bool>();
  114. public int step_length = 1;
  115. /// <summary>
  116. /// 是否压缩
  117. /// </summary>
  118. public bool isCompression = true;
  119. /// <summary>
  120. ///
  121. /// </summary>
  122. public int decimalPlaces = 2;
  123. /// <summary>
  124. /// 构造函数
  125. /// </summary>
  126. /// <param name="args"></param>
  127. private Program(string[] args)
  128. {
  129. Application.SetCompatibleTextRenderingDefault(false);
  130. Application.EnableVisualStyles();
  131. //先单独获取App基础配置
  132. configModel = XmlSerializeHelper.DESerializer<ConfigModel>(FileOperationHelper.ReadStringFromFile(Application.StartupPath + "\\Config\\" + SettingPrefix + "\\Config.xml", FileMode.Open));
  133. PdnResources.Initialize(configModel);
  134. this.splashForm = new SplashForm("");
  135. var width = Screen.PrimaryScreen.WorkingArea.Width;
  136. var height = Screen.PrimaryScreen.WorkingArea.Height;
  137. this.splashForm.Location = new System.Drawing.Point(width / 2 - 300, height / 2 - 200);
  138. this.splashForm.TopMost = true;
  139. this.splashForm.Show();
  140. this.splashForm.Update();
  141. this.args = args;
  142. Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
  143. config.ConnectionStrings.ConnectionStrings["DBEntities"].ConnectionString = "Data Source=" + Application.StartupPath + @"\microscope.db3";
  144. config.Save(ConfigurationSaveMode.Modified);
  145. ConfigurationManager.RefreshSection("connectionStrings");
  146. //用于EF暖机操作,以避免第一次度数据库过慢
  147. using (var dbcontext = new DBEntities())
  148. {
  149. var objectContext = ((IObjectContextAdapter)dbcontext).ObjectContext;
  150. var mappingCollection = (StorageMappingItemCollection)objectContext.MetadataWorkspace.GetItemCollection(DataSpace.CSSpace);
  151. mappingCollection.GenerateViews(new List<EdmSchemaError>());
  152. }
  153. }
  154. /// <summary>
  155. /// 启动一个实例
  156. /// </summary>
  157. /// <param name="parent"></param>
  158. /// <param name="requireAdmin">是否需要管理员权限</param>
  159. /// <param name="args">传递进来的参数</param>
  160. public static void StartNewInstance(IWin32Window parent, bool requireAdmin, string[] args)
  161. {
  162. StringBuilder allArgsSB = new StringBuilder();
  163. foreach (string arg in args)
  164. {
  165. allArgsSB.Append(' ');
  166. if (arg.IndexOf(' ') != -1)
  167. {
  168. allArgsSB.Append('"');
  169. }
  170. allArgsSB.Append(arg);
  171. if (arg.IndexOf(' ') != -1)
  172. {
  173. allArgsSB.Append('"');
  174. }
  175. }
  176. string allArgs;
  177. if (allArgsSB.Length > 0)
  178. {
  179. allArgs = allArgsSB.ToString(1, allArgsSB.Length - 1);
  180. }
  181. else
  182. {
  183. allArgs = null;
  184. }
  185. /*Shell.Execute(
  186. parent,
  187. Application.ExecutablePath,
  188. allArgs,
  189. requireAdmin ? ExecutePrivilege.RequireAdmin : ExecutePrivilege.AsInvokerOrAsManifest,
  190. ExecuteWaitType.ReturnImmediately);*/
  191. }
  192. /// <summary>
  193. /// 检查需要的文件是否存在
  194. /// </summary>
  195. /// <returns>
  196. /// 返回true则说明缺少东西
  197. /// </returns>
  198. private bool CheckForImportantFiles()
  199. {
  200. string[] requiredFiles =
  201. new string[]
  202. {
  203. "PaintDotNet.Base.dll",
  204. "PaintDotNet.Core.dll",
  205. "PaintDotNet.Data.dll",
  206. "PaintDotNet.Resources.dll",
  207. "PaintDotNet.Strings.3.ZH-CN.resources",
  208. "PaintDotNet.SystemLayer.dll"
  209. };
  210. string dirName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
  211. List<string> missingFiles = null;
  212. foreach (string requiredFile in requiredFiles)
  213. {
  214. bool missing;
  215. try
  216. {
  217. string pathName = Path.Combine(dirName, requiredFile);
  218. FileInfo fileInfo = new FileInfo(pathName);
  219. missing = !fileInfo.Exists;
  220. }
  221. catch (Exception)
  222. {
  223. missing = true;
  224. }
  225. if (missing)
  226. {
  227. if (missingFiles == null)
  228. {
  229. missingFiles = new List<string>();
  230. }
  231. missingFiles.Add(requiredFile);
  232. }
  233. }
  234. if (missingFiles == null)
  235. {
  236. return false;
  237. }
  238. else
  239. {
  240. return true;
  241. }
  242. }
  243. public void Start()
  244. {
  245. /*if (CheckForImportantFiles())
  246. {
  247. Startup.StartNewInstance(null, true, args);
  248. return;
  249. }*/
  250. StartPart2();
  251. }
  252. /// <summary>
  253. /// 设置语言、地区等
  254. /// </summary>
  255. private void StartPart2()
  256. {
  257. string locale = Settings.CurrentUser.GetString(SettingNames.LanguageName, null);
  258. if (locale == null)
  259. {
  260. locale = Settings.SystemWide.GetString(SettingNames.LanguageName, null);
  261. }
  262. if (locale != null)
  263. {
  264. try
  265. {
  266. CultureInfo ci = new CultureInfo(locale, true);
  267. Thread.CurrentThread.CurrentUICulture = ci;
  268. }
  269. catch (Exception)
  270. {
  271. // Don't want bad culture name to crash us
  272. }
  273. }
  274. // Parse command-line arguments
  275. if (this.args.Length == 1)
  276. {
  277. //Updates.UpdatesOptionsDialog.ShowUpdateOptionsDialog(null, false);
  278. }
  279. else
  280. {
  281. this.mainForm = new MainForm();
  282. Application.Run(this.mainForm);
  283. try
  284. {
  285. this.mainForm.Dispose();
  286. }
  287. catch (Exception)
  288. {
  289. }
  290. this.mainForm = null;
  291. }
  292. }
  293. /// <summary>
  294. /// 程序主入口
  295. /// </summary>
  296. [STAThread]
  297. public static int Main(string[] args)
  298. {
  299. if (useSenseShield)
  300. {
  301. shieldValue.Clear();
  302. try
  303. {
  304. //1.生成目录下需要有4个运行库,分别在x64和x86下,每个里面两个
  305. //2.在C#项目里引用SlmRuntimeCsharp.dll
  306. //3.插入加密狗,执行代码测试
  307. //uint[] moduleIds = new uint[] {1, 100000,2,100013, 100066,5,100134, 230,231,232,233,1310,500,501};
  308. uint[] moduleIds = DogDecrypting.decryptingModules(5 /*, moduleIds*/);//第一个参数固定为4
  309. //this.label2.Text = string.Format("加密狗内许可模块号:{0}{1}", Environment.NewLine, string.Join(",", moduleIds));
  310. foreach (uint menuId in moduleIds)
  311. if (!shieldValue.ContainsKey(menuId))
  312. shieldValue.Add(menuId, true);
  313. else
  314. shieldValue[menuId] = true;
  315. }
  316. catch (Exception ex)
  317. {
  318. MessageBox.Show(ex.Message, "错误:", MessageBoxButtons.OK, MessageBoxIcon.Error);
  319. return 0;
  320. }
  321. }
  322. //这是要求管理员权限的版本
  323. /*//当前用户是管理员的时候,直接启动应用程序
  324. //如果不是管理员,则使用启动对象启动程序,以确保使用管理员身份运行
  325. //获得当前登录的Windows用户标示
  326. System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
  327. //创建Windows用户主题
  328. Application.EnableVisualStyles();
  329. System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);
  330. //判断当前登录用户是否为管理员
  331. if (principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator))
  332. {
  333. //如果是管理员,则直接运行
  334. //Application.EnableVisualStyles();
  335. //Application.Run(new Form1());
  336. instance = new Startup(args);
  337. instance.ModifySettingPrefix(args);
  338. instance.SystemReset();
  339. instance.InitSetting();
  340. instance.Start();
  341. // 为了测试用
  342. if (System.IO.File.Exists(Application.StartupPath + @"\1.txt"))
  343. useSenseShield = true;
  344. if (useSenseShield)
  345. {
  346. shieldValue.Clear();
  347. try
  348. {
  349. //1.生成目录下需要有4个运行库,分别在x64和x86下,每个里面两个
  350. //2.在C#项目里引用SlmRuntimeCsharp.dll
  351. //3.插入加密狗,执行代码测试
  352. uint[] moduleIds = DogDecrypting.decryptingModules(4*//*, moduleIds*//*);//第一个参数固定为4
  353. //this.label2.Text = string.Format("加密狗内许可模块号:{0}{1}", Environment.NewLine, string.Join(",", moduleIds));
  354. foreach (uint menuId in moduleIds)
  355. if (!shieldValue.ContainsKey(menuId))
  356. shieldValue.Add(menuId, true);
  357. else
  358. shieldValue[menuId] = true;
  359. }
  360. catch (Exception ex)
  361. {
  362. MessageBox.Show(ex.Message, "错误:", MessageBoxButtons.OK, MessageBoxIcon.Error);
  363. return 0;
  364. }
  365. }
  366. instance = new Startup(args);
  367. instance.ModifySettingPrefix(args);
  368. instance.SystemReset();
  369. instance.InitSetting();
  370. instance.Start();
  371. }
  372. else
  373. {
  374. //创建启动对象
  375. System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
  376. //设置运行文件
  377. startInfo.FileName = System.Windows.Forms.Application.ExecutablePath;
  378. //设置启动参数
  379. //startInfo.Arguments = String.Join(" ", Args);
  380. //设置启动动作,确保以管理员身份运行
  381. startInfo.Verb = "runas";
  382. try
  383. {
  384. //如果不是管理员,则启动UAC
  385. System.Diagnostics.Process.Start(startInfo);
  386. //退出
  387. System.Windows.Forms.Application.Exit();
  388. }
  389. catch
  390. {
  391. }
  392. }*/
  393. instance = new Program(args);
  394. instance.ModifySettingPrefix(args);
  395. instance.SystemReset();
  396. instance.isCompression = instance.configModel.isCompression;
  397. instance.decimalPlaces = instance.configModel.decimalPlacesNum;
  398. instance.InitSetting();
  399. instance.Start();
  400. return 0;
  401. }
  402. private void createData() {
  403. string filePath = Application.StartupPath + "\\Config\\Default\\basicTreeData.xml";
  404. MeasureMaintenanceTreeData measureMaintenanceTreeData = XmlSerializeHelper.DESerializer<MeasureMaintenanceTreeData>(FileOperationHelper.ReadStringFromFile(filePath, FileMode.Open));
  405. var id = 10;
  406. for (int i = 1; i <= measureMaintenanceTreeData.MeasureMaintenanceTreeDataList.Count; i++)
  407. {
  408. switch (i) {
  409. case 1:
  410. string[] qianmangkongErjiInfor = {"初件淺盲孔" };
  411. string[] celiangxianText = {"最大值","最小值","平均值", "上基材銅","下基材銅","上面銅+基材銅","下面銅+基材銅","上面銅","下面銅","左孔銅",
  412. "右孔銅","上孔徑","下孔徑","孔底","孔底咬蝕量" };
  413. for (int k = 0; k < qianmangkongErjiInfor.Length; k++) {
  414. MeasureMaintenanceTreeSpecificData data = new MeasureMaintenanceTreeSpecificData();
  415. data.MeasureMaintenanceTreeSpecificDataId = id.ToString();
  416. data.MeasureMaintenanceTreeSpecificDataParentId = measureMaintenanceTreeData.MeasureMaintenanceTreeDataList[i - 1].MeasureMaintenanceTreeSpecificDataId;
  417. data.MeasureMaintenanceTreeSpecificLevel = 2;
  418. data.MeasureMaintenanceTreeSpecificName = qianmangkongErjiInfor[k];
  419. data.MeasureMaintenanceTreeSpecificSonDataList = new List<MeasureMaintenanceTreeSpecificData>();
  420. data.MeasureMaintenanceTreeSpecificFormulaDataList = new List<MeasureMaintenanceFormulaParameters>();
  421. measureMaintenanceTreeData.MeasureMaintenanceTreeDataList[i - 1].MeasureMaintenanceTreeSpecificSonDataList.Add(data);
  422. id++;
  423. for (int m = 0; m < celiangxianText.Length; m++) {
  424. MeasureMaintenanceFormulaParameters pdata = new MeasureMaintenanceFormulaParameters();
  425. pdata.FormulaParameterName = celiangxianText[m];
  426. pdata.FormulaParameterParentId = data.MeasureMaintenanceTreeSpecificDataId;
  427. pdata.FormulaParametersId = id.ToString();
  428. data.MeasureMaintenanceTreeSpecificFormulaDataList.Add(pdata);
  429. id++;
  430. }
  431. }
  432. break;
  433. case 2:
  434. string[] shenmangkongErjiInfor = { "深盲孔單層", "深盲孔雙層" };
  435. string[] shenmangkongCeliangxianText1 = { "最大值", "最小值", "平均值", "上基材銅","下基材銅","上面銅+基材銅","下面銅+基材銅","上面銅","下面銅","左孔銅",
  436. "右孔銅","上孔徑","下孔徑","孔底","孔底咬蝕量","孔深","左膠厚","右膠厚","左膠内縮","右膠内縮" };
  437. string[] shenmangkongCeliangxianText2 = {"最大值", "最小值", "平均值", "上層上基材銅","上層下基材銅","上層上面銅+基材銅","上層下面銅+基材銅","上層上面銅","上層下面銅","上層左孔銅",
  438. "上層右孔銅","上層上孔徑","上層下孔徑","上層孔底","上層孔底咬蝕量","上層孔深","上層左膠厚","上層右膠厚","上層左膠内縮","上層右膠内縮" ,"下層上基材銅","下層下基材銅","下層上面銅+基材銅"
  439. ,"下層下面銅+基材銅","下層上面銅","下層下面銅","下層左孔銅",
  440. "下層右孔銅","下層上孔徑","下層下孔徑","下層孔底","下層孔底咬蝕量","下層孔深","下層左膠厚","下層右膠厚","下層左膠内縮","下層右膠内縮" };
  441. for (int k = 0; k < shenmangkongErjiInfor.Length; k++)
  442. {
  443. MeasureMaintenanceTreeSpecificData data = new MeasureMaintenanceTreeSpecificData();
  444. data.MeasureMaintenanceTreeSpecificDataId = id.ToString();
  445. data.MeasureMaintenanceTreeSpecificDataParentId = measureMaintenanceTreeData.MeasureMaintenanceTreeDataList[i - 1].MeasureMaintenanceTreeSpecificDataId;
  446. data.MeasureMaintenanceTreeSpecificLevel = 2;
  447. data.MeasureMaintenanceTreeSpecificName = shenmangkongErjiInfor[k];
  448. data.MeasureMaintenanceTreeSpecificSonDataList = new List<MeasureMaintenanceTreeSpecificData>();
  449. data.MeasureMaintenanceTreeSpecificFormulaDataList = new List<MeasureMaintenanceFormulaParameters>();
  450. measureMaintenanceTreeData.MeasureMaintenanceTreeDataList[i - 1].MeasureMaintenanceTreeSpecificSonDataList.Add(data);
  451. id++;
  452. switch (k) {
  453. case 0:
  454. for (int m = 0; m < shenmangkongCeliangxianText1.Length; m++)
  455. {
  456. MeasureMaintenanceFormulaParameters pdata = new MeasureMaintenanceFormulaParameters();
  457. pdata.FormulaParameterName = shenmangkongCeliangxianText1[m];
  458. pdata.FormulaParameterParentId = data.MeasureMaintenanceTreeSpecificDataId;
  459. pdata.FormulaParametersId = id.ToString();
  460. data.MeasureMaintenanceTreeSpecificFormulaDataList.Add(pdata);
  461. id++;
  462. }
  463. break;
  464. case 1:
  465. for (int m = 0; m < shenmangkongCeliangxianText2.Length; m++)
  466. {
  467. MeasureMaintenanceFormulaParameters pdata = new MeasureMaintenanceFormulaParameters();
  468. pdata.FormulaParameterName = shenmangkongCeliangxianText2[m];
  469. pdata.FormulaParameterParentId = data.MeasureMaintenanceTreeSpecificDataId;
  470. pdata.FormulaParametersId = id.ToString();
  471. data.MeasureMaintenanceTreeSpecificFormulaDataList.Add(pdata);
  472. id++;
  473. }
  474. break;
  475. }
  476. }
  477. break;
  478. case 3:
  479. string[] sicengbanErjiInfor = { "四層板左","四層板右","四層板孔徑" };
  480. string[] sicengbanCeliangxianText1 = { "最大值", "最小值", "平均值", "上基材銅", "下基材銅", "上面銅+基材銅", "下面銅+基材銅", "上面銅", "下面銅", "上粗糙度", "下粗糙度", "上孔銅", "中孔銅", "下孔銅" };
  481. string[] sicengbanCeliangxianText2 = { "最大值", "最小值", "平均值", "上孔徑", "下孔徑" };
  482. for (int k = 0; k < sicengbanErjiInfor.Length; k++)
  483. {
  484. MeasureMaintenanceTreeSpecificData data = new MeasureMaintenanceTreeSpecificData();
  485. data.MeasureMaintenanceTreeSpecificDataId = id.ToString();
  486. data.MeasureMaintenanceTreeSpecificDataParentId = measureMaintenanceTreeData.MeasureMaintenanceTreeDataList[i - 1].MeasureMaintenanceTreeSpecificDataId;
  487. data.MeasureMaintenanceTreeSpecificLevel = 2;
  488. data.MeasureMaintenanceTreeSpecificName = sicengbanErjiInfor[k];
  489. data.MeasureMaintenanceTreeSpecificSonDataList = new List<MeasureMaintenanceTreeSpecificData>();
  490. data.MeasureMaintenanceTreeSpecificFormulaDataList = new List<MeasureMaintenanceFormulaParameters>();
  491. measureMaintenanceTreeData.MeasureMaintenanceTreeDataList[i - 1].MeasureMaintenanceTreeSpecificSonDataList.Add(data);
  492. id++;
  493. switch (k)
  494. {
  495. case 0:
  496. for (int m = 0; m < sicengbanCeliangxianText1.Length; m++)
  497. {
  498. MeasureMaintenanceFormulaParameters pdata = new MeasureMaintenanceFormulaParameters();
  499. pdata.FormulaParameterName = sicengbanCeliangxianText1[m];
  500. pdata.FormulaParameterParentId = data.MeasureMaintenanceTreeSpecificDataId;
  501. pdata.FormulaParametersId = id.ToString();
  502. data.MeasureMaintenanceTreeSpecificFormulaDataList.Add(pdata);
  503. id++;
  504. }
  505. break;
  506. case 1:
  507. for (int m = 0; m < sicengbanCeliangxianText1.Length; m++)
  508. {
  509. MeasureMaintenanceFormulaParameters pdata = new MeasureMaintenanceFormulaParameters();
  510. pdata.FormulaParameterName = sicengbanCeliangxianText1[m];
  511. pdata.FormulaParameterParentId = data.MeasureMaintenanceTreeSpecificDataId;
  512. pdata.FormulaParametersId = id.ToString();
  513. data.MeasureMaintenanceTreeSpecificFormulaDataList.Add(pdata);
  514. id++;
  515. }
  516. break;
  517. case 2:
  518. for (int m = 0; m < sicengbanCeliangxianText2.Length; m++)
  519. {
  520. MeasureMaintenanceFormulaParameters pdata = new MeasureMaintenanceFormulaParameters();
  521. pdata.FormulaParameterName = sicengbanCeliangxianText2[m];
  522. pdata.FormulaParameterParentId = data.MeasureMaintenanceTreeSpecificDataId;
  523. pdata.FormulaParametersId = id.ToString();
  524. data.MeasureMaintenanceTreeSpecificFormulaDataList.Add(pdata);
  525. id++;
  526. }
  527. break;
  528. }
  529. }
  530. break;
  531. case 4:
  532. string[] sancengbanErjiInfor = { "三層板左", "三層板右","三層板全" };
  533. string[] sancengbanCeliangxianText1 = { "最大值", "最小值", "平均值", "上基材銅", "下基材銅", "上面銅+基材銅", "下面銅+基材銅", "上面銅", "下面銅", "粗糙度", "上孔銅", "下孔銅" };
  534. string[] sancengbanCeliangxianText2 = { "最大值", "最小值", "平均值", "左側上基材銅", "左側下基材銅", "左側上面銅+基材銅", "左側下面銅+基材銅", "左側上面銅", "左側下面銅", "左側粗糙度", "左側上孔銅", "左側下孔銅",
  535. "右側上基材銅", "右側下基材銅", "右側上面銅+基材銅", "右側下面銅+基材銅", "右側上面銅", "右側下面銅", "右側粗糙度", "右側上孔銅", "右側下孔銅","上孔徑","下孔徑"};
  536. for (int k = 0; k < sancengbanErjiInfor.Length; k++)
  537. {
  538. MeasureMaintenanceTreeSpecificData data = new MeasureMaintenanceTreeSpecificData();
  539. data.MeasureMaintenanceTreeSpecificDataId = id.ToString();
  540. data.MeasureMaintenanceTreeSpecificDataParentId = measureMaintenanceTreeData.MeasureMaintenanceTreeDataList[i - 1].MeasureMaintenanceTreeSpecificDataId;
  541. data.MeasureMaintenanceTreeSpecificLevel = 2;
  542. data.MeasureMaintenanceTreeSpecificName = sancengbanErjiInfor[k];
  543. data.MeasureMaintenanceTreeSpecificSonDataList = new List<MeasureMaintenanceTreeSpecificData>();
  544. data.MeasureMaintenanceTreeSpecificFormulaDataList = new List<MeasureMaintenanceFormulaParameters>();
  545. measureMaintenanceTreeData.MeasureMaintenanceTreeDataList[i - 1].MeasureMaintenanceTreeSpecificSonDataList.Add(data);
  546. id++;
  547. switch (k)
  548. {
  549. case 0:
  550. for (int m = 0; m < sancengbanCeliangxianText1.Length; m++)
  551. {
  552. MeasureMaintenanceFormulaParameters pdata = new MeasureMaintenanceFormulaParameters();
  553. pdata.FormulaParameterName = sancengbanCeliangxianText1[m];
  554. pdata.FormulaParameterParentId = data.MeasureMaintenanceTreeSpecificDataId;
  555. pdata.FormulaParametersId = id.ToString();
  556. data.MeasureMaintenanceTreeSpecificFormulaDataList.Add(pdata);
  557. id++;
  558. }
  559. break;
  560. case 1:
  561. for (int m = 0; m < sancengbanCeliangxianText1.Length; m++)
  562. {
  563. MeasureMaintenanceFormulaParameters pdata = new MeasureMaintenanceFormulaParameters();
  564. pdata.FormulaParameterName = sancengbanCeliangxianText1[m];
  565. pdata.FormulaParameterParentId = data.MeasureMaintenanceTreeSpecificDataId;
  566. pdata.FormulaParametersId = id.ToString();
  567. data.MeasureMaintenanceTreeSpecificFormulaDataList.Add(pdata);
  568. id++;
  569. }
  570. break;
  571. case 2:
  572. for (int m = 0; m < sancengbanCeliangxianText2.Length; m++)
  573. {
  574. MeasureMaintenanceFormulaParameters pdata = new MeasureMaintenanceFormulaParameters();
  575. pdata.FormulaParameterName = sancengbanCeliangxianText2[m];
  576. pdata.FormulaParameterParentId = data.MeasureMaintenanceTreeSpecificDataId;
  577. pdata.FormulaParametersId = id.ToString();
  578. data.MeasureMaintenanceTreeSpecificFormulaDataList.Add(pdata);
  579. id++;
  580. }
  581. break;
  582. }
  583. }
  584. break;
  585. case 5:
  586. string[] liangcengbanErjiInfor = { "兩層板左", "兩層板右","兩層板全" };
  587. string[] liangcengbanCeliangxianText1 = { "最大值", "最小值", "平均值", "上基材銅", "下基材銅", "上面銅+基材銅", "下面銅+基材銅", "上面銅", "下面銅", "孔銅" };
  588. string[] liangcengbanCeliangxianText2 = { "最大值", "最小值", "平均值", "左側上基材銅", "左側下基材銅", "左側上面銅+基材銅", "左側下面銅+基材銅", "左側上面銅", "左側下面銅", "左側孔銅",
  589. "右側上基材銅", "右側下基材銅", "右側上面銅+基材銅", "右側下面銅+基材銅", "右側上面銅", "右側下面銅", "右側孔銅","上孔徑","下孔徑"};
  590. for (int k = 0; k < liangcengbanErjiInfor.Length; k++)
  591. {
  592. MeasureMaintenanceTreeSpecificData data = new MeasureMaintenanceTreeSpecificData();
  593. data.MeasureMaintenanceTreeSpecificDataId = id.ToString();
  594. data.MeasureMaintenanceTreeSpecificDataParentId = measureMaintenanceTreeData.MeasureMaintenanceTreeDataList[i - 1].MeasureMaintenanceTreeSpecificDataId;
  595. data.MeasureMaintenanceTreeSpecificLevel = 2;
  596. data.MeasureMaintenanceTreeSpecificName = liangcengbanErjiInfor[k];
  597. data.MeasureMaintenanceTreeSpecificSonDataList = new List<MeasureMaintenanceTreeSpecificData>();
  598. data.MeasureMaintenanceTreeSpecificFormulaDataList = new List<MeasureMaintenanceFormulaParameters>();
  599. measureMaintenanceTreeData.MeasureMaintenanceTreeDataList[i - 1].MeasureMaintenanceTreeSpecificSonDataList.Add(data);
  600. id++;
  601. switch (k)
  602. {
  603. case 0:
  604. for (int m = 0; m < liangcengbanCeliangxianText1.Length; m++)
  605. {
  606. MeasureMaintenanceFormulaParameters pdata = new MeasureMaintenanceFormulaParameters();
  607. pdata.FormulaParameterName = liangcengbanCeliangxianText1[m];
  608. pdata.FormulaParameterParentId = data.MeasureMaintenanceTreeSpecificDataId;
  609. pdata.FormulaParametersId = id.ToString();
  610. data.MeasureMaintenanceTreeSpecificFormulaDataList.Add(pdata);
  611. id++;
  612. }
  613. break;
  614. case 1:
  615. for (int m = 0; m < liangcengbanCeliangxianText1.Length; m++)
  616. {
  617. MeasureMaintenanceFormulaParameters pdata = new MeasureMaintenanceFormulaParameters();
  618. pdata.FormulaParameterName = liangcengbanCeliangxianText1[m];
  619. pdata.FormulaParameterParentId = data.MeasureMaintenanceTreeSpecificDataId;
  620. pdata.FormulaParametersId = id.ToString();
  621. data.MeasureMaintenanceTreeSpecificFormulaDataList.Add(pdata);
  622. id++;
  623. }
  624. break;
  625. case 2:
  626. for (int m = 0; m < liangcengbanCeliangxianText2.Length; m++)
  627. {
  628. MeasureMaintenanceFormulaParameters pdata = new MeasureMaintenanceFormulaParameters();
  629. pdata.FormulaParameterName = liangcengbanCeliangxianText2[m];
  630. pdata.FormulaParameterParentId = data.MeasureMaintenanceTreeSpecificDataId;
  631. pdata.FormulaParametersId = id.ToString();
  632. data.MeasureMaintenanceTreeSpecificFormulaDataList.Add(pdata);
  633. id++;
  634. }
  635. break;
  636. }
  637. }
  638. break;
  639. case 6:
  640. string[] shikeyinziErjiInfor = { "蝕刻因子單層", "蝕刻因子雙層" };
  641. string[] shikeyinziCeliangxianText1 = { "最大值", "最小值", "平均值", "上幅", "下幅", "銅厚" };
  642. string[] shikeyinziCeliangxianText2 = { "最大值", "最小值", "平均值", "上幅", "下幅", "銅厚", "縂厚" };
  643. for (int k = 0; k < shikeyinziErjiInfor.Length; k++)
  644. {
  645. MeasureMaintenanceTreeSpecificData data = new MeasureMaintenanceTreeSpecificData();
  646. data.MeasureMaintenanceTreeSpecificDataId = id.ToString();
  647. data.MeasureMaintenanceTreeSpecificDataParentId = measureMaintenanceTreeData.MeasureMaintenanceTreeDataList[i - 1].MeasureMaintenanceTreeSpecificDataId;
  648. data.MeasureMaintenanceTreeSpecificLevel = 2;
  649. data.MeasureMaintenanceTreeSpecificName = shikeyinziErjiInfor[k];
  650. data.MeasureMaintenanceTreeSpecificSonDataList = new List<MeasureMaintenanceTreeSpecificData>();
  651. data.MeasureMaintenanceTreeSpecificFormulaDataList = new List<MeasureMaintenanceFormulaParameters>();
  652. measureMaintenanceTreeData.MeasureMaintenanceTreeDataList[i - 1].MeasureMaintenanceTreeSpecificSonDataList.Add(data);
  653. id++;
  654. switch (k)
  655. {
  656. case 0:
  657. for (int m = 0; m < shikeyinziCeliangxianText1.Length; m++)
  658. {
  659. MeasureMaintenanceFormulaParameters pdata = new MeasureMaintenanceFormulaParameters();
  660. pdata.FormulaParameterName = shikeyinziCeliangxianText1[m];
  661. pdata.FormulaParameterParentId = data.MeasureMaintenanceTreeSpecificDataId;
  662. pdata.FormulaParametersId = id.ToString();
  663. data.MeasureMaintenanceTreeSpecificFormulaDataList.Add(pdata);
  664. id++;
  665. }
  666. break;
  667. case 1:
  668. for (int m = 0; m < shikeyinziCeliangxianText2.Length; m++)
  669. {
  670. MeasureMaintenanceFormulaParameters pdata = new MeasureMaintenanceFormulaParameters();
  671. pdata.FormulaParameterName = shikeyinziCeliangxianText2[m];
  672. pdata.FormulaParameterParentId = data.MeasureMaintenanceTreeSpecificDataId;
  673. pdata.FormulaParametersId = id.ToString();
  674. data.MeasureMaintenanceTreeSpecificFormulaDataList.Add(pdata);
  675. id++;
  676. }
  677. break;
  678. }
  679. }
  680. break;
  681. case 7:
  682. string[] fanghanErjiInfor = { "meikaikou", "沒開口", "youkaikou", "有開口", "shuangcengtong", "雙層銅" };
  683. string[] fanghanCeliangxianText1 = { "最大值", "最小值", "平均值", "銅厚", "防焊厚度", "PI上防焊厚度", "安全距離", "offset", "undercut" };
  684. string[] fanghanCeliangxianText2 = { "最大值", "最小值", "平均值", "銅厚", "防焊厚度", "LPI厚度", "安全距離", "offset", "undercut", "防焊開口" };
  685. string[] fanghanCeliangxianText3 = { "最大值", "最小值", "平均值", "銅厚", "綫上防焊", "LPI厚度", "安全距離", "offset", "undercut" };
  686. for (int k = 0; k < fanghanErjiInfor.Length; k++)
  687. {
  688. MeasureMaintenanceTreeSpecificData data = new MeasureMaintenanceTreeSpecificData();
  689. data.MeasureMaintenanceTreeSpecificDataId = id.ToString();
  690. data.MeasureMaintenanceTreeSpecificDataParentId = measureMaintenanceTreeData.MeasureMaintenanceTreeDataList[i - 1].MeasureMaintenanceTreeSpecificDataId;
  691. data.MeasureMaintenanceTreeSpecificLevel = 2;
  692. data.MeasureMaintenanceTreeSpecificName = fanghanErjiInfor[k];
  693. data.MeasureMaintenanceTreeSpecificSonDataList = new List<MeasureMaintenanceTreeSpecificData>();
  694. data.MeasureMaintenanceTreeSpecificFormulaDataList = new List<MeasureMaintenanceFormulaParameters>();
  695. measureMaintenanceTreeData.MeasureMaintenanceTreeDataList[i - 1].MeasureMaintenanceTreeSpecificSonDataList.Add(data);
  696. id++;
  697. switch (k)
  698. {
  699. case 0:
  700. for (int m = 0; m < fanghanCeliangxianText1.Length; m++)
  701. {
  702. MeasureMaintenanceFormulaParameters pdata = new MeasureMaintenanceFormulaParameters();
  703. pdata.FormulaParameterName = fanghanCeliangxianText1[m];
  704. pdata.FormulaParameterParentId = data.MeasureMaintenanceTreeSpecificDataId;
  705. pdata.FormulaParametersId = id.ToString();
  706. data.MeasureMaintenanceTreeSpecificFormulaDataList.Add(pdata);
  707. id++;
  708. }
  709. break;
  710. case 1:
  711. for (int m = 0; m < fanghanCeliangxianText2.Length; m++)
  712. {
  713. MeasureMaintenanceFormulaParameters pdata = new MeasureMaintenanceFormulaParameters();
  714. pdata.FormulaParameterName = fanghanCeliangxianText2[m];
  715. pdata.FormulaParameterParentId = data.MeasureMaintenanceTreeSpecificDataId;
  716. pdata.FormulaParametersId = id.ToString();
  717. data.MeasureMaintenanceTreeSpecificFormulaDataList.Add(pdata);
  718. id++;
  719. }
  720. break;
  721. case 2:
  722. for (int m = 0; m < fanghanCeliangxianText3.Length; m++)
  723. {
  724. MeasureMaintenanceFormulaParameters pdata = new MeasureMaintenanceFormulaParameters();
  725. pdata.FormulaParameterName = fanghanCeliangxianText3[m];
  726. pdata.FormulaParameterParentId = data.MeasureMaintenanceTreeSpecificDataId;
  727. pdata.FormulaParametersId = id.ToString();
  728. data.MeasureMaintenanceTreeSpecificFormulaDataList.Add(pdata);
  729. id++;
  730. }
  731. break;
  732. }
  733. }
  734. break;
  735. case 8:
  736. string[] gaoduchaErjiInfor = { "左側", "右側", "全" };
  737. string[] gaoduchaCeliangxianText1 = { "最大值", "最小值", "平均值", "B", "B*" };
  738. string[] gaoduchaCeliangxianText2 = { "最大值", "最小值", "平均值", "PAD銅厚1", "PI上防焊1", "PAD銅厚2", "PI上防焊2" };
  739. for (int k = 0; k < gaoduchaErjiInfor.Length; k++)
  740. {
  741. MeasureMaintenanceTreeSpecificData data = new MeasureMaintenanceTreeSpecificData();
  742. data.MeasureMaintenanceTreeSpecificDataId = id.ToString();
  743. data.MeasureMaintenanceTreeSpecificDataParentId = measureMaintenanceTreeData.MeasureMaintenanceTreeDataList[i - 1].MeasureMaintenanceTreeSpecificDataId;
  744. data.MeasureMaintenanceTreeSpecificLevel = 2;
  745. data.MeasureMaintenanceTreeSpecificName = gaoduchaErjiInfor[k];
  746. data.MeasureMaintenanceTreeSpecificSonDataList = new List<MeasureMaintenanceTreeSpecificData>();
  747. data.MeasureMaintenanceTreeSpecificFormulaDataList = new List<MeasureMaintenanceFormulaParameters>();
  748. measureMaintenanceTreeData.MeasureMaintenanceTreeDataList[i - 1].MeasureMaintenanceTreeSpecificSonDataList.Add(data);
  749. id++;
  750. switch (k)
  751. {
  752. case 0:
  753. for (int m = 0; m < gaoduchaCeliangxianText1.Length; m++)
  754. {
  755. MeasureMaintenanceFormulaParameters pdata = new MeasureMaintenanceFormulaParameters();
  756. pdata.FormulaParameterName = gaoduchaCeliangxianText1[m];
  757. pdata.FormulaParameterParentId = data.MeasureMaintenanceTreeSpecificDataId;
  758. pdata.FormulaParametersId = id.ToString();
  759. data.MeasureMaintenanceTreeSpecificFormulaDataList.Add(pdata);
  760. id++;
  761. }
  762. break;
  763. case 1:
  764. for (int m = 0; m < gaoduchaCeliangxianText1.Length; m++)
  765. {
  766. MeasureMaintenanceFormulaParameters pdata = new MeasureMaintenanceFormulaParameters();
  767. pdata.FormulaParameterName = gaoduchaCeliangxianText1[m];
  768. pdata.FormulaParameterParentId = data.MeasureMaintenanceTreeSpecificDataId;
  769. pdata.FormulaParametersId = id.ToString();
  770. data.MeasureMaintenanceTreeSpecificFormulaDataList.Add(pdata);
  771. id++;
  772. }
  773. break;
  774. case 2:
  775. for (int m = 0; m < gaoduchaCeliangxianText2.Length; m++)
  776. {
  777. MeasureMaintenanceFormulaParameters pdata = new MeasureMaintenanceFormulaParameters();
  778. pdata.FormulaParameterName = gaoduchaCeliangxianText2[m];
  779. pdata.FormulaParameterParentId = data.MeasureMaintenanceTreeSpecificDataId;
  780. pdata.FormulaParametersId = id.ToString();
  781. data.MeasureMaintenanceTreeSpecificFormulaDataList.Add(pdata);
  782. id++;
  783. }
  784. break;
  785. }
  786. }
  787. break;
  788. case 9:
  789. string[] diegouErjiInfor = { "曡構" };
  790. string[] diegouCeliangxianText1 = { "最大值", "最小值", "平均值", "單層厚", "縂厚" };
  791. for (int k = 0; k < diegouErjiInfor.Length; k++)
  792. {
  793. MeasureMaintenanceTreeSpecificData data = new MeasureMaintenanceTreeSpecificData();
  794. data.MeasureMaintenanceTreeSpecificDataId = id.ToString();
  795. data.MeasureMaintenanceTreeSpecificDataParentId = measureMaintenanceTreeData.MeasureMaintenanceTreeDataList[i - 1].MeasureMaintenanceTreeSpecificDataId;
  796. data.MeasureMaintenanceTreeSpecificLevel = 2;
  797. data.MeasureMaintenanceTreeSpecificName = diegouErjiInfor[k];
  798. data.MeasureMaintenanceTreeSpecificSonDataList = new List<MeasureMaintenanceTreeSpecificData>();
  799. data.MeasureMaintenanceTreeSpecificFormulaDataList = new List<MeasureMaintenanceFormulaParameters>();
  800. measureMaintenanceTreeData.MeasureMaintenanceTreeDataList[i - 1].MeasureMaintenanceTreeSpecificSonDataList.Add(data);
  801. id++;
  802. switch (k)
  803. {
  804. case 0:
  805. for (int m = 0; m < diegouCeliangxianText1.Length; m++)
  806. {
  807. MeasureMaintenanceFormulaParameters pdata = new MeasureMaintenanceFormulaParameters();
  808. pdata.FormulaParameterName = diegouCeliangxianText1[m];
  809. pdata.FormulaParameterParentId = data.MeasureMaintenanceTreeSpecificDataId;
  810. pdata.FormulaParametersId = id.ToString();
  811. data.MeasureMaintenanceTreeSpecificFormulaDataList.Add(pdata);
  812. id++;
  813. }
  814. break;
  815. }
  816. }
  817. break;
  818. }
  819. }
  820. string stageModelXml = XmlSerializeHelper.XmlSerialize<MeasureMaintenanceTreeData>(measureMaintenanceTreeData);
  821. FileOperationHelper.WriteStringToFile(stageModelXml, filePath, FileMode.Create);
  822. }
  823. /// <summary>
  824. /// 获取menuId对应的菜单是否显示
  825. /// </summary>
  826. /// <param name="menuId"></param>
  827. /// <returns></returns>
  828. public static bool getMenuIdVisible(int menuId)
  829. {
  830. if (shieldValue.ContainsKey((uint)menuId))
  831. return shieldValue[(uint)menuId];
  832. if (!useSenseShield)
  833. return true;
  834. return false;
  835. }
  836. /// <summary>
  837. /// 初始化配置信息
  838. /// </summary>
  839. private void InitSetting()
  840. {
  841. //设置->常规设置->用户信息
  842. //userInfo = XmlSerializeHelper.DESerializer<UserInfoModel>(FileOperationHelper.ReadStringFromFile(Application.StartupPath + "\\Config\\" + SettingPrefix + "\\UserInfo.xml", FileMode.Open));
  843. //设置->网格设置
  844. //gridModel = XmlSerializeHelper.DESerializer<GridModel>(FileOperationHelper.ReadStringFromFile(Application.StartupPath + "\\Config\\" + SettingPrefix + "\\Grid.xml", FileMode.Open));
  845. //工具->自定义界面-快捷键配置
  846. hotkeyModel = XmlSerializeHelper.DESerializer<HotkeyModel>(FileOperationHelper.ReadStringFromFile(Application.StartupPath + "\\Config\\" + SettingPrefix + "\\Hotkey.xml", FileMode.Open));
  847. ////工具->工作流程
  848. //workFlowModel = XmlSerializeHelper.DESerializer<WorkFlowModel>(FileOperationHelper.ReadStringFromFile(Application.StartupPath + "\\Config\\" + SettingPrefix + "\\WorkFlow.xml", FileMode.Open));
  849. //工具->自定义界面-快捷栏
  850. shortcutbarModel = XmlSerializeHelper.DESerializer<ShortcutbarModel>(FileOperationHelper.ReadStringFromFile(Application.StartupPath + "\\Config\\" + SettingPrefix + "\\Shortcutbar.xml", FileMode.Open));
  851. //工具->自定义界面-工具栏
  852. toolbarModel = XmlSerializeHelper.DESerializer<ToolbarModel>(FileOperationHelper.ReadStringFromFile(Application.StartupPath + "\\Config\\" + SettingPrefix + "\\Toolbar.xml", FileMode.Open));
  853. //// 设置-常规设置-辅助线样式信息
  854. //guideStyleModel = XmlSerializeHelper.DESerializer<GuideStyleModel>(FileOperationHelper.ReadStringFromFile(Application.StartupPath + "\\Config\\" + SettingPrefix + "\\SetUp\\" + "GuideStyle.xml", FileMode.Open)); ;
  855. //// 工字线配置
  856. //workTypeStyleModel = XmlSerializeHelper.DESerializer<WorkTypeStyleModel>(FileOperationHelper.ReadStringFromFile(Application.StartupPath + "\\Config\\" + SettingPrefix + "\\WorkType\\" + configModel.WorkType, FileMode.Open));
  857. ////标尺样式配置
  858. //rulerModel = XmlSerializeHelper.DESerializer<RulerModel>(FileOperationHelper.ReadStringFromFile(Application.StartupPath + "\\Config\\" + SettingPrefix + "\\Ruler.xml", FileMode.Open));
  859. ////电动偏光配置
  860. //motorizedLightModel = XmlSerializeHelper.DESerializer<MotorizedLightModel>(FileOperationHelper.ReadStringFromFile(Application.StartupPath + "\\Config\\" + SettingPrefix + "\\MotorizedLightModel.xml", FileMode.Open));
  861. ////电压配置
  862. //voltageModel = XmlSerializeHelper.DESerializer<VoltageModel>(FileOperationHelper.ReadStringFromFile(Application.StartupPath + "\\Config\\" + SettingPrefix + "\\VoltageModel.xml", FileMode.Open));
  863. //imageMenuModel = XmlSerializeHelper.DESerializer<ImageMenu>(FileOperationHelper.ReadStringFromFile(Application.StartupPath + "\\Config\\" + SettingPrefix + "\\ParameterSaving\\ParameterSaving.xml", FileMode.Open));
  864. //测量样式配置
  865. measureStyleModel = XmlSerializeHelper.DESerializer<MeasureStyleModel>(FileOperationHelper.ReadStringFromFile(Application.StartupPath + "\\Config\\" + SettingPrefix + "\\Measure\\" + configModel.MeasurementStyle, FileMode.Open));
  866. //测量区域配置
  867. measureAreaModel = XmlSerializeHelper.DESerializer<MeasureAreaModel>(FileOperationHelper.ReadStringFromFile(Application.StartupPath + "\\Config\\" + SettingPrefix + "\\MeasureArea\\" + configModel.MeasurementArea, FileMode.Open));
  868. string filePath = Application.StartupPath + "\\Config\\" + Program.instance.SettingPrefix + "\\FileNameRule.xml";
  869. if (!System.IO.File.Exists(filePath))
  870. {
  871. fileNameRule = new FileNameRule();
  872. }
  873. else
  874. {
  875. fileNameRule = XmlSerializeHelper.DESerializer<FileNameRule>(FileOperationHelper.ReadStringFromFile(filePath, FileMode.Open));
  876. }
  877. foreach (var item in fileNameRule.NameRuleList)
  878. {
  879. if (item.isContinue)
  880. {
  881. continue;
  882. }
  883. item.NowNumber = 1;
  884. }
  885. //初始化提取,DB中保存的的标尺
  886. mic_rulersAll = mic_rulers_BLL.FindAll();
  887. //初始化标尺信息
  888. InitRulerInfo();
  889. //初始化App内的单位
  890. InitUnitInfo();
  891. //初始化单位对应的枚举数字
  892. CompanyEnumeration();
  893. }
  894. /// <summary>
  895. /// 初始化系统选择的单位的信息
  896. /// 单位对应的枚举数字
  897. /// </summary>
  898. public void CompanyEnumeration()
  899. {
  900. companyEnume = new Dictionary<string, int>();
  901. companyEnume.Add(PdnResources.GetString("MeasurementUnit.Inch"), 1);//英寸
  902. companyEnume.Add(PdnResources.GetString("Menu.cm.text"), 2);//厘米
  903. companyEnume.Add(PdnResources.GetString("Menu.Mm.text"), 3);//毫米
  904. companyEnume.Add(PdnResources.GetString("Menu.Micron.text"), 4);//微米
  905. companyEnume.Add(PdnResources.GetString("Menu.nanometer.text"), 5);//纳米
  906. companyEnume.Add(PdnResources.GetString("Menu.Pixel.text"), 6);//像素
  907. }
  908. /// <summary>
  909. /// 初始化系统选择的单位的信息
  910. /// 如果初始安装没有设置过,则默认微米
  911. /// </summary>
  912. public void InitUnitInfo()
  913. {
  914. if (configModel != null && configModel.Unit > 0)
  915. {
  916. measurementUnit = (MeasurementUnit)Enum.Parse(typeof(MeasurementUnit), configModel.Unit.ToString());
  917. }
  918. else
  919. {
  920. measurementUnit = MeasurementUnit.Micron;
  921. }
  922. }
  923. /// <summary>
  924. /// 初始化标尺信息,从数据库中读取
  925. /// 然后根据标尺的单位,换算出所有单位的数据
  926. /// </summary>
  927. public void InitRulerInfo()
  928. {
  929. rules.Clear();
  930. if (configModel != null)
  931. {
  932. for (int i = 0; i < Program.instance.mic_rulersAll.Count; i++)
  933. {
  934. if (Program.instance.mic_rulersAll[i].id == configModel.RulerId)
  935. {
  936. ruleDB = Program.instance.mic_rulersAll[i];
  937. break;
  938. }
  939. }
  940. //ruleDB = mic_rulers_BLL.FindDefault(configModel.RulerId);
  941. if (ruleDB != null)
  942. {
  943. //计算单位长度 比如0.05英寸/像素; 100纳米/像素;
  944. double unitLength = (double)(ruleDB.physical_length / (decimal)ruleDB.pixel_length);
  945. switch (ruleDB.ruler_units)
  946. {
  947. case (int)MeasurementUnit.Inch://英寸
  948. rules.Add(MeasurementUnit.Inch, unitLength); //英寸
  949. rules.Add(MeasurementUnit.Centimeter, 2.54 * unitLength); //厘米
  950. rules.Add(MeasurementUnit.Millimeter, 25.4 * unitLength); //毫米
  951. rules.Add(MeasurementUnit.Micron, 25400 * unitLength); //微米
  952. rules.Add(MeasurementUnit.Nano, 25400000 * unitLength); //纳米
  953. break;
  954. case (int)MeasurementUnit.Centimeter://厘米
  955. rules.Add(MeasurementUnit.Inch, 0.3937008 * unitLength); //英寸
  956. rules.Add(MeasurementUnit.Centimeter, unitLength); //厘米
  957. rules.Add(MeasurementUnit.Millimeter, 10 * unitLength); //毫米
  958. rules.Add(MeasurementUnit.Micron, 10000 * unitLength); //微米
  959. rules.Add(MeasurementUnit.Nano, 10000000 * unitLength); //纳米
  960. break;
  961. case (int)MeasurementUnit.Millimeter://毫米
  962. rules.Add(MeasurementUnit.Inch, 0.0393701 * unitLength); //英寸
  963. rules.Add(MeasurementUnit.Centimeter, 0.1 * unitLength); //厘米
  964. rules.Add(MeasurementUnit.Millimeter, unitLength); //毫米
  965. rules.Add(MeasurementUnit.Micron, 1000 * unitLength); //微米
  966. rules.Add(MeasurementUnit.Nano, 1000000 * unitLength); //纳米
  967. break;
  968. case (int)MeasurementUnit.Micron://微米
  969. rules.Add(MeasurementUnit.Inch, 0.00003937007874 * unitLength); //英寸
  970. rules.Add(MeasurementUnit.Centimeter, 0.0001 * unitLength); //厘米
  971. rules.Add(MeasurementUnit.Millimeter, 0.001 * unitLength); //毫米
  972. rules.Add(MeasurementUnit.Micron, unitLength); //微米
  973. rules.Add(MeasurementUnit.Nano, 1000 * unitLength); //纳米
  974. break;
  975. case (int)MeasurementUnit.Nano://纳米
  976. rules.Add(MeasurementUnit.Inch, 3.9370e-8 * unitLength); //英寸
  977. rules.Add(MeasurementUnit.Centimeter, 1e-7 * unitLength); //厘米
  978. rules.Add(MeasurementUnit.Millimeter, 1e-6 * unitLength); //毫米
  979. rules.Add(MeasurementUnit.Micron, 0.001 * unitLength); //微米
  980. rules.Add(MeasurementUnit.Nano, unitLength); //纳米
  981. break;
  982. default:
  983. ruleDB = null;
  984. break;
  985. }
  986. }
  987. }
  988. if (ruleDB == null)
  989. {
  990. //如果没有标尺的时候,默认1微米/像素
  991. rules.Add(MeasurementUnit.Inch, 0.0000394); //英寸
  992. rules.Add(MeasurementUnit.Centimeter, 0.0001); //厘米
  993. rules.Add(MeasurementUnit.Millimeter, 0.001); //毫米
  994. rules.Add(MeasurementUnit.Micron, 1); //微米
  995. rules.Add(MeasurementUnit.Nano, 1000); //纳米
  996. }
  997. //设置文档标尺
  998. Document.defaultDpi = 1 / rules[MeasurementUnit.Inch];
  999. }
  1000. /// <summary>
  1001. /// 判断是否根据快捷方式参数修改界面
  1002. /// </summary>
  1003. /// <param name="argsArr"></param>
  1004. /// <returns></returns>
  1005. private bool ModifySettingPrefix(string[] argsArr)
  1006. {
  1007. if (argsArr.Count() == 2 && (0 == string.Compare(argsArr[0], "/personalConfig", true)))
  1008. {
  1009. string configName = argsArr[1].Replace("/", "");
  1010. if (Directory.Exists(Application.StartupPath + "\\Config\\" + configName + "\\"))
  1011. {
  1012. this.SettingPrefix = configName;
  1013. return true;
  1014. }
  1015. else
  1016. {
  1017. return false;
  1018. }
  1019. }
  1020. else
  1021. {
  1022. return false;
  1023. }
  1024. }
  1025. /// <summary>
  1026. /// 系统复位
  1027. /// </summary>
  1028. /// <returns></returns>
  1029. private void SystemReset()
  1030. {
  1031. //先单独获取App基础配置
  1032. configModel = XmlSerializeHelper.DESerializer<ConfigModel>(FileOperationHelper.ReadStringFromFile(Application.StartupPath + "\\Config\\" + SettingPrefix + "\\Config.xml", FileMode.Open));
  1033. //需要复位
  1034. //if (configModel.LabelInformationReset == 1 || configModel.MeasurementInformationReset == 1 || configModel.LogReset == 1 ||
  1035. // configModel.ShortcutBarReset == 1 || configModel.ToolbarReset == 1 || configModel.HotKeyReset == 1)
  1036. //{
  1037. // try
  1038. // {
  1039. // //标注初始化
  1040. // if (configModel.LabelInformationReset == 1)
  1041. // {
  1042. // string originalFilePath = Application.StartupPath + "\\Config\\Original\\Label\\Default.xml";
  1043. // string destFilePath = Application.StartupPath + "\\Config\\" + SettingPrefix + "\\Label\\Default.xml";
  1044. // System.IO.File.Copy(originalFilePath, destFilePath, true);
  1045. // configModel.LabelInformationReset = 0;
  1046. // }
  1047. // //测量初始化
  1048. // if (configModel.MeasurementInformationReset == 1)
  1049. // {
  1050. // string originalFilePath = Application.StartupPath + "\\Config\\Original\\Measure\\Default.xml";
  1051. // string destFilePath = Application.StartupPath + "\\Config\\" + SettingPrefix + "\\Measure\\Default.xml";
  1052. // System.IO.File.Copy(originalFilePath, destFilePath, true);
  1053. // configModel.MeasurementInformationReset = 0;
  1054. // }
  1055. // //log初始化
  1056. // if (configModel.LogReset == 1)
  1057. // {
  1058. // //未处理
  1059. // configModel.LogReset = 0;
  1060. // }
  1061. // //快捷栏初始化
  1062. // if (configModel.ShortcutBarReset == 1)
  1063. // {
  1064. // string originalFilePath = Application.StartupPath + "\\Config\\Original\\Shortcutbar.xml";
  1065. // string destFilePath = Application.StartupPath + "\\Config\\" + SettingPrefix + "\\Shortcutbar.xml";
  1066. // System.IO.File.Copy(originalFilePath, destFilePath, true);
  1067. // configModel.ShortcutBarReset = 0;
  1068. // }
  1069. // //工具栏初始化
  1070. // if (configModel.ToolbarReset == 1)
  1071. // {
  1072. // string originalFilePath = Application.StartupPath + "\\Config\\Original\\Toolbar.xml";
  1073. // string destFilePath = Application.StartupPath + "\\Config\\" + SettingPrefix + "\\Toolbar.xml";
  1074. // System.IO.File.Copy(originalFilePath, destFilePath, true);
  1075. // configModel.ToolbarReset = 0;
  1076. // }
  1077. // //快捷键初始化
  1078. // if (configModel.HotKeyReset == 1)
  1079. // {
  1080. // string originalFilePath = Application.StartupPath + "\\Config\\Original\\Hotkey.xml";
  1081. // string destFilePath = Application.StartupPath + "\\Config\\" + SettingPrefix + "\\Hotkey.xml";
  1082. // System.IO.File.Copy(originalFilePath, destFilePath, true);
  1083. // configModel.HotKeyReset = 0;
  1084. // }
  1085. // string configModelXml = XmlSerializeHelper.XmlSerialize<ConfigModel>(configModel);
  1086. // FileOperationHelper.WriteStringToFile(configModelXml, Application.StartupPath + "\\Config\\" + SettingPrefix + "\\Config.xml", FileMode.Create);
  1087. // }
  1088. // catch (Exception)
  1089. // {
  1090. // MessageBox.Show(PdnResources.GetString("Menu.Systemresetfailure.text"));
  1091. // }
  1092. //}
  1093. }
  1094. }
  1095. }