hytos / DTI_PID / SPPIDConverter_CustomCommand / ConverterForm.cs @ 4582b1d2
이력 | 보기 | 이력해설 | 다운로드 (21.8 KB)
1 | d57a5303 | gaqhf | /*---------------------------------------------------------------------+\ |
---|---|---|---|
2 | | | |
||
3 | | Copyright 2016 Intergraph Corporation | |
||
4 | | All Rights Reserved | |
||
5 | | | |
||
6 | | Including software, file formats, and audio-visual displays; | |
||
7 | | may only be used pursuant to applicable software license | |
||
8 | | agreement; contains confidential and proprietary information of| |
||
9 | | Intergraph and/or third parties which is protected by copyright| |
||
10 | | and trade secret law and may not be provided or otherwise made | |
||
11 | | available without proper authorization. | |
||
12 | | | |
||
13 | | Unpublished -- rights reserved under the Copyright Laws of the | |
||
14 | | United States. | |
||
15 | | | |
||
16 | | Intergraph Corporation | |
||
17 | | Huntsville, Alabama 35894-0001 | |
||
18 | | | |
||
19 | \+---------------------------------------------------------------------*/ |
||
20 | |||
21 | using System; |
||
22 | 91502a9b | gaqhf | using System.Collections.Generic; |
23 | d57a5303 | gaqhf | using System.Windows.Forms; |
24 | using Ingr.RAD2D; |
||
25 | 022cae08 | gaqhf | using System.Runtime.InteropServices; |
26 | using System.Drawing; |
||
27 | d57a5303 | gaqhf | using SPPID.Modeling; |
28 | using SPPID.Utill; |
||
29 | using SPPID.Model; |
||
30 | 91502a9b | gaqhf | using System.Threading; |
31 | 4582b1d2 | gaqhf | using Microsoft.Win32; |
32 | d57a5303 | gaqhf | |
33 | namespace CustomCommand |
||
34 | { |
||
35 | /// <summary> |
||
36 | /// This is the primary form. The form is shown as modal. |
||
37 | /// This command may be built as an executable (EXE) or as a dynamic link |
||
38 | /// library (DLL). |
||
39 | /// |
||
40 | /// When you implement the code that dismisses your form, e.g., an OK |
||
41 | /// button or a Stop Processing button, you should include the following: |
||
42 | /// |
||
43 | /// Hide the form, for example |
||
44 | /// converterForm.Hide |
||
45 | /// |
||
46 | /// Set the Application's Interactive property to True, for example |
||
47 | /// commandControl.Application.Interactive = True |
||
48 | /// |
||
49 | /// Set Intergraph Command Control Done property to True, for example |
||
50 | /// commandControl.Done = True |
||
51 | /// </summary> |
||
52 | public partial class ConverterForm : Form |
||
53 | { |
||
54 | #region Default CustomCommand |
||
55 | 91502a9b | gaqhf | readonly string menuControlName = "ID2 to SPPID Converter"; |
56 | readonly string toolTipText = "ID2 to SPPID Converter"; |
||
57 | 21caac36 | gaqhf | readonly Image image = (Image)Properties.Resources.ResourceManager.GetObject("ToolbarImage"); //Image.FromFile(@".\Close.png"); |
58 | d57a5303 | gaqhf | /// <summary> |
59 | /// Constructs and initializes the form. |
||
60 | /// </summary> |
||
61 | public ConverterForm() |
||
62 | { |
||
63 | InitializeComponent(); |
||
64 | } |
||
65 | |||
66 | /// <summary> |
||
67 | /// The OK Click Event is used to dismiss the form. |
||
68 | /// </summary> |
||
69 | /// <param name="sender">The sender of the event</param> |
||
70 | /// <param name="e">Arguments passed during event</param> |
||
71 | //private void cmdOK_Click(object sender, EventArgs e) |
||
72 | //{ |
||
73 | // commandControl.Application.RADApplication.Interactive = true; |
||
74 | // Hide(); |
||
75 | // commandControl.Done = true; |
||
76 | //} |
||
77 | |||
78 | /// <summary> |
||
79 | /// The Activate Event is where the command should show its form |
||
80 | /// if it should be displayed. |
||
81 | /// </summary> |
||
82 | /// <param name="sender">The sender of the event</param> |
||
83 | /// <param name="e">Arguments passed during event</param> |
||
84 | private void commandControl_Activate(object sender, EventArgs e) |
||
85 | { |
||
86 | ShowDialog(); |
||
87 | } |
||
88 | |||
89 | /// <summary> |
||
90 | /// The Deactivate event is where the command should hide its form if it |
||
91 | /// was displayed. The command should not unload the form here. |
||
92 | /// The command's form should be unloaded in the Class Module Terminate event. |
||
93 | /// </summary> |
||
94 | /// <param name="sender">The sender of the event</param> |
||
95 | /// <param name="e">Arguments passed during event</param> |
||
96 | private void commandControl_Deactivate(object sender, EventArgs e) |
||
97 | { |
||
98 | Hide(); |
||
99 | } |
||
100 | |||
101 | /// <summary> |
||
102 | /// The Initialize event is where the command should perform 1 time |
||
103 | /// initialization, for example it might save a reference to the |
||
104 | /// active document in private global data. |
||
105 | /// </summary> |
||
106 | /// <param name="sender">The sender of the event</param> |
||
107 | /// <param name="e">Arguments passed during event</param> |
||
108 | private void commandControl_Initialize(object sender, EventArgs e) |
||
109 | { |
||
110 | 91502a9b | gaqhf | try |
111 | { |
||
112 | 4582b1d2 | gaqhf | RegistryKey key = Registry.LocalMachine; |
113 | RegistryKey software = key.OpenSubKey("SOFTWARE"); |
||
114 | RegistryKey DOFTECH = software.OpenSubKey("DOFTECH"); |
||
115 | if (DOFTECH != null) |
||
116 | 91502a9b | gaqhf | { |
117 | 4582b1d2 | gaqhf | RegistryKey ID2 = DOFTECH.OpenSubKey("ID2"); |
118 | if (ID2 != null) |
||
119 | 91502a9b | gaqhf | { |
120 | 4582b1d2 | gaqhf | SPPIDUtill.defaultPath = ID2.GetValue("Path").ToString(); |
121 | |||
122 | Log.logPath = SPPIDUtill.defaultPath + @"Converter\SPPID Converter.log"; |
||
123 | SPPIDUtill.mappingFilePath = SPPIDUtill.defaultPath + @"Converter\mapping.xml"; |
||
124 | string dllPath = SPPIDUtill.defaultPath + @"Converter\SPPIDConverter_CustomCommand.dll"; |
||
125 | |||
126 | SPPIDUtill.LoadMapping(mapping); |
||
127 | Ingr.RAD2D.Application application = commandControl.Application.RADApplication; |
||
128 | |||
129 | ToolBars toolBars = application.ToolBars; |
||
130 | bool find = true; |
||
131 | while (find) |
||
132 | 91502a9b | gaqhf | { |
133 | 4582b1d2 | gaqhf | find = false; |
134 | foreach (ToolbarControl item in toolBars["Main"].Controls) |
||
135 | { |
||
136 | if (item.DLLName.Contains("SPPIDConverter_CustomCommand.dll")) |
||
137 | { |
||
138 | item.Delete(); |
||
139 | find = true; |
||
140 | break; |
||
141 | } |
||
142 | } |
||
143 | 91502a9b | gaqhf | } |
144 | |||
145 | 4582b1d2 | gaqhf | ToolbarControl toolBarControl = toolBars["Main"].Controls.AppendMacroCommand(dllPath); |
146 | toolBarControl.ToolTipText = toolTipText; |
||
147 | //toolBarControl.Picture = image; |
||
148 | 91502a9b | gaqhf | |
149 | 4582b1d2 | gaqhf | Menus menu = application.Menus; |
150 | find = true; |
||
151 | while (find) |
||
152 | 91502a9b | gaqhf | { |
153 | 4582b1d2 | gaqhf | find = false; |
154 | foreach (MenuControl item in menu["&Tools"].Controls) |
||
155 | { |
||
156 | if (item.Caption == menuControlName) |
||
157 | { |
||
158 | item.Delete(); |
||
159 | find = true; |
||
160 | break; |
||
161 | } |
||
162 | } |
||
163 | 91502a9b | gaqhf | } |
164 | 4582b1d2 | gaqhf | MenuControl menuControl = application.Menus["&Tools"].Controls.AppendMacroCommand(menuControlName, dllPath); |
165 | menuControl.ToolTipText = toolTipText; |
||
166 | 91502a9b | gaqhf | } |
167 | } |
||
168 | } |
||
169 | catch (Exception ex) |
||
170 | { |
||
171 | Log.WriteLine(ex); |
||
172 | } |
||
173 | d57a5303 | gaqhf | } |
174 | |||
175 | /// <summary> |
||
176 | /// The Terminate event is where the command can clean up any command |
||
177 | /// specific allocated resources. |
||
178 | /// </summary> |
||
179 | /// <param name="sender">The sender of the event</param> |
||
180 | /// <param name="e">Arguments passed during event</param> |
||
181 | public void commandControl_Terminate(object sender, EventArgs e) |
||
182 | { |
||
183 | 91502a9b | gaqhf | |
184 | d57a5303 | gaqhf | } |
185 | |||
186 | /// <summary> |
||
187 | /// The primary form should not simply be unloaded. You should set the |
||
188 | /// Intergraph Command Control Done property to True when you want the |
||
189 | /// form to be unloaded. Then unload the form in the dispose method. |
||
190 | /// </summary> |
||
191 | /// <param name="sender">The sender of the event</param> |
||
192 | /// <param name="e">Arguments passed during event</param> |
||
193 | private void ConverterForm_FormClosing(object sender, FormClosingEventArgs e) |
||
194 | { |
||
195 | commandControl.Application.RADApplication.Interactive = true; // Add by kyouho |
||
196 | Hide(); |
||
197 | commandControl.Done = true; |
||
198 | e.Cancel = true; //Do not let C# close out the form ... Let RAD close it. |
||
199 | } |
||
200 | 022cae08 | gaqhf | #endregion |
201 | |||
202 | #region ?? CustomCommand Source ???? |
||
203 | |||
204 | 91502a9b | gaqhf | private Dictionary<string, string> mapping = new Dictionary<string, string>(); |
205 | Thread autoModelingThread; |
||
206 | |||
207 | #region Botton Event |
||
208 | 022cae08 | gaqhf | private void openDocumentsToolStripMenuItem_Click(object sender, EventArgs e) |
209 | { |
||
210 | OpenFileDialog dia = new OpenFileDialog(); |
||
211 | dia.Multiselect = true; |
||
212 | 91502a9b | gaqhf | dia.Filter = "Xml Files(*.xml)|*.xml"; |
213 | 022cae08 | gaqhf | if (dia.ShowDialog() == DialogResult.OK) |
214 | { |
||
215 | 91502a9b | gaqhf | SPPIDUtill.LoadMapping(mapping); |
216 | 022cae08 | gaqhf | foreach (string fileName in dia.FileNames) |
217 | SetDrawingTreeNode(fileName); |
||
218 | treeViewDrawing.Nodes[0].Expand(); |
||
219 | 91502a9b | gaqhf | RefreshItemNode(); |
220 | 022cae08 | gaqhf | } |
221 | } |
||
222 | |||
223 | private void itemMappingToolStripMenuItem_Click(object sender, EventArgs e) |
||
224 | { |
||
225 | 91502a9b | gaqhf | List<string> needName = GetNeedMapping(); |
226 | MappingForm form = new MappingForm(mapping, needName); |
||
227 | if (form.ShowDialog() == DialogResult.OK) |
||
228 | { |
||
229 | SPPIDUtill.SaveMapping(mapping); |
||
230 | RefreshItemNode(); |
||
231 | } |
||
232 | 022cae08 | gaqhf | } |
233 | |||
234 | private void importToolStripMenuItem_Click(object sender, EventArgs e) |
||
235 | { |
||
236 | 91502a9b | gaqhf | OpenFileDialog dia = new OpenFileDialog(); |
237 | dia.Multiselect = false; |
||
238 | dia.Filter = "Excel File(*.xlsx;*.xls)|*.xlsx;*.xls"; |
||
239 | if (dia.ShowDialog() == DialogResult.OK) |
||
240 | { |
||
241 | ExcelUtill.LoadMappingExcelFile(dia.FileName, mapping); |
||
242 | try |
||
243 | { |
||
244 | SPPIDUtill.SaveMapping(mapping); |
||
245 | RefreshItemNode(); |
||
246 | MessageBox.Show("Success Load Excel File"); |
||
247 | } |
||
248 | catch (Exception ex) |
||
249 | { |
||
250 | Log.WriteLine(ex); |
||
251 | MessageBox.Show("Fail Save Mapping File"); |
||
252 | } |
||
253 | } |
||
254 | 022cae08 | gaqhf | } |
255 | 91502a9b | gaqhf | |
256 | 022cae08 | gaqhf | private void convertToolStripMenuItem_Click(object sender, EventArgs e) |
257 | { |
||
258 | 91502a9b | gaqhf | SPPIDUtill.LoadMapping(mapping); |
259 | |||
260 | List<SPPID.Model.Document> documents = new List<SPPID.Model.Document>(); |
||
261 | foreach (TreeNode node in treeViewDrawing.Nodes[0].Nodes) |
||
262 | { |
||
263 | if (node.Checked) |
||
264 | { |
||
265 | SPPID.Model.Document document = node.Tag as SPPID.Model.Document; |
||
266 | if (document != null && document.Init()) |
||
267 | documents.Add(document); |
||
268 | } |
||
269 | } |
||
270 | 022cae08 | gaqhf | |
271 | 91502a9b | gaqhf | autoModelingThread = new Thread(Func => |
272 | { |
||
273 | try |
||
274 | { |
||
275 | foreach (SPPID.Model.Document document in documents) |
||
276 | { |
||
277 | AutoModeling auto = new AutoModeling(document); |
||
278 | auto.SetListBoxLog(listBoxLog); |
||
279 | auto.SetProgressBar(toolStripProgressBar); |
||
280 | auto.Run(); |
||
281 | break; |
||
282 | } |
||
283 | } |
||
284 | catch (Exception ex) |
||
285 | { |
||
286 | Log.WriteLine(ex); |
||
287 | } |
||
288 | }); |
||
289 | autoModelingThread.Start(); |
||
290 | 022cae08 | gaqhf | } |
291 | |||
292 | private void stopToolStripMenuItem_Click(object sender, EventArgs e) |
||
293 | { |
||
294 | 91502a9b | gaqhf | try |
295 | { |
||
296 | if (autoModelingThread != null) |
||
297 | autoModelingThread.Abort(); |
||
298 | } |
||
299 | catch (Exception ex) |
||
300 | { |
||
301 | Log.WriteLine(ex); |
||
302 | } |
||
303 | } |
||
304 | #endregion |
||
305 | 022cae08 | gaqhf | |
306 | 91502a9b | gaqhf | private void listBoxLog_DrawItem(object sender, DrawItemEventArgs e) |
307 | { |
||
308 | if (e.Index >= 0) |
||
309 | { |
||
310 | ListBoxItem item = listBoxLog.Items[e.Index] as ListBoxItem; |
||
311 | if (item != null) |
||
312 | { |
||
313 | e.Graphics.DrawString(item.Message, |
||
314 | listBoxLog.Font, |
||
315 | new SolidBrush(item.Color), |
||
316 | 0, |
||
317 | e.Index * listBoxLog.ItemHeight); |
||
318 | } |
||
319 | } |
||
320 | 022cae08 | gaqhf | } |
321 | |||
322 | #region TreeNode |
||
323 | 91502a9b | gaqhf | |
324 | 022cae08 | gaqhf | #region Hide TreeNode CheckBox |
325 | private const int TVIF_STATE = 0x8; |
||
326 | private const int TVIS_STATEIMAGEMASK = 0xF000; |
||
327 | private const int TV_FIRST = 0x1100; |
||
328 | private const int TVM_SETITEM = TV_FIRST + 63; |
||
329 | |||
330 | [StructLayout(LayoutKind.Sequential, Pack = 8, CharSet = CharSet.Auto)] |
||
331 | private struct TVITEM |
||
332 | { |
||
333 | public int mask; |
||
334 | public IntPtr hItem; |
||
335 | public int state; |
||
336 | public int stateMask; |
||
337 | [MarshalAs(UnmanagedType.LPTStr)] |
||
338 | public string lpszText; |
||
339 | public int cchTextMax; |
||
340 | public int iImage; |
||
341 | public int iSelectedImage; |
||
342 | public int cChildren; |
||
343 | public IntPtr lParam; |
||
344 | } |
||
345 | |||
346 | [DllImport("user32.dll", CharSet = CharSet.Auto)] |
||
347 | private static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, |
||
348 | ref TVITEM lParam); |
||
349 | |||
350 | /// <summary> |
||
351 | /// Hides the checkbox for the specified node on a TreeView control. |
||
352 | /// </summary> |
||
353 | private void HideCheckBox(TreeView tvw, TreeNode node) |
||
354 | { |
||
355 | TVITEM tvi = new TVITEM(); |
||
356 | tvi.hItem = node.Handle; |
||
357 | tvi.mask = TVIF_STATE; |
||
358 | tvi.stateMask = TVIS_STATEIMAGEMASK; |
||
359 | tvi.state = 0; |
||
360 | SendMessage(tvw.Handle, TVM_SETITEM, IntPtr.Zero, ref tvi); |
||
361 | } |
||
362 | #endregion |
||
363 | |||
364 | private void SetDrawingTreeNode(string fileName) |
||
365 | { |
||
366 | 91502a9b | gaqhf | SPPID.Model.Document document = SPPID.Model.Document.Load(fileName, mapping); |
367 | 022cae08 | gaqhf | TreeNode drawingNode = new TreeNode(); |
368 | if (document == null) |
||
369 | { |
||
370 | drawingNode.Text = fileName; |
||
371 | drawingNode.Name = fileName; |
||
372 | drawingNode.ForeColor = Color.Red; |
||
373 | treeViewDrawing.Nodes[0].Nodes.Add(drawingNode); |
||
374 | } |
||
375 | else |
||
376 | { |
||
377 | drawingNode.Text = document.DWGNAME; |
||
378 | drawingNode.Name = document.DWGNAME; |
||
379 | drawingNode.Tag = document; |
||
380 | treeViewDrawing.Nodes[0].Nodes.Add(drawingNode); |
||
381 | } |
||
382 | |||
383 | SetItemTreeNode(drawingNode); |
||
384 | } |
||
385 | |||
386 | private void SetItemTreeNode(TreeNode drawingNode) |
||
387 | { |
||
388 | SPPID.Model.Document document = drawingNode.Tag as SPPID.Model.Document; |
||
389 | if (document != null) |
||
390 | { |
||
391 | foreach (LineNumber item in document.LINENUMBERS) |
||
392 | { |
||
393 | TreeNode node = new TreeNode(); |
||
394 | 91502a9b | gaqhf | node.Name = item.NAME; |
395 | 022cae08 | gaqhf | node.Text = item.TEXT; |
396 | 91502a9b | gaqhf | node.Tag = item; |
397 | 022cae08 | gaqhf | drawingNode.Nodes.Add(node); |
398 | HideCheckBox(treeViewDrawing, node); |
||
399 | 91502a9b | gaqhf | foreach (ItemAttribute attribute in item.ATTRIBUTES) |
400 | { |
||
401 | TreeNode attrNode = new TreeNode(); |
||
402 | attrNode.Name = attribute.Attribute; |
||
403 | attrNode.Text = attribute.Attribute; |
||
404 | attrNode.Tag = attribute; |
||
405 | node.Nodes.Add(attrNode); |
||
406 | HideCheckBox(treeViewDrawing, attrNode); |
||
407 | } |
||
408 | 022cae08 | gaqhf | } |
409 | |||
410 | foreach (Symbol item in document.SYMBOLS) |
||
411 | { |
||
412 | TreeNode node = new TreeNode(); |
||
413 | 91502a9b | gaqhf | node.Name = item.PARENT; |
414 | 022cae08 | gaqhf | node.Text = item.NAME; |
415 | 91502a9b | gaqhf | node.Tag = item; |
416 | 022cae08 | gaqhf | drawingNode.Nodes.Add(node); |
417 | HideCheckBox(treeViewDrawing, node); |
||
418 | 91502a9b | gaqhf | foreach (ItemAttribute attribute in item.ATTRIBUTES) |
419 | { |
||
420 | TreeNode attrNode = new TreeNode(); |
||
421 | attrNode.Name = attribute.Attribute; |
||
422 | attrNode.Text = attribute.Attribute; |
||
423 | attrNode.Tag = attribute; |
||
424 | node.Nodes.Add(attrNode); |
||
425 | HideCheckBox(treeViewDrawing, attrNode); |
||
426 | } |
||
427 | 022cae08 | gaqhf | } |
428 | |||
429 | foreach (Line item in document.LINES) |
||
430 | { |
||
431 | TreeNode node = new TreeNode(); |
||
432 | 91502a9b | gaqhf | node.Name = item.TYPE; |
433 | 022cae08 | gaqhf | node.Text = item.TYPE; |
434 | 91502a9b | gaqhf | node.Tag = item; |
435 | 022cae08 | gaqhf | drawingNode.Nodes.Add(node); |
436 | HideCheckBox(treeViewDrawing, node); |
||
437 | 91502a9b | gaqhf | foreach (ItemAttribute attribute in item.ATTRIBUTES) |
438 | { |
||
439 | TreeNode attrNode = new TreeNode(); |
||
440 | attrNode.Name = attribute.Attribute; |
||
441 | attrNode.Text = attribute.Attribute; |
||
442 | attrNode.Tag = attribute; |
||
443 | node.Nodes.Add(attrNode); |
||
444 | HideCheckBox(treeViewDrawing, attrNode); |
||
445 | } |
||
446 | 022cae08 | gaqhf | } |
447 | |||
448 | foreach (Text item in document.TEXTS) |
||
449 | { |
||
450 | TreeNode node = new TreeNode(); |
||
451 | 91502a9b | gaqhf | node.Name = item.NAME; |
452 | 022cae08 | gaqhf | node.Text = item.NAME; |
453 | 91502a9b | gaqhf | node.Tag = item; |
454 | 022cae08 | gaqhf | drawingNode.Nodes.Add(node); |
455 | HideCheckBox(treeViewDrawing, node); |
||
456 | 91502a9b | gaqhf | foreach (ItemAttribute attribute in item.ATTRIBUTES) |
457 | { |
||
458 | TreeNode attrNode = new TreeNode(); |
||
459 | attrNode.Name = attribute.Attribute; |
||
460 | attrNode.Text = attribute.Attribute; |
||
461 | attrNode.Tag = attribute; |
||
462 | node.Nodes.Add(attrNode); |
||
463 | HideCheckBox(treeViewDrawing, attrNode); |
||
464 | } |
||
465 | 022cae08 | gaqhf | } |
466 | } |
||
467 | } |
||
468 | |||
469 | 91502a9b | gaqhf | private void RefreshItemNode() |
470 | 022cae08 | gaqhf | { |
471 | 91502a9b | gaqhf | foreach (TreeNode dwgNode in treeViewDrawing.Nodes[0].Nodes) |
472 | { |
||
473 | dwgNode.ForeColor = Color.Red; |
||
474 | bool result = true; |
||
475 | foreach (TreeNode docNode in dwgNode.Nodes) |
||
476 | { |
||
477 | string name = SPPIDUtill.GetSPPIDMappingName(docNode.Name, mapping); |
||
478 | if (!string.IsNullOrEmpty(name)) |
||
479 | { |
||
480 | docNode.ForeColor = Color.Gray; |
||
481 | } |
||
482 | else |
||
483 | { |
||
484 | docNode.ForeColor = Color.Red; |
||
485 | result = false; |
||
486 | } |
||
487 | |||
488 | foreach (TreeNode attrNode in docNode.Nodes) |
||
489 | { |
||
490 | name = SPPIDUtill.GetSPPIDMappingName(attrNode.Name, mapping); |
||
491 | if (!string.IsNullOrEmpty(name)) |
||
492 | { |
||
493 | attrNode.ForeColor = Color.Gray; |
||
494 | } |
||
495 | else |
||
496 | { |
||
497 | attrNode.ForeColor = Color.Red; |
||
498 | } |
||
499 | } |
||
500 | } |
||
501 | 022cae08 | gaqhf | |
502 | 91502a9b | gaqhf | if (result) |
503 | { |
||
504 | dwgNode.ForeColor = Color.Black; |
||
505 | } |
||
506 | } |
||
507 | } |
||
508 | 022cae08 | gaqhf | |
509 | 91502a9b | gaqhf | private List<string> GetNeedMapping() |
510 | { |
||
511 | List<string> nameList = new List<string>(); |
||
512 | foreach (TreeNode dwgNode in treeViewDrawing.Nodes[0].Nodes) |
||
513 | { |
||
514 | foreach (TreeNode docNode in dwgNode.Nodes) |
||
515 | { |
||
516 | string name = docNode.Name; |
||
517 | string sppidName = SPPIDUtill.GetSPPIDMappingName(name, mapping); |
||
518 | if (string.IsNullOrEmpty(sppidName) && !nameList.Contains(name)) |
||
519 | nameList.Add(name); |
||
520 | |||
521 | // Attribute |
||
522 | foreach (TreeNode attrNode in docNode.Nodes) |
||
523 | { |
||
524 | name = attrNode.Name; |
||
525 | sppidName = SPPIDUtill.GetSPPIDMappingName(name, mapping); |
||
526 | if (string.IsNullOrEmpty(sppidName) && !nameList.Contains(name)) |
||
527 | nameList.Add(name); |
||
528 | } |
||
529 | } |
||
530 | } |
||
531 | 022cae08 | gaqhf | |
532 | 91502a9b | gaqhf | return nameList; |
533 | 022cae08 | gaqhf | } |
534 | |||
535 | 91502a9b | gaqhf | private void treeViewDrawing_AfterCheck(object sender, TreeViewEventArgs e) |
536 | { |
||
537 | treeViewDrawing.AfterCheck -= new TreeViewEventHandler(this.treeViewDrawing_AfterCheck); |
||
538 | |||
539 | if (e.Node.Level == 0) |
||
540 | { |
||
541 | foreach (TreeNode node in e.Node.Nodes) |
||
542 | node.Checked = e.Node.Checked; |
||
543 | } |
||
544 | else if (e.Node.Level == 1) |
||
545 | { |
||
546 | bool result = false; |
||
547 | foreach (TreeNode node in e.Node.Parent.Nodes) |
||
548 | { |
||
549 | if (node.Checked) |
||
550 | { |
||
551 | result = true; |
||
552 | break; |
||
553 | } |
||
554 | } |
||
555 | |||
556 | if (result) |
||
557 | e.Node.Parent.Checked = true; |
||
558 | else |
||
559 | e.Node.Parent.Checked = false; |
||
560 | } |
||
561 | 022cae08 | gaqhf | |
562 | 91502a9b | gaqhf | treeViewDrawing.AfterCheck += new TreeViewEventHandler(this.treeViewDrawing_AfterCheck); |
563 | } |
||
564 | 022cae08 | gaqhf | #endregion |
565 | |||
566 | d57a5303 | gaqhf | #endregion |
567 | 022cae08 | gaqhf | |
568 | 91502a9b | gaqhf | |
569 | d57a5303 | gaqhf | } |
570 | } |