| | |
| | | "WorkspaceRootPath": "D:\\Workspace\\PdmSwPlugin2\\", |
| | | "Documents": [ |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{713278FD-1A24-41A4-86B7-1072E7DB9E39}|PdmSwPlugin.PropertySetting\\PdmSwPlugin.PropertySetting.csproj|d:\\workspace\\pdmswplugin2\\pdmswplugin.propertysetting\\panel\\jgjpartpanel.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{713278FD-1A24-41A4-86B7-1072E7DB9E39}|PdmSwPlugin.PropertySetting\\PdmSwPlugin.PropertySetting.csproj|solutionrelative:pdmswplugin.propertysetting\\panel\\jgjpartpanel.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | "AbsoluteMoniker": "D:0:0:{1033FBD8-8700-4CD0-808A-BB97DB057A6B}|PdmSwPlugin.PDM\\PdmSwPlugin.PDM.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.pdm\\pdmcontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{1033FBD8-8700-4CD0-808A-BB97DB057A6B}|PdmSwPlugin.PDM\\PdmSwPlugin.PDM.csproj|solutionrelative:pdmswplugin.pdm\\pdmcontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{713278FD-1A24-41A4-86B7-1072E7DB9E39}|PdmSwPlugin.PropertySetting\\PdmSwPlugin.PropertySetting.csproj|d:\\workspace\\pdmswplugin2\\pdmswplugin.propertysetting\\commonsettingcontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "AbsoluteMoniker": "D:0:0:{1033FBD8-8700-4CD0-808A-BB97DB057A6B}|PdmSwPlugin.PDM\\PdmSwPlugin.PDM.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.pdm\\pdmcontrol.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", |
| | | "RelativeMoniker": "D:0:0:{1033FBD8-8700-4CD0-808A-BB97DB057A6B}|PdmSwPlugin.PDM\\PdmSwPlugin.PDM.csproj|solutionrelative:pdmswplugin.pdm\\pdmcontrol.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|d:\\workspace\\pdmswplugin2\\pdmswplugin.main\\constant\\pluginconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|solutionrelative:pdmswplugin.main\\constant\\pluginconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.common\\util\\swdmutil.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|solutionrelative:pdmswplugin.common\\util\\swdmutil.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{7ACEDAA9-2DE8-4485-837A-E7D58812A6DC}|PdmSw\\PdmSw.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmsw\\log4net.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}", |
| | | "RelativeMoniker": "D:0:0:{7ACEDAA9-2DE8-4485-837A-E7D58812A6DC}|PdmSw\\PdmSw.csproj|solutionrelative:pdmsw\\log4net.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.main\\maintab.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", |
| | | "RelativeMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|solutionrelative:pdmswplugin.main\\maintab.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.drawapprove\\drawaudithiscontrol.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", |
| | | "RelativeMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|solutionrelative:pdmswplugin.drawapprove\\drawaudithiscontrol.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.drawapprove\\drawapprove.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", |
| | | "RelativeMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|solutionrelative:pdmswplugin.drawapprove\\drawapprove.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{713278FD-1A24-41A4-86B7-1072E7DB9E39}|PdmSwPlugin.PropertySetting\\PdmSwPlugin.PropertySetting.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.propertysetting\\commonsettingcontrol.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", |
| | | "RelativeMoniker": "D:0:0:{713278FD-1A24-41A4-86B7-1072E7DB9E39}|PdmSwPlugin.PropertySetting\\PdmSwPlugin.PropertySetting.csproj|solutionrelative:pdmswplugin.propertysetting\\commonsettingcontrol.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.main\\maincontrol.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", |
| | | "RelativeMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|solutionrelative:pdmswplugin.main\\maincontrol.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.common\\style\\linkbutton.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", |
| | | "RelativeMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|solutionrelative:pdmswplugin.common\\style\\linkbutton.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.main\\maincontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|solutionrelative:pdmswplugin.main\\maincontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{4536570F-AD3C-4D24-870A-63C9E9CE0FED}|WpfUI\\WpfUI.csproj|D:\\Workspace\\PdmSwPlugin2\\wpfui\\log4net.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}", |
| | | "RelativeMoniker": "D:0:0:{4536570F-AD3C-4D24-870A-63C9E9CE0FED}|WpfUI\\WpfUI.csproj|solutionrelative:wpfui\\log4net.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{4536570F-AD3C-4D24-870A-63C9E9CE0FED}|WpfUI\\WpfUI.csproj|D:\\Workspace\\PdmSwPlugin2\\wpfui\\properties\\assemblyinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{4536570F-AD3C-4D24-870A-63C9E9CE0FED}|WpfUI\\WpfUI.csproj|solutionrelative:wpfui\\properties\\assemblyinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.main\\swaddin\\maincontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|solutionrelative:pdmswplugin.main\\swaddin\\maincontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{7ACEDAA9-2DE8-4485-837A-E7D58812A6DC}|PdmSw\\PdmSw.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmsw\\swaddin.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{7ACEDAA9-2DE8-4485-837A-E7D58812A6DC}|PdmSw\\PdmSw.csproj|solutionrelative:pdmsw\\swaddin.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.common\\util\\pdm\\bomtreereader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|solutionrelative:pdmswplugin.common\\util\\pdm\\bomtreereader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{713278FD-1A24-41A4-86B7-1072E7DB9E39}|PdmSwPlugin.PropertySetting\\PdmSwPlugin.PropertySetting.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.propertysetting\\commonsettingcontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{713278FD-1A24-41A4-86B7-1072E7DB9E39}|PdmSwPlugin.PropertySetting\\PdmSwPlugin.PropertySetting.csproj|solutionrelative:pdmswplugin.propertysetting\\commonsettingcontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{713278FD-1A24-41A4-86B7-1072E7DB9E39}|PdmSwPlugin.PropertySetting\\PdmSwPlugin.PropertySetting.csproj|d:\\workspace\\pdmswplugin2\\pdmswplugin.propertysetting\\panel\\jgjpartpanel.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", |
| | | "RelativeMoniker": "D:0:0:{713278FD-1A24-41A4-86B7-1072E7DB9E39}|PdmSwPlugin.PropertySetting\\PdmSwPlugin.PropertySetting.csproj|solutionrelative:pdmswplugin.propertysetting\\panel\\jgjpartpanel.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" |
| | | "AbsoluteMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.common\\util\\ui\\multiexwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|solutionrelative:pdmswplugin.common\\util\\ui\\multiexwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | } |
| | | ], |
| | | "DocumentGroupContainers": [ |
| | |
| | | "DocumentGroups": [ |
| | | { |
| | | "DockedHeight": 530, |
| | | "SelectedChildIndex": 1, |
| | | "SelectedChildIndex": 19, |
| | | "Children": [ |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 2, |
| | | "Title": "PluginConst.cs", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\Constant\\PluginConst.cs", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.Main\\Constant\\PluginConst.cs", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\Constant\\PluginConst.cs", |
| | | "RelativeToolTip": "PdmSwPlugin.Main\\Constant\\PluginConst.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-02-10T03:06:44.394Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Bookmark", |
| | | "Name": "ST:0:0:{269a02dc-6af8-11d3-bdc4-00c04f688e50}" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 3, |
| | | "Title": "SwDMUtil.cs", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Util\\SwDMUtil.cs", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.Common\\Util\\SwDMUtil.cs", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Util\\SwDMUtil.cs", |
| | | "RelativeToolTip": "PdmSwPlugin.Common\\Util\\SwDMUtil.cs", |
| | | "ViewState": "AgIAAEsAAAAAAAAAAAAywFcAAAAfAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-02-19T08:17:18.883Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 6, |
| | | "Title": "DrawAuditHisControl.xaml", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawAuditHisControl.xaml", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.DrawApprove\\DrawAuditHisControl.xaml", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawAuditHisControl.xaml", |
| | | "RelativeToolTip": "PdmSwPlugin.DrawApprove\\DrawAuditHisControl.xaml", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", |
| | | "WhenOpened": "2025-02-19T01:34:25.024Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 5, |
| | | "Title": "MainTab.xaml", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\MainTab.xaml", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.Main\\MainTab.xaml", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\MainTab.xaml", |
| | | "RelativeToolTip": "PdmSwPlugin.Main\\MainTab.xaml", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", |
| | | "WhenOpened": "2025-02-19T01:25:43.752Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 9, |
| | | "Title": "MainControl.xaml", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\MainControl.xaml", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.Main\\MainControl.xaml", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\MainControl.xaml", |
| | | "RelativeToolTip": "PdmSwPlugin.Main\\MainControl.xaml", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", |
| | | "WhenOpened": "2025-02-19T01:24:39.136Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 8, |
| | | "Title": "CommonSettingControl.xaml", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PropertySetting\\CommonSettingControl.xaml", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.PropertySetting\\CommonSettingControl.xaml", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PropertySetting\\CommonSettingControl.xaml", |
| | | "RelativeToolTip": "PdmSwPlugin.PropertySetting\\CommonSettingControl.xaml", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", |
| | | "WhenOpened": "2025-02-19T01:24:14.453Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 10, |
| | | "Title": "LinkButton.xaml", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Style\\LinkButton.xaml", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.Common\\Style\\LinkButton.xaml", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Style\\LinkButton.xaml", |
| | | "RelativeToolTip": "PdmSwPlugin.Common\\Style\\LinkButton.xaml", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", |
| | | "WhenOpened": "2025-02-18T02:04:24.459Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 1, |
| | | "Title": "PdmControl.xaml", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PDM\\PdmControl.xaml", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.PDM\\PdmControl.xaml", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PDM\\PdmControl.xaml", |
| | | "RelativeToolTip": "PdmSwPlugin.PDM\\PdmControl.xaml", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", |
| | | "WhenOpened": "2025-02-14T08:10:21.941Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 4, |
| | | "Title": "log4net.config", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSw\\log4net.config", |
| | | "RelativeDocumentMoniker": "PdmSw\\log4net.config", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSw\\log4net.config", |
| | | "RelativeToolTip": "PdmSw\\log4net.config", |
| | | "ViewState": "AgIAAA8AAAAAAAAAAADwvyMAAAAkAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000601|", |
| | | "WhenOpened": "2025-02-14T06:58:08.237Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 13, |
| | | "Title": "AssemblyInfo.cs", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\WpfUI\\Properties\\AssemblyInfo.cs", |
| | | "RelativeDocumentMoniker": "WpfUI\\Properties\\AssemblyInfo.cs", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\WpfUI\\Properties\\AssemblyInfo.cs", |
| | | "RelativeToolTip": "WpfUI\\Properties\\AssemblyInfo.cs", |
| | | "ViewState": "AgIAACQAAAAAAAAAAADwvzYAAAAvAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-02-14T06:24:49.631Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 11, |
| | | "Title": "MainControl.xaml.cs", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\MainControl.xaml.cs", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.Main\\MainControl.xaml.cs", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\MainControl.xaml.cs", |
| | | "RelativeToolTip": "PdmSwPlugin.Main\\MainControl.xaml.cs", |
| | | "ViewState": "AgIAADQAAAAAAAAAAAAYwBEAAAAdAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-02-14T06:24:33.175Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 12, |
| | | "Title": "log4net.config", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\WpfUI\\log4net.config", |
| | | "RelativeDocumentMoniker": "WpfUI\\log4net.config", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\WpfUI\\log4net.config", |
| | | "RelativeToolTip": "WpfUI\\log4net.config", |
| | | "ViewState": "AgIAAAMAAAAAAAAAAAAUwBAAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000601|", |
| | | "WhenOpened": "2025-02-14T06:23:24.263Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 14, |
| | | "Title": "MainControl.cs", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\SwAddIn\\MainControl.cs", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.Main\\SwAddIn\\MainControl.cs", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\SwAddIn\\MainControl.cs", |
| | | "RelativeToolTip": "PdmSwPlugin.Main\\SwAddIn\\MainControl.cs", |
| | | "ViewState": "AgIAACoAAAAAAAAAAAAzwDgAAAAgAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-02-12T08:10:40.337Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 15, |
| | | "Title": "SwAddin.cs", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSw\\SwAddin.cs", |
| | | "RelativeDocumentMoniker": "PdmSw\\SwAddin.cs", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSw\\SwAddin.cs", |
| | | "RelativeToolTip": "PdmSw\\SwAddin.cs", |
| | | "ViewState": "AgIAACoBAAAAAAAAAAAawEcBAAAiAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-02-12T08:00:05.533Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 16, |
| | | "Title": "BomTreeReader.cs", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Util\\Pdm\\BomTreeReader.cs", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.Common\\Util\\Pdm\\BomTreeReader.cs", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Util\\Pdm\\BomTreeReader.cs", |
| | | "RelativeToolTip": "PdmSwPlugin.Common\\Util\\Pdm\\BomTreeReader.cs", |
| | | "ViewState": "AgIAALsAAAAAAAAAAAAswMcAAAAVAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-02-12T07:44:36.406Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 7, |
| | | "Title": "DrawApprove.xaml", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawApprove.xaml", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.DrawApprove\\DrawApprove.xaml", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawApprove.xaml", |
| | | "RelativeToolTip": "PdmSwPlugin.DrawApprove\\DrawApprove.xaml", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", |
| | | "WhenOpened": "2025-02-12T01:37:15.351Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 18, |
| | | "Title": "MultiExWindow.xaml.cs", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Util\\UI\\MultiExWindow.xaml.cs", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.Common\\Util\\UI\\MultiExWindow.xaml.cs", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Util\\UI\\MultiExWindow.xaml.cs", |
| | | "RelativeToolTip": "PdmSwPlugin.Common\\Util\\UI\\MultiExWindow.xaml.cs", |
| | | "ViewState": "AgIAAEUAAAAAAAAAAAA0wFwAAAA+AAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-02-10T02:13:56.89Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 17, |
| | | "Title": "CommonSettingControl.xaml.cs", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PropertySetting\\CommonSettingControl.xaml.cs", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.PropertySetting\\CommonSettingControl.xaml.cs", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PropertySetting\\CommonSettingControl.xaml.cs", |
| | | "RelativeToolTip": "PdmSwPlugin.PropertySetting\\CommonSettingControl.xaml.cs", |
| | | "ViewState": "AgIAAAoBAAAAAAAAAAD4vx0BAAAgAAAAAAAAAA==", |
| | | "ViewState": "AgIAAPEBAAAAAAAAAAAYwAMCAABHAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-01-02T06:15:07.965Z", |
| | | "EditorCaption": "" |
| | | "WhenOpened": "2025-02-10T00:46:05.182Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 0, |
| | | "Title": "JgjPartPanel.xaml.cs", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PropertySetting\\Panel\\JgjPartPanel.xaml.cs", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.PropertySetting\\Panel\\JgjPartPanel.xaml.cs", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PropertySetting\\Panel\\JgjPartPanel.xaml.cs", |
| | | "RelativeToolTip": "PdmSwPlugin.PropertySetting\\Panel\\JgjPartPanel.xaml.cs", |
| | | "ViewState": "AgIAAF4BAAAAAAAAAAAQwIABAABGAAAAAAAAAA==", |
| | | "Title": "PdmControl.xaml.cs", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PDM\\PdmControl.xaml.cs", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.PDM\\PdmControl.xaml.cs", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PDM\\PdmControl.xaml.cs", |
| | | "RelativeToolTip": "PdmSwPlugin.PDM\\PdmControl.xaml.cs", |
| | | "ViewState": "AgIAAJwGAAAAAAAAAIBBwKwGAAAgAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-01-02T06:10:11.494Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 2, |
| | | "Title": "JgjPartPanel.xaml", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PropertySetting\\Panel\\JgjPartPanel.xaml", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.PropertySetting\\Panel\\JgjPartPanel.xaml", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PropertySetting\\Panel\\JgjPartPanel.xaml", |
| | | "RelativeToolTip": "PdmSwPlugin.PropertySetting\\Panel\\JgjPartPanel.xaml", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", |
| | | "WhenOpened": "2025-01-02T06:07:52.955Z", |
| | | "WhenOpened": "2025-01-24T08:15:20.974Z", |
| | | "EditorCaption": "" |
| | | } |
| | | ] |
| | |
| | | "WorkspaceRootPath": "D:\\Workspace\\PdmSwPlugin2\\", |
| | | "Documents": [ |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{713278FD-1A24-41A4-86B7-1072E7DB9E39}|PdmSwPlugin.PropertySetting\\PdmSwPlugin.PropertySetting.csproj|d:\\workspace\\pdmswplugin2\\pdmswplugin.propertysetting\\panel\\jgjpartpanel.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{713278FD-1A24-41A4-86B7-1072E7DB9E39}|PdmSwPlugin.PropertySetting\\PdmSwPlugin.PropertySetting.csproj|solutionrelative:pdmswplugin.propertysetting\\panel\\jgjpartpanel.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | "AbsoluteMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.main\\maincontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|solutionrelative:pdmswplugin.main\\maincontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{713278FD-1A24-41A4-86B7-1072E7DB9E39}|PdmSwPlugin.PropertySetting\\PdmSwPlugin.PropertySetting.csproj|d:\\workspace\\pdmswplugin2\\pdmswplugin.propertysetting\\commonsettingcontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "AbsoluteMoniker": "D:0:0:{1033FBD8-8700-4CD0-808A-BB97DB057A6B}|PdmSwPlugin.PDM\\PdmSwPlugin.PDM.csproj|d:\\workspace\\pdmswplugin2\\pdmswplugin.pdm\\pdmcontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{1033FBD8-8700-4CD0-808A-BB97DB057A6B}|PdmSwPlugin.PDM\\PdmSwPlugin.PDM.csproj|solutionrelative:pdmswplugin.pdm\\pdmcontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{1033FBD8-8700-4CD0-808A-BB97DB057A6B}|PdmSwPlugin.PDM\\PdmSwPlugin.PDM.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.pdm\\pdmcontrol.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", |
| | | "RelativeMoniker": "D:0:0:{1033FBD8-8700-4CD0-808A-BB97DB057A6B}|PdmSwPlugin.PDM\\PdmSwPlugin.PDM.csproj|solutionrelative:pdmswplugin.pdm\\pdmcontrol.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.main\\constant\\pluginconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|solutionrelative:pdmswplugin.main\\constant\\pluginconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.common\\util\\swdmutil.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|solutionrelative:pdmswplugin.common\\util\\swdmutil.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{7ACEDAA9-2DE8-4485-837A-E7D58812A6DC}|PdmSw\\PdmSw.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmsw\\log4net.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}", |
| | | "RelativeMoniker": "D:0:0:{7ACEDAA9-2DE8-4485-837A-E7D58812A6DC}|PdmSw\\PdmSw.csproj|solutionrelative:pdmsw\\log4net.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.main\\maintab.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", |
| | | "RelativeMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|solutionrelative:pdmswplugin.main\\maintab.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.drawapprove\\drawaudithiscontrol.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", |
| | | "RelativeMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|solutionrelative:pdmswplugin.drawapprove\\drawaudithiscontrol.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.drawapprove\\drawapprove.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", |
| | | "RelativeMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|solutionrelative:pdmswplugin.drawapprove\\drawapprove.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{713278FD-1A24-41A4-86B7-1072E7DB9E39}|PdmSwPlugin.PropertySetting\\PdmSwPlugin.PropertySetting.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.propertysetting\\commonsettingcontrol.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", |
| | | "RelativeMoniker": "D:0:0:{713278FD-1A24-41A4-86B7-1072E7DB9E39}|PdmSwPlugin.PropertySetting\\PdmSwPlugin.PropertySetting.csproj|solutionrelative:pdmswplugin.propertysetting\\commonsettingcontrol.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.main\\maincontrol.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", |
| | | "RelativeMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|solutionrelative:pdmswplugin.main\\maincontrol.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.common\\style\\linkbutton.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", |
| | | "RelativeMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|solutionrelative:pdmswplugin.common\\style\\linkbutton.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{4536570F-AD3C-4D24-870A-63C9E9CE0FED}|WpfUI\\WpfUI.csproj|D:\\Workspace\\PdmSwPlugin2\\wpfui\\log4net.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}", |
| | | "RelativeMoniker": "D:0:0:{4536570F-AD3C-4D24-870A-63C9E9CE0FED}|WpfUI\\WpfUI.csproj|solutionrelative:wpfui\\log4net.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{4536570F-AD3C-4D24-870A-63C9E9CE0FED}|WpfUI\\WpfUI.csproj|D:\\Workspace\\PdmSwPlugin2\\wpfui\\properties\\assemblyinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{4536570F-AD3C-4D24-870A-63C9E9CE0FED}|WpfUI\\WpfUI.csproj|solutionrelative:wpfui\\properties\\assemblyinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.main\\swaddin\\maincontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|solutionrelative:pdmswplugin.main\\swaddin\\maincontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{7ACEDAA9-2DE8-4485-837A-E7D58812A6DC}|PdmSw\\PdmSw.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmsw\\swaddin.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{7ACEDAA9-2DE8-4485-837A-E7D58812A6DC}|PdmSw\\PdmSw.csproj|solutionrelative:pdmsw\\swaddin.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.common\\util\\pdm\\bomtreereader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|solutionrelative:pdmswplugin.common\\util\\pdm\\bomtreereader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{713278FD-1A24-41A4-86B7-1072E7DB9E39}|PdmSwPlugin.PropertySetting\\PdmSwPlugin.PropertySetting.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.propertysetting\\commonsettingcontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{713278FD-1A24-41A4-86B7-1072E7DB9E39}|PdmSwPlugin.PropertySetting\\PdmSwPlugin.PropertySetting.csproj|solutionrelative:pdmswplugin.propertysetting\\commonsettingcontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{713278FD-1A24-41A4-86B7-1072E7DB9E39}|PdmSwPlugin.PropertySetting\\PdmSwPlugin.PropertySetting.csproj|d:\\workspace\\pdmswplugin2\\pdmswplugin.propertysetting\\panel\\jgjpartpanel.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", |
| | | "RelativeMoniker": "D:0:0:{713278FD-1A24-41A4-86B7-1072E7DB9E39}|PdmSwPlugin.PropertySetting\\PdmSwPlugin.PropertySetting.csproj|solutionrelative:pdmswplugin.propertysetting\\panel\\jgjpartpanel.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" |
| | | "AbsoluteMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|D:\\Workspace\\PdmSwPlugin2\\pdmswplugin.common\\util\\ui\\multiexwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|solutionrelative:pdmswplugin.common\\util\\ui\\multiexwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | } |
| | | ], |
| | | "DocumentGroupContainers": [ |
| | |
| | | "DocumentGroups": [ |
| | | { |
| | | "DockedHeight": 530, |
| | | "SelectedChildIndex": 1, |
| | | "SelectedChildIndex": 12, |
| | | "Children": [ |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 3, |
| | | "Title": "PluginConst.cs", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\Constant\\PluginConst.cs", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.Main\\Constant\\PluginConst.cs", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\Constant\\PluginConst.cs", |
| | | "RelativeToolTip": "PdmSwPlugin.Main\\Constant\\PluginConst.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-02-10T03:06:44.394Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 1, |
| | | "Title": "PdmControl.xaml.cs", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PDM\\PdmControl.xaml.cs", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.PDM\\PdmControl.xaml.cs", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PDM\\PdmControl.xaml.cs", |
| | | "RelativeToolTip": "PdmSwPlugin.PDM\\PdmControl.xaml.cs", |
| | | "ViewState": "AgIAAJ0GAAAAAAAAAAAkwKwGAAAgAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-01-24T08:15:20.974Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Bookmark", |
| | | "Name": "ST:0:0:{269a02dc-6af8-11d3-bdc4-00c04f688e50}" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 4, |
| | | "Title": "SwDMUtil.cs", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Util\\SwDMUtil.cs", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.Common\\Util\\SwDMUtil.cs", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Util\\SwDMUtil.cs", |
| | | "RelativeToolTip": "PdmSwPlugin.Common\\Util\\SwDMUtil.cs", |
| | | "ViewState": "AgIAAEsAAAAAAAAAAAAywFcAAAAfAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-02-19T08:17:18.883Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 7, |
| | | "Title": "DrawAuditHisControl.xaml", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawAuditHisControl.xaml", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.DrawApprove\\DrawAuditHisControl.xaml", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawAuditHisControl.xaml", |
| | | "RelativeToolTip": "PdmSwPlugin.DrawApprove\\DrawAuditHisControl.xaml", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", |
| | | "WhenOpened": "2025-02-19T01:34:25.024Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 6, |
| | | "Title": "MainTab.xaml", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\MainTab.xaml", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.Main\\MainTab.xaml", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\MainTab.xaml", |
| | | "RelativeToolTip": "PdmSwPlugin.Main\\MainTab.xaml", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", |
| | | "WhenOpened": "2025-02-19T01:25:43.752Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 10, |
| | | "Title": "MainControl.xaml", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\MainControl.xaml", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.Main\\MainControl.xaml", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\MainControl.xaml", |
| | | "RelativeToolTip": "PdmSwPlugin.Main\\MainControl.xaml", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", |
| | | "WhenOpened": "2025-02-19T01:24:39.136Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 9, |
| | | "Title": "CommonSettingControl.xaml", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PropertySetting\\CommonSettingControl.xaml", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.PropertySetting\\CommonSettingControl.xaml", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PropertySetting\\CommonSettingControl.xaml", |
| | | "RelativeToolTip": "PdmSwPlugin.PropertySetting\\CommonSettingControl.xaml", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", |
| | | "WhenOpened": "2025-02-19T01:24:14.453Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 11, |
| | | "Title": "LinkButton.xaml", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Style\\LinkButton.xaml", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.Common\\Style\\LinkButton.xaml", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Style\\LinkButton.xaml", |
| | | "RelativeToolTip": "PdmSwPlugin.Common\\Style\\LinkButton.xaml", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", |
| | | "WhenOpened": "2025-02-18T02:04:24.459Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 2, |
| | | "Title": "PdmControl.xaml", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PDM\\PdmControl.xaml", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.PDM\\PdmControl.xaml", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PDM\\PdmControl.xaml", |
| | | "RelativeToolTip": "PdmSwPlugin.PDM\\PdmControl.xaml", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", |
| | | "WhenOpened": "2025-02-14T08:10:21.941Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 5, |
| | | "Title": "log4net.config", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSw\\log4net.config", |
| | | "RelativeDocumentMoniker": "PdmSw\\log4net.config", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSw\\log4net.config", |
| | | "RelativeToolTip": "PdmSw\\log4net.config", |
| | | "ViewState": "AgIAAA8AAAAAAAAAAADwvyMAAAAkAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000601|", |
| | | "WhenOpened": "2025-02-14T06:58:08.237Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 13, |
| | | "Title": "AssemblyInfo.cs", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\WpfUI\\Properties\\AssemblyInfo.cs", |
| | | "RelativeDocumentMoniker": "WpfUI\\Properties\\AssemblyInfo.cs", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\WpfUI\\Properties\\AssemblyInfo.cs", |
| | | "RelativeToolTip": "WpfUI\\Properties\\AssemblyInfo.cs", |
| | | "ViewState": "AgIAACQAAAAAAAAAAADwvzYAAAAvAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-02-14T06:24:49.631Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 0, |
| | | "Title": "MainControl.xaml.cs", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\MainControl.xaml.cs", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.Main\\MainControl.xaml.cs", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\MainControl.xaml.cs", |
| | | "RelativeToolTip": "PdmSwPlugin.Main\\MainControl.xaml.cs", |
| | | "ViewState": "AgIAABsAAAAAAAAAAAAAADMAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-02-14T06:24:33.175Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 12, |
| | | "Title": "log4net.config", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\WpfUI\\log4net.config", |
| | | "RelativeDocumentMoniker": "WpfUI\\log4net.config", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\WpfUI\\log4net.config", |
| | | "RelativeToolTip": "WpfUI\\log4net.config", |
| | | "ViewState": "AgIAAAMAAAAAAAAAAAAUwBAAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000601|", |
| | | "WhenOpened": "2025-02-14T06:23:24.263Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 14, |
| | | "Title": "MainControl.cs", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\SwAddIn\\MainControl.cs", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.Main\\SwAddIn\\MainControl.cs", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\SwAddIn\\MainControl.cs", |
| | | "RelativeToolTip": "PdmSwPlugin.Main\\SwAddIn\\MainControl.cs", |
| | | "ViewState": "AgIAACoAAAAAAAAAAAAzwDgAAAAgAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-02-12T08:10:40.337Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 15, |
| | | "Title": "SwAddin.cs", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSw\\SwAddin.cs", |
| | | "RelativeDocumentMoniker": "PdmSw\\SwAddin.cs", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSw\\SwAddin.cs", |
| | | "RelativeToolTip": "PdmSw\\SwAddin.cs", |
| | | "ViewState": "AgIAACoBAAAAAAAAAAAawEcBAAAiAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-02-12T08:00:05.533Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 16, |
| | | "Title": "BomTreeReader.cs", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Util\\Pdm\\BomTreeReader.cs", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.Common\\Util\\Pdm\\BomTreeReader.cs", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Util\\Pdm\\BomTreeReader.cs", |
| | | "RelativeToolTip": "PdmSwPlugin.Common\\Util\\Pdm\\BomTreeReader.cs", |
| | | "ViewState": "AgIAALsAAAAAAAAAAAAswMcAAAAVAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-02-12T07:44:36.406Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 8, |
| | | "Title": "DrawApprove.xaml", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawApprove.xaml", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.DrawApprove\\DrawApprove.xaml", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawApprove.xaml", |
| | | "RelativeToolTip": "PdmSwPlugin.DrawApprove\\DrawApprove.xaml", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", |
| | | "WhenOpened": "2025-02-12T01:37:15.351Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 18, |
| | | "Title": "MultiExWindow.xaml.cs", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Util\\UI\\MultiExWindow.xaml.cs", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.Common\\Util\\UI\\MultiExWindow.xaml.cs", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Util\\UI\\MultiExWindow.xaml.cs", |
| | | "RelativeToolTip": "PdmSwPlugin.Common\\Util\\UI\\MultiExWindow.xaml.cs", |
| | | "ViewState": "AgIAAEUAAAAAAAAAAAA0wFwAAAA+AAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-02-10T02:13:56.89Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 17, |
| | | "Title": "CommonSettingControl.xaml.cs", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PropertySetting\\CommonSettingControl.xaml.cs", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.PropertySetting\\CommonSettingControl.xaml.cs", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PropertySetting\\CommonSettingControl.xaml.cs", |
| | | "RelativeToolTip": "PdmSwPlugin.PropertySetting\\CommonSettingControl.xaml.cs", |
| | | "ViewState": "AgIAAAoBAAAAAAAAAAD4vx0BAAAgAAAAAAAAAA==", |
| | | "ViewState": "AgIAAPEBAAAAAAAAAAAYwAMCAABHAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-01-02T06:15:07.965Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 0, |
| | | "Title": "JgjPartPanel.xaml.cs", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PropertySetting\\Panel\\JgjPartPanel.xaml.cs", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.PropertySetting\\Panel\\JgjPartPanel.xaml.cs", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PropertySetting\\Panel\\JgjPartPanel.xaml.cs", |
| | | "RelativeToolTip": "PdmSwPlugin.PropertySetting\\Panel\\JgjPartPanel.xaml.cs", |
| | | "ViewState": "AgIAAF4BAAAAAAAAAAAQwIABAABGAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-01-02T06:10:11.494Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 2, |
| | | "Title": "JgjPartPanel.xaml", |
| | | "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PropertySetting\\Panel\\JgjPartPanel.xaml", |
| | | "RelativeDocumentMoniker": "PdmSwPlugin.PropertySetting\\Panel\\JgjPartPanel.xaml", |
| | | "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PropertySetting\\Panel\\JgjPartPanel.xaml", |
| | | "RelativeToolTip": "PdmSwPlugin.PropertySetting\\Panel\\JgjPartPanel.xaml", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", |
| | | "WhenOpened": "2025-01-02T06:07:52.955Z", |
| | | "EditorCaption": "" |
| | | "WhenOpened": "2025-02-10T00:46:05.182Z" |
| | | } |
| | | ] |
| | | } |
| | |
| | | ; 自动更新程序路径 |
| | | #define AutoUpdaterDir = "D:\Workspace\PdmSwPlugin2\PdmSw\bin\x64\Release\AutoUpdater\" |
| | | ; 版本 |
| | | #define Version = "_0.0.0.45_审核质量" |
| | | #define Version = "_0.0.0.46_工程图引用问题" |
| | | |
| | | ; 生成的Installer存放路径 |
| | | #define OutPutDir = "Z:\Output" |
| | |
| | | </appender> |
| | | |
| | | <root> |
| | | <level value="INFO" /> |
| | | <level value="DEBUG" /> |
| | | <appender-ref ref="Console" /> |
| | | <appender-ref ref="RollingFile" /> |
| | | </root> |
| | |
| | | void OnDocDestroy(ModelDoc2 doc); |
| | | |
| | | void AfterDocDestroy(); |
| | | |
| | | void DisabledHandler(); |
| | | } |
| | | } |
| | |
| | | <Grid> |
| | | <!-- 下拉按钮 --> |
| | | <ToggleButton x:Name="ToggleButton" Grid.Column="2" Focusable="false" ClickMode="Press" |
| | | FontSize="16" |
| | | HorizontalContentAlignment="Stretch" |
| | | IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"> |
| | | <Grid> |
| | |
| | | using SolidWorks.Interop.sldworks; |
| | | using SolidWorks.Interop.swconst; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | |
| | | namespace PdmSwPlugin.Common.Util |
| | |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取文档属性 |
| | | /// </summary> |
| | | /// <param name="currentModelDoc">文档</param> |
| | | /// <param name="needResolve">是否转换值</param> |
| | | /// <param name="skipName">跳过的name</param> |
| | | /// <returns></returns> |
| | | public static Dictionary<string, string> GetCustomProperties2(ModelDoc2 currentModelDoc, |
| | | bool needResolve, |
| | | HashSet<string> skipName = null) |
| | | { |
| | | CustomPropertyManager customPropertyManager = GetCustomPropertyManager(currentModelDoc); |
| | | if (customPropertyManager == null) |
| | | { |
| | | return null; |
| | | } |
| | | |
| | | Dictionary<string, string> Properties = new Dictionary<string, string>(); |
| | | string[] names = customPropertyManager.GetNames(); |
| | | if (names == null) |
| | | { |
| | | return Properties; |
| | | } |
| | | foreach (string name in names) |
| | | { |
| | | if (customPropertyManager.Get6(name, false, out string valueOut, out string resolvedValueOut, out _, out _) |
| | | != (int)swCustomInfoGetResult_e.swCustomInfoGetResult_NotPresent) |
| | | { |
| | | string value = (needResolve && (skipName == null || !skipName.Contains(name))) ? resolvedValueOut : valueOut; |
| | | Properties[name] = value; |
| | | } |
| | | } |
| | | return Properties; |
| | | } |
| | | |
| | | public static bool SaveDoc(ModelDoc2 doc, Dictionary<string, string> props, ref int err, ref int warn) |
| | | { |
| | | SetCustomProperties(doc, props); |
| | | if (doc.Save3((int)swSaveAsOptions_e.swSaveAsOptions_AvoidRebuildOnSave, |
| | | ref err, ref warn)) |
| | | { |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | |
| | | public static Dictionary<string, string> GetCustomProperties(ModelDoc2 currentModelDoc, |
| | | bool needResolve, |
| | | HashSet<string> skipValue = null) |
| | |
| | | return Properties; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取文档属性 |
| | | /// </summary> |
| | | /// <param name="currentModelDoc">文档</param> |
| | | /// <param name="needResolve">是否转换值</param> |
| | | /// <param name="skipName">跳过的name</param> |
| | | /// <returns></returns> |
| | | public static Dictionary<string, string> GetCustomProperties2(ModelDoc2 currentModelDoc, |
| | | bool needResolve, |
| | | HashSet<string> skipName, |
| | | HashSet<string> skipResolveName) |
| | | { |
| | | CustomPropertyManager customPropertyManager = GetCustomPropertyManager(currentModelDoc); |
| | | if (customPropertyManager == null) |
| | | { |
| | | return null; |
| | | } |
| | | |
| | | Dictionary<string, string> Properties = new Dictionary<string, string>(); |
| | | string[] names = customPropertyManager.GetNames(); |
| | | if (names == null) |
| | | { |
| | | return Properties; |
| | | } |
| | | foreach (string name in names) |
| | | { |
| | | if (skipName != null && skipName.Contains(name)) continue; |
| | | if (customPropertyManager.Get6(name, false, out string valueOut, out string resolvedValueOut, out _, out _) |
| | | != (int)swCustomInfoGetResult_e.swCustomInfoGetResult_NotPresent) |
| | | { |
| | | string value = (needResolve && (skipResolveName == null || !skipResolveName.Contains(name))) ? resolvedValueOut : valueOut; |
| | | Properties[name] = value; |
| | | } |
| | | } |
| | | return Properties; |
| | | } |
| | | |
| | | public static bool SaveDoc(ModelDoc2 doc, Dictionary<string, string> props, ref int err, ref int warn) |
| | | { |
| | | SetCustomProperties(doc, props); |
| | | if (doc.Save3((int)swSaveAsOptions_e.swSaveAsOptions_AvoidRebuildOnSave, |
| | | ref err, ref warn)) |
| | | { |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | public static string GetCustomValue(this Dictionary<string, string> datas, string name, bool ignoreCase = false) |
| | | { |
| | |
| | | return values[5].ToString(); |
| | | } |
| | | |
| | | public static string GetMassBySWDM(ModelDoc2 doc) |
| | | { |
| | | if (doc == null) return null; |
| | | double[] values = SwDMUtil.GetMassProperty(doc.GetPathName(), out string errMSg); |
| | | if (values == null) |
| | | { |
| | | return null; |
| | | } |
| | | return values[5].ToString(); |
| | | } |
| | | |
| | | public static bool SetCustomProperties(ModelDoc2 doc, string key, string value) |
| | | { |
| | | CustomPropertyManager cpm = doc.Extension.CustomPropertyManager[""]; |
| | |
| | | id = Guid.NewGuid().ToString(), |
| | | doc = doc, |
| | | drawingType = drawingType, |
| | | properties = CustomPropertyUtil.GetCustomProperties(doc, true), |
| | | properties = CustomPropertyUtil.GetCustomProperties2(doc, true, null, null), |
| | | d3FilePath = childPath, |
| | | }; |
| | | return bomInfo; |
| | |
| | | using SolidWorks.Interop.swdocumentmgr; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Runtime.InteropServices; |
| | | |
| | | namespace PdmSwPlugin.Common.Util |
| | |
| | | public class SwDMUtil |
| | | { |
| | | /// <summary> |
| | | /// 凌创公司的 DM API 授权码 |
| | | /// 公司的 DM API 授权码 |
| | | /// </summary> |
| | | public static string LinktronLicenseKey = @"SuzhouLinktronSystemsCoLtd:swdocmgr_general-11785-02051-00064-33793-08629-34307-00007-05128-58478-32321-57480-30765-00622-59999-16385-62752-47753-50558-31076-40652-29868-22926-54604-41449-54717-42289-44473-51665-47549-58701-53709-46485-03533-12733-37329-14337-29280-51290-50890-25690-25696-964"; |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 获取一张工程图引用的3D图路径 |
| | | /// </summary> |
| | | /// <param name="filePath"></param> |
| | | /// <param name="error1"></param> |
| | | /// <param name="error2"></param> |
| | | /// <returns></returns> |
| | | public static string[] GetDrawingRef2(string filePath, out string errMsg, out int[] status) |
| | | { |
| | | errMsg = null; |
| | | status = null; |
| | | try |
| | | { |
| | | string originalExt; |
| | | SwDmDocumentType docType = DMSldFileExtentionChecker.CheckDM(filePath, out originalExt); |
| | | if (docType != SwDmDocumentType.swDmDocumentDrawing) |
| | | { |
| | | errMsg = "给定的文档不是一张工程图"; |
| | | throw null; |
| | | } |
| | | SwDMClassFactory swDMClassFactory = new SwDMClassFactory(); |
| | | SwDMApplication swDMApp = swDMClassFactory.GetApplication(LinktronLicenseKey); |
| | | if (swDMApp == null) |
| | | { |
| | | Marshal.ReleaseComObject(swDMClassFactory); |
| | | errMsg = "SwDM 初始化失败"; |
| | | return null; |
| | | } |
| | | SwDMDocument23 swDoc = (SwDMDocument23)swDMApp.GetDocument(filePath, docType, true, out var error1); |
| | | if (swDoc == null) |
| | | { |
| | | Marshal.ReleaseComObject(swDMApp); |
| | | Marshal.ReleaseComObject(swDMClassFactory); |
| | | errMsg = $"SwDM 加载文档失败,异常【{error1}】"; |
| | | return null; |
| | | } |
| | | var swSearchOpt = swDMApp.GetSearchOptionObject(); |
| | | object vBrokenRefs = null; |
| | | object vIsVirtuals = null; |
| | | object vTimeStamps = null; |
| | | object vIsImported = null; |
| | | |
| | | string[] views = (string[])swDoc.GetAllExternalReferences5(swSearchOpt, |
| | | out vBrokenRefs, out vIsVirtuals, out vTimeStamps, out vIsImported); |
| | | if (views == null || views.Length <= 0) |
| | | { |
| | | Marshal.ReleaseComObject(swDoc); |
| | | Marshal.ReleaseComObject(swDMApp); |
| | | Marshal.ReleaseComObject(swDMClassFactory); |
| | | errMsg = $"选定的工程图不包含有效的视图"; |
| | | return null; |
| | | } |
| | | Marshal.ReleaseComObject(swDoc); |
| | | Marshal.ReleaseComObject(swDMApp); |
| | | Marshal.ReleaseComObject(swDMClassFactory); |
| | | status = (int[])vBrokenRefs; |
| | | return views; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | errMsg = ex.Message; |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | public static double[] GetMassProperty(string filePath, out string errMsg) |
| | | { |
| | | try |
| | |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | public static Dictionary<string, string> GetProperty(string filePath, out string errMsg) |
| | | { |
| | | try |
| | | { |
| | | errMsg = null; |
| | | string originalExt; |
| | | SwDmDocumentType docType = DMSldFileExtentionChecker.CheckDM(filePath, out originalExt); |
| | | if (docType == SwDmDocumentType.swDmDocumentUnknown) |
| | | { |
| | | errMsg = "未知的文档类型"; |
| | | return null; |
| | | } |
| | | SwDMClassFactory swDMClassFactory = new SwDMClassFactory(); |
| | | SwDMApplication swDMApp = swDMClassFactory.GetApplication(LinktronLicenseKey); |
| | | if (swDMApp == null) |
| | | { |
| | | Marshal.ReleaseComObject(swDMClassFactory); |
| | | errMsg = "SwDM 初始化失败"; |
| | | return null; |
| | | } |
| | | SwDMDocument17 swDoc = (SwDMDocument17)swDMApp.GetDocument(filePath, docType, true, out var error1); |
| | | if (swDoc == null) |
| | | { |
| | | Marshal.ReleaseComObject(swDMApp); |
| | | Marshal.ReleaseComObject(swDMClassFactory); |
| | | errMsg = $"SwDM 加载文档失败,异常【{error1}】"; |
| | | return null; |
| | | } |
| | | SwDMConfigurationMgr dmConfigMgr = swDoc.ConfigurationManager; |
| | | if (dmConfigMgr == null) |
| | | { |
| | | Marshal.ReleaseComObject(swDoc); |
| | | Marshal.ReleaseComObject(swDMApp); |
| | | Marshal.ReleaseComObject(swDMClassFactory); |
| | | errMsg = $"获取 ConfigurationManager 失败"; |
| | | return null; |
| | | } |
| | | string configName = dmConfigMgr.GetActiveConfigurationName(); |
| | | SwDMConfiguration dmConfig = dmConfigMgr.GetConfigurationByName(configName); |
| | | if (dmConfig == null) |
| | | { |
| | | Marshal.ReleaseComObject(dmConfigMgr); |
| | | Marshal.ReleaseComObject(swDoc); |
| | | Marshal.ReleaseComObject(swDMApp); |
| | | Marshal.ReleaseComObject(swDMClassFactory); |
| | | errMsg = $"获取 Configuration 失败"; |
| | | return null; |
| | | } |
| | | Dictionary<string, string> datas = new Dictionary<string, string>(); |
| | | string[] names = dmConfig.GetCustomPropertyNames(); |
| | | names = swDoc.GetCustomPropertyNames(); |
| | | foreach (string name in names) |
| | | { |
| | | string val = swDoc.GetCustomProperty2(name, out var type); |
| | | datas.Add(name, val); |
| | | } |
| | | return datas; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | errMsg = ex.Message; |
| | | return null; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | using System.Collections.ObjectModel; |
| | | using System.ComponentModel; |
| | | using System.Runtime.CompilerServices; |
| | | using System.Runtime.InteropServices; |
| | | using System.Web.UI.WebControls.WebParts; |
| | | using System.Windows; |
| | | using System.Windows.Interop; |
| | | |
| | | namespace PdmSwPlugin.Common.Util.UI |
| | | { |
| | |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | // Windows API 函数 |
| | | [DllImport("user32.dll", SetLastError = true)] |
| | | private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong); |
| | | |
| | | [DllImport("user32.dll", SetLastError = true)] |
| | | private static extern int GetWindowLong(IntPtr hWnd, int nIndex); |
| | | |
| | | private const int GWL_STYLE = -16; // 窗口样式 |
| | | private const int WS_MINIMIZEBOX = 0x00020000; // 最小化按钮样式 |
| | | |
| | | private string _title; |
| | | public string title |
| | |
| | | |
| | | private void Window_Loaded(object sender, RoutedEventArgs e) |
| | | { |
| | | // 获取窗口句柄 |
| | | IntPtr hWnd = new WindowInteropHelper(this).Handle; |
| | | |
| | | // 获取当前窗口的样式 |
| | | int currentStyle = GetWindowLong(hWnd, GWL_STYLE); |
| | | |
| | | // 移除最小化按钮 |
| | | SetWindowLong(hWnd, GWL_STYLE, currentStyle & ~WS_MINIMIZEBOX); |
| | | Dispatcher.Invoke(() => |
| | | { |
| | | table.ItemsSource = new ObservableCollection<string>(exceptions); |
| | |
| | | <RowDefinition Height="20"/> |
| | | </Grid.RowDefinitions> |
| | | |
| | | <ToolBarTray Grid.Row="0" DockPanel.Dock="Top" Background="#FFF" ToolBarTray.IsLocked="True" > |
| | | <ToolBarTray Grid.Row="0" DockPanel.Dock="Top" Background="Transparent" ToolBarTray.IsLocked="True" > |
| | | <ToolBar Style="{StaticResource CommonToolBar}" ToolBar.OverflowMode="Never" Band="1" BandIndex="1" Height="30" Background="#FFF"> |
| | | <Button ToolTip="刷新" Content="刷新" FontFamily="{StaticResource iconfont}" FontSize="16" |
| | | Click="Button_Click"/> |
| | |
| | | { |
| | | |
| | | } |
| | | |
| | | public void DisabledHandler() |
| | | { |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | <Grid x:Name="sb"> |
| | | <DockPanel x:Name="content" LastChildFill="True"> |
| | | |
| | | <ToolBarTray DockPanel.Dock="Top" Background="#FFF" ToolBarTray.IsLocked="True" > |
| | | <ToolBarTray DockPanel.Dock="Top" Background="Transparent" ToolBarTray.IsLocked="True" > |
| | | <ToolBar Style="{StaticResource CommonToolBar}" ToolBar.OverflowMode="Never" Band="1" BandIndex="1" Height="30" Background="#FFF"> |
| | | <Button ToolTip="刷新" Content="刷新" FontFamily="{StaticResource iconfont}" FontSize="16" |
| | | Click="Button_Click"/> |
| | |
| | | public class PluginConst |
| | | { |
| | | public static readonly string AppId = "DF23E96F-A469-4302-8367-7FA2F798CD09"; |
| | | public static readonly string Version = "0.0.0.45"; |
| | | public static readonly string Version = "0.0.0.46"; |
| | | } |
| | | } |
| | |
| | | xmlns:local="clr-namespace:PdmSwPlugin.Main" |
| | | d:DataContext="{d:DesignInstance Type=local:MainControl}" |
| | | x:Name="self" |
| | | mc:Ignorable="d" |
| | | |
| | | mc:Ignorable="d" |
| | | HorizontalAlignment="Stretch" |
| | | HorizontalContentAlignment="Stretch" |
| | | VerticalContentAlignment="Stretch" |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | public void SetSwApp(SldWorks SwApp) |
| | | { |
| | | this.SwApp = SwApp; |
| | |
| | | <RowDefinition /> |
| | | <RowDefinition Height="Auto"/> |
| | | </Grid.RowDefinitions> |
| | | <TabControl Grid.Row="0" x:Name="tabControl"></TabControl> |
| | | <TabControl Grid.Row="0" x:Name="tabControl" Background="#f0f0f0"> |
| | | <TabControl.Resources> |
| | | <Style TargetType="{x:Type TabItem}"> |
| | | <Setter Property="FontSize" Value="16"/> |
| | | <Style.Triggers> |
| | | <Trigger Property="IsSelected" Value="True"> |
| | | <Setter Property="Background" Value="#f0f0f0"/> |
| | | </Trigger> |
| | | </Style.Triggers> |
| | | </Style> |
| | | </TabControl.Resources> |
| | | </TabControl> |
| | | <DockPanel Grid.Row="1" Margin="0" LastChildFill="False"> |
| | | <Label DockPanel.Dock="Left" x:Name="userLabel" FontWeight="Bold" Padding="0" Margin="0,0,20,0" /> |
| | | <Button DockPanel.Dock="Left" Style="{StaticResource LinkButton}" Click="Button_Click">退出登录</Button> |
| | |
| | | ActiveDocCustomPropertyChange -= handler.OnCustomPropertyChange; |
| | | DocDestroy -= handler.OnDocDestroy; |
| | | AfterDocDestroy -= handler.AfterDocDestroy; |
| | | handler.DisabledHandler(); |
| | | } |
| | | } |
| | | PluginInfos.Clear(); |
| | |
| | | { |
| | | |
| | | } |
| | | |
| | | public void DisabledHandler() |
| | | { |
| | | } |
| | | } |
| | | } |
| | |
| | | <RowDefinition Height="*" /> |
| | | <RowDefinition Height="20"/> |
| | | </Grid.RowDefinitions> |
| | | <ToolBarTray Grid.Row="0" Background="#FFF" ToolBarTray.IsLocked="True" > |
| | | <ToolBarTray Grid.Row="0" Background="Transparent" ToolBarTray.IsLocked="True"> |
| | | <ToolBar Style="{StaticResource CommonToolBar}" ToolBar.OverflowMode="Never" Band="1" BandIndex="1" Height="30" Background="#FFF"> |
| | | <Button ToolTip="刷新" Content="刷新" FontFamily="{StaticResource iconfont}" FontSize="16" |
| | | Click="Refresh_Click"/> |
| | |
| | | using log4net; |
| | | using Microsoft.Win32; |
| | | using NPOI.SS.Formula.PTG; |
| | | using NPOI.SS.UserModel; |
| | | using NPOI.Util; |
| | | using NPOI.XSSF.UserModel; |
| | |
| | | private HttpClientCreator clientCreator { get; set; } |
| | | |
| | | private volatile PdmStatus workStatus; |
| | | |
| | | private TaskFactory taskFactory = LimitedConcurrencyLevelTaskSchedulerMsn.Factory; |
| | | |
| | | SldWorks ISwAppSetter.SwApp => SwApp; |
| | | |
| | |
| | | //throw new NotImplementedException(); |
| | | } |
| | | |
| | | public Dictionary<string, DrawInfo> GetAllProperties(List<string> ErrMsgs) |
| | | { |
| | | ConcurrentDictionary<string, DrawInfo> result = new ConcurrentDictionary<string, DrawInfo>(); |
| | | PdmBom topBom = model.BomTree[0]; |
| | | CountdownEvent counter = new CountdownEvent(1); |
| | | _ = ThreadPool.QueueUserWorkItem( |
| | | new WaitCallback(GetAll), |
| | | new object[] { |
| | | topBom, result, counter, ErrMsgs, 0} |
| | | ); |
| | | counter.Wait(); |
| | | counter.Dispose(); |
| | | return new Dictionary<string, DrawInfo>(result); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取全部属性 |
| | | /// </summary> |
| | | /// <param name="param"></param> |
| | | public void GetAll(object param) |
| | | { |
| | | object[] datas = param as object[]; |
| | | PdmBom bom = (PdmBom)datas[0]; |
| | | ModelDoc2 sldDoc = bom.doc; |
| | | Component2 component = bom.component; |
| | | ConcurrentDictionary<string, DrawInfo> result = (ConcurrentDictionary<string, DrawInfo>)datas[1]; |
| | | CountdownEvent counter = (CountdownEvent)datas[2]; |
| | | List<string> ErrMsgs = (List<string>)datas[3]; |
| | | int level = (int)datas[4]; |
| | | try |
| | | { |
| | | counter.TryAddCount(); |
| | | string filepath = bom.partNo; |
| | | |
| | | |
| | | if (result.ContainsKey(filepath)) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | if (!bom.skipCheck) |
| | | { |
| | | result[filepath] = GetSingleDrawInfo(bom); |
| | | } |
| | | |
| | | ObservableCollection<PdmBom> children = bom.modules; |
| | | if (children != null) |
| | | { |
| | | foreach (PdmBom child in children) |
| | | { |
| | | _ = ThreadPool.QueueUserWorkItem( |
| | | new WaitCallback(GetAll), |
| | | new object[] { child, result, counter, ErrMsgs, 1 }); |
| | | } |
| | | } |
| | | MaskAdorner.ShowMessage(content, filepath); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | bom.drawInfo.checkRuleResult = 2; |
| | | bom.drawInfo.errMessages = new List<string> { e.Message }; |
| | | Logger.Error($"V{PdmUser.LoginUser.pluginVersion},[{bom.filePath}] Read MASS Properies Failed.", e); |
| | | } |
| | | finally |
| | | { |
| | | counter.Signal(); |
| | | if (level == 0) |
| | | { |
| | | counter.Signal(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 处理质量,保留6位小数 |
| | | /// </summary> |
| | |
| | | } |
| | | // 文件保存状态 |
| | | allProperties["图纸保存状态"] = sldDoc.GetSaveFlag().ToString(); |
| | | Dictionary<string, string> properties = CustomPropertyUtil.GetCustomProperties(sldDoc, true); |
| | | Dictionary<string, string> properties = CustomPropertyUtil.GetCustomProperties2(sldDoc, true, new HashSet<string> |
| | | { |
| | | "重量" |
| | | }, null); |
| | | // 图纸属性 |
| | | if (properties != null) |
| | | { |
| | |
| | | } |
| | | if (drawExists) |
| | | { |
| | | string refPath = SwDMUtil.GetDrawingRef(drawFilePath, out string errMsg); |
| | | if (refPath == null) |
| | | string[] refs = SwDMUtil.GetDrawingRef2(drawFilePath, out string err, out int[] status); |
| | | string refPath = ""; |
| | | if (refs != null && refs.Length > 0) |
| | | { |
| | | Logger.Error($"V{PdmUser.LoginUser.pluginVersion}, [{drawFilePath}] Read slddrw Ref Path Failed.[{errMsg}]"); |
| | | foreach (var rf in refs) |
| | | { |
| | | if (string.Equals(rf, filepath, StringComparison.CurrentCultureIgnoreCase)) |
| | | { |
| | | refPath = rf; |
| | | refPath = Path.GetFileName(refPath); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | refPath = Path.GetFileName(refPath); |
| | | Logger.Error($"V{PdmUser.LoginUser.pluginVersion}, [{drawFilePath}] Read slddrw Ref Path Failed.[{err}]"); |
| | | } |
| | | |
| | | //string refPath = SwDMUtil.GetDrawingRef(drawFilePath, out string errMsg); |
| | | //if (refPath == null) |
| | | //{ |
| | | // Logger.Error($"V{PdmUser.LoginUser.pluginVersion}, [{drawFilePath}] Read slddrw Ref Path Failed.[{errMsg}]"); |
| | | //} |
| | | //else |
| | | //{ |
| | | // refPath = Path.GetFileName(refPath); |
| | | //} |
| | | Logger.Debug($"V{PdmUser.LoginUser.pluginVersion},文档路径:【{filepath}】\r\n" + |
| | | $"工程图路径:【{drawFilePath}】\r\n" + |
| | | $"文件全称:【{allProperties["文件全称"]}】\r\n" + |
| | | $"Result:【{string.Join(",", refs ?? new string[] { })}】\r\n" + |
| | | $"Status:【{string.Join(",", status ?? new int[] { })}】\r\n" + |
| | | $"引用路径:【{refPath}】"); |
| | | allProperties["工程图引用文件"] = refPath; |
| | | } |
| | |
| | | ConcurrentDictionary<string, DrawInfo> result = new ConcurrentDictionary<string, DrawInfo>(); |
| | | PdmBom topBom = model.BomTree[0]; |
| | | CountdownEvent counter = new CountdownEvent(1); |
| | | Task.Run(() => |
| | | taskFactory.StartNew(() => |
| | | { |
| | | GetAllByTask(new object[] { |
| | | topBom, result, counter, ErrMsgs, 0 }); |
| | | }); |
| | | counter.Wait(); |
| | | counter.Dispose(); |
| | | // 不需要手动释放 |
| | | //counter.Dispose(); |
| | | return new Dictionary<string, DrawInfo>(result); |
| | | } |
| | | |
| | |
| | | { |
| | | foreach (PdmBom child in children) |
| | | { |
| | | Task.Run(() => |
| | | taskFactory.StartNew(() => |
| | | { |
| | | GetAllByTask(new object[] { child, result, counter, ErrMsgs, 1 }); |
| | | }); |
| | |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 对当前展示的BOM结构进行规则检查 |
| | | /// </summary> |
| | | /// <returns>是否全部通过</returns> |
| | | public bool DoCheckRule(out List<string> messages) |
| | | { |
| | | messages = new List<string>(); |
| | | bool allSuccess = true; |
| | | Dictionary<string, DrawInfo> properties = GetAllProperties(messages); |
| | | MaskAdorner.ShowMessage(content, "正在请求数据..."); |
| | | Result<Dictionary<string, DrawInfo>> result = Client.PostSyncAction<Dictionary<string, DrawInfo>>( |
| | | new PdmBomParam |
| | | { |
| | | needCheckProperties = properties |
| | | }, "wpf/bom/openApi/checkRule2"); |
| | | Dictionary<string, DrawInfo> checkResult = result.HandleResult(); |
| | | foreach (string key in properties.Keys) |
| | | { |
| | | properties[key].checkRuleResult = checkResult[key].checkRuleResult; |
| | | properties[key].errMessages = checkResult[key].errMessages; |
| | | var msgs = checkResult[key].errMessages; |
| | | if (!properties[key].HistoryData && !checkResult[key].checkRuleOk) |
| | | { |
| | | // 不是历史数据并且有未通过的,标记为false |
| | | allSuccess = false; |
| | | } |
| | | |
| | | if (!properties[key].HistoryData && msgs != null && msgs.Count > 0) |
| | | { |
| | | foreach (string msg in msgs) |
| | | { |
| | | messages.Add($"物料【{key}】未通过规则检查!{msg}"); |
| | | } |
| | | } |
| | | } |
| | | return allSuccess; |
| | | } |
| | | |
| | | public bool DoCheckRuleAsync(out List<string> messages) |
| | | { |
| | | var temp = new List<string>(); |
| | |
| | | // var factory = LimitedConcurrencyLevelTaskScheduler.Factory; |
| | | CountdownEvent counter = new CountdownEvent(properties.Count); |
| | | int iii = 0; |
| | | var start = DateTime.Now; |
| | | Logger.Debug("DoCheckRuleAsync Start..."); |
| | | foreach (KeyValuePair<string, DrawInfo> property in properties) |
| | | { |
| | | /// 这个方法最快,但不好管控,因为不知道属性字典有多大 |
| | | Task.Run(() => |
| | | /// Task.Run 这个方法最快,但不好管控,因为不知道属性字典有多大 |
| | | /// taskFactory.StartNew 稳定一点吗? |
| | | taskFactory.StartNew(() => |
| | | { |
| | | string key = property.Key; |
| | | iii++; |
| | | try |
| | | { |
| | | Logger.Error($"{key} checking rule..."); |
| | | Logger.Debug($"{key} checking rule..."); |
| | | DrawInfo checkResult; |
| | | Result<DrawInfo> result = Client.PostSyncAction<DrawInfo>(property.Value, "wpf/bom/openApi/checkRuleSingle"); |
| | | checkResult = result.HandleResult(); |
| | |
| | | counter.Wait(); |
| | | counter.Dispose(); |
| | | messages = temp; |
| | | Logger.Debug($"DoCheckRuleAsync Ended in {(DateTime.Now - start).TotalMilliseconds}ms."); |
| | | return allSuccess; |
| | | } |
| | | |
| | |
| | | IntPtr winformWindow = Process.GetCurrentProcess().MainWindowHandle; |
| | | if (winformWindow != null) |
| | | new WindowInteropHelper(exWin) { Owner = winformWindow }; |
| | | exWin.Show(); |
| | | exWin.ShowDialog(); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | ConcurrentQueue<string> pathCache = new ConcurrentQueue<string>(boms.Select(b => b.filePath).ToList()); |
| | | foreach (PdmBom bom in boms) |
| | | { |
| | | Task.Run(() => |
| | | taskFactory.StartNew(() => |
| | | { |
| | | try |
| | | { |
| | |
| | | if (errs.Count > 0) |
| | | { |
| | | MultiExWindow exWin = new MultiExWindow(this, "检查结果", errs); |
| | | exWin.ShowDialog(); |
| | | ShowExWindow(exWin); |
| | | } |
| | | else if (bom.checkRuleResult == 3) |
| | | { |
| | |
| | | { |
| | | |
| | | } |
| | | |
| | | public void DisabledHandler() |
| | | { |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
| | | xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" |
| | | xmlns:d="http://schemas.microsoft.com/expression/blend/2008" |
| | | mc:Ignorable="d" |
| | | mc:Ignorable="d" |
| | | d:DesignHeight="450" d:DesignWidth="800"> |
| | | <UserControl.Resources> |
| | | <ResourceDictionary> |
| | | <ResourceDictionary.MergedDictionaries> |
| | | <ResourceDictionary Source="/PdmSwPlugin.Common;component/Style/ToolBar.xaml"/> |
| | | </ResourceDictionary.MergedDictionaries> |
| | | |
| | | <Style TargetType="Button"> |
| | | <Setter Property="FontSize" Value="16"/> |
| | | </Style> |
| | | |
| | | <Style TargetType="UserControl"> |
| | | <Setter Property="FontSize" Value="16"/> |
| | | </Style> |
| | | |
| | | <Style TargetType="TextBox"> |
| | | <Setter Property="FontSize" Value="16"/> |
| | | </Style> |
| | | |
| | | <Style TargetType="Label"> |
| | | <Setter Property="FontSize" Value="14"/> |
| | | </Style> |
| | | |
| | | <Style TargetType="ComboBox"> |
| | | <Setter Property="FontSize" Value="16"/> |
| | | </Style> |
| | | |
| | | <Style TargetType="ComboBoxItem"> |
| | | <Setter Property="FontSize" Value="16"/> |
| | | </Style> |
| | | </ResourceDictionary> |
| | | </UserControl.Resources> |
| | | |
| | | <StackPanel> |
| | | <ToolBarTray Background="#FFF" ToolBarTray.IsLocked="True" > |
| | | <ToolBar Style="{StaticResource CommonToolBar}" ToolBar.OverflowMode="Never" Band="1" BandIndex="1" Height="30" Background="#FFF"> |
| | | <ToolBarTray Background="Transparent" ToolBarTray.IsLocked="True" > |
| | | <ToolBar Style="{StaticResource CommonToolBar}" ToolBar.OverflowMode="Never" Band="1" BandIndex="1" Height="30"> |
| | | <Button ToolTip="刷新" Content="刷新" Click="Refresh_Click" FontSize="16"/> |
| | | |
| | | <Button ToolTip="保存" Content="保存" FontFamily="{StaticResource iconfont}" FontSize="16" |
| | |
| | | using System.IO; |
| | | using System.Collections.ObjectModel; |
| | | using System.Runtime.InteropServices; |
| | | using System.Diagnostics; |
| | | using PdmSwPlugin.PropertySetting.Util; |
| | | |
| | | namespace PdmSwPlugin.PropertySetting |
| | | { |
| | |
| | | Dictionary<string, string> datas = properties as Dictionary<string, string>; |
| | | (container as UIElement).Dispatcher.Invoke(() => |
| | | { |
| | | var props = container.GetType().GetProperties().Where(prop => System.Attribute.IsDefined(prop, typeof(PropertySettingAttr))) |
| | | .ToList(); |
| | | // PropHolder.SetPropToUI(container, datas); |
| | | |
| | | foreach (var prop in props) |
| | | Dictionary<PropertyInfo, PropertySettingAttr> map = PropHolder.GetAttrMap(container.GetType()); |
| | | if (map == null) |
| | | { |
| | | PropertySettingAttr attr = prop.GetCustomAttribute<PropertySettingAttr>(); |
| | | return; |
| | | } |
| | | foreach (var prop in map.Keys) |
| | | { |
| | | PropertySettingAttr attr = map[prop]; |
| | | if (attr == null || !attr.NeedInit) |
| | | { |
| | | continue; |
| | |
| | | // 其他写入initData |
| | | if (initData != null) initData[name] = value; |
| | | } |
| | | prop.SetValue(container, value); |
| | | PropHolder.SetPropToUI(container, prop, value); |
| | | } |
| | | |
| | | // var props = container.GetType().GetProperties().Where(prop => System.Attribute.IsDefined(prop, typeof(PropertySettingAttr))) |
| | | //.ToList(); |
| | | // foreach (var prop in props) |
| | | // { |
| | | // PropertySettingAttr attr = prop.GetCustomAttribute<PropertySettingAttr>(); |
| | | // if (attr == null || !attr.NeedInit) |
| | | // { |
| | | // continue; |
| | | // } |
| | | // string name = attr.Name; |
| | | // string value = datas.Get(name, string.Empty); |
| | | // if (string.IsNullOrEmpty(value) && !string.IsNullOrEmpty(attr.defaultValue)) |
| | | // { |
| | | // value = attr.defaultValue; |
| | | // // 默认值不写入initData |
| | | // } |
| | | // else |
| | | // { |
| | | // // 其他写入initData |
| | | // if (initData != null) initData[name] = value; |
| | | // } |
| | | // prop.SetValue(container, value); |
| | | // } |
| | | }); |
| | | return true; |
| | | } |
| | |
| | | this.SwApp = SwApp; |
| | | } |
| | | |
| | | public Dictionary<string, string> GetPropsWithLog(ModelDoc2 currentModelDoc, |
| | | bool needResolve, |
| | | HashSet<string> skipName, |
| | | HashSet<string> skipResolveName) |
| | | { |
| | | if (currentModelDoc == null) return null; |
| | | var start = DateTime.Now; |
| | | var data = CustomPropertyUtil.GetCustomProperties2(currentModelDoc, needResolve, skipName, skipResolveName); |
| | | Logger.Debug($"Get Props {(DateTime.Now - start).TotalMilliseconds} ms."); |
| | | return data; |
| | | } |
| | | |
| | | public void InitPropertyData() |
| | | { |
| | | try |
| | |
| | | |
| | | private void UpdateActiveDoc() |
| | | { |
| | | long start = DateTime.Now.Millisecond; |
| | | var start = DateTime.Now; |
| | | Logger.Debug("UpdateActiveDoc Start..."); |
| | | if (activeDoc != null) |
| | | { |
| | |
| | | activeDoc.ClearSelection2(true); |
| | | } |
| | | } |
| | | Logger.Debug($"UpdateActiveDoc End {activeDoc?.GetPathName()} {DateTime.Now.Millisecond - start}ms."); |
| | | start = DateTime.Now.Millisecond; |
| | | Logger.Debug("UpdateUI Start..."); |
| | | Logger.Debug($"UpdateActiveDoc End {activeDoc?.GetPathName()} {(DateTime.Now - start).TotalMilliseconds}ms."); |
| | | UpdateUI(activeDoc); |
| | | Logger.Debug($"UpdateUI End {activeDoc?.GetPathName()} {DateTime.Now.Millisecond - start}ms."); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | |
| | | public void UpdateUI(ModelDoc2 doc) |
| | | { |
| | | var start = DateTime.Now; |
| | | Logger.Debug("UpdateUI Start..."); |
| | | AlertSaveWindow(); |
| | | LastReadDoc = ReadDoc; |
| | | ReadDoc = doc; |
| | | Dispatcher.Invoke(() => |
| | | { |
| | | |
| | | // LoadDocProperties(); |
| | | }); |
| | | SwitchVisiable(); |
| | | Logger.Debug($"UpdateUI End {activeDoc?.GetPathName()} {(DateTime.Now - start).TotalMilliseconds}ms."); |
| | | } |
| | | |
| | | private int Ass_UserSelectionPostNotify() |
| | |
| | | /// </summary> |
| | | private void SwitchVisiable() |
| | | { |
| | | var start = DateTime.Now.Millisecond; |
| | | var start = DateTime.Now; |
| | | Logger.Debug("SwitchVisiable Start..."); |
| | | |
| | | HashSet<string> skipName = new HashSet<string> { |
| | | |
| | | HashSet<string> skipName = new HashSet<string> |
| | | { |
| | | NameConstant.weight |
| | | }; |
| | | |
| | | HashSet<string> skipResolveName = new HashSet<string> { |
| | | NameConstant.materialCode |
| | | }; |
| | | |
| | |
| | | else if (docType == (int)swDocumentTypes_e.swDocPART) |
| | | { |
| | | ReadDocPath = ReadDoc.GetPathName(); |
| | | properties = CustomPropertyUtil.GetCustomProperties2(ReadDoc, true, skipName); |
| | | properties = GetPropsWithLog(ReadDoc, true, skipName, skipResolveName); |
| | | string fileType = properties.Get(NameConstant.docType); |
| | | /*if (fileType == "加工件" || fileType == "模组") |
| | | { |
| | |
| | | else |
| | | { |
| | | // !Equals(LastReadDoc, ReadDoc) |
| | | properties = CustomPropertyUtil.GetCustomProperties2(ReadDoc, true, skipName); |
| | | properties = GetPropsWithLog(ReadDoc, true, skipName, skipResolveName); |
| | | string fileType = properties.Get(NameConstant.docType); |
| | | /*if (fileType == "加工件" || fileType == "模组") |
| | | { |
| | |
| | | contentPanel.Children.Add(control); |
| | | }); |
| | | |
| | | Logger.Debug($"SwitchVisiable End {activeDoc?.GetPathName()} {DateTime.Now.Millisecond - start}ms."); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 根据激活的文档类型,变更属性可视 |
| | | /// </summary> |
| | | private void SwitchVisiable2() |
| | | { |
| | | HashSet<string> skipName = new HashSet<string> { |
| | | NameConstant.materialCode |
| | | }; |
| | | |
| | | IPropertyOpt last = ActiveOpter as IPropertyOpt; |
| | | string contentKey = "default"; |
| | | int? docType = ReadDoc?.GetType(); |
| | | UserControl control; |
| | | IPropertyOpt newOne; |
| | | Dictionary<string, string> properties; |
| | | if (docType == (int)swDocumentTypes_e.swDocDRAWING) |
| | | { |
| | | ReadDocPath = ReadDoc.GetPathName(); |
| | | |
| | | control = new DefaultPanel(); |
| | | newOne = control as IPropertyOpt; |
| | | newOne.SetSettings(settings); |
| | | newOne.SetProperties(null, "当前不支持工程图", true, out _); |
| | | } |
| | | else if (docType == (int)swDocumentTypes_e.swDocPART) |
| | | { |
| | | ReadDocPath = ReadDoc.GetPathName(); |
| | | properties = CustomPropertyUtil.GetCustomProperties2(ReadDoc, true, skipName); |
| | | string fileType = properties.Get(NameConstant.docType); |
| | | /*if (fileType == "加工件" || fileType == "模组") |
| | | { |
| | | contentKey = "jgjPart"; |
| | | }*/ |
| | | if (BomIniterHolder.Instance.IsJgj(ReadDoc)) |
| | | { |
| | | control = new JgjPartPanel(); |
| | | } |
| | | else |
| | | { |
| | | control = new StandardPartPanel(); |
| | | } |
| | | newOne = control as IPropertyOpt; |
| | | newOne.SetSettings(settings); |
| | | newOne.SetProperties(ReadDoc, properties, true, out _); |
| | | } |
| | | else if (docType == (int)swDocumentTypes_e.swDocASSEMBLY) |
| | | { |
| | | ReadDocPath = ReadDoc.GetPathName(); |
| | | // !Equals(LastReadDoc, ReadDoc) |
| | | properties = CustomPropertyUtil.GetCustomProperties2(ReadDoc, true, skipName); |
| | | string fileType = properties.Get(NameConstant.docType); |
| | | /*if (fileType == "加工件" || fileType == "模组") |
| | | { |
| | | contentKey = "jgjPart"; |
| | | }*/ |
| | | if (BomIniterHolder.Instance.IsJgj(ReadDoc)) |
| | | { |
| | | control = new JgjModulePanel(); |
| | | } |
| | | else |
| | | { |
| | | control = new StandardModulePanel(); |
| | | } |
| | | newOne = control as IPropertyOpt; |
| | | newOne.SetSettings(settings); |
| | | newOne.SetProperties(ReadDoc, properties, true, out _); |
| | | } |
| | | else |
| | | { |
| | | control = new DefaultPanel(); |
| | | newOne = control as IPropertyOpt; |
| | | |
| | | string PathName = ReadComponent?.GetPathName(); |
| | | if (PathName == null) |
| | | { |
| | | ReadDocPath = ""; |
| | | newOne.SetSettings(settings); |
| | | newOne.SetProperties(ReadDoc, "请打开一个文档", true, out _); |
| | | } |
| | | else |
| | | { |
| | | ReadDocPath = PathName; |
| | | string name = Path.GetFileNameWithoutExtension(PathName); |
| | | newOne.SetSettings(settings); |
| | | newOne.SetProperties(ReadDoc, $"【{name}】未找到文档,请检查是否被压缩或轻量化", true, out _); |
| | | } |
| | | } |
| | | if (last != null) |
| | | { |
| | | last.UpdateProperty -= Jgj_SinglePropertyChanged; |
| | | last = null; |
| | | } |
| | | ActiveOpter = control; |
| | | contentPanel.Children.Clear(); |
| | | newOne.UpdateProperty += Jgj_SinglePropertyChanged; |
| | | contentPanel.Children.Add(control); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 从激活的文档中读取参数 |
| | | /// </summary> |
| | | private void LoadDocProperties() |
| | | { |
| | | IPropertyOpt opt = ActiveOpter as IPropertyOpt; |
| | | string ErrMsg = null; |
| | | if (ReadDoc == null) |
| | | { |
| | | string PathName = ReadComponent?.GetPathName(); |
| | | if (PathName == null) |
| | | { |
| | | ReadDocPath = ""; |
| | | opt.SetProperties(ReadDoc, "请打开一个文档", true, out ErrMsg); |
| | | return; |
| | | } |
| | | ReadDocPath = PathName; |
| | | string name = Path.GetFileNameWithoutExtension(PathName); |
| | | opt.SetProperties(ReadDoc, $"【{name}】未找到文档,请检查是否被压缩或轻量化", true, out ErrMsg); |
| | | return; |
| | | } |
| | | int docType = ReadDoc.GetType(); |
| | | ReadDocPath = ReadDoc.GetPathName(); |
| | | if (docType == (int)swDocumentTypes_e.swDocDRAWING) |
| | | { |
| | | opt.SetProperties(null, "当前不支持工程图", true, out ErrMsg); |
| | | return; |
| | | } |
| | | HashSet<string> skipName = new HashSet<string> { |
| | | NameConstant.materialCode |
| | | }; |
| | | Dictionary<string, string> properties = CustomPropertyUtil.GetCustomProperties2(ReadDoc, true, skipName); |
| | | opt.SetProperties(ReadDoc, properties, !Equals(LastReadDoc, ReadDoc), out ErrMsg); |
| | | } |
| | | |
| | | private void ClearDocProperties() |
| | | { |
| | | IPropertyOpt opt = ActiveOpter as IPropertyOpt; |
| | | opt.ClearAllProperties(out string ErrMsg); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 将属性设置进文档,注意,并没有保存 |
| | | /// </summary> |
| | | /// <param name="doc">文档</param> |
| | | private void SetDocProperty(ModelDoc2 doc, Dictionary<string, string> props) |
| | | { |
| | | CustomPropertyUtil.SetCustomProperties(doc, props); |
| | | Logger.Debug($"SwitchVisiable End {activeDoc?.GetPathName()} {(DateTime.Now - start).TotalMilliseconds}ms."); |
| | | } |
| | | |
| | | public void SetSwApp(SldWorks SwApp) |
| | | { |
| | | this.SwApp = SwApp; |
| | | } |
| | | |
| | | |
| | | private void SaveDoc(bool qiaoqiaode) |
| | | { |
| | |
| | | public void RefreshData() |
| | | { |
| | | MaskAdorner.ShowMask(content, "属性加载中,请稍候..."); |
| | | var start = DateTime.Now; |
| | | Logger.Debug($"Refresh [{ReadDocPath}] Data start."); |
| | | Task.Run(() => |
| | | { |
| | | try |
| | |
| | | finally |
| | | { |
| | | MaskAdorner.HideMask(content); |
| | | Logger.Debug($"Refresh [{ReadDocPath}] Data end {(DateTime.Now - start).TotalMilliseconds}ms."); |
| | | } |
| | | }); |
| | | } |
| | |
| | | /// <param name="comp"></param> |
| | | public void OnSwActiveDocChange(ModelDoc2 lastDoc, ModelDoc2 doc, Component2 comp) |
| | | { |
| | | // CurrentChanged(); |
| | | RefreshData(); |
| | | } |
| | | |
| | |
| | | /// </summary> |
| | | public void AlertSaveWindow() |
| | | { |
| | | var start = DateTime.Now.Millisecond; |
| | | var start = DateTime.Now; |
| | | Logger.Debug("AlertSaveWindow Start..."); |
| | | IPropertyOpt opt = ActiveOpter as IPropertyOpt; |
| | | if (opt != null && opt.GetDocChanged()) |
| | |
| | | opt.ResetProperty(out string errMsg); |
| | | } |
| | | } |
| | | Logger.Debug($"AlertSaveWindow End {activeDoc?.GetPathName()} {DateTime.Now.Millisecond - start}ms."); |
| | | Logger.Debug($"AlertSaveWindow End {activeDoc?.GetPathName()} {(DateTime.Now - start).TotalMilliseconds}ms."); |
| | | } |
| | | |
| | | public void OnTabControlSelectionChange(object sender, SelectionChangedEventArgs e) |
| | |
| | | this.Error($"{ex.Message}"); |
| | | } |
| | | } |
| | | |
| | | public void DisabledHandler() |
| | | { |
| | | if (activeDoc != null) |
| | | { |
| | | DetachDocNotify(activeDoc); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | set => RaiseAndSetIfChanged(ref _message, value); |
| | | } |
| | | |
| | | |
| | | public DefaultPanel() |
| | | { |
| | | DataContext = this; |
| | |
| | | xmlns:d="http://schemas.microsoft.com/expression/blend/2008" |
| | | mc:Ignorable="d" |
| | | x:Name="self" |
| | | d:DesignHeight="900" d:DesignWidth="800" Background="#FFF"> |
| | | d:DesignHeight="900" d:DesignWidth="800"> |
| | | |
| | | <UserControl.Resources> |
| | | <ResourceDictionary> |
| | |
| | | using PdmSwPlugin.PropertySetting.Entity; |
| | | using PdmSwPlugin.PropertySetting.Interface; |
| | | using PdmSwPlugin.PropertySetting.Panel.Attr; |
| | | using PdmSwPlugin.PropertySetting.Util; |
| | | using SolidWorks.Interop.sldworks; |
| | | using SolidWorks.Interop.swconst; |
| | | |
| | |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | static JgjModulePanel() |
| | | { |
| | | PropHolder.Register(typeof(JgjModulePanel)); |
| | | } |
| | | |
| | | public event PanelPropertyChanged UpdateProperty; |
| | | |
| | |
| | | [PropertySettingAttr(Name = NameConstant.weight, NeedSave = false)] |
| | | public string weight |
| | | { |
| | | get => CustomPropertyUtil.GetMass(doc); |
| | | get => CustomPropertyUtil.GetMassBySWDM(doc); |
| | | set |
| | | { |
| | | ccc(ref _weight, value); |
| | |
| | | xmlns:d="http://schemas.microsoft.com/expression/blend/2008" |
| | | mc:Ignorable="d" |
| | | x:Name="self" |
| | | d:DesignHeight="900" d:DesignWidth="800" Background="#FFF"> |
| | | d:DesignHeight="900" d:DesignWidth="800"> |
| | | |
| | | <UserControl.Resources> |
| | | <ResourceDictionary> |
| | |
| | | using PdmSwPlugin.PropertySetting.Entity; |
| | | using PdmSwPlugin.PropertySetting.Interface; |
| | | using PdmSwPlugin.PropertySetting.Panel.Attr; |
| | | using PdmSwPlugin.PropertySetting.Util; |
| | | using SolidWorks.Interop.sldworks; |
| | | using SolidWorks.Interop.swconst; |
| | | |
| | |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | static JgjPartPanel() |
| | | { |
| | | PropHolder.Register(typeof(JgjPartPanel)); |
| | | } |
| | | |
| | | public void ccc<T>(ref T old, T @new, [CallerMemberName] string propertyName = null) |
| | | { |
| | |
| | | [PropertySettingAttr(Name = NameConstant.weight, NeedSave = false)] |
| | | public string weight |
| | | { |
| | | get => CustomPropertyUtil.GetMass(doc); |
| | | get => CustomPropertyUtil.GetMassBySWDM(doc); |
| | | set |
| | | { |
| | | ccc(ref _weight, value); |
| | |
| | | mc:Ignorable="d" |
| | | x:Name="self" |
| | | VerticalContentAlignment="Stretch" |
| | | d:DesignHeight="900" d:DesignWidth="800" Background="#FFF"> |
| | | d:DesignHeight="900" d:DesignWidth="800"> |
| | | |
| | | <UserControl.Resources> |
| | | <ResourceDictionary> |
| | |
| | | using PdmSwPlugin.Common.Util; |
| | | using PdmSwPlugin.PropertySetting.Interface; |
| | | using PdmSwPlugin.PropertySetting.Panel.Attr; |
| | | using PdmSwPlugin.PropertySetting.Util; |
| | | using SolidWorks.Interop.sldworks; |
| | | using SolidWorks.Interop.swconst; |
| | | |
| | |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | static StandardModulePanel() |
| | | { |
| | | PropHolder.Register(typeof(StandardModulePanel)); |
| | | } |
| | | |
| | | public event PanelPropertyChanged UpdateProperty; |
| | | |
| | |
| | | [PropertySettingAttr(Name = NameConstant.weight, NeedSave = false)] |
| | | public string weight |
| | | { |
| | | get => CustomPropertyUtil.GetMass(doc); |
| | | get => CustomPropertyUtil.GetMassBySWDM(doc); |
| | | set |
| | | { |
| | | RaiseAndSetIfChanged(ref _weight, value); |
| | |
| | | xmlns:local="clr-namespace:PdmSwPlugin.PropertySetting" |
| | | mc:Ignorable="d" |
| | | x:Name="self" |
| | | d:DesignHeight="900" d:DesignWidth="800" Background="#FFF"> |
| | | d:DesignHeight="900" d:DesignWidth="800"> |
| | | |
| | | <UserControl.Resources> |
| | | <ResourceDictionary> |
| | |
| | | using PdmSwPlugin.Common.Util; |
| | | using PdmSwPlugin.PropertySetting.Interface; |
| | | using PdmSwPlugin.PropertySetting.Panel.Attr; |
| | | using PdmSwPlugin.PropertySetting.Util; |
| | | using SolidWorks.Interop.sldworks; |
| | | using SolidWorks.Interop.swconst; |
| | | |
| | |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | static StandardPartPanel() |
| | | { |
| | | PropHolder.Register(typeof(StandardPartPanel)); |
| | | } |
| | | |
| | | private Dictionary<string, string> InitData = new Dictionary<string, string>(); |
| | | |
| | |
| | | [PropertySettingAttr(Name = NameConstant.weight, NeedSave = false)] |
| | | public string weight |
| | | { |
| | | get => CustomPropertyUtil.GetMass(doc); |
| | | get => CustomPropertyUtil.GetMassBySWDM(doc); |
| | | set |
| | | { |
| | | RaiseAndSetIfChanged(ref _weight, value); |
| | |
| | | <Compile Include="Tab\JgjPartTab.xaml.cs"> |
| | | <DependentUpon>JgjPartTab.xaml</DependentUpon> |
| | | </Compile> |
| | | <Compile Include="Util\PropHolder.cs" /> |
| | | <Compile Include="Util\PropSetter.cs" /> |
| | | <Page Include="SettingControl.xaml"> |
| | | <Generator>MSBuild:Compile</Generator> |
| | | <SubType>Designer</SubType> |
| | |
| | | { |
| | | |
| | | } |
| | | |
| | | public void DisabledHandler() |
| | | { |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | else if (docType == (int)swDocumentTypes_e.swDocPART) |
| | | { |
| | | ReadDocPath = ReadDoc.GetPathName(); |
| | | properties = CustomPropertyUtil.GetCustomProperties2(ReadDoc, true, skipName); |
| | | properties = CustomPropertyUtil.GetCustomProperties2(ReadDoc, true, null, skipName); |
| | | string fileType = properties.Get(NameConstant.docType); |
| | | /*if (fileType == "加工件" || fileType == "模组") |
| | | { |
| | |
| | | else |
| | | { |
| | | // !Equals(LastReadDoc, ReadDoc) |
| | | properties = CustomPropertyUtil.GetCustomProperties2(ReadDoc, true, skipName); |
| | | properties = CustomPropertyUtil.GetCustomProperties2(ReadDoc, true, null, skipName); |
| | | string fileType = properties.Get(NameConstant.docType); |
| | | /*if (fileType == "加工件" || fileType == "模组") |
| | | { |
| | |
| | | else if (docType == (int)swDocumentTypes_e.swDocPART) |
| | | { |
| | | ReadDocPath = ReadDoc.GetPathName(); |
| | | properties = CustomPropertyUtil.GetCustomProperties2(ReadDoc, true, skipName); |
| | | properties = CustomPropertyUtil.GetCustomProperties2(ReadDoc, true, null, skipName); |
| | | string fileType = properties.Get(NameConstant.docType); |
| | | /*if (fileType == "加工件" || fileType == "模组") |
| | | { |
| | |
| | | { |
| | | ReadDocPath = ReadDoc.GetPathName(); |
| | | // !Equals(LastReadDoc, ReadDoc) |
| | | properties = CustomPropertyUtil.GetCustomProperties2(ReadDoc, true, skipName); |
| | | properties = CustomPropertyUtil.GetCustomProperties2(ReadDoc, true, null, skipName); |
| | | string fileType = properties.Get(NameConstant.docType); |
| | | /*if (fileType == "加工件" || fileType == "模组") |
| | | { |
| | |
| | | HashSet<string> skipName = new HashSet<string> { |
| | | NameConstant.materialCode |
| | | }; |
| | | Dictionary<string, string> properties = CustomPropertyUtil.GetCustomProperties2(ReadDoc, true, skipName); |
| | | Dictionary<string, string> properties = CustomPropertyUtil.GetCustomProperties2(ReadDoc, true, null, skipName); |
| | | opt.SetProperties(ReadDoc, properties, !Equals(LastReadDoc, ReadDoc), out ErrMsg); |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | public void DisabledHandler() |
| | | { |
| | | |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | using PdmSwPlugin.Common.Util; |
| | | using PdmSwPlugin.PropertySetting.Panel; |
| | | using PdmSwPlugin.PropertySetting.Panel.Attr; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel; |
| | | using System.Linq; |
| | | using System.Reflection; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using System.Xml.Linq; |
| | | |
| | | namespace PdmSwPlugin.PropertySetting.Util |
| | | { |
| | | public class PropHolder |
| | | { |
| | | private static readonly Dictionary<Type, Dictionary<PropertyInfo, PropertySettingAttr>> context |
| | | = new Dictionary<Type, Dictionary<PropertyInfo, PropertySettingAttr>>(); |
| | | |
| | | private static readonly Dictionary<PropertyInfo, SetValueDelegate> setters = new Dictionary<PropertyInfo, SetValueDelegate>(); |
| | | |
| | | public static void Register(Type type) |
| | | { |
| | | |
| | | if (context.ContainsKey(type)) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | Dictionary<PropertyInfo, PropertySettingAttr> map = new Dictionary<PropertyInfo, PropertySettingAttr>(); |
| | | |
| | | var props = type.GetProperties().Where(prop => System.Attribute.IsDefined(prop, typeof(PropertySettingAttr))) |
| | | .ToList(); |
| | | |
| | | foreach (var prop in props) |
| | | { |
| | | PropertySettingAttr attr = prop.GetCustomAttribute<PropertySettingAttr>(); |
| | | if (attr == null || !attr.NeedInit) |
| | | { |
| | | continue; |
| | | } |
| | | map.Add(prop, attr); |
| | | setters.Add(prop, PropSetter.CreatePropertySetter(prop)); |
| | | } |
| | | context.Add(type, map); |
| | | } |
| | | |
| | | public static Dictionary<PropertyInfo, PropertySettingAttr> GetAttrMap(Type type) |
| | | { |
| | | if (!context.ContainsKey(type)) |
| | | { |
| | | return null; |
| | | } |
| | | return context[type]; |
| | | } |
| | | |
| | | public static void SetPropToUI(object container, PropertyInfo prop, object value) |
| | | { |
| | | if (setters.ContainsKey(prop)) |
| | | { |
| | | setters[prop](container, value); |
| | | } |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Reflection.Emit; |
| | | using System.Reflection; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace PdmSwPlugin.PropertySetting.Util |
| | | { |
| | | public delegate void SetValueDelegate(object target, object arg); |
| | | |
| | | public static class PropSetter |
| | | { |
| | | public static SetValueDelegate CreatePropertySetter(PropertyInfo property) |
| | | { |
| | | if (property == null) |
| | | throw new ArgumentNullException("property"); |
| | | |
| | | if (!property.CanWrite) |
| | | return null; |
| | | |
| | | MethodInfo setMethod = property.GetSetMethod(true); |
| | | |
| | | DynamicMethod dm = new DynamicMethod("PropertySetter", null, |
| | | new Type[] { typeof(object), typeof(object) }, property.DeclaringType, true); |
| | | |
| | | ILGenerator il = dm.GetILGenerator(); |
| | | |
| | | if (!setMethod.IsStatic) |
| | | { |
| | | il.Emit(OpCodes.Ldarg_0); |
| | | } |
| | | il.Emit(OpCodes.Ldarg_1); |
| | | |
| | | EmitCastToReference(il, property.PropertyType); |
| | | if (!setMethod.IsStatic && !property.DeclaringType.IsValueType) |
| | | { |
| | | il.EmitCall(OpCodes.Callvirt, setMethod, null); |
| | | } |
| | | else |
| | | il.EmitCall(OpCodes.Call, setMethod, null); |
| | | |
| | | il.Emit(OpCodes.Ret); |
| | | |
| | | return (SetValueDelegate)dm.CreateDelegate(typeof(SetValueDelegate)); |
| | | } |
| | | |
| | | private static void EmitCastToReference(ILGenerator il, Type type) |
| | | { |
| | | if (type.IsValueType) |
| | | il.Emit(OpCodes.Unbox_Any, type); |
| | | else |
| | | il.Emit(OpCodes.Castclass, type); |
| | | } |
| | | } |
| | | } |