Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bbe87611bf | ||
|
|
25e1def353 | ||
|
|
f7fa0363e3 | ||
|
|
11e6e5d806 | ||
|
|
77a62d4564 | ||
|
|
dab90f0780 | ||
|
|
3f2fbe9883 | ||
|
|
86fb8c89d2 | ||
|
|
958bad6823 | ||
|
|
1bda2c155d | ||
|
|
287ddff438 |
+11
@@ -0,0 +1,11 @@
|
|||||||
|
/link/
|
||||||
|
/link
|
||||||
|
|
||||||
|
# DocumentAutomation generated files and local source data
|
||||||
|
DocumentAutomation/**/bin/
|
||||||
|
DocumentAutomation/**/obj/
|
||||||
|
DocumentAutomation/.vs/
|
||||||
|
DocumentAutomation/samples/**/*.docx
|
||||||
|
DocumentAutomation/samples/**/*.pdf
|
||||||
|
DocumentAutomation/samples/**/*.json
|
||||||
|
DocumentAutomation/**/*.csproj.user
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<Project>
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0-windows</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||||
|
<LangVersion>latest</LangVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,206 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.0.31903.59
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DocumentAutomation.Shared", "src\DocumentAutomation.Shared\DocumentAutomation.Shared.csproj", "{3D48D7EE-4C18-47A8-9F8F-E296491C0463}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DocxWorkbench.App", "src\DocxWorkbench.App\DocxWorkbench.App.csproj", "{BB7057EA-13F7-4F9E-BC1F-6E4FE0C8C9D5}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DocxWorkbench.Core", "src\DocxWorkbench.Core\DocxWorkbench.Core.csproj", "{5D7A031E-06AE-4725-89D8-C4EAD75700B1}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DocxWorkbench.OpenXml", "src\DocxWorkbench.OpenXml\DocxWorkbench.OpenXml.csproj", "{6560936F-10A6-406E-8957-24E577A3F7EE}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DocxWorkbench.WordInterop", "src\DocxWorkbench.WordInterop\DocxWorkbench.WordInterop.csproj", "{3349BB3A-001A-480D-9867-CF7199BDA04B}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StandardsWorkbench.App", "src\StandardsWorkbench.App\StandardsWorkbench.App.csproj", "{4A79AA2B-7E40-456A-9BBF-D6F8A444EDC5}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StandardsWorkbench.Core", "src\StandardsWorkbench.Core\StandardsWorkbench.Core.csproj", "{71C7E7B1-1E3E-470B-A942-EFCD58CC692D}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StandardsWorkbench.Pdf", "src\StandardsWorkbench.Pdf\StandardsWorkbench.Pdf.csproj", "{463BCC3A-3836-4DAC-A2A1-B786A9B263F1}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StandardsWorkbench.Ollama", "src\StandardsWorkbench.Ollama\StandardsWorkbench.Ollama.csproj", "{7EA1410E-03BF-46B3-9C6D-20983C4FA2C9}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{0AB3BF05-4346-4AA6-1389-037BE0695223}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DocumentAutomation.IntegrationTests", "tests\DocumentAutomation.IntegrationTests\DocumentAutomation.IntegrationTests.csproj", "{6D7ED423-F943-4DF0-8D18-F69C127F3D67}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DocxWorkbench.Tests", "tests\DocxWorkbench.Tests\DocxWorkbench.Tests.csproj", "{8539CA78-AB1A-499E-9C9C-C0FBBFC7AFAE}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StandardsWorkbench.Tests", "tests\StandardsWorkbench.Tests\StandardsWorkbench.Tests.csproj", "{6E533AAB-42E6-4C60-AE06-A89F2B283187}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{3D48D7EE-4C18-47A8-9F8F-E296491C0463}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{3D48D7EE-4C18-47A8-9F8F-E296491C0463}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{3D48D7EE-4C18-47A8-9F8F-E296491C0463}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{3D48D7EE-4C18-47A8-9F8F-E296491C0463}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{3D48D7EE-4C18-47A8-9F8F-E296491C0463}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{3D48D7EE-4C18-47A8-9F8F-E296491C0463}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{3D48D7EE-4C18-47A8-9F8F-E296491C0463}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{3D48D7EE-4C18-47A8-9F8F-E296491C0463}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{3D48D7EE-4C18-47A8-9F8F-E296491C0463}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{3D48D7EE-4C18-47A8-9F8F-E296491C0463}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{3D48D7EE-4C18-47A8-9F8F-E296491C0463}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{3D48D7EE-4C18-47A8-9F8F-E296491C0463}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{BB7057EA-13F7-4F9E-BC1F-6E4FE0C8C9D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{BB7057EA-13F7-4F9E-BC1F-6E4FE0C8C9D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{BB7057EA-13F7-4F9E-BC1F-6E4FE0C8C9D5}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{BB7057EA-13F7-4F9E-BC1F-6E4FE0C8C9D5}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{BB7057EA-13F7-4F9E-BC1F-6E4FE0C8C9D5}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{BB7057EA-13F7-4F9E-BC1F-6E4FE0C8C9D5}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{BB7057EA-13F7-4F9E-BC1F-6E4FE0C8C9D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{BB7057EA-13F7-4F9E-BC1F-6E4FE0C8C9D5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{BB7057EA-13F7-4F9E-BC1F-6E4FE0C8C9D5}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{BB7057EA-13F7-4F9E-BC1F-6E4FE0C8C9D5}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{BB7057EA-13F7-4F9E-BC1F-6E4FE0C8C9D5}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{BB7057EA-13F7-4F9E-BC1F-6E4FE0C8C9D5}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{5D7A031E-06AE-4725-89D8-C4EAD75700B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{5D7A031E-06AE-4725-89D8-C4EAD75700B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{5D7A031E-06AE-4725-89D8-C4EAD75700B1}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{5D7A031E-06AE-4725-89D8-C4EAD75700B1}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{5D7A031E-06AE-4725-89D8-C4EAD75700B1}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{5D7A031E-06AE-4725-89D8-C4EAD75700B1}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{5D7A031E-06AE-4725-89D8-C4EAD75700B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{5D7A031E-06AE-4725-89D8-C4EAD75700B1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{5D7A031E-06AE-4725-89D8-C4EAD75700B1}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{5D7A031E-06AE-4725-89D8-C4EAD75700B1}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{5D7A031E-06AE-4725-89D8-C4EAD75700B1}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{5D7A031E-06AE-4725-89D8-C4EAD75700B1}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{6560936F-10A6-406E-8957-24E577A3F7EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{6560936F-10A6-406E-8957-24E577A3F7EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{6560936F-10A6-406E-8957-24E577A3F7EE}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{6560936F-10A6-406E-8957-24E577A3F7EE}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{6560936F-10A6-406E-8957-24E577A3F7EE}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{6560936F-10A6-406E-8957-24E577A3F7EE}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{6560936F-10A6-406E-8957-24E577A3F7EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{6560936F-10A6-406E-8957-24E577A3F7EE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{6560936F-10A6-406E-8957-24E577A3F7EE}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{6560936F-10A6-406E-8957-24E577A3F7EE}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{6560936F-10A6-406E-8957-24E577A3F7EE}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{6560936F-10A6-406E-8957-24E577A3F7EE}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{3349BB3A-001A-480D-9867-CF7199BDA04B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{3349BB3A-001A-480D-9867-CF7199BDA04B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{3349BB3A-001A-480D-9867-CF7199BDA04B}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{3349BB3A-001A-480D-9867-CF7199BDA04B}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{3349BB3A-001A-480D-9867-CF7199BDA04B}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{3349BB3A-001A-480D-9867-CF7199BDA04B}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{3349BB3A-001A-480D-9867-CF7199BDA04B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{3349BB3A-001A-480D-9867-CF7199BDA04B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{3349BB3A-001A-480D-9867-CF7199BDA04B}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{3349BB3A-001A-480D-9867-CF7199BDA04B}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{3349BB3A-001A-480D-9867-CF7199BDA04B}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{3349BB3A-001A-480D-9867-CF7199BDA04B}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{4A79AA2B-7E40-456A-9BBF-D6F8A444EDC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{4A79AA2B-7E40-456A-9BBF-D6F8A444EDC5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{4A79AA2B-7E40-456A-9BBF-D6F8A444EDC5}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{4A79AA2B-7E40-456A-9BBF-D6F8A444EDC5}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{4A79AA2B-7E40-456A-9BBF-D6F8A444EDC5}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{4A79AA2B-7E40-456A-9BBF-D6F8A444EDC5}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{4A79AA2B-7E40-456A-9BBF-D6F8A444EDC5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{4A79AA2B-7E40-456A-9BBF-D6F8A444EDC5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{4A79AA2B-7E40-456A-9BBF-D6F8A444EDC5}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{4A79AA2B-7E40-456A-9BBF-D6F8A444EDC5}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{4A79AA2B-7E40-456A-9BBF-D6F8A444EDC5}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{4A79AA2B-7E40-456A-9BBF-D6F8A444EDC5}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{71C7E7B1-1E3E-470B-A942-EFCD58CC692D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{71C7E7B1-1E3E-470B-A942-EFCD58CC692D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{71C7E7B1-1E3E-470B-A942-EFCD58CC692D}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{71C7E7B1-1E3E-470B-A942-EFCD58CC692D}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{71C7E7B1-1E3E-470B-A942-EFCD58CC692D}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{71C7E7B1-1E3E-470B-A942-EFCD58CC692D}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{71C7E7B1-1E3E-470B-A942-EFCD58CC692D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{71C7E7B1-1E3E-470B-A942-EFCD58CC692D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{71C7E7B1-1E3E-470B-A942-EFCD58CC692D}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{71C7E7B1-1E3E-470B-A942-EFCD58CC692D}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{71C7E7B1-1E3E-470B-A942-EFCD58CC692D}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{71C7E7B1-1E3E-470B-A942-EFCD58CC692D}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{463BCC3A-3836-4DAC-A2A1-B786A9B263F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{463BCC3A-3836-4DAC-A2A1-B786A9B263F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{463BCC3A-3836-4DAC-A2A1-B786A9B263F1}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{463BCC3A-3836-4DAC-A2A1-B786A9B263F1}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{463BCC3A-3836-4DAC-A2A1-B786A9B263F1}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{463BCC3A-3836-4DAC-A2A1-B786A9B263F1}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{463BCC3A-3836-4DAC-A2A1-B786A9B263F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{463BCC3A-3836-4DAC-A2A1-B786A9B263F1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{463BCC3A-3836-4DAC-A2A1-B786A9B263F1}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{463BCC3A-3836-4DAC-A2A1-B786A9B263F1}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{463BCC3A-3836-4DAC-A2A1-B786A9B263F1}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{463BCC3A-3836-4DAC-A2A1-B786A9B263F1}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{7EA1410E-03BF-46B3-9C6D-20983C4FA2C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{7EA1410E-03BF-46B3-9C6D-20983C4FA2C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{7EA1410E-03BF-46B3-9C6D-20983C4FA2C9}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{7EA1410E-03BF-46B3-9C6D-20983C4FA2C9}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{7EA1410E-03BF-46B3-9C6D-20983C4FA2C9}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{7EA1410E-03BF-46B3-9C6D-20983C4FA2C9}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{7EA1410E-03BF-46B3-9C6D-20983C4FA2C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{7EA1410E-03BF-46B3-9C6D-20983C4FA2C9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{7EA1410E-03BF-46B3-9C6D-20983C4FA2C9}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{7EA1410E-03BF-46B3-9C6D-20983C4FA2C9}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{7EA1410E-03BF-46B3-9C6D-20983C4FA2C9}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{7EA1410E-03BF-46B3-9C6D-20983C4FA2C9}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{6D7ED423-F943-4DF0-8D18-F69C127F3D67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{6D7ED423-F943-4DF0-8D18-F69C127F3D67}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{6D7ED423-F943-4DF0-8D18-F69C127F3D67}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{6D7ED423-F943-4DF0-8D18-F69C127F3D67}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{6D7ED423-F943-4DF0-8D18-F69C127F3D67}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{6D7ED423-F943-4DF0-8D18-F69C127F3D67}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{6D7ED423-F943-4DF0-8D18-F69C127F3D67}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{6D7ED423-F943-4DF0-8D18-F69C127F3D67}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{6D7ED423-F943-4DF0-8D18-F69C127F3D67}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{6D7ED423-F943-4DF0-8D18-F69C127F3D67}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{6D7ED423-F943-4DF0-8D18-F69C127F3D67}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{6D7ED423-F943-4DF0-8D18-F69C127F3D67}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{8539CA78-AB1A-499E-9C9C-C0FBBFC7AFAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{8539CA78-AB1A-499E-9C9C-C0FBBFC7AFAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{8539CA78-AB1A-499E-9C9C-C0FBBFC7AFAE}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{8539CA78-AB1A-499E-9C9C-C0FBBFC7AFAE}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{8539CA78-AB1A-499E-9C9C-C0FBBFC7AFAE}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{8539CA78-AB1A-499E-9C9C-C0FBBFC7AFAE}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{8539CA78-AB1A-499E-9C9C-C0FBBFC7AFAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{8539CA78-AB1A-499E-9C9C-C0FBBFC7AFAE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{8539CA78-AB1A-499E-9C9C-C0FBBFC7AFAE}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{8539CA78-AB1A-499E-9C9C-C0FBBFC7AFAE}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{8539CA78-AB1A-499E-9C9C-C0FBBFC7AFAE}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{8539CA78-AB1A-499E-9C9C-C0FBBFC7AFAE}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{6E533AAB-42E6-4C60-AE06-A89F2B283187}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{6E533AAB-42E6-4C60-AE06-A89F2B283187}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{6E533AAB-42E6-4C60-AE06-A89F2B283187}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{6E533AAB-42E6-4C60-AE06-A89F2B283187}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{6E533AAB-42E6-4C60-AE06-A89F2B283187}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{6E533AAB-42E6-4C60-AE06-A89F2B283187}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{6E533AAB-42E6-4C60-AE06-A89F2B283187}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{6E533AAB-42E6-4C60-AE06-A89F2B283187}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{6E533AAB-42E6-4C60-AE06-A89F2B283187}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{6E533AAB-42E6-4C60-AE06-A89F2B283187}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{6E533AAB-42E6-4C60-AE06-A89F2B283187}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{6E533AAB-42E6-4C60-AE06-A89F2B283187}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(NestedProjects) = preSolution
|
||||||
|
{3D48D7EE-4C18-47A8-9F8F-E296491C0463} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||||
|
{BB7057EA-13F7-4F9E-BC1F-6E4FE0C8C9D5} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||||
|
{5D7A031E-06AE-4725-89D8-C4EAD75700B1} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||||
|
{6560936F-10A6-406E-8957-24E577A3F7EE} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||||
|
{3349BB3A-001A-480D-9867-CF7199BDA04B} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||||
|
{4A79AA2B-7E40-456A-9BBF-D6F8A444EDC5} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||||
|
{71C7E7B1-1E3E-470B-A942-EFCD58CC692D} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||||
|
{463BCC3A-3836-4DAC-A2A1-B786A9B263F1} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||||
|
{7EA1410E-03BF-46B3-9C6D-20983C4FA2C9} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||||
|
{6D7ED423-F943-4DF0-8D18-F69C127F3D67} = {0AB3BF05-4346-4AA6-1389-037BE0695223}
|
||||||
|
{8539CA78-AB1A-499E-9C9C-C0FBBFC7AFAE} = {0AB3BF05-4346-4AA6-1389-037BE0695223}
|
||||||
|
{6E533AAB-42E6-4C60-AE06-A89F2B283187} = {0AB3BF05-4346-4AA6-1389-037BE0695223}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# DocumentAutomation
|
||||||
|
|
||||||
|
Первый локальный прототип состоит из независимых `DOCX Workbench` и `Standards Workbench` на .NET 8 Windows Forms.
|
||||||
|
|
||||||
|
DOCX Workbench анализирует DOCX через Open XML, формирует документ через локальный Microsoft Word COM, сохраняет шаблонные секции/колонтитулы, обновляет поля и экспортирует PDF. Standards Workbench импортирует PDF, сохраняет checksum, извлекает страницы и кандидатные пункты, обращается к Ollama только за предложением candidate-rule и экспортирует переносимый профиль.
|
||||||
|
|
||||||
|
## Ограничения MVP
|
||||||
|
|
||||||
|
- OCR только обозначен интерфейсом; страницы без текстового слоя получают статус `OCR_REQUIRED`.
|
||||||
|
- Автоматическое утверждение нормативных правил запрещено.
|
||||||
|
- Word COM требует установленного Microsoft Word и запускается только интерактивно, не как service.
|
||||||
|
- Реальный `156-титул-ПД.docx` и нормативные PDF не добавлялись в Git.
|
||||||
|
- PDF preview использует локальный Word ExportAsFixedFormat.
|
||||||
|
|
||||||
|
Подробности: `docs/architecture.md`, `docs/docx-template-contract.md`, `docs/word-com-lifecycle.md`, `docs/standards-rule-model.md`.
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# Architecture
|
||||||
|
|
||||||
|
`DocxWorkbench.App` and `StandardsWorkbench.App` are separate WinForms applications. They share only DTOs in `DocumentAutomation.Shared`.
|
||||||
|
|
||||||
|
DOCX flow: GUI -> `DocxWorkbench.Core` contracts -> `DocxWorkbench.OpenXml` read-only inspection or `DocxWorkbench.WordInterop` sequential Word COM queue -> DOCX/PDF and technical JSON log.
|
||||||
|
|
||||||
|
Standards flow: GUI -> `StandardsWorkbench.Pdf` page/clause extraction and `StandardsWorkbench.Ollama` candidate-only suggestions -> manually approved portable profile -> `StandardsWorkbench.Core.RulesEngine`.
|
||||||
|
|
||||||
|
COM is isolated from Core and UI. Standards rules are not hardcoded into document generation.
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# Development
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
dotnet restore .\DocumentAutomation\DocumentAutomation.sln
|
||||||
|
dotnet build .\DocumentAutomation\DocumentAutomation.sln --configuration Release
|
||||||
|
dotnet test .\DocumentAutomation\DocumentAutomation.sln --configuration Release
|
||||||
|
```
|
||||||
|
|
||||||
|
Run `DocxWorkbench.App` or `StandardsWorkbench.App` from Visual Studio/VS Code. Microsoft Word is required only for DOCX generation and PDF export. Ollama is configured at `http://192.168.200.112:11434`; the model must be selected from `/api/tags`.
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# DOCX template contract
|
||||||
|
|
||||||
|
The preferred insertion point is a Content Control with tag or title `DOC_BODY`, then a bookmark named `DOC_BODY`, then the exact marker `{{DOC_BODY}}`. If none is present, generation fails explicitly; the body is never silently appended.
|
||||||
|
|
||||||
|
The template is copied to a temporary working file. Body headers/footers are not imported. Template sections and headers/footers are retained, fields are updated, and Word repaginates before saving.
|
||||||
|
|
||||||
|
Before Word starts, the template is checked for the insertion point. If none is found, the build is rejected without starting Word. The GUI routes `.docx` through Open XML and `.txt` through `TextDocumentInspector`; template and body analysis results remain independent.
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# Standards rule model
|
||||||
|
|
||||||
|
PDF metadata includes SHA-256, page count, text-layer status and import time. Pages without text are marked `OCR_REQUIRED`; no text is invented. Clause extraction preserves clause number, text, page and confidence.
|
||||||
|
|
||||||
|
Ollama receives only a small clause context and may return a candidate JSON rule. Candidates remain `New` until human approval. Only `Approved`, `Implemented` or `Tested` rules are evaluated. Profiles contain manifest, approved rules, references and a signature hash.
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# Learned document templates
|
||||||
|
|
||||||
|
DOCX Workbench supports two deterministic workflows:
|
||||||
|
|
||||||
|
1. `TemplateLearningService` normalizes a `.doc` or copies a `.docx` into a temporary working directory, inspects it, adds a safe `{{DOC_BODY}}` insertion marker to the working copy, and writes a portable `.dtemplate` ZIP package.
|
||||||
|
2. `TemplateDocumentGenerator` opens the package, replaces explicitly supplied scalar tokens, imports a `.doc`, `.docx`, or `.txt` body through the existing main-story importer, and creates DOCX, PDF, generation, and validation outputs.
|
||||||
|
|
||||||
|
The package contains `manifest.json`, `template.docx`, source metadata, page archetypes, regions, slots, field bindings, mapping suggestions, and a validation profile. It contains no original source binary unless it is the normalized template copy.
|
||||||
|
|
||||||
|
All Word automation is late-bound and serialized through the existing STA queue. Binary `.doc` sources are opened read-only, macros are disabled through Word automation security, and the source SHA-256 is checked before and after normalization. The source body’s headers, footers, section properties, and page setup are excluded by `DocxBodyImporter`.
|
||||||
|
|
||||||
|
The current UI exposes three modes: template learning, document generation, and the existing quick `DOC_BODY` path. Page archetypes and slot proposals are deterministic suggestions and require later user confirmation; Ollama is not required for the workflow.
|
||||||
|
|
||||||
|
Known limitation: the first slice stores the learned structural model and default slots, but does not yet provide a pixel-level page editor or automatic extraction of every scalar field from an arbitrary engineering drawing. Those operations remain explicit user mapping work.
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# Word COM lifecycle
|
||||||
|
|
||||||
|
Word is resolved late-bound through `Word.Application`; the Word PIA and `office.dll` are not required at application load time. Each service owns one serial `StaWordQueue`, and every Word job runs on its dedicated STA thread with `Visible=false` and alerts disabled. The service opens a working copy, performs one operation, updates fields, repaginates, saves, closes the Document, quits the Application, and releases owned COM proxies in `finally`.
|
||||||
|
|
||||||
|
The prototype does not run as a Windows Service, does not kill unrelated `WINWORD.EXE` processes, and does not execute macros. Integration tests compare process IDs before and after each job and verify that no newly-created Word process remains.
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# Samples
|
||||||
|
|
||||||
|
Реальные проектные DOCX/PDF и нормативные документы сюда не добавляются. Тесты создают синтетические документы во временном каталоге. Для локальной проверки укажите входные файлы через GUI.
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0-windows</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,171 @@
|
|||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace DocumentAutomation.Shared;
|
||||||
|
|
||||||
|
public sealed record InspectionWarning
|
||||||
|
{
|
||||||
|
public required string Code { get; init; }
|
||||||
|
public required string Message { get; init; }
|
||||||
|
public string? Part { get; init; }
|
||||||
|
public string? Location { get; init; }
|
||||||
|
public string? MatchedValue { get; init; }
|
||||||
|
public string? DetectionRule { get; init; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record DocumentFieldInfo
|
||||||
|
{
|
||||||
|
public required string Type { get; init; }
|
||||||
|
public required string Part { get; init; }
|
||||||
|
public int? Section { get; init; }
|
||||||
|
public string? Instruction { get; init; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record DocumentImageSummary
|
||||||
|
{
|
||||||
|
public int RasterImages { get; init; }
|
||||||
|
public int DrawingObjects { get; init; }
|
||||||
|
public int VmlShapes { get; init; }
|
||||||
|
public int ExternalImages { get; init; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record DocumentStyleInfo
|
||||||
|
{
|
||||||
|
public required string StyleId { get; init; }
|
||||||
|
public string? Name { get; init; }
|
||||||
|
public string? Type { get; init; }
|
||||||
|
public bool IsDefault { get; init; }
|
||||||
|
public string? BasedOn { get; init; }
|
||||||
|
public string? LinkedStyle { get; init; }
|
||||||
|
public int UsageCount { get; init; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record SectionPartAssignment
|
||||||
|
{
|
||||||
|
public required int Section { get; init; }
|
||||||
|
public IReadOnlyList<string> Headers { get; init; } = [];
|
||||||
|
public IReadOnlyList<string> Footers { get; init; } = [];
|
||||||
|
public bool LinkToPrevious { get; init; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record InsertionPointInfo
|
||||||
|
{
|
||||||
|
public required string Type { get; init; }
|
||||||
|
public string? Location { get; init; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum SectionBreakPolicy { Remove, ConvertToParagraph, ConvertToPageBreak }
|
||||||
|
public enum RevisionImportPolicy { PreserveAndWarn, AcceptAll, RejectAll, BlockImport }
|
||||||
|
public enum CommentImportPolicy { PreserveAndWarn, Exclude, BlockImport }
|
||||||
|
public enum StyleConflictPolicy { KeepSourceFormatting, UseDestinationStyles, MapKnownStyles }
|
||||||
|
|
||||||
|
public sealed record WordOperationProgress
|
||||||
|
{
|
||||||
|
public required string Stage { get; init; }
|
||||||
|
public string? Message { get; init; }
|
||||||
|
public int? Percent { get; init; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record BodyImportPlan
|
||||||
|
{
|
||||||
|
public required int ParagraphCount { get; init; }
|
||||||
|
public required int TableCount { get; init; }
|
||||||
|
public required int InlineShapeCount { get; init; }
|
||||||
|
public required int FloatingShapeCount { get; init; }
|
||||||
|
public required int InternalSectionBreakCount { get; init; }
|
||||||
|
public required int PageBreakCount { get; init; }
|
||||||
|
public required IReadOnlyList<string> IncludedStories { get; init; }
|
||||||
|
public required IReadOnlyList<string> ExcludedStories { get; init; }
|
||||||
|
public required IReadOnlyList<string> Warnings { get; init; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record DocxBodyImportRequest
|
||||||
|
{
|
||||||
|
public required string SourcePath { get; init; }
|
||||||
|
public required object DestinationRangeHandle { get; init; }
|
||||||
|
public SectionBreakPolicy SectionBreakPolicy { get; init; } = SectionBreakPolicy.ConvertToPageBreak;
|
||||||
|
public RevisionImportPolicy RevisionPolicy { get; init; } = RevisionImportPolicy.PreserveAndWarn;
|
||||||
|
public CommentImportPolicy CommentPolicy { get; init; } = CommentImportPolicy.Exclude;
|
||||||
|
public StyleConflictPolicy StyleConflictPolicy { get; init; } = StyleConflictPolicy.KeepSourceFormatting;
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record BodyImportResult
|
||||||
|
{
|
||||||
|
public required BodyImportPlan Plan { get; init; }
|
||||||
|
public required string InsertionMode { get; init; }
|
||||||
|
public required IReadOnlyList<string> Warnings { get; init; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record DocumentInspectionResult
|
||||||
|
{
|
||||||
|
public required string FilePath { get; init; }
|
||||||
|
public long FileSize { get; init; }
|
||||||
|
public DateTime LastWriteTimeUtc { get; init; }
|
||||||
|
public int Sections { get; init; }
|
||||||
|
public int Paragraphs { get; init; }
|
||||||
|
public int Tables { get; init; }
|
||||||
|
public int Images { get; init; }
|
||||||
|
public DocumentImageSummary ImageSummary { get; init; } = new();
|
||||||
|
public int Headers { get; init; }
|
||||||
|
public int Footers { get; init; }
|
||||||
|
public bool HasPageFields { get; init; }
|
||||||
|
public bool HasNumPagesFields { get; init; }
|
||||||
|
public bool HasSectionPagesFields { get; init; }
|
||||||
|
public IReadOnlyList<DocumentFieldInfo> Fields { get; init; } = [];
|
||||||
|
public int Bookmarks { get; init; }
|
||||||
|
public int ContentControls { get; init; }
|
||||||
|
public int Comments { get; init; }
|
||||||
|
public bool HasTrackedChanges { get; init; }
|
||||||
|
public bool HasProtectedParts { get; init; }
|
||||||
|
public IReadOnlyList<DocumentStyleInfo> StyleDetails { get; init; } = [];
|
||||||
|
public IReadOnlyList<SectionPartAssignment> SectionAssignments { get; init; } = [];
|
||||||
|
public InsertionPointInfo InsertionPoint { get; init; } = new() { Type = "None" };
|
||||||
|
public BodyImportPlan? BodyImportPlan { get; init; }
|
||||||
|
public IReadOnlyList<InspectionWarning> Warnings { get; init; } = [];
|
||||||
|
public IReadOnlyList<string> Styles => StyleDetails.Select(x => x.StyleId).ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record WordDocumentBuildRequest
|
||||||
|
{
|
||||||
|
public required string TemplatePath { get; init; }
|
||||||
|
public required string BodyPath { get; init; }
|
||||||
|
public required string OutputDocxPath { get; init; }
|
||||||
|
public string? RulesProfilePath { get; init; }
|
||||||
|
public bool PreserveBodyFormatting { get; init; } = true;
|
||||||
|
public bool PreservePageBreaks { get; init; } = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record WordDocumentResult
|
||||||
|
{
|
||||||
|
public required string OutputDocxPath { get; init; }
|
||||||
|
public string? OutputPdfPath { get; init; }
|
||||||
|
public required string LogPath { get; init; }
|
||||||
|
public required TimeSpan Duration { get; init; }
|
||||||
|
public required string InsertionPoint { get; init; }
|
||||||
|
public BodyImportResult? BodyImport { get; init; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record WordPreviewResult
|
||||||
|
{
|
||||||
|
public required string PdfPath { get; init; }
|
||||||
|
public required TimeSpan Duration { get; init; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum RuleEvaluationStatus { Pass, Fail, NotApplicable, NeedsReview, Error }
|
||||||
|
|
||||||
|
public sealed record RuleEvaluationResult
|
||||||
|
{
|
||||||
|
public required string RuleId { get; init; }
|
||||||
|
public required RuleEvaluationStatus Status { get; init; }
|
||||||
|
public required string Message { get; init; }
|
||||||
|
public string? ClauseId { get; init; }
|
||||||
|
public int? SourcePage { get; init; }
|
||||||
|
public string? DocumentLocation { get; init; }
|
||||||
|
public bool CanAutoFix { get; init; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record OllamaSettings
|
||||||
|
{
|
||||||
|
public string BaseUrl { get; init; } = "http://192.168.200.112:11434";
|
||||||
|
public string Model { get; init; } = "";
|
||||||
|
public int TimeoutSeconds { get; init; } = 120;
|
||||||
|
}
|
||||||
@@ -0,0 +1,153 @@
|
|||||||
|
namespace DocumentAutomation.Shared;
|
||||||
|
|
||||||
|
public enum TemplateSlotKind { PlainText, RichText, MainBody, Table, RepeatingTableRows, Image, Signature, Date, DocumentField }
|
||||||
|
public enum TemplateRegionKind { Fixed, Variable, Repeating, Ignored }
|
||||||
|
|
||||||
|
public sealed record TemplateSlotOccurrence
|
||||||
|
{
|
||||||
|
public required string Location { get; init; }
|
||||||
|
public int? Page { get; init; }
|
||||||
|
public string? Story { get; init; }
|
||||||
|
public string? XPath { get; init; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record TemplateSlot
|
||||||
|
{
|
||||||
|
public required string Id { get; init; }
|
||||||
|
public required string Name { get; init; }
|
||||||
|
public required TemplateSlotKind Kind { get; init; }
|
||||||
|
public required string ContentControlTag { get; init; }
|
||||||
|
public bool IsRequired { get; init; }
|
||||||
|
public bool IsRepeating { get; init; }
|
||||||
|
public string? PageArchetypeId { get; init; }
|
||||||
|
public string? RepeatGroup { get; init; }
|
||||||
|
public required IReadOnlyList<TemplateSlotOccurrence> Occurrences { get; init; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record FixedRegion
|
||||||
|
{
|
||||||
|
public required string Id { get; init; }
|
||||||
|
public required string Name { get; init; }
|
||||||
|
public required TemplateRegionKind Kind { get; init; }
|
||||||
|
public required IReadOnlyList<int> Pages { get; init; }
|
||||||
|
public required string Fingerprint { get; init; }
|
||||||
|
public string? Story { get; init; }
|
||||||
|
public string? Location { get; init; }
|
||||||
|
public double Confidence { get; init; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record RepeatingRegion
|
||||||
|
{
|
||||||
|
public required string Id { get; init; }
|
||||||
|
public required string Name { get; init; }
|
||||||
|
public required IReadOnlyList<int> Pages { get; init; }
|
||||||
|
public required string Fingerprint { get; init; }
|
||||||
|
public required TemplateRegionKind Kind { get; init; }
|
||||||
|
public string? Location { get; init; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record PageArchetype
|
||||||
|
{
|
||||||
|
public required string Id { get; init; }
|
||||||
|
public required string Name { get; init; }
|
||||||
|
public bool IsFirstPage { get; init; }
|
||||||
|
public bool IsRepeating { get; init; }
|
||||||
|
public required IReadOnlyList<int> ExamplePages { get; init; }
|
||||||
|
public required IReadOnlyList<string> FixedRegionIds { get; init; }
|
||||||
|
public required IReadOnlyList<string> SlotIds { get; init; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record TemplateFieldBinding
|
||||||
|
{
|
||||||
|
public required string SourceField { get; init; }
|
||||||
|
public required string TargetSlot { get; init; }
|
||||||
|
public required string Scope { get; init; }
|
||||||
|
public string? SourceStyle { get; init; }
|
||||||
|
public string? TargetStyle { get; init; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record SourceDocumentStructure
|
||||||
|
{
|
||||||
|
public required string SourcePath { get; init; }
|
||||||
|
public required string Sha256 { get; init; }
|
||||||
|
public required string NormalizedPath { get; init; }
|
||||||
|
public required string NormalizedSha256 { get; init; }
|
||||||
|
public required int PageCount { get; init; }
|
||||||
|
public required int SectionCount { get; init; }
|
||||||
|
public required IReadOnlyList<string> Stories { get; init; }
|
||||||
|
public required IReadOnlyList<string> RepeatedFingerprints { get; init; }
|
||||||
|
public required DocumentInspectionResult Inspection { get; init; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record TemplateLearningSuggestion
|
||||||
|
{
|
||||||
|
public required string SuggestionType { get; init; }
|
||||||
|
public required string SourceLocation { get; init; }
|
||||||
|
public string? TargetSlot { get; init; }
|
||||||
|
public string? ProposedName { get; init; }
|
||||||
|
public double Confidence { get; init; }
|
||||||
|
public required string Reason { get; init; }
|
||||||
|
public bool RequiresConfirmation { get; init; } = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record LearnedTemplate
|
||||||
|
{
|
||||||
|
public required string TemplateId { get; init; }
|
||||||
|
public required string Name { get; init; }
|
||||||
|
public required string SourceFileName { get; init; }
|
||||||
|
public required string SourceSha256 { get; init; }
|
||||||
|
public required string NormalizedSha256 { get; init; }
|
||||||
|
public required string CreatedAt { get; init; }
|
||||||
|
public string MinimumEngineVersion { get; init; } = "1.0";
|
||||||
|
public required SourceDocumentStructure Source { get; init; }
|
||||||
|
public required IReadOnlyList<PageArchetype> PageArchetypes { get; init; }
|
||||||
|
public required IReadOnlyList<FixedRegion> FixedRegions { get; init; }
|
||||||
|
public required IReadOnlyList<RepeatingRegion> RepeatingRegions { get; init; }
|
||||||
|
public required IReadOnlyList<TemplateSlot> Slots { get; init; }
|
||||||
|
public required IReadOnlyList<TemplateFieldBinding> FieldBindings { get; init; }
|
||||||
|
public required IReadOnlyList<TemplateLearningSuggestion> Suggestions { get; init; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record DocumentNormalizationRequest
|
||||||
|
{
|
||||||
|
public required string SourcePath { get; init; }
|
||||||
|
public required string WorkingDirectory { get; init; }
|
||||||
|
public bool OpenReadOnly { get; init; } = true;
|
||||||
|
public bool DisableMacros { get; init; } = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record DocumentNormalizationResult
|
||||||
|
{
|
||||||
|
public required string SourcePath { get; init; }
|
||||||
|
public required string NormalizedPath { get; init; }
|
||||||
|
public required string SourceSha256 { get; init; }
|
||||||
|
public required string NormalizedSha256 { get; init; }
|
||||||
|
public required bool WasConverted { get; init; }
|
||||||
|
public required TimeSpan Duration { get; init; }
|
||||||
|
public int? PageCount { get; init; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record TemplateLearningRequest
|
||||||
|
{
|
||||||
|
public required string SourcePath { get; init; }
|
||||||
|
public required string TemplateName { get; init; }
|
||||||
|
public required string OutputPackagePath { get; init; }
|
||||||
|
public bool CreateDefaultSlots { get; init; } = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record TemplateGenerationRequest
|
||||||
|
{
|
||||||
|
public required string TemplatePackagePath { get; init; }
|
||||||
|
public required string ContentSourcePath { get; init; }
|
||||||
|
public required string OutputDocxPath { get; init; }
|
||||||
|
public IReadOnlyDictionary<string, string> ScalarValues { get; init; } = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record TemplateGenerationResult
|
||||||
|
{
|
||||||
|
public required string OutputDocxPath { get; init; }
|
||||||
|
public required string OutputPdfPath { get; init; }
|
||||||
|
public required string GenerationLogPath { get; init; }
|
||||||
|
public required string ValidationLogPath { get; init; }
|
||||||
|
public required IReadOnlyList<RuleEvaluationResult> Validation { get; init; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>WinExe</OutputType>
|
||||||
|
<TargetFramework>net8.0-windows</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<UseWindowsForms>true</UseWindowsForms>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\DocumentAutomation.Shared\DocumentAutomation.Shared.csproj" />
|
||||||
|
<ProjectReference Include="..\DocxWorkbench.Core\DocxWorkbench.Core.csproj" />
|
||||||
|
<ProjectReference Include="..\DocxWorkbench.OpenXml\DocxWorkbench.OpenXml.csproj" />
|
||||||
|
<ProjectReference Include="..\DocxWorkbench.WordInterop\DocxWorkbench.WordInterop.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
using System.Diagnostics;
|
||||||
|
using System.Text.Json;
|
||||||
|
using DocumentAutomation.Shared;
|
||||||
|
using DocxWorkbench.Core;
|
||||||
|
using DocxWorkbench.OpenXml;
|
||||||
|
using DocxWorkbench.WordInterop;
|
||||||
|
|
||||||
|
namespace DocxWorkbench.App;
|
||||||
|
|
||||||
|
public sealed class MainForm : Form
|
||||||
|
{
|
||||||
|
private readonly ComboBox _mode = new() { DropDownStyle = ComboBoxStyle.DropDownList, Width = 230 };
|
||||||
|
private readonly TextBox _template = new() { Width = 560 };
|
||||||
|
private readonly TextBox _body = new() { Width = 560 };
|
||||||
|
private readonly TextBox _package = new() { Width = 560 };
|
||||||
|
private readonly TextBox _templateName = new() { Width = 560, Text = "Learned document template" };
|
||||||
|
private readonly TextBox _output = new() { Width = 560 };
|
||||||
|
private readonly RichTextBox _structure = new() { Dock = DockStyle.Fill, ReadOnly = true };
|
||||||
|
private readonly RichTextBox _preview = new() { Dock = DockStyle.Fill, ReadOnly = true };
|
||||||
|
private readonly TextBox _log = new() { Multiline = true, ScrollBars = ScrollBars.Vertical, Dock = DockStyle.Fill, ReadOnly = true };
|
||||||
|
private readonly TextBox _technicalError = new() { Multiline = true, ScrollBars = ScrollBars.Vertical, Dock = DockStyle.Fill, ReadOnly = true };
|
||||||
|
private readonly Label _status = new() { AutoSize = true, Text = "Ready" };
|
||||||
|
private readonly Button _analyze; private readonly Button _learn; private readonly Button _generate; private readonly Button _build; private readonly Button _validate; private readonly Button _openDocx; private readonly Button _openPdf;
|
||||||
|
private readonly WorkbenchStateController _state = new();
|
||||||
|
private readonly IDocumentInspector _docx = new OpenXmlDocumentInspector(); private readonly IDocumentInspector _txt = new TextDocumentInspector(); private readonly IWordDocumentService _word = new WordDocumentService();
|
||||||
|
private DocumentInspectionResult? _templateResult; private DocumentInspectionResult? _bodyResult; private string? _builtDocx; private string? _builtPdf;
|
||||||
|
|
||||||
|
public MainForm()
|
||||||
|
{
|
||||||
|
Text = "DOCX Workbench"; Width = 1200; Height = 780; StartPosition = FormStartPosition.CenterScreen;
|
||||||
|
_mode.Items.AddRange(["Template learning", "Document generation", "Quick DOC_BODY"]); _mode.SelectedIndex = 2; _mode.SelectedIndexChanged += (_, _) => RefreshButtons();
|
||||||
|
var grid = new TableLayoutPanel { Dock = DockStyle.Top, Height = 245, ColumnCount = 3, RowCount = 7, Padding = new Padding(8) }; grid.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 155)); grid.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100)); grid.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 110));
|
||||||
|
AddControlRow(grid, 0, "Mode", _mode, null); AddControlRow(grid, 1, "Template DOC/DOCX", _template, BrowseTemplate); AddControlRow(grid, 2, "Template name", _templateName, null); AddControlRow(grid, 3, "Content DOC/DOCX/TXT", _body, BrowseBody); AddControlRow(grid, 4, "Package .dtemplate", _package, BrowsePackage); AddControlRow(grid, 5, "Output DOCX", _output, BrowseOutput);
|
||||||
|
var buttons = new FlowLayoutPanel { Dock = DockStyle.Fill }; _analyze = Button("Analyze", async (_, _) => await AnalyzeAsync()); _learn = Button("Learn template", async (_, _) => await LearnAsync()); _generate = Button("Generate", async (_, _) => await GenerateAsync()); _build = Button("Quick build", async (_, _) => await QuickBuildAsync()); _validate = Button("Validate", async (_, _) => await ValidateAsync()); _openDocx = Button("Open DOCX", (_, _) => Open(_builtDocx)); _openPdf = Button("Open PDF", (_, _) => Open(_builtPdf)); buttons.Controls.AddRange([_analyze, _learn, _generate, _build, _validate, _openDocx, _openPdf]); grid.Controls.Add(buttons, 1, 6); grid.SetColumnSpan(buttons, 2);
|
||||||
|
var tabs = new TabControl { Dock = DockStyle.Fill }; AddTab(tabs, "Structure", _structure); AddTab(tabs, "Preview", _preview); AddTab(tabs, "Log", _log); AddTab(tabs, "Technical error", _technicalError); Controls.Add(tabs); Controls.Add(grid); _status.Dock = DockStyle.Bottom; Controls.Add(_status); foreach (var box in new[] { _template, _body, _package, _output }) box.TextChanged += (_, _) => InputsChanged(); FormClosed += (_, _) => (_word as IDisposable)?.Dispose(); RefreshButtons();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void AddTab(TabControl tabs, string title, Control content) { var tab = new TabPage(title); tab.Controls.Add(content); tabs.TabPages.Add(tab); }
|
||||||
|
private static void AddControlRow(TableLayoutPanel panel, int row, string title, Control control, EventHandler? browse) { panel.Controls.Add(new Label { Text = title, AutoSize = true, Anchor = AnchorStyles.Left }, 0, row); panel.Controls.Add(control, 1, row); if (browse is not null) { var button = new Button { Text = "Browse...", Width = 95 }; button.Click += browse; panel.Controls.Add(button, 2, row); } }
|
||||||
|
private static Button Button(string text, EventHandler handler) { var button = new Button { Text = text, AutoSize = true }; button.Click += handler; return button; }
|
||||||
|
private void BrowseTemplate(object? sender, EventArgs e) { using var dialog = new OpenFileDialog { Filter = "Word document|*.doc;*.docx" }; if (dialog.ShowDialog() == DialogResult.OK) _template.Text = dialog.FileName; }
|
||||||
|
private void BrowseBody(object? sender, EventArgs e) { using var dialog = new OpenFileDialog { Filter = "Word or text|*.doc;*.docx;*.txt" }; if (dialog.ShowDialog() == DialogResult.OK) _body.Text = dialog.FileName; }
|
||||||
|
private void BrowsePackage(object? sender, EventArgs e) { using var dialog = new OpenFileDialog { Filter = "Learned template|*.dtemplate" }; if (dialog.ShowDialog() == DialogResult.OK) _package.Text = dialog.FileName; }
|
||||||
|
private void BrowseOutput(object? sender, EventArgs e) { using var dialog = new SaveFileDialog { Filter = "DOCX|*.docx", DefaultExt = "docx" }; if (dialog.ShowDialog() == DialogResult.OK) _output.Text = dialog.FileName; }
|
||||||
|
|
||||||
|
private async Task LearnAsync()
|
||||||
|
{
|
||||||
|
try { _status.Text = "Learning template..."; using var normalizer = new WordDocumentNormalizer(); var service = new TemplateLearningService(normalizer, new TemplatePackageStore(), _docx); var learned = await service.LearnAsync(new TemplateLearningRequest { SourcePath = _template.Text, TemplateName = _templateName.Text, OutputPackagePath = _package.Text }, null, CancellationToken.None); _structure.Text = JsonSerializer.Serialize(learned, new JsonSerializerOptions { WriteIndented = true }); AppendLog($"Template package created: {_package.Text}"); _status.Text = "Template learned"; } catch (Exception ex) { ShowError(ex, "Template learning failed"); }
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task GenerateAsync()
|
||||||
|
{
|
||||||
|
try { _status.Text = "Generating..."; using var normalizer = new WordDocumentNormalizer(); using var generator = new TemplateDocumentGenerator(new TemplatePackageStore(), normalizer, _docx); var result = await generator.GenerateAsync(new TemplateGenerationRequest { TemplatePackagePath = _package.Text, ContentSourcePath = _body.Text, OutputDocxPath = _output.Text }, null, CancellationToken.None); _builtDocx = result.OutputDocxPath; _builtPdf = result.OutputPdfPath; _preview.Text = JsonSerializer.Serialize(result.Validation, new JsonSerializerOptions { WriteIndented = true }); AppendLog(JsonSerializer.Serialize(result, new JsonSerializerOptions { WriteIndented = true })); _status.Text = "Generation succeeded"; } catch (Exception ex) { ShowError(ex, "Generation failed"); }
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task AnalyzeAsync()
|
||||||
|
{
|
||||||
|
_status.Text = "Analyzing..."; var template = await InspectPathAsync(_template.Text); var body = await InspectPathAsync(_body.Text); _templateResult = template.Result; _bodyResult = body.Result; if (_templateResult is not null) ShowStructure(_templateResult); if (_bodyResult is not null) _preview.Text = _body.Text.EndsWith(".txt", StringComparison.OrdinalIgnoreCase) ? File.ReadAllText(_body.Text) : JsonSerializer.Serialize(_bodyResult, new JsonSerializerOptions { WriteIndented = true }); LogInspection("Template", template); LogInspection("Body", body); _state.InputsSelected(template.Result is not null && body.Result is not null); _state.AnalysisCompleted(template.Result is not null, body.Result is not null, template.Result?.InsertionPoint.Type != "None"); _status.Text = _state.State == WorkbenchState.ReadyToBuild ? "Ready" : "Analysis completed with warnings"; RefreshButtons();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Task<(DocumentInspectionResult? Result, Exception? Error, string Inspector)> InspectPathAsync(string path) => Task.Run(() => { try { if (path.EndsWith(".docx", StringComparison.OrdinalIgnoreCase)) return (_docx.Inspect(path), (Exception?)null, "OpenXmlDocumentInspector"); if (path.EndsWith(".txt", StringComparison.OrdinalIgnoreCase)) return (_txt.Inspect(path), (Exception?)null, "TextDocumentInspector"); throw new UnsupportedDocumentFormatException($"Unsupported format {Path.GetExtension(path)}. Use DOC/DOCX/TXT or normalize DOC first."); } catch (Exception ex) { return ((DocumentInspectionResult?)null, ex, "format-router"); } });
|
||||||
|
private async Task QuickBuildAsync() { if (!_state.CanBuild) { await AnalyzeAsync(); if (!_state.CanBuild) return; } _state.BeginBuild(); RefreshButtons(); try { var result = await _word.BuildDocumentAsync(new WordDocumentBuildRequest { TemplatePath = _template.Text, BodyPath = _body.Text, OutputDocxPath = _output.Text }, null, CancellationToken.None); var pdf = await _word.ExportPdfAsync(result.OutputDocxPath, Path.ChangeExtension(result.OutputDocxPath, ".pdf"), CancellationToken.None); _builtDocx = result.OutputDocxPath; _builtPdf = pdf.PdfPath; _state.BuildSucceeded(); AppendLog(JsonSerializer.Serialize(new { result, pdf }, new JsonSerializerOptions { WriteIndented = true })); _status.Text = "Quick build succeeded"; } catch (Exception ex) { _state.BuildFailed(); ShowError(ex, "Build failed"); } finally { RefreshButtons(); } }
|
||||||
|
private async Task ValidateAsync() { if (!_state.CanValidate || _builtDocx is null || !File.Exists(_builtDocx)) return; try { var result = await Task.Run(() => _docx.Inspect(_builtDocx)); AppendLog(JsonSerializer.Serialize(new { label = "Output", result }, new JsonSerializerOptions { WriteIndented = true })); _status.Text = "Validation succeeded"; } catch (Exception ex) { ShowError(ex, "Validation failed"); } }
|
||||||
|
private void ShowStructure(DocumentInspectionResult result) => _structure.Text = JsonSerializer.Serialize(new { result.FilePath, result.Sections, result.Paragraphs, result.Tables, result.Headers, result.Footers, result.Fields, result.ImageSummary, result.SectionAssignments, result.StyleDetails, result.Warnings }, new JsonSerializerOptions { WriteIndented = true });
|
||||||
|
private void LogInspection(string label, (DocumentInspectionResult? Result, Exception? Error, string Inspector) value) { AppendLog(JsonSerializer.Serialize(new { label, inspector = value.Inspector, result = value.Result, error = value.Error?.Message }, new JsonSerializerOptions { WriteIndented = true })); if (value.Error is not null) _technicalError.Text = value.Error.Message; }
|
||||||
|
private void InputsChanged() { _builtDocx = null; _builtPdf = null; RefreshButtons(); }
|
||||||
|
private void RefreshButtons() { var mode = _mode.SelectedIndex; var templateSupported = _template.Text.EndsWith(".doc", StringComparison.OrdinalIgnoreCase) || _template.Text.EndsWith(".docx", StringComparison.OrdinalIgnoreCase); _analyze.Enabled = mode != 1 && File.Exists(_template.Text) && File.Exists(_body.Text); _learn.Enabled = mode == 0 && templateSupported && File.Exists(_template.Text) && !string.IsNullOrWhiteSpace(_package.Text); _generate.Enabled = mode == 1 && File.Exists(_package.Text) && File.Exists(_body.Text) && !string.IsNullOrWhiteSpace(_output.Text); _build.Enabled = mode == 2 && _state.CanBuild; _validate.Enabled = _state.CanValidate && _builtDocx is not null && File.Exists(_builtDocx); _openDocx.Enabled = _builtDocx is not null && File.Exists(_builtDocx); _openPdf.Enabled = _builtPdf is not null && File.Exists(_builtPdf); }
|
||||||
|
private void ShowError(Exception ex, string title) { _technicalError.Text = ex.ToString(); AppendLog(title + ": " + ex.Message); _status.Text = title; MessageBox.Show(ex.Message, title, MessageBoxButtons.OK, MessageBoxIcon.Error); }
|
||||||
|
private void AppendLog(string text) => _log.AppendText(text + Environment.NewLine);
|
||||||
|
private static void Open(string? path) { if (!string.IsNullOrWhiteSpace(path) && File.Exists(path)) Process.Start(new ProcessStartInfo(path) { UseShellExecute = true }); }
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
namespace DocxWorkbench.App;
|
||||||
|
|
||||||
|
static class Program
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The main entry point for the application.
|
||||||
|
/// </summary>
|
||||||
|
[STAThread]
|
||||||
|
static void Main()
|
||||||
|
{
|
||||||
|
// To customize application configuration such as set high DPI settings or default font,
|
||||||
|
// see https://aka.ms/applicationconfiguration.
|
||||||
|
ApplicationConfiguration.Initialize();
|
||||||
|
Application.Run(new MainForm());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
using DocumentAutomation.Shared;
|
||||||
|
|
||||||
|
namespace DocxWorkbench.Core;
|
||||||
|
|
||||||
|
public interface IDocumentInspector
|
||||||
|
{
|
||||||
|
DocumentInspectionResult Inspect(string docxPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed class UnsupportedDocumentFormatException(string message) : InvalidOperationException(message);
|
||||||
|
|
||||||
|
public enum WorkbenchState { Empty, InputsSelected, Analyzed, ReadyToBuild, Building, BuildSucceeded, BuildFailed, Validating, ValidationSucceeded, ValidationFailed }
|
||||||
|
|
||||||
|
public sealed class WorkbenchStateController
|
||||||
|
{
|
||||||
|
public WorkbenchState State { get; private set; } = WorkbenchState.Empty;
|
||||||
|
public bool CanBuild => State == WorkbenchState.ReadyToBuild;
|
||||||
|
public bool CanValidate => State == WorkbenchState.BuildSucceeded;
|
||||||
|
public bool CanOpenDocx { get; private set; }
|
||||||
|
public bool CanOpenPdf { get; private set; }
|
||||||
|
public void InputsSelected(bool selected) { State = selected ? WorkbenchState.InputsSelected : WorkbenchState.Empty; if (!selected) ClearArtifacts(); }
|
||||||
|
public void AnalysisCompleted(bool templateOk, bool bodyOk, bool insertionPointFound) { State = templateOk && bodyOk && insertionPointFound ? WorkbenchState.ReadyToBuild : WorkbenchState.Analyzed; ClearArtifacts(); }
|
||||||
|
public void BeginBuild() { if (!CanBuild) throw new InvalidOperationException("Build is unavailable in the current state."); State = WorkbenchState.Building; ClearArtifacts(); }
|
||||||
|
public void BuildSucceeded() { State = WorkbenchState.BuildSucceeded; CanOpenDocx = true; CanOpenPdf = true; }
|
||||||
|
public void BuildFailed() { State = WorkbenchState.BuildFailed; ClearArtifacts(); }
|
||||||
|
public void BeginValidation() { if (!CanValidate) throw new InvalidOperationException("Validation is available only after a successful build."); State = WorkbenchState.Validating; }
|
||||||
|
public void ValidationCompleted(bool success) => State = success ? WorkbenchState.ValidationSucceeded : WorkbenchState.ValidationFailed;
|
||||||
|
private void ClearArtifacts() { CanOpenDocx = false; CanOpenPdf = false; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface IWordDocumentService
|
||||||
|
{
|
||||||
|
Task<WordDocumentResult> BuildDocumentAsync(WordDocumentBuildRequest request, IProgress<string>? progress, CancellationToken cancellationToken);
|
||||||
|
Task<WordPreviewResult> ExportPdfAsync(string docxPath, string outputPdfPath, CancellationToken cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface IDocxBodyImporter
|
||||||
|
{
|
||||||
|
Task<BodyImportResult> ImportAsync(DocxBodyImportRequest request, IProgress<WordOperationProgress>? progress, CancellationToken cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface IWordDocumentNormalizer
|
||||||
|
{
|
||||||
|
Task<DocumentNormalizationResult> NormalizeAsync(DocumentNormalizationRequest request, IProgress<WordOperationProgress>? progress, CancellationToken cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface ITemplateLearningService
|
||||||
|
{
|
||||||
|
Task<LearnedTemplate> LearnAsync(TemplateLearningRequest request, IProgress<WordOperationProgress>? progress, CancellationToken cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface ITemplatePackageStore
|
||||||
|
{
|
||||||
|
void Save(string packagePath, LearnedTemplate template, string normalizedDocxPath);
|
||||||
|
(LearnedTemplate Template, string TemplateDocxPath, string WorkingDirectory) Open(string packagePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface ITemplateDocumentGenerator
|
||||||
|
{
|
||||||
|
Task<TemplateGenerationResult> GenerateAsync(TemplateGenerationRequest request, IProgress<WordOperationProgress>? progress, CancellationToken cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class DocumentInputValidation
|
||||||
|
{
|
||||||
|
public static void Validate(WordDocumentBuildRequest request)
|
||||||
|
{
|
||||||
|
if (!File.Exists(request.TemplatePath)) throw new FileNotFoundException("Шаблон DOCX не найден.", request.TemplatePath);
|
||||||
|
if (!File.Exists(request.BodyPath)) throw new FileNotFoundException("Файл тела документа не найден.", request.BodyPath);
|
||||||
|
if (!request.TemplatePath.EndsWith(".docx", StringComparison.OrdinalIgnoreCase)) throw new ArgumentException("Шаблон должен быть DOCX.");
|
||||||
|
if (Path.GetFullPath(request.TemplatePath).Equals(Path.GetFullPath(request.OutputDocxPath), StringComparison.OrdinalIgnoreCase)) throw new InvalidOperationException("Нельзя перезаписывать исходный шаблон.");
|
||||||
|
Directory.CreateDirectory(Path.GetDirectoryName(Path.GetFullPath(request.OutputDocxPath))!);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0-windows</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\DocumentAutomation.Shared\DocumentAutomation.Shared.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using DocumentAutomation.Shared;
|
||||||
|
using DocumentFormat.OpenXml;
|
||||||
|
using DocumentFormat.OpenXml.Packaging;
|
||||||
|
using DocumentFormat.OpenXml.Wordprocessing;
|
||||||
|
using DocxWorkbench.Core;
|
||||||
|
|
||||||
|
namespace DocxWorkbench.OpenXml;
|
||||||
|
|
||||||
|
public sealed class OpenXmlDocumentInspector : IDocumentInspector
|
||||||
|
{
|
||||||
|
private static readonly string[] KnownFields = ["PAGE", "NUMPAGES", "SECTIONPAGES", "FILENAME"];
|
||||||
|
|
||||||
|
public DocumentInspectionResult Inspect(string docxPath)
|
||||||
|
{
|
||||||
|
if (!File.Exists(docxPath)) throw new FileNotFoundException("DOCX was not found.", docxPath);
|
||||||
|
if (!docxPath.EndsWith(".docx", StringComparison.OrdinalIgnoreCase)) throw new UnsupportedDocumentFormatException($"Open XML inspector accepts DOCX only, received {Path.GetExtension(docxPath)}.");
|
||||||
|
var info = new FileInfo(docxPath); using var package = WordprocessingDocument.Open(docxPath, false); var main = package.MainDocumentPart ?? throw new InvalidDataException("The DOCX has no main document part."); var roots = GetRoots(main); var fields = roots.SelectMany(x => FindFields(x.Root, x.Part, x.Section)).ToArray(); var images = CountImages(main, roots);
|
||||||
|
return new DocumentInspectionResult
|
||||||
|
{
|
||||||
|
FilePath = docxPath, FileSize = info.Length, LastWriteTimeUtc = info.LastWriteTimeUtc, Sections = Math.Max(1, main.Document.Descendants<SectionProperties>().Count()), Paragraphs = main.Document.Descendants<Paragraph>().Count(), Tables = main.Document.Descendants<Table>().Count(), Images = images.RasterImages, ImageSummary = images,
|
||||||
|
Headers = main.HeaderParts.Count(), Footers = main.FooterParts.Count(), HasPageFields = fields.Any(x => x.Type == "PAGE"), HasNumPagesFields = fields.Any(x => x.Type == "NUMPAGES"), HasSectionPagesFields = fields.Any(x => x.Type == "SECTIONPAGES"), Fields = fields,
|
||||||
|
Bookmarks = main.Document.Descendants<BookmarkStart>().Count(), ContentControls = main.Document.Descendants<SdtElement>().Count(), Comments = main.GetPartsOfType<WordprocessingCommentsPart>().Count(), HasTrackedChanges = main.Document.Descendants<Inserted>().Any() || main.Document.Descendants<Deleted>().Any(), HasProtectedParts = main.Document.Descendants<DocumentProtection>().Any(),
|
||||||
|
StyleDetails = GetStyles(main), SectionAssignments = GetSectionAssignments(main), InsertionPoint = FindInsertionPoint(main.Document), BodyImportPlan = CreateBodyImportPlan(main), Warnings = FindWarnings(roots)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private static IReadOnlyList<(OpenXmlPartRootElement Root, string Part, int? Section)> GetRoots(MainDocumentPart main)
|
||||||
|
{
|
||||||
|
var roots = new List<(OpenXmlPartRootElement, string, int?)> { (main.Document, "MainDocumentPart", null) }; roots.AddRange(main.HeaderParts.Select((p, i) => ((OpenXmlPartRootElement)p.Header, $"HeaderPart[{i + 1}]", (int?)null))); roots.AddRange(main.FooterParts.Select((p, i) => ((OpenXmlPartRootElement)p.Footer, $"FooterPart[{i + 1}]", (int?)null))); if (main.DocumentSettingsPart?.Settings is not null) roots.Add((main.DocumentSettingsPart.Settings, "SettingsPart", null)); if (main.FootnotesPart?.Footnotes is not null) roots.Add((main.FootnotesPart.Footnotes, "FootnotesPart", null)); if (main.EndnotesPart?.Endnotes is not null) roots.Add((main.EndnotesPart.Endnotes, "EndnotesPart", null)); foreach (var comments in main.GetPartsOfType<WordprocessingCommentsPart>()) if (comments.Comments is not null) roots.Add((comments.Comments, "CommentsPart", null)); return roots;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static IEnumerable<DocumentFieldInfo> FindFields(OpenXmlElement root, string part, int? section)
|
||||||
|
{
|
||||||
|
foreach (var simple in root.Descendants<SimpleField>()) { var type = NormalizeField(simple.Instruction?.Value); if (type is not null) yield return new DocumentFieldInfo { Type = type, Part = part, Section = section, Instruction = simple.Instruction?.Value }; }
|
||||||
|
var active = new List<string>(); foreach (var element in root.Descendants()) { if (element is FieldChar begin && begin.FieldCharType?.Value == FieldCharValues.Begin) active.Add(""); else if (element is FieldCode code && active.Count > 0) active[^1] += " " + code.Text; else if (element is FieldChar end && end.FieldCharType?.Value == FieldCharValues.End && active.Count > 0) { var raw = active[^1]; active.RemoveAt(active.Count - 1); var type = NormalizeField(raw); if (type is not null) yield return new DocumentFieldInfo { Type = type, Part = part, Section = section, Instruction = raw.Trim() }; } }
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string? NormalizeField(string? value) { if (string.IsNullOrWhiteSpace(value)) return null; var normalized = Regex.Replace(value, @"\s+", " ").Trim(); var name = Regex.Match(normalized, @"(?i)^(PAGE|NUMPAGES|SECTIONPAGES|FILENAME)\b").Value.ToUpperInvariant(); return KnownFields.Contains(name) ? name : null; }
|
||||||
|
|
||||||
|
private static DocumentImageSummary CountImages(MainDocumentPart main, IReadOnlyList<(OpenXmlPartRootElement Root, string Part, int? Section)> roots)
|
||||||
|
{
|
||||||
|
var imageParts = new HashSet<OpenXmlPart>(); var drawings = roots.Sum(x => x.Root.Descendants<Drawing>().Count()); var shapes = roots.Sum(x => x.Root.Descendants<DocumentFormat.OpenXml.Vml.Shape>().Count()); var external = 0;
|
||||||
|
foreach (var image in main.GetPartsOfType<ImagePart>()) imageParts.Add(image); foreach (var header in main.HeaderParts) { foreach (var image in header.GetPartsOfType<ImagePart>()) imageParts.Add(image); external += header.ExternalRelationships.Count(x => x.Uri?.ToString().Contains("image", StringComparison.OrdinalIgnoreCase) == true); } foreach (var footer in main.FooterParts) { foreach (var image in footer.GetPartsOfType<ImagePart>()) imageParts.Add(image); external += footer.ExternalRelationships.Count(x => x.Uri?.ToString().Contains("image", StringComparison.OrdinalIgnoreCase) == true); }
|
||||||
|
external += main.ExternalRelationships.Count(x => x.Uri?.ToString().Contains("image", StringComparison.OrdinalIgnoreCase) == true); return new DocumentImageSummary { RasterImages = imageParts.Count, DrawingObjects = drawings, VmlShapes = shapes, ExternalImages = external };
|
||||||
|
}
|
||||||
|
|
||||||
|
private static IReadOnlyList<DocumentStyleInfo> GetStyles(MainDocumentPart main)
|
||||||
|
{
|
||||||
|
var usage = main.Document.Descendants<ParagraphStyleId>().GroupBy(x => x.Val?.Value ?? "").ToDictionary(x => x.Key, x => x.Count()); return main.StyleDefinitionsPart?.Styles?.Elements<Style>().Select(style => new DocumentStyleInfo { StyleId = style.StyleId?.Value ?? "", Name = style.StyleName?.Val?.Value, Type = style.Type is null ? null : style.Type.Value.ToString(), IsDefault = style.Default?.Value == true, BasedOn = style.BasedOn?.Val?.Value, UsageCount = usage.GetValueOrDefault(style.StyleId?.Value ?? "") }).Where(x => x.StyleId.Length > 0).ToArray() ?? [];
|
||||||
|
}
|
||||||
|
|
||||||
|
private static IReadOnlyList<SectionPartAssignment> GetSectionAssignments(MainDocumentPart main)
|
||||||
|
{
|
||||||
|
var result = new List<SectionPartAssignment>(); var sections = main.Document.Body?.Elements<SectionProperties>().ToArray() ?? []; for (var i = 0; i < sections.Length; i++) { var section = sections[i]; var headers = section.Elements<HeaderReference>().Select(x => $"{x.Type?.Value}:{PartName(main, x.Id?.Value)}").ToArray(); var footers = section.Elements<FooterReference>().Select(x => $"{x.Type?.Value}:{PartName(main, x.Id?.Value)}").ToArray(); result.Add(new SectionPartAssignment { Section = i + 1, Headers = headers, Footers = footers, LinkToPrevious = i > 0 && headers.Length == 0 && footers.Length == 0 }); } return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string PartName(MainDocumentPart main, string? id) { if (id is null) return "missing"; try { return main.GetPartById(id).Uri.ToString(); } catch { return "unresolved:" + id; } }
|
||||||
|
private static InsertionPointInfo FindInsertionPoint(Document root) { if (root.Descendants<SdtElement>().Any(x => string.Equals(x.SdtProperties?.GetFirstChild<Tag>()?.Val?.Value, "DOC_BODY", StringComparison.OrdinalIgnoreCase))) return new InsertionPointInfo { Type = "ContentControl", Location = "MainDocumentPart" }; if (root.Descendants<BookmarkStart>().Any(x => string.Equals(x.Name?.Value, "DOC_BODY", StringComparison.OrdinalIgnoreCase))) return new InsertionPointInfo { Type = "Bookmark", Location = "MainDocumentPart" }; if (root.InnerText.Contains("{{DOC_BODY}}", StringComparison.Ordinal)) return new InsertionPointInfo { Type = "TextMarker", Location = "MainDocumentPart" }; return new InsertionPointInfo { Type = "None" }; }
|
||||||
|
private static IReadOnlyList<InspectionWarning> FindWarnings(IReadOnlyList<(OpenXmlPartRootElement Root, string Part, int? Section)> roots) { var result = new List<InspectionWarning>(); foreach (var root in roots) foreach (Match match in Regex.Matches(root.Root.InnerText, @"(?i)\b(2019|legacy|старый)\b")) result.Add(new InspectionWarning { Code = "PossibleLegacyProjectData", Message = "A value matched the legacy-project heuristic.", Part = root.Part, Location = "text", MatchedValue = match.Value, DetectionRule = "word-boundary: 2019|legacy|старый" }); return result; }
|
||||||
|
private static BodyImportPlan CreateBodyImportPlan(MainDocumentPart main)
|
||||||
|
{
|
||||||
|
var body = main.Document.Body; if (body is null) return new BodyImportPlan { ParagraphCount = 0, TableCount = 0, InlineShapeCount = 0, FloatingShapeCount = 0, InternalSectionBreakCount = 0, PageBreakCount = 0, IncludedStories = ["wdMainTextStory"], ExcludedStories = ["wdPrimaryHeaderStory", "wdFirstPageHeaderStory", "wdEvenPagesHeaderStory", "wdPrimaryFooterStory", "wdFirstPageFooterStory", "wdEvenPagesFooterStory"], Warnings = [] };
|
||||||
|
var drawings = body.Descendants<Drawing>(); return new BodyImportPlan { ParagraphCount = body.Descendants<Paragraph>().Count(), TableCount = body.Descendants<Table>().Count(), InlineShapeCount = drawings.Count(x => x.Ancestors<DocumentFormat.OpenXml.Drawing.Wordprocessing.Inline>().Any()), FloatingShapeCount = drawings.Count(x => x.Ancestors<DocumentFormat.OpenXml.Drawing.Wordprocessing.Anchor>().Any()), InternalSectionBreakCount = Math.Max(0, body.Descendants<SectionProperties>().Count() - 1), PageBreakCount = body.Descendants<Break>().Count(x => x.Type?.Value == BreakValues.Page), IncludedStories = ["wdMainTextStory"], ExcludedStories = ["wdPrimaryHeaderStory", "wdFirstPageHeaderStory", "wdEvenPagesHeaderStory", "wdPrimaryFooterStory", "wdFirstPageFooterStory", "wdEvenPagesFooterStory"], Warnings = ["Source headers, footers, page setup and final section properties are excluded."] };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed class TextDocumentInspector : IDocumentInspector
|
||||||
|
{
|
||||||
|
public DocumentInspectionResult Inspect(string path) { if (!File.Exists(path)) throw new FileNotFoundException("TXT was not found.", path); if (!path.EndsWith(".txt", StringComparison.OrdinalIgnoreCase)) throw new UnsupportedDocumentFormatException($"TXT inspector accepts TXT only, received {Path.GetExtension(path)}."); var info = new FileInfo(path); return new DocumentInspectionResult { FilePath = path, FileSize = info.Length, LastWriteTimeUtc = info.LastWriteTimeUtc, Sections = 1, Paragraphs = File.ReadAllLines(path).Length, InsertionPoint = new InsertionPointInfo { Type = "None" } }; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed class DocumentInspector : IDocumentInspector
|
||||||
|
{
|
||||||
|
private readonly OpenXmlDocumentInspector _inner = new();
|
||||||
|
public DocumentInspectionResult Inspect(string docxPath) => _inner.Inspect(docxPath);
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0-windows</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\DocumentAutomation.Shared\DocumentAutomation.Shared.csproj" />
|
||||||
|
<ProjectReference Include="..\DocxWorkbench.Core\DocxWorkbench.Core.csproj" />
|
||||||
|
<PackageReference Include="DocumentFormat.OpenXml" Version="3.3.0" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
using System.IO.Compression;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Text.Json;
|
||||||
|
using DocumentAutomation.Shared;
|
||||||
|
using DocumentFormat.OpenXml.Packaging;
|
||||||
|
using DocumentFormat.OpenXml.Wordprocessing;
|
||||||
|
using DocxWorkbench.Core;
|
||||||
|
|
||||||
|
namespace DocxWorkbench.OpenXml;
|
||||||
|
|
||||||
|
public sealed class TemplatePackageStore : ITemplatePackageStore
|
||||||
|
{
|
||||||
|
private static readonly JsonSerializerOptions JsonOptions = new() { WriteIndented = true, PropertyNamingPolicy = JsonNamingPolicy.CamelCase };
|
||||||
|
|
||||||
|
public void Save(string packagePath, LearnedTemplate template, string normalizedDocxPath)
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(Path.GetDirectoryName(Path.GetFullPath(packagePath))!);
|
||||||
|
if (File.Exists(packagePath)) File.Delete(packagePath);
|
||||||
|
using var archive = ZipFile.Open(packagePath, ZipArchiveMode.Create);
|
||||||
|
WriteJson(archive, "manifest.json", new { schemaVersion = "1.0", templateId = template.TemplateId, name = template.Name, sourceFileName = template.SourceFileName, sourceSha256 = template.SourceSha256, normalizedSha256 = template.NormalizedSha256, createdAt = template.CreatedAt, minimumEngineVersion = template.MinimumEngineVersion });
|
||||||
|
WriteJson(archive, "source-metadata.json", template.Source);
|
||||||
|
WriteJson(archive, "page-archetypes.json", template.PageArchetypes);
|
||||||
|
WriteJson(archive, "fixed-regions.json", template.FixedRegions.Concat(template.RepeatingRegions.Select(x => new FixedRegion { Id = x.Id, Name = x.Name, Kind = x.Kind, Pages = x.Pages, Fingerprint = x.Fingerprint, Location = x.Location })).ToArray());
|
||||||
|
WriteJson(archive, "slots.json", template.Slots);
|
||||||
|
WriteJson(archive, "field-bindings.json", template.FieldBindings);
|
||||||
|
WriteJson(archive, "mapping-rules.json", template.Suggestions);
|
||||||
|
WriteJson(archive, "validation-profile.json", new { schemaVersion = "1.0", requiredSlots = template.Slots.Where(x => x.IsRequired).Select(x => x.ContentControlTag).ToArray(), allowTrackedChanges = false, allowExternalLinks = false });
|
||||||
|
var entry = archive.CreateEntry("template.docx", CompressionLevel.Optimal); using var input = File.OpenRead(normalizedDocxPath); using var output = entry.Open(); input.CopyTo(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
public (LearnedTemplate Template, string TemplateDocxPath, string WorkingDirectory) Open(string packagePath)
|
||||||
|
{
|
||||||
|
if (!File.Exists(packagePath)) throw new FileNotFoundException("Template package was not found.", packagePath);
|
||||||
|
var work = Path.Combine(Path.GetTempPath(), "DocumentAutomation", "template-" + Guid.NewGuid().ToString("N")); Directory.CreateDirectory(work); ZipFile.ExtractToDirectory(packagePath, work);
|
||||||
|
var manifest = ReadJson<Manifest>(Path.Combine(work, "manifest.json")); if (manifest.SchemaVersion != "1.0") throw new InvalidDataException($"Unsupported template schema: {manifest.SchemaVersion}");
|
||||||
|
var template = new LearnedTemplate { TemplateId = manifest.TemplateId, Name = manifest.Name, SourceFileName = manifest.SourceFileName, SourceSha256 = manifest.SourceSha256, NormalizedSha256 = manifest.NormalizedSha256, CreatedAt = manifest.CreatedAt, MinimumEngineVersion = manifest.MinimumEngineVersion, Source = ReadJson<SourceDocumentStructure>(Path.Combine(work, "source-metadata.json")), PageArchetypes = ReadJson<List<PageArchetype>>(Path.Combine(work, "page-archetypes.json")), FixedRegions = ReadJson<List<FixedRegion>>(Path.Combine(work, "fixed-regions.json")).Where(x => x.Kind != TemplateRegionKind.Repeating).ToArray(), RepeatingRegions = ReadJson<List<FixedRegion>>(Path.Combine(work, "fixed-regions.json")).Where(x => x.Kind == TemplateRegionKind.Repeating).Select(x => new RepeatingRegion { Id = x.Id, Name = x.Name, Pages = x.Pages, Fingerprint = x.Fingerprint, Kind = x.Kind, Location = x.Location }).ToArray(), Slots = ReadJson<List<TemplateSlot>>(Path.Combine(work, "slots.json")), FieldBindings = ReadJson<List<TemplateFieldBinding>>(Path.Combine(work, "field-bindings.json")), Suggestions = ReadJson<List<TemplateLearningSuggestion>>(Path.Combine(work, "mapping-rules.json")) };
|
||||||
|
var docx = Path.Combine(work, "template.docx"); if (!File.Exists(docx)) throw new InvalidDataException("Template package does not contain template.docx."); return (template, docx, work);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void WriteJson<T>(ZipArchive archive, string name, T value) { var entry = archive.CreateEntry(name, CompressionLevel.Optimal); using var writer = new StreamWriter(entry.Open()); writer.Write(JsonSerializer.Serialize(value, JsonOptions)); }
|
||||||
|
private static T ReadJson<T>(string path) => JsonSerializer.Deserialize<T>(File.ReadAllText(path), JsonOptions) ?? throw new InvalidDataException($"Invalid template package entry: {Path.GetFileName(path)}");
|
||||||
|
private sealed record Manifest(string SchemaVersion, string TemplateId, string Name, string SourceFileName, string SourceSha256, string NormalizedSha256, string CreatedAt, string MinimumEngineVersion);
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed class TemplateLearningService : ITemplateLearningService
|
||||||
|
{
|
||||||
|
private readonly IWordDocumentNormalizer _normalizer;
|
||||||
|
private readonly ITemplatePackageStore _packages;
|
||||||
|
private readonly IDocumentInspector _inspector;
|
||||||
|
public TemplateLearningService(IWordDocumentNormalizer normalizer, ITemplatePackageStore packages, IDocumentInspector? inspector = null) { _normalizer = normalizer; _packages = packages; _inspector = inspector ?? new OpenXmlDocumentInspector(); }
|
||||||
|
|
||||||
|
public async Task<LearnedTemplate> LearnAsync(TemplateLearningRequest request, IProgress<WordOperationProgress>? progress, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
if (!File.Exists(request.SourcePath)) throw new FileNotFoundException("Template source was not found.", request.SourcePath);
|
||||||
|
var normalized = await _normalizer.NormalizeAsync(new DocumentNormalizationRequest { SourcePath = request.SourcePath, WorkingDirectory = Path.Combine(Path.GetTempPath(), "DocumentAutomation", "learning-" + Guid.NewGuid().ToString("N")) }, progress, cancellationToken);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
progress?.Report(new WordOperationProgress { Stage = "AnalyzeTemplate", Message = "Inspecting normalized template" });
|
||||||
|
EnsureBodyMarker(normalized.NormalizedPath); var normalizedHash = Convert.ToHexString(SHA256.HashData(File.ReadAllBytes(normalized.NormalizedPath))); var inspection = _inspector.Inspect(normalized.NormalizedPath) with { FilePath = "template.docx" }; var pages = Math.Max(1, normalized.PageCount ?? inspection.Sections); var archetypes = CreateArchetypes(pages, inspection); var repeated = FindRepeatedRegions(inspection); var slots = request.CreateDefaultSlots ? DefaultSlots() : [];
|
||||||
|
var source = new SourceDocumentStructure { SourcePath = Path.GetFileName(request.SourcePath), Sha256 = normalized.SourceSha256, NormalizedPath = "template.docx", NormalizedSha256 = normalizedHash, PageCount = pages, SectionCount = inspection.Sections, Stories = ["wdMainTextStory", "wdPrimaryHeaderStory", "wdFirstPageHeaderStory", "wdEvenPagesHeaderStory", "wdPrimaryFooterStory", "wdFootnotesStory", "wdEndnotesStory", "wdCommentsStory", "wdTextFrameStory"], RepeatedFingerprints = repeated.Select(x => x.Fingerprint).ToArray(), Inspection = inspection };
|
||||||
|
var learned = new LearnedTemplate { TemplateId = Guid.NewGuid().ToString("D"), Name = request.TemplateName, SourceFileName = Path.GetFileName(request.SourcePath), SourceSha256 = normalized.SourceSha256, NormalizedSha256 = normalizedHash, CreatedAt = DateTimeOffset.Now.ToString("O"), Source = source, PageArchetypes = archetypes, FixedRegions = [], RepeatingRegions = repeated, Slots = slots, FieldBindings = [], Suggestions = BuildSuggestions(inspection, slots) };
|
||||||
|
_packages.Save(request.OutputPackagePath, learned, normalized.NormalizedPath); return learned;
|
||||||
|
}
|
||||||
|
finally { TryDeleteDirectory(normalized.NormalizedPath, normalized.SourcePath); }
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void EnsureBodyMarker(string path) { using var doc = WordprocessingDocument.Open(path, true); var main = doc.MainDocumentPart ?? throw new InvalidDataException("Main document part is missing."); var body = main.Document.Body ?? throw new InvalidDataException("Document body is missing."); if (main.Document.InnerText.Contains("{{DOC_BODY}}", StringComparison.Ordinal)) return; body.AppendChild(new Paragraph(new Run(new Text("{{DOC_BODY}}")))); main.Document.Save(); }
|
||||||
|
private static IReadOnlyList<PageArchetype> CreateArchetypes(int pages, DocumentInspectionResult inspection) { var result = new List<PageArchetype> { new() { Id = "FirstPage", Name = "FirstPage", IsFirstPage = true, IsRepeating = false, ExamplePages = [1], FixedRegionIds = [], SlotIds = [] } }; if (pages > 1) result.Add(new PageArchetype { Id = "RepeatingPage", Name = "RepeatingPage", IsRepeating = true, ExamplePages = Enumerable.Range(2, pages - 1).ToArray(), FixedRegionIds = [], SlotIds = [] }); return result; }
|
||||||
|
private static IReadOnlyList<RepeatingRegion> FindRepeatedRegions(DocumentInspectionResult inspection) => inspection.SectionAssignments.GroupBy(x => string.Join("|", x.Headers.Concat(x.Footers))).Where(x => x.Count() > 1 && x.Key.Length > 0).Select((x, i) => new RepeatingRegion { Id = "region-" + (i + 1), Name = "Repeated header/footer", Pages = x.Select(y => y.Section).ToArray(), Fingerprint = Convert.ToHexString(SHA256.HashData(System.Text.Encoding.UTF8.GetBytes(x.Key))), Kind = TemplateRegionKind.Repeating, Location = "section assignments" }).ToArray();
|
||||||
|
private static IReadOnlyList<TemplateSlot> DefaultSlots() => new[] { "PROJECT.CODE", "PROJECT.NAME", "PROJECT.OBJECT", "DOCUMENT.CODE", "DOCUMENT.TITLE", "DOCUMENT.STAGE", "DOCUMENT.SHEET", "DOCUMENT.SHEET_COUNT", "REGISTER.CONTENTS", "REGISTER.MAIN_DRAWING_SETS", "REGISTER.DRAWINGS", "REGISTER.REFERENCE_DOCUMENTS", "DOCUMENT.GENERAL_NOTES", "DOCUMENT.MAIN_BODY" }.Select(x => new TemplateSlot { Id = x, Name = x, Kind = x == "DOCUMENT.MAIN_BODY" ? TemplateSlotKind.MainBody : TemplateSlotKind.PlainText, ContentControlTag = x, IsRequired = x is "DOCUMENT.CODE" or "DOCUMENT.TITLE" or "DOCUMENT.MAIN_BODY", Occurrences = [] }).ToArray();
|
||||||
|
private static IReadOnlyList<TemplateLearningSuggestion> BuildSuggestions(DocumentInspectionResult inspection, IReadOnlyList<TemplateSlot> slots) => [new TemplateLearningSuggestion { SuggestionType = "PageArchetype", SourceLocation = "document", ProposedName = inspection.Sections > 1 ? "FirstPage + RepeatingPage" : "SinglePage", Confidence = 0.5, Reason = "Initial deterministic proposal based on document sections." }];
|
||||||
|
private static void TryDeleteDirectory(string normalized, string source) { var directory = Path.GetDirectoryName(normalized); if (directory is not null && !Path.GetFullPath(source).Equals(Path.GetFullPath(normalized), StringComparison.OrdinalIgnoreCase)) try { if (Directory.Exists(directory)) Directory.Delete(directory, true); } catch { } }
|
||||||
|
}
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.IO.Compression;
|
||||||
|
using System.Text;
|
||||||
|
using System.Xml.Linq;
|
||||||
|
using DocumentAutomation.Shared;
|
||||||
|
using DocxWorkbench.Core;
|
||||||
|
|
||||||
|
namespace DocxWorkbench.WordInterop;
|
||||||
|
|
||||||
|
public sealed class DocxBodyImporter : IDocxBodyImporter, IDisposable
|
||||||
|
{
|
||||||
|
private readonly StaWordQueue _queue;
|
||||||
|
private readonly bool _ownsQueue;
|
||||||
|
public DocxBodyImporter() : this(new StaWordQueue(), true) { }
|
||||||
|
internal DocxBodyImporter(StaWordQueue queue) : this(queue, false) { }
|
||||||
|
private DocxBodyImporter(StaWordQueue queue, bool ownsQueue) { _queue = queue; _ownsQueue = ownsQueue; }
|
||||||
|
|
||||||
|
public Task<BodyImportResult> ImportAsync(DocxBodyImportRequest request, IProgress<WordOperationProgress>? progress, CancellationToken cancellationToken)
|
||||||
|
=> _queue.Enqueue(() => ImportStandalone(request, progress, cancellationToken), cancellationToken);
|
||||||
|
|
||||||
|
private BodyImportResult ImportStandalone(DocxBodyImportRequest request, IProgress<WordOperationProgress>? progress, CancellationToken token)
|
||||||
|
{
|
||||||
|
dynamic? application = null; var proxies = new List<object?>(); try { var type = Type.GetTypeFromProgID("Word.Application", false) ?? throw new WordNotInstalledException("Microsoft Word is not installed or is not registered in COM."); application = Activator.CreateInstance(type) ?? throw new WordAutomationException("Could not create Word.Application."); application.Visible = false; application.DisplayAlerts = 0; return ImportOnSta(application, null, request.DestinationRangeHandle, request, progress, token, proxies); } finally { try { if (application is not null) application.Quit(0); } catch { } Release(application); ReleaseAll(proxies); }
|
||||||
|
}
|
||||||
|
|
||||||
|
internal BodyImportResult ImportOnSta(dynamic application, dynamic destinationDocument, dynamic destinationRange, DocxBodyImportRequest request, IProgress<WordOperationProgress>? progress, CancellationToken token, List<object?> proxies)
|
||||||
|
{
|
||||||
|
if (!File.Exists(request.SourcePath)) throw new FileNotFoundException("Source DOCX was not found.", request.SourcePath); if (!request.SourcePath.EndsWith(".docx", StringComparison.OrdinalIgnoreCase)) throw new UnsupportedDocumentFormatException("DocxBodyImporter accepts DOCX only.");
|
||||||
|
var plan = BuildPlanFromOpenXml(request.SourcePath);
|
||||||
|
var temp = Path.Combine(Path.GetTempPath(), "DocumentAutomation", "body-" + Guid.NewGuid().ToString("N")); Directory.CreateDirectory(temp); var sourceCopy = Path.Combine(temp, "source.docx"); File.Copy(request.SourcePath, sourceCopy, true); NormalizeSourceSections(sourceCopy, request.SectionBreakPolicy); dynamic? sourceDocument = null; dynamic? sourceDocuments = null; dynamic? sourceRange = null; dynamic? importRange = null; var localProxies = new List<object?>();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
token.ThrowIfCancellationRequested(); progress?.Report(new WordOperationProgress { Stage = "OpenSource", Message = "Opening source DOCX read-only" }); sourceDocuments = Own(application.Documents, localProxies); sourceDocument = Own(sourceDocuments.Open(sourceCopy, true, false, false), localProxies); dynamic stories = Own(sourceDocument.StoryRanges, localProxies); sourceRange = Own(stories[1], localProxies); var start = (int)sourceRange.Start; var end = (int)sourceRange.End; if (end > start) end -= 1; importRange = Own(sourceDocument.Range(start, end), localProxies);
|
||||||
|
var warnings = new List<string>(); var sourceRevisions = TryCount(importRange.Revisions); var sourceComments = TryCount(importRange.Comments); if (sourceRevisions > 0) { if (request.RevisionPolicy == RevisionImportPolicy.BlockImport) throw new WordAutomationException("Source DOCX contains tracked changes and RevisionPolicy is BlockImport."); if (request.RevisionPolicy == RevisionImportPolicy.AcceptAll) importRange.Revisions.AcceptAll(); if (request.RevisionPolicy == RevisionImportPolicy.RejectAll) importRange.Revisions.RejectAll(); if (request.RevisionPolicy == RevisionImportPolicy.PreserveAndWarn) warnings.Add($"Tracked changes preserved: {sourceRevisions}."); } if (sourceComments > 0) { if (request.CommentPolicy == CommentImportPolicy.BlockImport) throw new WordAutomationException("Source DOCX contains comments and CommentPolicy is BlockImport."); if (request.CommentPolicy == CommentImportPolicy.PreserveAndWarn) warnings.Add($"Comments preserved: {sourceComments}."); }
|
||||||
|
progress?.Report(new WordOperationProgress { Stage = "FormattedText", Message = "Copying only the main text story" }); destinationRange.FormattedText = importRange.FormattedText; if (request.CommentPolicy == CommentImportPolicy.Exclude) RemoveImportedComments(destinationRange); if (request.RevisionPolicy == RevisionImportPolicy.PreserveAndWarn) warnings.Add("Revision policy: PreserveAndWarn.");
|
||||||
|
plan = plan with { Warnings = warnings }; return new BodyImportResult { Plan = plan, InsertionMode = "FormattedText", Warnings = warnings };
|
||||||
|
}
|
||||||
|
finally { try { if (sourceDocument is not null) sourceDocument.Close(0); } catch { } ReleaseAll(localProxies); TryDelete(temp); }
|
||||||
|
}
|
||||||
|
|
||||||
|
private static BodyImportPlan BuildPlanFromOpenXml(string path)
|
||||||
|
{
|
||||||
|
using var archive = ZipFile.OpenRead(path);
|
||||||
|
var entry = archive.GetEntry("word/document.xml") ?? throw new InvalidDataException("Source DOCX document.xml is missing.");
|
||||||
|
using var reader = new StreamReader(entry.Open());
|
||||||
|
var document = XDocument.Parse(reader.ReadToEnd(), LoadOptions.PreserveWhitespace);
|
||||||
|
var w = XNamespace.Get("http://schemas.openxmlformats.org/wordprocessingml/2006/main");
|
||||||
|
var wp = XNamespace.Get("http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing");
|
||||||
|
var body = document.Root?.Element(w + "body") ?? throw new InvalidDataException("Source DOCX body is missing.");
|
||||||
|
var sectionMarks = body.Descendants(w + "sectPr").ToList();
|
||||||
|
var internalSections = Math.Max(0, sectionMarks.Count - 1);
|
||||||
|
var pageBreaks = body.Descendants(w + "br").Count(x => string.Equals((string?)x.Attribute(w + "type"), "page", StringComparison.OrdinalIgnoreCase));
|
||||||
|
return new BodyImportPlan
|
||||||
|
{
|
||||||
|
ParagraphCount = body.Descendants(w + "p").Count(),
|
||||||
|
TableCount = body.Descendants(w + "tbl").Count(),
|
||||||
|
InlineShapeCount = body.Descendants(wp + "inline").Count(),
|
||||||
|
FloatingShapeCount = body.Descendants(wp + "anchor").Count(),
|
||||||
|
InternalSectionBreakCount = internalSections,
|
||||||
|
PageBreakCount = pageBreaks,
|
||||||
|
IncludedStories = ["wdMainTextStory"],
|
||||||
|
ExcludedStories = ["wdPrimaryHeaderStory", "wdFirstPageHeaderStory", "wdEvenPagesHeaderStory", "wdPrimaryFooterStory", "wdFirstPageFooterStory", "wdEvenPagesFooterStory"],
|
||||||
|
Warnings = []
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void NormalizeSourceSections(string path, SectionBreakPolicy policy)
|
||||||
|
{
|
||||||
|
if (policy == SectionBreakPolicy.ConvertToParagraph) policy = SectionBreakPolicy.Remove;
|
||||||
|
using var archive = ZipFile.Open(path, ZipArchiveMode.Update); var entry = archive.GetEntry("word/document.xml") ?? throw new InvalidDataException("Source DOCX document.xml is missing."); string xml; using (var reader = new StreamReader(entry.Open())) xml = reader.ReadToEnd(); var w = XNamespace.Get("http://schemas.openxmlformats.org/wordprocessingml/2006/main"); var document = XDocument.Parse(xml, LoadOptions.PreserveWhitespace); var body = document.Root?.Element(w + "body") ?? throw new InvalidDataException("Source DOCX body is missing."); var sections = body.Descendants(w + "sectPr").ToList(); for (var i = 0; i < sections.Count; i++) { var section = sections[i]; var parent = section.Parent; var paragraph = parent?.Name == w + "pPr" ? parent.Parent : null; section.Remove(); if (i < sections.Count - 1 && policy == SectionBreakPolicy.ConvertToPageBreak && paragraph is not null) paragraph.Add(new XElement(w + "r", new XElement(w + "br", new XAttribute(w + "type", "page")))); } entry.Delete(); var replacement = archive.CreateEntry("word/document.xml", CompressionLevel.Optimal); using var stream = replacement.Open(); using var writer = new StreamWriter(stream, new UTF8Encoding(false)); document.Save(writer, SaveOptions.DisableFormatting);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void RemoveImportedComments(dynamic range) { try { dynamic comments = range.Comments; for (var i = comments.Count; i >= 1; i--) comments[i].Delete(); } catch { } }
|
||||||
|
private static int TryCount(dynamic collection) { try { return (int)collection.Count; } catch { return 0; } }
|
||||||
|
private static T? Own<T>(T? value, List<object?> proxies) where T : class { if (value is not null) proxies.Add(value); return value; }
|
||||||
|
private static void Release(object? value) { try { if (value is not null && Marshal.IsComObject(value)) Marshal.FinalReleaseComObject(value); } catch { } }
|
||||||
|
private static void ReleaseAll(IEnumerable<object?> values) { foreach (var value in values.Reverse()) Release(value); }
|
||||||
|
private static void TryDelete(string path) { try { if (Directory.Exists(path)) Directory.Delete(path, true); } catch { } }
|
||||||
|
public void Dispose() { if (_ownsQueue) _queue.Dispose(); }
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0-windows</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\DocumentAutomation.Shared\DocumentAutomation.Shared.csproj" />
|
||||||
|
<ProjectReference Include="..\DocxWorkbench.Core\DocxWorkbench.Core.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
|
||||||
|
[assembly: InternalsVisibleTo("DocxWorkbench.Tests")]
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
using System.Collections.Concurrent;
|
||||||
|
|
||||||
|
namespace DocxWorkbench.WordInterop;
|
||||||
|
|
||||||
|
internal sealed class StaWordQueue : IDisposable
|
||||||
|
{
|
||||||
|
private readonly BlockingCollection<Action> _jobs = new();
|
||||||
|
private readonly Thread _thread;
|
||||||
|
private readonly ManualResetEventSlim _stopped = new(false);
|
||||||
|
private readonly object _lifetimeGate = new();
|
||||||
|
private bool _accepting = true;
|
||||||
|
|
||||||
|
public StaWordQueue()
|
||||||
|
{
|
||||||
|
_thread = new Thread(Run) { IsBackground = true, Name = "DocumentAutomation.Word.STA" };
|
||||||
|
_thread.SetApartmentState(ApartmentState.STA);
|
||||||
|
_thread.Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task<T> Enqueue<T>(Func<T> operation, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
if (operation is null) throw new ArgumentNullException(nameof(operation));
|
||||||
|
if (cancellationToken.IsCancellationRequested) return Task.FromCanceled<T>(cancellationToken);
|
||||||
|
var completion = new TaskCompletionSource<T>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||||
|
lock (_lifetimeGate)
|
||||||
|
{
|
||||||
|
if (!_accepting) throw new ObjectDisposedException(nameof(StaWordQueue));
|
||||||
|
try { _jobs.Add(() => Execute(operation, completion, cancellationToken), cancellationToken); }
|
||||||
|
catch (InvalidOperationException) { throw new ObjectDisposedException(nameof(StaWordQueue)); }
|
||||||
|
catch (OperationCanceledException) { completion.TrySetCanceled(cancellationToken); }
|
||||||
|
}
|
||||||
|
return completion.Task;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Execute<T>(Func<T> operation, TaskCompletionSource<T> completion, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
try { cancellationToken.ThrowIfCancellationRequested(); completion.TrySetResult(operation()); }
|
||||||
|
catch (OperationCanceledException ex) { completion.TrySetCanceled(ex.CancellationToken); }
|
||||||
|
catch (Exception ex) { completion.TrySetException(ex); }
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Run()
|
||||||
|
{
|
||||||
|
try { foreach (var job in _jobs.GetConsumingEnumerable()) job(); }
|
||||||
|
finally { _stopped.Set(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
lock (_lifetimeGate)
|
||||||
|
{
|
||||||
|
if (!_accepting) return;
|
||||||
|
_accepting = false;
|
||||||
|
_jobs.CompleteAdding();
|
||||||
|
}
|
||||||
|
if (Thread.CurrentThread != _thread) _stopped.Wait(TimeSpan.FromSeconds(30));
|
||||||
|
// Do not dispose the collection or stop event while the STA worker may
|
||||||
|
// still be draining it. The worker owns the final enumeration lifetime.
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
using System.IO.Compression;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Xml.Linq;
|
||||||
|
using DocumentAutomation.Shared;
|
||||||
|
using DocxWorkbench.Core;
|
||||||
|
|
||||||
|
namespace DocxWorkbench.WordInterop;
|
||||||
|
|
||||||
|
public sealed class TemplateDocumentGenerator : ITemplateDocumentGenerator, IDisposable
|
||||||
|
{
|
||||||
|
private readonly ITemplatePackageStore _packages;
|
||||||
|
private readonly IWordDocumentNormalizer _normalizer;
|
||||||
|
private readonly WordDocumentService _word = new();
|
||||||
|
private readonly IDocumentInspector _inspector;
|
||||||
|
public TemplateDocumentGenerator(ITemplatePackageStore packages, IWordDocumentNormalizer normalizer, IDocumentInspector inspector) { _packages = packages; _normalizer = normalizer; _inspector = inspector; }
|
||||||
|
|
||||||
|
public async Task<TemplateGenerationResult> GenerateAsync(TemplateGenerationRequest request, IProgress<WordOperationProgress>? progress, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
var opened = _packages.Open(request.TemplatePackagePath); DocumentNormalizationResult? normalizedBody = null; var outputPdf = Path.ChangeExtension(request.OutputDocxPath, ".pdf");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var bodyPath = request.ContentSourcePath;
|
||||||
|
if (Path.GetExtension(bodyPath).Equals(".doc", StringComparison.OrdinalIgnoreCase)) { normalizedBody = await _normalizer.NormalizeAsync(new DocumentNormalizationRequest { SourcePath = bodyPath, WorkingDirectory = Path.Combine(opened.WorkingDirectory, "body") }, progress, cancellationToken); bodyPath = normalizedBody.NormalizedPath; }
|
||||||
|
var workingTemplate = Path.Combine(opened.WorkingDirectory, "working-template.docx"); File.Copy(opened.TemplateDocxPath, workingTemplate, true); ReplaceScalarTokens(workingTemplate, request.ScalarValues); progress?.Report(new WordOperationProgress { Stage = "Generate", Message = "Building document from learned template" });
|
||||||
|
var result = await _word.BuildDocumentAsync(new WordDocumentBuildRequest { TemplatePath = workingTemplate, BodyPath = bodyPath, OutputDocxPath = request.OutputDocxPath }, progress is null ? null : new Progress<string>(x => progress.Report(new WordOperationProgress { Stage = "Generate", Message = x })), cancellationToken); await _word.ExportPdfAsync(result.OutputDocxPath, outputPdf, cancellationToken);
|
||||||
|
var validation = Validate(result.OutputDocxPath, opened.Template.TemplateId); var validationPath = Path.ChangeExtension(request.OutputDocxPath, ".validation.json"); File.WriteAllText(validationPath, JsonSerializer.Serialize(validation, new JsonSerializerOptions { WriteIndented = true })); return new TemplateGenerationResult { OutputDocxPath = result.OutputDocxPath, OutputPdfPath = outputPdf, GenerationLogPath = result.LogPath, ValidationLogPath = validationPath, Validation = validation };
|
||||||
|
}
|
||||||
|
finally { TryDeleteDirectory(opened.WorkingDirectory); }
|
||||||
|
}
|
||||||
|
|
||||||
|
private IReadOnlyList<RuleEvaluationResult> Validate(string output, string templateId)
|
||||||
|
{
|
||||||
|
var inspection = _inspector.Inspect(output); var result = new List<RuleEvaluationResult> { new() { RuleId = "DOCX_EXISTS", Status = File.Exists(output) ? RuleEvaluationStatus.Pass : RuleEvaluationStatus.Fail, Message = "Output DOCX exists.", DocumentLocation = output }, new() { RuleId = "NO_BODY_MARKER", Status = inspection.InsertionPoint.Type == "None" ? RuleEvaluationStatus.Pass : RuleEvaluationStatus.NeedsReview, Message = inspection.InsertionPoint.Type == "None" ? "No unresolved insertion marker remains." : "An insertion marker remains in the output.", DocumentLocation = "word/document.xml" }, new() { RuleId = "NO_TRACKED_CHANGES", Status = inspection.HasTrackedChanges ? RuleEvaluationStatus.Fail : RuleEvaluationStatus.Pass, Message = inspection.HasTrackedChanges ? "Tracked changes remain." : "No tracked changes detected." }, new() { RuleId = "TEMPLATE_ID", Status = RuleEvaluationStatus.Pass, Message = $"Generated from template {templateId}." } }; return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ReplaceScalarTokens(string path, IReadOnlyDictionary<string, string> values)
|
||||||
|
{
|
||||||
|
if (values.Count == 0) return; using var archive = ZipFile.Open(path, ZipArchiveMode.Update); var w = XNamespace.Get("http://schemas.openxmlformats.org/wordprocessingml/2006/main");
|
||||||
|
foreach (var entry in archive.Entries.Where(x => x.FullName.StartsWith("word/", StringComparison.OrdinalIgnoreCase) && x.FullName.EndsWith(".xml", StringComparison.OrdinalIgnoreCase)).ToArray())
|
||||||
|
{
|
||||||
|
XDocument document; using (var reader = new StreamReader(entry.Open())) document = XDocument.Parse(reader.ReadToEnd(), LoadOptions.PreserveWhitespace); var changed = false; foreach (var text in document.Descendants(w + "t")) { var value = text.Value; foreach (var pair in values) { var token = "{{" + pair.Key + "}}"; if (!value.Contains(token, StringComparison.OrdinalIgnoreCase)) continue; value = value.Replace(token, pair.Value, StringComparison.OrdinalIgnoreCase); changed = true; } text.Value = value; } if (!changed) continue; entry.Delete(); var replacement = archive.CreateEntry(entry.FullName, CompressionLevel.Optimal); using var stream = replacement.Open(); using var writer = new StreamWriter(stream, new UTF8Encoding(false)); document.Save(writer, SaveOptions.DisableFormatting);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void TryDeleteDirectory(string path) { try { if (Directory.Exists(path)) Directory.Delete(path, true); } catch { } }
|
||||||
|
public void Dispose() { _word.Dispose(); if (_normalizer is IDisposable disposable) disposable.Dispose(); }
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
using System.Diagnostics;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using DocumentAutomation.Shared;
|
||||||
|
using DocxWorkbench.Core;
|
||||||
|
|
||||||
|
namespace DocxWorkbench.WordInterop;
|
||||||
|
|
||||||
|
public sealed class WordDocumentNormalizer : IWordDocumentNormalizer, IDisposable
|
||||||
|
{
|
||||||
|
private readonly StaWordQueue _queue;
|
||||||
|
public WordDocumentNormalizer() : this(new StaWordQueue(), true) { }
|
||||||
|
internal WordDocumentNormalizer(StaWordQueue queue) : this(queue, false) { }
|
||||||
|
private readonly bool _ownsQueue;
|
||||||
|
private WordDocumentNormalizer(StaWordQueue queue, bool ownsQueue) { _queue = queue; _ownsQueue = ownsQueue; }
|
||||||
|
|
||||||
|
public Task<DocumentNormalizationResult> NormalizeAsync(DocumentNormalizationRequest request, IProgress<WordOperationProgress>? progress, CancellationToken cancellationToken)
|
||||||
|
=> _queue.Enqueue(() => NormalizeOnSta(request, progress, cancellationToken), cancellationToken);
|
||||||
|
|
||||||
|
private static DocumentNormalizationResult NormalizeOnSta(DocumentNormalizationRequest request, IProgress<WordOperationProgress>? progress, CancellationToken token)
|
||||||
|
{
|
||||||
|
if (!File.Exists(request.SourcePath)) throw new FileNotFoundException("Document source was not found.", request.SourcePath);
|
||||||
|
var extension = Path.GetExtension(request.SourcePath);
|
||||||
|
if (!extension.Equals(".doc", StringComparison.OrdinalIgnoreCase) && !extension.Equals(".docx", StringComparison.OrdinalIgnoreCase)) throw new UnsupportedDocumentFormatException("Template source must be DOC or DOCX.");
|
||||||
|
var started = Stopwatch.StartNew(); var sourceHash = Hash(request.SourcePath); var work = Path.GetFullPath(request.WorkingDirectory); Directory.CreateDirectory(work); var normalized = Path.Combine(work, "normalized.docx"); token.ThrowIfCancellationRequested();
|
||||||
|
if (extension.Equals(".docx", StringComparison.OrdinalIgnoreCase)) { File.Copy(request.SourcePath, normalized, true); return new DocumentNormalizationResult { SourcePath = request.SourcePath, NormalizedPath = normalized, SourceSha256 = sourceHash, NormalizedSha256 = Hash(normalized), WasConverted = false, Duration = started.Elapsed }; }
|
||||||
|
dynamic? application = null; dynamic? documents = null; dynamic? document = null; var proxies = new List<object?>();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
progress?.Report(new WordOperationProgress { Stage = "NormalizeDoc", Message = "Opening binary DOC read-only" }); var wordType = Type.GetTypeFromProgID("Word.Application", false) ?? throw new WordNotInstalledException("Microsoft Word is not installed or is not registered in COM."); application = Own(Activator.CreateInstance(wordType), proxies) ?? throw new WordAutomationException("Could not create Word.Application."); application.Visible = false; application.DisplayAlerts = 0; if (request.DisableMacros) { try { application.AutomationSecurity = 3; } catch { } } documents = Own(application.Documents, proxies); document = Own(documents.Open(request.SourcePath, false, true, false), proxies) ?? throw new WordAutomationException("Word could not open the DOC source read-only."); token.ThrowIfCancellationRequested(); progress?.Report(new WordOperationProgress { Stage = "NormalizeDoc", Message = "Saving temporary DOCX" }); document.SaveAs2(normalized, 12); int? pageCount = null; try { document.Repaginate(); pageCount = (int)document.ComputeStatistics(2); } catch { } document.Close(0); document = null; return new DocumentNormalizationResult { SourcePath = request.SourcePath, NormalizedPath = normalized, SourceSha256 = sourceHash, NormalizedSha256 = Hash(normalized), WasConverted = true, Duration = started.Elapsed, PageCount = pageCount };
|
||||||
|
}
|
||||||
|
catch (WordNotInstalledException) { throw; }
|
||||||
|
catch (WordAutomationException) { throw; }
|
||||||
|
catch (Exception ex) { throw new WordAutomationException("DOC normalization failed.", ex); }
|
||||||
|
finally { try { if (document is not null) document.Close(0); } catch { } try { if (application is not null) application.Quit(0); } catch { } ReleaseAll(proxies); }
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string Hash(string path) => Convert.ToHexString(SHA256.HashData(File.ReadAllBytes(path)));
|
||||||
|
private static T? Own<T>(T? value, List<object?> proxies) where T : class { if (value is not null) proxies.Add(value); return value; }
|
||||||
|
private static void ReleaseAll(IEnumerable<object?> proxies) { foreach (var value in proxies.Reverse()) try { if (value is not null && Marshal.IsComObject(value)) Marshal.FinalReleaseComObject(value); } catch { } }
|
||||||
|
public void Dispose() { if (_ownsQueue) _queue.Dispose(); }
|
||||||
|
}
|
||||||
@@ -0,0 +1,132 @@
|
|||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO.Compression;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Xml.Linq;
|
||||||
|
using DocumentAutomation.Shared;
|
||||||
|
using DocxWorkbench.Core;
|
||||||
|
|
||||||
|
namespace DocxWorkbench.WordInterop;
|
||||||
|
|
||||||
|
public sealed class WordNotInstalledException(string message) : InvalidOperationException(message);
|
||||||
|
public sealed class WordAutomationException(string message, Exception? inner = null) : InvalidOperationException(message, inner);
|
||||||
|
|
||||||
|
public sealed class WordDocumentService : IWordDocumentService, IDisposable
|
||||||
|
{
|
||||||
|
private readonly StaWordQueue _queue = new();
|
||||||
|
private readonly DocxBodyImporter _bodyImporter;
|
||||||
|
public WordDocumentService() => _bodyImporter = new DocxBodyImporter(_queue);
|
||||||
|
|
||||||
|
public Task<WordDocumentResult> BuildDocumentAsync(WordDocumentBuildRequest request, IProgress<string>? progress, CancellationToken cancellationToken)
|
||||||
|
=> _queue.Enqueue(() => BuildOnSta(request, progress, cancellationToken), cancellationToken);
|
||||||
|
|
||||||
|
public Task<WordPreviewResult> ExportPdfAsync(string docxPath, string outputPdfPath, CancellationToken cancellationToken)
|
||||||
|
=> _queue.Enqueue(() => ExportPdfOnSta(docxPath, outputPdfPath, cancellationToken), cancellationToken);
|
||||||
|
|
||||||
|
private WordDocumentResult BuildOnSta(WordDocumentBuildRequest request, IProgress<string>? progress, CancellationToken token)
|
||||||
|
{
|
||||||
|
DocumentInputValidation.Validate(request);
|
||||||
|
if (!request.BodyPath.EndsWith(".docx", StringComparison.OrdinalIgnoreCase) && !request.BodyPath.EndsWith(".txt", StringComparison.OrdinalIgnoreCase)) throw new UnsupportedDocumentFormatException($"Unsupported body format: {Path.GetExtension(request.BodyPath)}. Use DOCX or TXT.");
|
||||||
|
var insertion = TemplateInsertionPointReader.Find(request.TemplatePath);
|
||||||
|
if (insertion.Type == "None") throw new WordAutomationException("No DOC_BODY insertion point was found. Add a DOC_BODY content control, DOC_BODY bookmark, or {{DOC_BODY}} marker.");
|
||||||
|
var started = Stopwatch.StartNew(); var temp = Path.Combine(Path.GetTempPath(), "DocumentAutomation", Guid.NewGuid().ToString("N")); Directory.CreateDirectory(temp); var workingTemplate = Path.Combine(temp, "template.docx"); var stagedOutput = Path.Combine(temp, "result.docx"); File.Copy(request.TemplatePath, workingTemplate, true);
|
||||||
|
dynamic? application = null; dynamic? documents = null; dynamic? document = null; dynamic? range = null; var proxies = new List<object?>(); int? wordPid = null; BodyImportResult? bodyImport = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
token.ThrowIfCancellationRequested(); progress?.Report("Checking Word.Application COM registration"); var wordType = Type.GetTypeFromProgID("Word.Application", false) ?? throw new WordNotInstalledException("Microsoft Word is not installed or is not registered in COM."); application = Own(Activator.CreateInstance(wordType), proxies) ?? throw new WordAutomationException("Could not create Word.Application."); application.Visible = false; application.DisplayAlerts = 0; TrySetAutomationSecurity(application); wordPid = TryGetPid(application); progress?.Report($"Word COM started (PID {wordPid?.ToString() ?? "unknown"})");
|
||||||
|
documents = Own(application.Documents, proxies); document = Own(documents.Open(workingTemplate, false, false, false), proxies) ?? throw new WordAutomationException("Word could not open the working template copy.");
|
||||||
|
range = Own(FindInsertionRange(document, insertion.Type, proxies), proxies) ?? throw new WordAutomationException("The insertion point disappeared while opening the template.");
|
||||||
|
token.ThrowIfCancellationRequested(); progress?.Report($"Inserting {Path.GetExtension(request.BodyPath).ToUpperInvariant()} body"); if (request.BodyPath.EndsWith(".txt", StringComparison.OrdinalIgnoreCase)) range.Text = File.ReadAllText(request.BodyPath).Replace("\r\n", "\r").Replace('\n', '\r'); else bodyImport = _bodyImporter.ImportOnSta(application, document, range, new DocxBodyImportRequest { SourcePath = request.BodyPath, DestinationRangeHandle = range }, progress is null ? null : new Progress<WordOperationProgress>(x => progress.Report(x.Message ?? x.Stage)), token, proxies);
|
||||||
|
token.ThrowIfCancellationRequested(); progress?.Report("Updating fields and pagination"); document.Repaginate(); document.Fields.Update(); UpdateHeadersFooters(document, proxies); document.SaveAs2(stagedOutput, 12); document.Close(0); document = null; RemoveUnreferencedHeaderFooterParts(stagedOutput); CommitOutput(stagedOutput, request.OutputDocxPath);
|
||||||
|
var logPath = Path.ChangeExtension(request.OutputDocxPath, ".generation.json"); File.WriteAllText(logPath, JsonSerializer.Serialize(new { operationId = Guid.NewGuid(), operationType = "BuildDocument", startedAtUtc = DateTime.UtcNow.Subtract(started.Elapsed), completedAtUtc = DateTime.UtcNow, template = request.TemplatePath, templateSha256 = Hash(request.TemplatePath), templateVersion = "1.0", body = request.BodyPath, sourceSha256 = Hash(request.BodyPath), output = request.OutputDocxPath, resultSha256 = Hash(request.OutputDocxPath), insertionPoint = insertion.Type, wordPid, staThread = Thread.CurrentThread.ManagedThreadId, staApartment = Thread.CurrentThread.GetApartmentState().ToString(), durationMs = started.ElapsedMilliseconds, status = "Succeeded", errorCode = (string?)null }, new JsonSerializerOptions { WriteIndented = true }));
|
||||||
|
return new WordDocumentResult { OutputDocxPath = request.OutputDocxPath, LogPath = logPath, Duration = started.Elapsed, InsertionPoint = insertion.Type, BodyImport = bodyImport };
|
||||||
|
}
|
||||||
|
catch (WordNotInstalledException) { throw; }
|
||||||
|
catch (WordAutomationException) { throw; }
|
||||||
|
catch (Exception ex) when (ex is not OperationCanceledException) { throw new WordAutomationException("Word automation failed. See technical details in the operation log.", ex); }
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
try { if (document is not null) document.Close(0); } catch { }
|
||||||
|
try { if (application is not null) application.Quit(0); } catch { }
|
||||||
|
ReleaseAll(proxies); TryDeleteDirectory(temp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static WordPreviewResult ExportPdfOnSta(string docxPath, string outputPdfPath, CancellationToken token)
|
||||||
|
{
|
||||||
|
if (!File.Exists(docxPath)) throw new FileNotFoundException("DOCX was not found.", docxPath); Directory.CreateDirectory(Path.GetDirectoryName(Path.GetFullPath(outputPdfPath))!); var sw = Stopwatch.StartNew(); dynamic? application = null; dynamic? documents = null; dynamic? document = null; var proxies = new List<object?>();
|
||||||
|
try { token.ThrowIfCancellationRequested(); var wordType = Type.GetTypeFromProgID("Word.Application", false) ?? throw new WordNotInstalledException("Microsoft Word is not installed or is not registered in COM."); application = Own(Activator.CreateInstance(wordType), proxies) ?? throw new WordAutomationException("Could not create Word.Application."); application.Visible = false; application.DisplayAlerts = 0; TrySetAutomationSecurity(application); documents = Own(application.Documents, proxies); document = Own(documents.Open(docxPath, true, false, false), proxies) ?? throw new WordAutomationException("Word could not open the DOCX."); document.ExportAsFixedFormat(outputPdfPath, 17); return new WordPreviewResult { PdfPath = outputPdfPath, Duration = sw.Elapsed }; }
|
||||||
|
catch (WordNotInstalledException) { throw; }
|
||||||
|
catch (WordAutomationException) { throw; }
|
||||||
|
catch (Exception ex) when (ex is not OperationCanceledException) { throw new WordAutomationException("PDF export through Word failed.", ex); }
|
||||||
|
finally { try { if (document is not null) document.Close(0); } catch { } try { if (application is not null) application.Quit(0); } catch { } ReleaseAll(proxies); }
|
||||||
|
}
|
||||||
|
|
||||||
|
private static dynamic? FindInsertionRange(dynamic document, string type, List<object?> proxies)
|
||||||
|
{
|
||||||
|
if (type == "ContentControl") { dynamic controls = Own(document.ContentControls, proxies); for (var i = 1; i <= controls.Count; i++) { dynamic control = Own(controls[i], proxies); if (string.Equals((string?)control.Tag, "DOC_BODY", StringComparison.OrdinalIgnoreCase) || string.Equals((string?)control.Title, "DOC_BODY", StringComparison.OrdinalIgnoreCase)) return control.Range; } }
|
||||||
|
if (type == "Bookmark") return document.Bookmarks["DOC_BODY"].Range;
|
||||||
|
dynamic search = Own(document.Content, proxies); search.Find.ClearFormatting(); search.Find.Text = "{{DOC_BODY}}"; if (search.Find.Execute()) { search.Text = ""; return search; } return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void UpdateHeadersFooters(dynamic document, List<object?> proxies)
|
||||||
|
{
|
||||||
|
dynamic sections = Own(document.Sections, proxies); for (var i = 1; i <= sections.Count; i++) { dynamic section = Own(sections[i], proxies); UpdateCollection(section.Headers, proxies); UpdateCollection(section.Footers, proxies); }
|
||||||
|
void UpdateCollection(dynamic collection, List<object?> proxies) { dynamic owned = WordDocumentService.Own(collection, proxies); for (var i = 1; i <= owned.Count; i++) { dynamic item = WordDocumentService.Own(owned[i], proxies); dynamic range = WordDocumentService.Own(item.Range, proxies); range.Fields.Update(); } }
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void TrySetAutomationSecurity(dynamic application) { try { application.AutomationSecurity = 3; application.ScreenUpdating = false; } catch { } }
|
||||||
|
private static int? TryGetPid(dynamic application) { try { return Process.GetProcessById((int)application.Hwnd).Id; } catch { return null; } }
|
||||||
|
private static T? Own<T>(T? value, List<object?> proxies) where T : class { if (value is not null) proxies.Add(value); return value; }
|
||||||
|
private static void ReleaseAll(IEnumerable<object?> proxies) { foreach (var proxy in proxies.Reverse()) try { if (proxy is not null && Marshal.IsComObject(proxy)) Marshal.FinalReleaseComObject(proxy); } catch { } }
|
||||||
|
private static string Hash(string path) => Convert.ToHexString(SHA256.HashData(File.ReadAllBytes(path)));
|
||||||
|
private static void CommitOutput(string staged, string output) { var full = Path.GetFullPath(output); if (File.Exists(full)) File.Copy(full, full + ".bak-" + DateTime.UtcNow.ToString("yyyyMMddHHmmss"), true); File.Copy(staged, full, true); }
|
||||||
|
private static void RemoveUnreferencedHeaderFooterParts(string path)
|
||||||
|
{
|
||||||
|
using var archive = ZipFile.Open(path, ZipArchiveMode.Update);
|
||||||
|
var documentEntry = archive.GetEntry("word/document.xml");
|
||||||
|
var relsEntry = archive.GetEntry("word/_rels/document.xml.rels");
|
||||||
|
if (documentEntry is null || relsEntry is null) return;
|
||||||
|
XDocument document;
|
||||||
|
XDocument relationships;
|
||||||
|
using (var reader = new StreamReader(documentEntry.Open())) document = XDocument.Parse(reader.ReadToEnd(), LoadOptions.PreserveWhitespace);
|
||||||
|
using (var reader = new StreamReader(relsEntry.Open())) relationships = XDocument.Parse(reader.ReadToEnd(), LoadOptions.PreserveWhitespace);
|
||||||
|
var w = XNamespace.Get("http://schemas.openxmlformats.org/wordprocessingml/2006/main");
|
||||||
|
var rel = XNamespace.Get("http://schemas.openxmlformats.org/package/2006/relationships");
|
||||||
|
var used = document.Descendants(w + "headerReference").Concat(document.Descendants(w + "footerReference")).Select(x => (string?)x.Attribute(XNamespace.Get("http://schemas.openxmlformats.org/officeDocument/2006/relationships") + "id")).Where(x => x is not null).ToHashSet(StringComparer.Ordinal);
|
||||||
|
var removedTargets = new List<string>();
|
||||||
|
foreach (var relationship in relationships.Root?.Elements(rel + "Relationship").ToList() ?? [])
|
||||||
|
{
|
||||||
|
var type = (string?)relationship.Attribute("Type") ?? string.Empty;
|
||||||
|
var id = (string?)relationship.Attribute("Id");
|
||||||
|
if (id is null || (!type.EndsWith("/header", StringComparison.OrdinalIgnoreCase) && !type.EndsWith("/footer", StringComparison.OrdinalIgnoreCase)) || used.Contains(id)) continue;
|
||||||
|
var target = (string?)relationship.Attribute("Target");
|
||||||
|
if (!string.IsNullOrWhiteSpace(target)) removedTargets.Add(ResolveWordPart(target));
|
||||||
|
relationship.Remove();
|
||||||
|
}
|
||||||
|
foreach (var target in removedTargets.Distinct(StringComparer.OrdinalIgnoreCase)) archive.GetEntry(target)?.Delete();
|
||||||
|
relsEntry.Delete();
|
||||||
|
var replacement = archive.CreateEntry("word/_rels/document.xml.rels", CompressionLevel.Optimal);
|
||||||
|
using var stream = replacement.Open();
|
||||||
|
using var writer = new StreamWriter(stream, new UTF8Encoding(false));
|
||||||
|
relationships.Save(writer, SaveOptions.DisableFormatting);
|
||||||
|
}
|
||||||
|
private static string ResolveWordPart(string target) => target.StartsWith("/", StringComparison.Ordinal) ? target.TrimStart('/') : "word/" + target.Replace("\\", "/").TrimStart("./".ToCharArray());
|
||||||
|
private static void TryDeleteDirectory(string path) { try { if (Directory.Exists(path)) Directory.Delete(path, true); } catch { } }
|
||||||
|
public void Dispose() => _queue.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static class TemplateInsertionPointReader
|
||||||
|
{
|
||||||
|
public static InsertionPointInfo Find(string docxPath)
|
||||||
|
{
|
||||||
|
using var archive = ZipFile.OpenRead(docxPath); var entry = archive.GetEntry("word/document.xml") ?? throw new InvalidDataException("DOCX document.xml is missing."); using var reader = new StreamReader(entry.Open()); var xml = reader.ReadToEnd();
|
||||||
|
if (Regex.IsMatch(xml, @"w:tag[^>]+w:val=""DOC_BODY""", RegexOptions.IgnoreCase)) return new InsertionPointInfo { Type = "ContentControl", Location = "word/document.xml" };
|
||||||
|
if (Regex.IsMatch(xml, @"w:bookmarkStart[^>]+w:name=""DOC_BODY""", RegexOptions.IgnoreCase)) return new InsertionPointInfo { Type = "Bookmark", Location = "word/document.xml" };
|
||||||
|
if (xml.Contains("{{DOC_BODY}}", StringComparison.Ordinal)) return new InsertionPointInfo { Type = "TextMarker", Location = "word/document.xml" };
|
||||||
|
return new InsertionPointInfo { Type = "None" };
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
using System.Text.Json;
|
||||||
|
using StandardsWorkbench.Core;
|
||||||
|
using StandardsWorkbench.Ollama;
|
||||||
|
using StandardsWorkbench.Pdf;
|
||||||
|
|
||||||
|
namespace StandardsWorkbench.App;
|
||||||
|
|
||||||
|
public sealed class MainForm : Form
|
||||||
|
{
|
||||||
|
private readonly TextBox _pdf = new() { Width = 560 }; private readonly TextBox _code = new() { Width = 240, Text = "ГОСТ Р 21.101-2026" }; private readonly TextBox _title = new() { Width = 560, Text = "Нормативный документ" }; private readonly TextBox _log = new() { Multiline = true, Dock = DockStyle.Fill, ScrollBars = ScrollBars.Vertical }; private readonly ListBox _candidates = new() { Dock = DockStyle.Fill }; private readonly Label _status = new() { AutoSize = true, Text = "Готово" }; private readonly IStandardPdfService _service = new PdfStandardService(); private StandardMetadata? _metadata; private List<CandidateRule> _rules = [];
|
||||||
|
public MainForm()
|
||||||
|
{
|
||||||
|
Text = "Standards Workbench"; Width = 900; Height = 620; var top = new TableLayoutPanel { Dock = DockStyle.Top, Height = 150, ColumnCount = 3, RowCount = 4, Padding = new Padding(8) }; top.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 120)); top.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100)); top.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 110)); Add(top, 0, "Стандарт PDF", _pdf, Browse); Add(top, 1, "Код", _code, null); Add(top, 2, "Название", _title, null); var buttons = new FlowLayoutPanel { Dock = DockStyle.Fill }; buttons.Controls.Add(Button("Анализировать PDF", async (_, _) => await ImportAsync())); buttons.Controls.Add(Button("Утвердить выбранное", (_, _) => SetSelectedStatus("Approved"))); buttons.Controls.Add(Button("Отклонить выбранное", (_, _) => SetSelectedStatus("Rejected"))); buttons.Controls.Add(Button("Экспортировать профиль", (_, _) => ExportProfile())); top.Controls.Add(buttons, 1, 3); top.SetColumnSpan(buttons, 2); var tabs = new TabControl { Dock = DockStyle.Fill }; foreach (var t in new[] { "Документ", "Страницы", "Пункты", "Кандидаты правил", "Профили", "Сравнение", "Журнал" }) { var p = new TabPage(t); if (t == "Журнал") p.Controls.Add(_log); if (t == "Кандидаты правил") p.Controls.Add(_candidates); tabs.TabPages.Add(p); } Controls.Add(tabs); Controls.Add(top); Controls.Add(_status); _status.Dock = DockStyle.Bottom;
|
||||||
|
}
|
||||||
|
private static void Add(TableLayoutPanel p, int row, string label, TextBox box, EventHandler? browse) { p.Controls.Add(new Label { Text = label, AutoSize = true }, 0, row); p.Controls.Add(box, 1, row); if (browse is not null) { var b = new Button { Text = "Обзор..." }; b.Click += browse; p.Controls.Add(b, 2, row); } }
|
||||||
|
private static Button Button(string text, EventHandler e) { var b = new Button { Text = text, AutoSize = true }; b.Click += e; return b; }
|
||||||
|
private void Browse(object? s, EventArgs e) { using var d = new OpenFileDialog { Filter = "PDF|*.pdf" }; if (d.ShowDialog() == DialogResult.OK) _pdf.Text = d.FileName; }
|
||||||
|
private async Task ImportAsync() { try { _status.Text = "Анализ PDF..."; var result = await _service.ImportAsync(_pdf.Text, _code.Text, _title.Text, CancellationToken.None); _metadata = result.Metadata; _rules = result.Clauses.Select(c => new CandidateRule { CandidateId = Guid.NewGuid().ToString("N"), StandardId = c.StandardId, ClauseId = c.ClauseId, SourcePage = c.StartPage, SourceText = c.Text, Title = c.Heading.Length > 0 ? c.Heading : $"Кандидат по пункту {c.ClauseId}", RequiresHumanApproval = true }).ToList(); RefreshCandidates(); _log.AppendText(JsonSerializer.Serialize(new { result.Metadata, result.Pages, result.Clauses }, new JsonSerializerOptions { WriteIndented = true }) + Environment.NewLine); _status.Text = $"Готово: {result.Pages.Count} страниц, {result.Clauses.Count} пунктов"; } catch (Exception ex) { _log.AppendText(ex + Environment.NewLine); _status.Text = "Ошибка"; MessageBox.Show(ex.Message); } }
|
||||||
|
private void RefreshCandidates() { _candidates.Items.Clear(); foreach (var rule in _rules) _candidates.Items.Add($"[{rule.Status}] {rule.ClauseId} стр.{rule.SourcePage}: {rule.Title}"); }
|
||||||
|
private void SetSelectedStatus(string status) { if (_candidates.SelectedIndex < 0 || _candidates.SelectedIndex >= _rules.Count) return; _rules[_candidates.SelectedIndex] = _rules[_candidates.SelectedIndex] with { Status = status }; RefreshCandidates(); }
|
||||||
|
private void ExportProfile() { if (_metadata is null) { MessageBox.Show("Сначала импортируйте PDF."); return; } using var dialog = new FolderBrowserDialog(); if (dialog.ShowDialog() != DialogResult.OK) return; var profile = new ApprovedRulesProfile { StandardId = _metadata.StandardId, Code = _metadata.Code, Revision = _metadata.Revision, SourceFileSha256 = _metadata.SourceFileSha256, Rules = _rules.Where(r => r.Status == "Approved").ToArray() }; var path = Path.Combine(dialog.SelectedPath, $"{_metadata.StandardId}-docx-profile"); ProfileStore.Export(path, profile); _status.Text = $"Профиль экспортирован: {path}"; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
namespace StandardsWorkbench.App;
|
||||||
|
|
||||||
|
static class Program
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The main entry point for the application.
|
||||||
|
/// </summary>
|
||||||
|
[STAThread]
|
||||||
|
static void Main()
|
||||||
|
{
|
||||||
|
// To customize application configuration such as set high DPI settings or default font,
|
||||||
|
// see https://aka.ms/applicationconfiguration.
|
||||||
|
ApplicationConfiguration.Initialize();
|
||||||
|
Application.Run(new MainForm());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>WinExe</OutputType>
|
||||||
|
<TargetFramework>net8.0-windows</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<UseWindowsForms>true</UseWindowsForms>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\DocumentAutomation.Shared\DocumentAutomation.Shared.csproj" />
|
||||||
|
<ProjectReference Include="..\StandardsWorkbench.Core\StandardsWorkbench.Core.csproj" />
|
||||||
|
<ProjectReference Include="..\StandardsWorkbench.Pdf\StandardsWorkbench.Pdf.csproj" />
|
||||||
|
<ProjectReference Include="..\StandardsWorkbench.Ollama\StandardsWorkbench.Ollama.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Text.Json;
|
||||||
|
using DocumentAutomation.Shared;
|
||||||
|
|
||||||
|
namespace StandardsWorkbench.Core;
|
||||||
|
|
||||||
|
public sealed record StandardMetadata
|
||||||
|
{
|
||||||
|
public required string StandardId { get; init; }
|
||||||
|
public required string Code { get; init; }
|
||||||
|
public required string Title { get; init; }
|
||||||
|
public string Revision { get; init; } = "";
|
||||||
|
public DateOnly? EffectiveFrom { get; init; }
|
||||||
|
public required string SourceFileSha256 { get; init; }
|
||||||
|
public int PageCount { get; init; }
|
||||||
|
public bool TextLayerDetected { get; init; }
|
||||||
|
public DateTime ImportedAt { get; init; } = DateTime.UtcNow;
|
||||||
|
public string Status { get; init; } = "Imported";
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record PdfPageText(int PageNumber, string Text, bool TextLayerDetected, string Status, IReadOnlyList<string> Blocks);
|
||||||
|
public sealed record StandardClause(string StandardId, string ClauseId, string Heading, string Text, int StartPage, int EndPage, double ExtractionConfidence);
|
||||||
|
public sealed record CandidateRule
|
||||||
|
{
|
||||||
|
public required string CandidateId { get; init; }
|
||||||
|
public required string StandardId { get; init; }
|
||||||
|
public required string ClauseId { get; init; }
|
||||||
|
public int SourcePage { get; init; }
|
||||||
|
public required string SourceText { get; init; }
|
||||||
|
public required string Title { get; init; }
|
||||||
|
public string[] Scope { get; init; } = ["DOCX"];
|
||||||
|
public string RuleKind { get; init; } = "ExpertReview";
|
||||||
|
public string Target { get; init; } = "Document";
|
||||||
|
public Dictionary<string, string> Parameters { get; init; } = [];
|
||||||
|
public string Severity { get; init; } = "Warning";
|
||||||
|
public string AutomationLevel { get; init; } = "Manual";
|
||||||
|
public double Confidence { get; init; }
|
||||||
|
public bool RequiresHumanApproval { get; init; } = true;
|
||||||
|
public string Status { get; init; } = "New";
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record ApprovedRulesProfile
|
||||||
|
{
|
||||||
|
public required string StandardId { get; init; }
|
||||||
|
public required string Code { get; init; }
|
||||||
|
public required string Revision { get; init; }
|
||||||
|
public required string SourceFileSha256 { get; init; }
|
||||||
|
public string ProfileVersion { get; init; } = "1.0";
|
||||||
|
public string MinimumRulesEngineVersion { get; init; } = "1.0";
|
||||||
|
public DateTime ExportedAt { get; init; } = DateTime.UtcNow;
|
||||||
|
public IReadOnlyList<CandidateRule> Rules { get; init; } = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface IPdfOcrService { Task<PdfPageText> RecognizePageAsync(string pdfPath, int pageNumber, CancellationToken cancellationToken); }
|
||||||
|
public interface IStandardPdfService { Task<(StandardMetadata Metadata, IReadOnlyList<PdfPageText> Pages, IReadOnlyList<StandardClause> Clauses)> ImportAsync(string pdfPath, string code, string title, CancellationToken cancellationToken); }
|
||||||
|
public interface IOllamaService { Task<IReadOnlyList<string>> GetModelsAsync(CancellationToken cancellationToken); Task<CandidateRule?> SuggestCandidateAsync(StandardClause clause, string model, CancellationToken cancellationToken); }
|
||||||
|
|
||||||
|
public static class ProfileStore
|
||||||
|
{
|
||||||
|
public static string Sha256(string path) { using var stream = File.OpenRead(path); return Convert.ToHexString(SHA256.HashData(stream)).ToLowerInvariant(); }
|
||||||
|
public static void Export(string directory, ApprovedRulesProfile profile)
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(directory); var options = new JsonSerializerOptions { WriteIndented = true }; File.WriteAllText(Path.Combine(directory, "manifest.json"), JsonSerializer.Serialize(profile, options)); File.WriteAllText(Path.Combine(directory, "approved-rules.json"), JsonSerializer.Serialize(profile.Rules, options)); File.WriteAllText(Path.Combine(directory, "references.json"), JsonSerializer.Serialize(profile.Rules.Select(r => new { r.ClauseId, r.SourcePage, r.StandardId }), options)); File.WriteAllText(Path.Combine(directory, "signature.sha256"), Sha256(Path.Combine(directory, "approved-rules.json")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed class RulesEngine
|
||||||
|
{
|
||||||
|
public IReadOnlyList<RuleEvaluationResult> Evaluate(DocumentInspectionResult document, ApprovedRulesProfile profile)
|
||||||
|
=> profile.Rules.Where(r => r.Status is "Approved" or "Implemented" or "Tested").Select(r => EvaluateOne(document, r)).ToArray();
|
||||||
|
|
||||||
|
private static RuleEvaluationResult EvaluateOne(DocumentInspectionResult d, CandidateRule rule)
|
||||||
|
{
|
||||||
|
var status = rule.RuleKind switch { "SectionCount" => d.Sections > 0 ? RuleEvaluationStatus.Pass : RuleEvaluationStatus.Fail, "ContentControlPresence" => d.ContentControls > 0 ? RuleEvaluationStatus.Pass : RuleEvaluationStatus.Fail, "BookmarkPresence" => d.Bookmarks > 0 ? RuleEvaluationStatus.Pass : RuleEvaluationStatus.Fail, "CommentsAbsent" => d.Comments == 0 ? RuleEvaluationStatus.Pass : RuleEvaluationStatus.Fail, "TrackedChangesAbsent" => !d.HasTrackedChanges ? RuleEvaluationStatus.Pass : RuleEvaluationStatus.Fail, _ => RuleEvaluationStatus.NeedsReview };
|
||||||
|
return new RuleEvaluationResult { RuleId = rule.CandidateId, Status = status, Message = status == RuleEvaluationStatus.Pass ? "Проверка пройдена." : status == RuleEvaluationStatus.Fail ? "Проверка не пройдена." : "Требуется экспертная проверка.", ClauseId = rule.ClauseId, SourcePage = rule.SourcePage, DocumentLocation = rule.Target, CanAutoFix = false };
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0-windows</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup><ProjectReference Include="..\DocumentAutomation.Shared\DocumentAutomation.Shared.csproj" /></ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
using System.Net.Http.Json;
|
||||||
|
using System.Text.Json;
|
||||||
|
using StandardsWorkbench.Core;
|
||||||
|
|
||||||
|
namespace StandardsWorkbench.Ollama;
|
||||||
|
|
||||||
|
public sealed class OllamaClient : IOllamaService
|
||||||
|
{
|
||||||
|
private readonly HttpClient _http;
|
||||||
|
public OllamaClient(HttpClient? httpClient = null) { _http = httpClient ?? new HttpClient(); _http.BaseAddress = new Uri("http://192.168.200.112:11434"); _http.Timeout = TimeSpan.FromSeconds(120); }
|
||||||
|
public async Task<IReadOnlyList<string>> GetModelsAsync(CancellationToken cancellationToken)
|
||||||
|
{ using var response = await _http.GetAsync("/api/tags", cancellationToken); response.EnsureSuccessStatusCode(); using var json = await response.Content.ReadFromJsonAsync<JsonDocument>(cancellationToken: cancellationToken); return json?.RootElement.GetProperty("models").EnumerateArray().Select(x => x.GetProperty("name").GetString() ?? "").Where(x => x.Length > 0).ToArray() ?? []; }
|
||||||
|
public async Task<CandidateRule?> SuggestCandidateAsync(StandardClause clause, string model, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(model)) throw new ArgumentException("Модель Ollama не выбрана.", nameof(model)); var prompt = $"Return JSON only. Extract one candidate DOCX rule from clause {clause.ClauseId}. Never invent source references. Text: {clause.Text}"; using var response = await _http.PostAsJsonAsync("/api/generate", new { model, prompt, stream = false, format = "json" }, cancellationToken); response.EnsureSuccessStatusCode(); using var json = await response.Content.ReadFromJsonAsync<JsonDocument>(cancellationToken: cancellationToken); var raw = json?.RootElement.GetProperty("response").GetString(); if (string.IsNullOrWhiteSpace(raw)) return null; try { return JsonSerializer.Deserialize<CandidateRule>(raw); } catch (JsonException) { return null; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0-windows</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup><ProjectReference Include="..\StandardsWorkbench.Core\StandardsWorkbench.Core.csproj" /></ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using StandardsWorkbench.Core;
|
||||||
|
using UglyToad.PdfPig;
|
||||||
|
|
||||||
|
namespace StandardsWorkbench.Pdf;
|
||||||
|
|
||||||
|
public sealed class PdfStandardService : IStandardPdfService
|
||||||
|
{
|
||||||
|
public Task<(StandardMetadata Metadata, IReadOnlyList<PdfPageText> Pages, IReadOnlyList<StandardClause> Clauses)> ImportAsync(string pdfPath, string code, string title, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
if (!File.Exists(pdfPath)) throw new FileNotFoundException("PDF ГОСТа не найден.", pdfPath);
|
||||||
|
return Task.Run(() =>
|
||||||
|
{
|
||||||
|
using var pdf = PdfDocument.Open(pdfPath); var pages = new List<PdfPageText>();
|
||||||
|
foreach (var page in pdf.GetPages()) { cancellationToken.ThrowIfCancellationRequested(); var text = page.Text ?? ""; pages.Add(new PdfPageText(page.Number, text, text.Trim().Length > 0, text.Trim().Length > 0 ? "Extracted" : "OCR_REQUIRED", text.Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries))); }
|
||||||
|
var standardId = Regex.Replace(code.ToUpperInvariant(), "[^A-ZА-Я0-9]+", "-").Trim('-'); var clauses = ExtractClauses(standardId, pages); var meta = new StandardMetadata { StandardId = standardId, Code = code, Title = title, SourceFileSha256 = ProfileStore.Sha256(pdfPath), PageCount = pages.Count, TextLayerDetected = pages.Any(p => p.TextLayerDetected), ImportedAt = DateTime.UtcNow };
|
||||||
|
return (meta, (IReadOnlyList<PdfPageText>)pages, (IReadOnlyList<StandardClause>)clauses);
|
||||||
|
}, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<StandardClause> ExtractClauses(string id, IReadOnlyList<PdfPageText> pages)
|
||||||
|
{
|
||||||
|
var result = new List<StandardClause>(); string? currentId = null; var currentText = new List<string>(); var start = 1;
|
||||||
|
void Flush(int end) { if (currentId is not null) result.Add(new StandardClause(id, currentId, "", string.Join(Environment.NewLine, currentText), start, end, 0.85)); }
|
||||||
|
foreach (var page in pages) foreach (var line in page.Text.Split('\n', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries)) { var match = Regex.Match(line, "^(\\d+(?:\\.\\d+){0,5})[.)]?\\s+(.+)$"); if (match.Success) { Flush(page.PageNumber - 1); currentId = match.Groups[1].Value; currentText = [line]; start = page.PageNumber; } else if (currentId is not null) currentText.Add(line); }
|
||||||
|
Flush(pages.Count); return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed class NoOpOcrService : IPdfOcrService
|
||||||
|
{
|
||||||
|
public Task<PdfPageText> RecognizePageAsync(string pdfPath, int pageNumber, CancellationToken cancellationToken) => Task.FromResult(new PdfPageText(pageNumber, "", false, "OCR_REQUIRED", []));
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0-windows</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\DocumentAutomation.Shared\DocumentAutomation.Shared.csproj" />
|
||||||
|
<ProjectReference Include="..\StandardsWorkbench.Core\StandardsWorkbench.Core.csproj" />
|
||||||
|
<PackageReference Include="PdfPig" Version="0.1.9" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
+25
@@ -0,0 +1,25 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0-windows</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
|
||||||
|
<IsPackable>false</IsPackable>
|
||||||
|
<IsTestProject>true</IsTestProject>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup><ProjectReference Include="..\..\src\DocxWorkbench.WordInterop\DocxWorkbench.WordInterop.csproj" /><ProjectReference Include="..\..\src\DocxWorkbench.OpenXml\DocxWorkbench.OpenXml.csproj" /><ProjectReference Include="..\..\src\StandardsWorkbench.Pdf\StandardsWorkbench.Pdf.csproj" /><PackageReference Include="DocumentFormat.OpenXml" Version="3.3.0" /></ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="coverlet.collector" Version="6.0.0" />
|
||||||
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
|
||||||
|
<PackageReference Include="xunit" Version="2.5.3" />
|
||||||
|
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.3" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Using Include="Xunit" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
+72
@@ -0,0 +1,72 @@
|
|||||||
|
using System.Diagnostics;
|
||||||
|
using System.Text.Json;
|
||||||
|
using DocumentFormat.OpenXml.Packaging;
|
||||||
|
using DocumentFormat.OpenXml.Wordprocessing;
|
||||||
|
using DocumentAutomation.Shared;
|
||||||
|
using DocxWorkbench.WordInterop;
|
||||||
|
using DocxWorkbench.OpenXml;
|
||||||
|
using Xunit.Sdk;
|
||||||
|
|
||||||
|
namespace DocumentAutomation.IntegrationTests;
|
||||||
|
|
||||||
|
public sealed class WordComIntegrationTests
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void IntegrationAssemblyIsAvailable() => Assert.True(typeof(WordComIntegrationTests).Assembly.GetName().Name is not null);
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void WordAvailability_DoesNotRequireOfficePia()
|
||||||
|
{
|
||||||
|
var names = typeof(WordDocumentService).Assembly.GetReferencedAssemblies().Select(x => x.Name).ToArray(); Assert.DoesNotContain(names, name => string.Equals(name, "office", StringComparison.OrdinalIgnoreCase) || string.Equals(name, "Microsoft.Office.Interop.Word", StringComparison.OrdinalIgnoreCase));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task Build_WithoutInsertionPoint_DoesNotStartWord()
|
||||||
|
{
|
||||||
|
var template = CreateDocx(false); var body = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".txt"); File.WriteAllText(body, "text"); var before = ProcessIds(); try { using var service = new WordDocumentService(); await Assert.ThrowsAsync<WordAutomationException>(() => service.BuildDocumentAsync(new WordDocumentBuildRequest { TemplatePath = template, BodyPath = body, OutputDocxPath = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".docx") }, null, CancellationToken.None)); Assert.Empty(ProcessIds().Except(before)); } finally { File.Delete(template); File.Delete(body); }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact] public async Task Build_RunsOnStaThread() { await RequireWord(); var result = await BuildTxt(); var log = JsonSerializer.Deserialize<JsonElement>(File.ReadAllText(result.LogPath)); Assert.Equal("STA", log.GetProperty("staApartment").GetString()); }
|
||||||
|
[Fact] public async Task Build_WithTxtBody_InsertsText() { await RequireWord(); var result = await BuildTxt(); Assert.Contains("TXT integration body", ReadMainText(result.OutputDocxPath)); }
|
||||||
|
[Fact] public async Task Build_WithDocxBody_InsertsDocument() { await RequireWord(); var template = CreateDocx(true); var body = CreateDocx(false, "DOCX integration body"); var output = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".docx"); try { using var service = new WordDocumentService(); await service.BuildDocumentAsync(new WordDocumentBuildRequest { TemplatePath = template, BodyPath = body, OutputDocxPath = output }, null, CancellationToken.None); Assert.Contains("DOCX integration body", ReadMainText(output)); } finally { File.Delete(template); File.Delete(body); File.Delete(output); } }
|
||||||
|
[Fact] public async Task Build_ExportsPdf() { await RequireWord(); var result = await BuildTxt(); using var service = new WordDocumentService(); var pdf = await service.ExportPdfAsync(result.OutputDocxPath, Path.ChangeExtension(result.OutputDocxPath, ".pdf"), CancellationToken.None); Assert.True(File.Exists(pdf.PdfPath)); File.Delete(result.OutputDocxPath); File.Delete(pdf.PdfPath); File.Delete(result.LogPath); }
|
||||||
|
[Fact] public async Task Build_DoesNotLeaveCreatedWinwordProcess() { await RequireWord(); var before = ProcessIds(); var result = await BuildTxt(); await Task.Delay(500); Assert.Empty(ProcessIds().Except(before)); File.Delete(result.OutputDocxPath); File.Delete(result.LogPath); }
|
||||||
|
[Fact] public async Task Build_Failure_ReleasesWord() { await RequireWord(); var before = ProcessIds(); var template = CreateDocx(true); var body = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".txt"); var outputDirectory = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".docx"); Directory.CreateDirectory(outputDirectory); File.WriteAllText(body, "failure body"); try { using var service = new WordDocumentService(); await Assert.ThrowsAnyAsync<Exception>(() => service.BuildDocumentAsync(new WordDocumentBuildRequest { TemplatePath = template, BodyPath = body, OutputDocxPath = outputDirectory }, null, CancellationToken.None)); await Task.Delay(500); Assert.Empty(ProcessIds().Except(before)); } finally { File.Delete(template); File.Delete(body); Directory.Delete(outputDirectory, true); } }
|
||||||
|
[Fact]
|
||||||
|
public async Task RuntimeGate_DesktopDocxBodyUsesTemplateCopy()
|
||||||
|
{
|
||||||
|
await RequireWord(); var template = @"C:\Users\codex\Desktop\156-титул-ПД.docx"; var body = @"C:\Users\codex\Desktop\НХС-33-УК3-ОЗХ-13011-000-НК-ОД.docx"; if (!File.Exists(template) || !File.Exists(body)) throw SkipException.ForSkip("The supplied Desktop DOCX fixtures are not available."); var copy = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".docx"); var output = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".docx"); File.Copy(template, copy); try { using (var document = WordprocessingDocument.Open(copy, true)) { var main = document.MainDocumentPart ?? throw new InvalidDataException("Main part missing."); main.Document.Body!.Append(new Paragraph(new Run(new Text("{{DOC_BODY}}")))); main.Document.Save(); } using var service = new WordDocumentService(); var result = await service.BuildDocumentAsync(new WordDocumentBuildRequest { TemplatePath = copy, BodyPath = body, OutputDocxPath = output }, null, CancellationToken.None); Assert.True(File.Exists(result.OutputDocxPath)); } finally { File.Delete(copy); File.Delete(output); File.Delete(Path.ChangeExtension(output, ".generation.json")); }
|
||||||
|
}
|
||||||
|
[Fact]
|
||||||
|
public async Task ImportDocxBody_ExcludesSourceHeaders()
|
||||||
|
{
|
||||||
|
await RequireWord(); var template = CreateDocx(true); var source = CreateComplexSource(); var output = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".docx"); var sourceHash = Convert.ToHexString(System.Security.Cryptography.SHA256.HashData(File.ReadAllBytes(source))); try { using var service = new WordDocumentService(); var result = await service.BuildDocumentAsync(new WordDocumentBuildRequest { TemplatePath = template, BodyPath = source, OutputDocxPath = output }, null, CancellationToken.None); using var document = WordprocessingDocument.Open(result.OutputDocxPath, false); var main = document.MainDocumentPart!; Assert.DoesNotContain(main.HeaderParts.SelectMany(x => x.Header?.Descendants<Text>() ?? []), x => x.Text == "SOURCE HEADER"); Assert.DoesNotContain(main.FooterParts.SelectMany(x => x.Footer?.Descendants<Text>() ?? []), x => x.Text == "SOURCE FOOTER"); Assert.Single(main.Document.Descendants<SectionProperties>()); Assert.NotNull(result.BodyImport); Assert.Contains("wdMainTextStory", result.BodyImport!.Plan.IncludedStories); Assert.Equal(sourceHash, Convert.ToHexString(System.Security.Cryptography.SHA256.HashData(File.ReadAllBytes(source)))); } finally { File.Delete(template); File.Delete(source); File.Delete(output); File.Delete(Path.ChangeExtension(output, ".generation.json")); }
|
||||||
|
}
|
||||||
|
[Fact]
|
||||||
|
public async Task ImportDocxBody_DoesNotChangeDestinationPageSetup()
|
||||||
|
{
|
||||||
|
await RequireWord(); var template = CreateDocx(true); var source = CreateComplexSource(); var output = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".docx"); try { using var service = new WordDocumentService(); var result = await service.BuildDocumentAsync(new WordDocumentBuildRequest { TemplatePath = template, BodyPath = source, OutputDocxPath = output }, null, CancellationToken.None); using var document = WordprocessingDocument.Open(result.OutputDocxPath, false); Assert.Single(document.MainDocumentPart!.Document.Descendants<SectionProperties>()); Assert.Contains("DOCX complex body", document.MainDocumentPart.Document.InnerText); } finally { File.Delete(template); File.Delete(source); File.Delete(output); File.Delete(Path.ChangeExtension(output, ".generation.json")); }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task TemplateLearning_EndToEnd_RealDocToDtemplateToDocxAndPdf()
|
||||||
|
{
|
||||||
|
await RequireWord(); var source = @"C:\Users\codex\Desktop\НХС-33-УК3-ОЗХ-13011-000-НК-ОД.doc"; var content = @"C:\Users\codex\Desktop\НХС-33-УК3-ОЗХ-13011-000-НК-ОД.docx"; if (!File.Exists(source) || !File.Exists(content)) throw SkipException.ForSkip("The supplied real DOC/DOCX fixtures are not available.");
|
||||||
|
var package = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".dtemplate"); var output = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".docx"); var sourceHash = Convert.ToHexString(System.Security.Cryptography.SHA256.HashData(File.ReadAllBytes(source))); var before = ProcessIds();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var normalizer = new WordDocumentNormalizer(); var learning = new TemplateLearningService(normalizer, new TemplatePackageStore(), new OpenXmlDocumentInspector()); var learned = await learning.LearnAsync(new TemplateLearningRequest { SourcePath = source, TemplateName = "Real sample", OutputPackagePath = package }, null, CancellationToken.None); Assert.NotEmpty(learned.Slots); Assert.True(File.Exists(package)); using var generator = new TemplateDocumentGenerator(new TemplatePackageStore(), new WordDocumentNormalizer(), new OpenXmlDocumentInspector()); var result = await generator.GenerateAsync(new TemplateGenerationRequest { TemplatePackagePath = package, ContentSourcePath = content, OutputDocxPath = output }, null, CancellationToken.None); Assert.True(File.Exists(result.OutputDocxPath)); Assert.True(File.Exists(result.OutputPdfPath)); Assert.Equal(sourceHash, Convert.ToHexString(System.Security.Cryptography.SHA256.HashData(File.ReadAllBytes(source)))); Assert.Empty(ProcessIds().Except(before));
|
||||||
|
}
|
||||||
|
finally { File.Delete(package); File.Delete(output); File.Delete(Path.ChangeExtension(output, ".pdf")); File.Delete(Path.ChangeExtension(output, ".generation.json")); File.Delete(Path.ChangeExtension(output, ".validation.json")); }
|
||||||
|
}
|
||||||
|
|
||||||
|
private static async Task RequireWord() { if (!OperatingSystem.IsWindows() || Type.GetTypeFromProgID("Word.Application", false) is null) throw SkipException.ForSkip("Microsoft Word COM is not installed or registered on this workstation."); await Task.CompletedTask; }
|
||||||
|
private static async Task<WordDocumentResult> BuildTxt() { var template = CreateDocx(true); var body = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".txt"); var output = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".docx"); File.WriteAllText(body, "TXT integration body"); try { using var service = new WordDocumentService(); return await service.BuildDocumentAsync(new WordDocumentBuildRequest { TemplatePath = template, BodyPath = body, OutputDocxPath = output }, null, CancellationToken.None); } finally { File.Delete(template); File.Delete(body); } }
|
||||||
|
private static HashSet<int> ProcessIds() => Process.GetProcessesByName("WINWORD").Select(x => x.Id).ToHashSet();
|
||||||
|
private static string ReadMainText(string path) { using var doc = WordprocessingDocument.Open(path, false); return doc.MainDocumentPart?.Document.InnerText ?? ""; }
|
||||||
|
private static string CreateComplexSource()
|
||||||
|
{
|
||||||
|
var path = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".docx"); using var doc = WordprocessingDocument.Create(path, DocumentFormat.OpenXml.WordprocessingDocumentType.Document); var main = doc.AddMainDocumentPart(); var header1 = main.AddNewPart<HeaderPart>(); header1.Header = new Header(new Paragraph(new Run(new Text("SOURCE HEADER")))); var footer1 = main.AddNewPart<FooterPart>(); footer1.Footer = new Footer(new Paragraph(new Run(new Text("SOURCE FOOTER")))); var body = new Body(); var first = new Paragraph(new ParagraphProperties(new SectionProperties(new HeaderReference { Type = HeaderFooterValues.Default, Id = main.GetIdOfPart(header1) }, new FooterReference { Type = HeaderFooterValues.Default, Id = main.GetIdOfPart(footer1) })), new Run(new Text("DOCX complex body"))); body.Append(first); body.Append(new Table(new TableRow(new TableCell(new Paragraph(new Run(new Text("source table"))))))); body.Append(new SectionProperties(new HeaderReference { Type = HeaderFooterValues.Default, Id = main.GetIdOfPart(header1) }, new FooterReference { Type = HeaderFooterValues.Default, Id = main.GetIdOfPart(footer1) })); main.Document = new Document(body); main.Document.Save(); return path;
|
||||||
|
}
|
||||||
|
private static string CreateDocx(bool marker, string text = "template body") { var path = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".docx"); using var doc = WordprocessingDocument.Create(path, DocumentFormat.OpenXml.WordprocessingDocumentType.Document); var main = doc.AddMainDocumentPart(); main.Document = new Document(new Body(new Paragraph(new Run(new Text(marker ? "{{DOC_BODY}}" : text))))); main.Document.Save(); return path; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
using DocumentFormat.OpenXml.Packaging;
|
||||||
|
using DocumentFormat.OpenXml.Wordprocessing;
|
||||||
|
using DocxWorkbench.Core;
|
||||||
|
using DocxWorkbench.OpenXml;
|
||||||
|
|
||||||
|
namespace DocxWorkbench.Tests;
|
||||||
|
|
||||||
|
public sealed class DocumentInspectorTests
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void Analyze_DocxTemplateAndTxtBody_Succeeds()
|
||||||
|
{
|
||||||
|
var docx = CreateDocx(marker: true); var txt = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".txt"); File.WriteAllText(txt, "line one\nline two"); try { var template = new OpenXmlDocumentInspector().Inspect(docx); var body = new TextDocumentInspector().Inspect(txt); Assert.Equal("TextMarker", template.InsertionPoint.Type); Assert.Equal(2, body.Paragraphs); } finally { File.Delete(docx); File.Delete(txt); }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Analyze_DocxTemplateAndDocxBody_Succeeds()
|
||||||
|
{
|
||||||
|
var template = CreateDocx(marker: true); var body = CreateDocx(marker: false); try { var inspector = new OpenXmlDocumentInspector(); Assert.Equal("TextMarker", inspector.Inspect(template).InsertionPoint.Type); Assert.Equal(1, inspector.Inspect(body).Sections); } finally { File.Delete(template); File.Delete(body); }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Inspect_DetectsMarkerInsertionPoint()
|
||||||
|
{
|
||||||
|
var path = CreateDocx(marker: true); try { Assert.Equal("TextMarker", new OpenXmlDocumentInspector().Inspect(path).InsertionPoint.Type); } finally { File.Delete(path); }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Inspect_FindsPageFieldsInFooter()
|
||||||
|
{
|
||||||
|
var path = CreateDocx(marker: true, fields: true); try { var result = new OpenXmlDocumentInspector().Inspect(path); Assert.Contains(result.Fields, field => field.Type == "PAGE" && field.Part.StartsWith("FooterPart", StringComparison.Ordinal)); Assert.Contains(result.Fields, field => field.Type == "NUMPAGES"); } finally { File.Delete(path); }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Inspect_CountsHeaderFooterGraphics()
|
||||||
|
{
|
||||||
|
var path = CreateDocx(marker: true, graphics: true); try { var result = new OpenXmlDocumentInspector().Inspect(path); Assert.True(result.ImageSummary.RasterImages >= 2); } finally { File.Delete(path); }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Inspect_UnsupportedFormatIsDomainError()
|
||||||
|
{
|
||||||
|
var path = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".bin"); File.WriteAllText(path, "not a document"); try { var exception = Assert.Throws<UnsupportedDocumentFormatException>(() => new OpenXmlDocumentInspector().Inspect(path)); Assert.Contains("Open XML inspector", exception.Message); } finally { File.Delete(path); }
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string CreateDocx(bool marker, bool fields = false, bool graphics = false)
|
||||||
|
{
|
||||||
|
var path = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".docx"); using var document = WordprocessingDocument.Create(path, DocumentFormat.OpenXml.WordprocessingDocumentType.Document); var main = document.AddMainDocumentPart(); var body = new Body(new Paragraph(new Run(new Text(marker ? "{{DOC_BODY}}" : "body")))); main.Document = new Document(body);
|
||||||
|
var header = main.AddNewPart<HeaderPart>(); header.Header = new Header(new Paragraph(new Run(new Text("header")))); var footer = main.AddNewPart<FooterPart>();
|
||||||
|
if (fields) { var paragraph = new Paragraph(); paragraph.Append(new Run(new FieldChar { FieldCharType = FieldCharValues.Begin })); paragraph.Append(new Run(new FieldCode(" PAGE "))); paragraph.Append(new Run(new FieldChar { FieldCharType = FieldCharValues.End })); paragraph.Append(new SimpleField { Instruction = " NUMPAGES " }); footer.Footer = new Footer(paragraph); } else footer.Footer = new Footer(new Paragraph(new Run(new Text("footer"))));
|
||||||
|
if (graphics) { var image = header.AddImagePart(ImagePartType.Png); image.FeedData(new MemoryStream([137, 80, 78, 71])); var image2 = footer.AddImagePart(ImagePartType.Png); image2.FeedData(new MemoryStream([137, 80, 78, 71])); }
|
||||||
|
body.Append(new SectionProperties(new HeaderReference { Type = HeaderFooterValues.Default, Id = main.GetIdOfPart(header) }, new FooterReference { Type = HeaderFooterValues.Default, Id = main.GetIdOfPart(footer) })); main.Document.Save(); return path;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0-windows</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
|
||||||
|
<IsPackable>false</IsPackable>
|
||||||
|
<IsTestProject>true</IsTestProject>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup><ProjectReference Include="..\..\src\DocxWorkbench.Core\DocxWorkbench.Core.csproj" /><ProjectReference Include="..\..\src\DocxWorkbench.OpenXml\DocxWorkbench.OpenXml.csproj" /><ProjectReference Include="..\..\src\DocxWorkbench.WordInterop\DocxWorkbench.WordInterop.csproj" /><PackageReference Include="DocumentFormat.OpenXml" Version="3.3.0" /></ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="coverlet.collector" Version="6.0.0" />
|
||||||
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
|
||||||
|
<PackageReference Include="xunit" Version="2.5.3" />
|
||||||
|
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.3" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Using Include="Xunit" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
using DocxWorkbench.WordInterop;
|
||||||
|
|
||||||
|
namespace DocxWorkbench.Tests;
|
||||||
|
|
||||||
|
public sealed class StaWordQueueTests
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public async Task Dispose_DrainsActiveJobAndIsIdempotent()
|
||||||
|
{
|
||||||
|
using var queue = new StaWordQueue(); using var started = new ManualResetEventSlim(false); using var release = new ManualResetEventSlim(false);
|
||||||
|
var job = queue.Enqueue(() => { started.Set(); Assert.Equal(ApartmentState.STA, Thread.CurrentThread.GetApartmentState()); release.Wait(); return 42; }, CancellationToken.None); Assert.True(started.Wait(TimeSpan.FromSeconds(2)));
|
||||||
|
var dispose = Task.Run(queue.Dispose); var completed = await Task.WhenAny(dispose, Task.Delay(100)); Assert.NotSame(dispose, completed); release.Set(); await dispose; Assert.Equal(42, await job); queue.Dispose(); Assert.Throws<ObjectDisposedException>(() => EnqueueAfterDispose(queue));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task Enqueue_CancellationCompletesCanceledTask()
|
||||||
|
{
|
||||||
|
using var queue = new StaWordQueue(); using var cancellation = new CancellationTokenSource(); cancellation.Cancel(); await Assert.ThrowsAnyAsync<OperationCanceledException>(() => queue.Enqueue(() => 1, cancellation.Token));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void EnqueueAfterDispose(StaWordQueue queue) => queue.Enqueue(() => 1, CancellationToken.None);
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
using System.IO.Compression;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using DocumentAutomation.Shared;
|
||||||
|
using DocxWorkbench.OpenXml;
|
||||||
|
using DocxWorkbench.WordInterop;
|
||||||
|
|
||||||
|
namespace DocxWorkbench.Tests;
|
||||||
|
|
||||||
|
public sealed class TemplateLearningTests
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public async Task NormalizeDocx_UsesSafeWorkingCopy()
|
||||||
|
{
|
||||||
|
var source = CreateDocx("template"); var hash = Hash(source); var working = Path.Combine(Path.GetTempPath(), "learning-test-" + Guid.NewGuid().ToString("N")); using var normalizer = new WordDocumentNormalizer(); try { var result = await normalizer.NormalizeAsync(new DocumentNormalizationRequest { SourcePath = source, WorkingDirectory = working }, null, CancellationToken.None); Assert.False(result.WasConverted); Assert.NotEqual(Path.GetFullPath(source), Path.GetFullPath(result.NormalizedPath)); Assert.Equal(hash, Hash(source)); Assert.Equal(hash, result.SourceSha256); Assert.True(File.Exists(result.NormalizedPath)); } finally { File.Delete(source); if (Directory.Exists(working)) Directory.Delete(working, true); }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task TemplatePackage_CanBeCreatedAndReopened()
|
||||||
|
{
|
||||||
|
var source = CreateDocx("{{DOC_BODY}}"); var package = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".dtemplate"); using var normalizer = new WordDocumentNormalizer(); try { var service = new TemplateLearningService(normalizer, new TemplatePackageStore()); var learned = await service.LearnAsync(new TemplateLearningRequest { SourcePath = source, TemplateName = "Unit template", OutputPackagePath = package }, null, CancellationToken.None); Assert.NotEmpty(learned.Slots); Assert.Contains(learned.PageArchetypes, x => x.IsFirstPage); using var archive = ZipFile.OpenRead(package); Assert.Contains(archive.Entries, x => x.FullName == "manifest.json"); Assert.Contains(archive.Entries, x => x.FullName == "template.docx"); var opened = new TemplatePackageStore().Open(package); Assert.Equal(learned.TemplateId, opened.Template.TemplateId); Assert.True(File.Exists(opened.TemplateDocxPath)); Directory.Delete(opened.WorkingDirectory, true); } finally { File.Delete(source); File.Delete(package); }
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string CreateDocx(string text) { var path = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".docx"); using var document = DocumentFormat.OpenXml.Packaging.WordprocessingDocument.Create(path, DocumentFormat.OpenXml.WordprocessingDocumentType.Document); var main = document.AddMainDocumentPart(); main.Document = new DocumentFormat.OpenXml.Wordprocessing.Document(new DocumentFormat.OpenXml.Wordprocessing.Body(new DocumentFormat.OpenXml.Wordprocessing.Paragraph(new DocumentFormat.OpenXml.Wordprocessing.Run(new DocumentFormat.OpenXml.Wordprocessing.Text(text))))); main.Document.Save(); return path; }
|
||||||
|
private static string Hash(string path) => Convert.ToHexString(SHA256.HashData(File.ReadAllBytes(path)));
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
using DocxWorkbench.Core;
|
||||||
|
|
||||||
|
namespace DocxWorkbench.Tests;
|
||||||
|
|
||||||
|
public sealed class WorkbenchStateTests
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void VerifyButton_DisabledBeforeBuild() { var state = new WorkbenchStateController(); Assert.False(state.CanValidate); }
|
||||||
|
[Fact]
|
||||||
|
public void VerifyButton_DisabledAfterBuildFailure() { var state = Ready(); state.BeginBuild(); state.BuildFailed(); Assert.False(state.CanValidate); Assert.False(state.CanOpenDocx); }
|
||||||
|
[Fact]
|
||||||
|
public void VerifyButton_EnabledAfterBuildSuccess() { var state = Ready(); state.BeginBuild(); state.BuildSucceeded(); Assert.True(state.CanValidate); Assert.True(state.CanOpenDocx); Assert.True(state.CanOpenPdf); }
|
||||||
|
private static WorkbenchStateController Ready() { var state = new WorkbenchStateController(); state.InputsSelected(true); state.AnalysisCompleted(true, true, true); return state; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
using DocumentAutomation.Shared;
|
||||||
|
using StandardsWorkbench.Core;
|
||||||
|
|
||||||
|
namespace StandardsWorkbench.Tests;
|
||||||
|
|
||||||
|
public sealed class RulesEngineTests
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void OnlyApprovedRulesAreEvaluated()
|
||||||
|
{
|
||||||
|
var document = new DocumentInspectionResult { FilePath = "synthetic.docx", ContentControls = 1, Sections = 1, Paragraphs = 2, Tables = 0 };
|
||||||
|
var profile = new ApprovedRulesProfile { StandardId = "TEST", Code = "TEST", Revision = "1", Rules = [
|
||||||
|
new CandidateRule { CandidateId = "approved", StandardId = "TEST", ClauseId = "1", SourceText = "x", Title = "x", RuleKind = "ContentControlPresence", Status = "Approved" },
|
||||||
|
new CandidateRule { CandidateId = "new", StandardId = "TEST", ClauseId = "2", SourceText = "x", Title = "x", RuleKind = "SectionCount", Status = "New" }
|
||||||
|
], SourceFileSha256 = "test"};
|
||||||
|
var result = new RulesEngine().Evaluate(document, profile); Assert.Single(result); Assert.Equal(RuleEvaluationStatus.Pass, result[0].Status);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void FailedRuleHasClauseReference()
|
||||||
|
{
|
||||||
|
var document = new DocumentInspectionResult { FilePath = "synthetic.docx", ContentControls = 0, Sections = 1, Paragraphs = 1, Tables = 0 };
|
||||||
|
var rule = new CandidateRule { CandidateId = "cc", StandardId = "TEST", ClauseId = "6.3", SourcePage = 4, SourceText = "required", Title = "cc", RuleKind = "ContentControlPresence", Status = "Tested" };
|
||||||
|
var result = Assert.Single(new RulesEngine().Evaluate(document, new ApprovedRulesProfile { StandardId = "TEST", Code = "TEST", Revision = "1", SourceFileSha256 = "test", Rules = [rule] })); Assert.Equal(RuleEvaluationStatus.Fail, result.Status); Assert.Equal("6.3", result.ClauseId); Assert.Equal(4, result.SourcePage);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0-windows</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
|
||||||
|
<IsPackable>false</IsPackable>
|
||||||
|
<IsTestProject>true</IsTestProject>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup><ProjectReference Include="..\..\src\StandardsWorkbench.Core\StandardsWorkbench.Core.csproj" /></ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="coverlet.collector" Version="6.0.0" />
|
||||||
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
|
||||||
|
<PackageReference Include="xunit" Version="2.5.3" />
|
||||||
|
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.3" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Using Include="Xunit" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
# P_Rec_BOP — статический технический аудит
|
||||||
|
|
||||||
|
Дата аудита: 2026-07-31. Источник использован только для чтения; исходники, шаблон и бинарные файлы в Git не копировались.
|
||||||
|
|
||||||
|
## Краткий вывод
|
||||||
|
|
||||||
|
`P_Rec_BOP` — самостоятельное WinForms EXE («Ведомость объемов работ»), а не загружаемый AutoCAD .NET-плагин: в исходниках не найдены `CommandMethod`, `IExtensionApplication` или `Initialize` Plant-команды. Пользователь выбирает `Project.xml`, программа читает `Piping.dcf` и `ProcessPower.dcf`, проверяет состояние проекта, выбирает чертежи и номера линий, рассчитывает объемы труб/элементов/опор/креплений и сварных стыков, затем заполняет DOCX-шаблон и открывает результат.
|
||||||
|
|
||||||
|
Подтвержденный шаблон: `templates\Шаблон.docx`; по умолчанию путь вычисляется относительно сборки, либо задается `ReportTemplate` в `Settings.xml`. Результат сохраняется в проектную папку `Export to Smeta` (для проектов с диска A используется `\ProResults\P_Rec_BOP`) с именем `Ведомость объемов работ (дата время).docx`.
|
||||||
|
|
||||||
|
## Разделение доказательности
|
||||||
|
|
||||||
|
* Подтверждено исходниками: приведенные в отчетах пути и строки, вызовы SQLite/SQL, таблицы Plant, адресация Word-таблиц и ячеек, копирование шаблона во временный файл.
|
||||||
|
* Вывод из исходников: отчёт предназначен для сметчиков и формируется по выбранному фильтру.
|
||||||
|
* Предположение: запуск выполняется внешним пользователем/ярлыком или из корпоративного набора, так как регистрация команды AutoCAD отсутствует.
|
||||||
|
* Неизвестно: фактическая версия AutoCAD/Plant 3D runtime, установленная версия Word и успешность запуска на Plant 3D 2026.
|
||||||
|
|
||||||
|
## Состав
|
||||||
|
|
||||||
|
Подробности находятся в `source-inventory.md`, `architecture.md`, `document-generation-flow.md`, `template-analysis.md`, `field-mapping.md`, `compatibility-2019-2026.md`, `reusable-components.md`, `risks.md` и `migration-plan.md`. Машиночитаемые доказательства — в `evidence/`; это агрегированные списки, хэши и результаты поиска.
|
||||||
|
|
||||||
|
## Главные ответы
|
||||||
|
|
||||||
|
* Plant-данные: `Piping.dcf` (EngineeringItems и связанные таблицы), `ProcessPower.dcf` (PnPProject и свойства проекта), выбранные чертежи/линии и вспомогательные XML/XLS/PSPC.
|
||||||
|
* Word API: Microsoft.Office.Interop.Word; альтернативно SautinSoft.Document.
|
||||||
|
* Заполнение: первая таблица основного документа, строки и ячейки по позициям; отдельные таблицы колонтитулов и жесткие номера ячеек.
|
||||||
|
* PDF: в найденном коде `ExportAsFixedFormat` не обнаружен.
|
||||||
|
* Повторное использование: алгоритмы извлечения данных — только через Plant adapter; документный mapping — референс для тестов, но Word слой требуется изолировать и переработать.
|
||||||
|
|
||||||
|
## Официальные материалы 2026
|
||||||
|
|
||||||
|
Сравнение ограничено официальными материалами Autodesk: [What's New 2026](https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-WhatsNew/files/GUID-384C71E7-9012-48B1-95B2-D4C42EBCF423.htm), [Release Notes](https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-ReleaseNotes/files/AUTOCAD_PLNT3D_2026_RELEASE_NOTES.html), [команды и системные переменные](https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-UserGuide/files/GUID-65DE87DF-BF07-49A0-B026-FF51210E349A.htm). Эти источники не подтверждают эквивалентность корпоративной ВОР; списание плагина требует runtime-сравнения.
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Архитектура
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
U[Пользователь/внешний запуск] --> E[P_Rec_BOP.exe]
|
||||||
|
E --> S[Settings.xml]
|
||||||
|
E --> P[Project.xml]
|
||||||
|
P --> D[Piping.dcf]
|
||||||
|
P --> PP[ProcessPower.dcf]
|
||||||
|
E --> F[Формы и фильтр чертежей/линий]
|
||||||
|
F --> C[Расчеты PipingElements/Welds]
|
||||||
|
C --> R[ReportWithWorder]
|
||||||
|
R --> W[Worder: Word PIA или SautinSoft]
|
||||||
|
W --> T[Шаблон.docx]
|
||||||
|
W --> O[DOCX в проектной папке]
|
||||||
|
E --> A[AcCoreConsole + ConsoleGetDrawingInformation.dll]
|
||||||
|
```
|
||||||
|
|
||||||
|
`Program.Main` последовательно читает настройки, запрашивает `Project.xml`, проверяет домен/диск N, определяет папку проекта, проверяет открытые DWG, читает DCF и показывает формы (`Program.cs:53-118`, `125-210`, `265-356`). После проверок запускается `ReportWithWorder.OutputReport()` и результат открывается через `Process.Start` (`Program.cs:726-770`).
|
||||||
|
|
||||||
|
Это не DLL, загружаемая Plant 3D. Сопряжение с Plant 3D реализовано через файловые базы проекта и внешний `AcCoreConsole`, а не через обнаруженную AutoCAD command registration.
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# Пользовательский сценарий и точки входа
|
||||||
|
|
||||||
|
Точка входа — `P_Rec_BOP/Program.cs:53` (`static void Main(string[] args)`). Аргумент командной строки может быть путем к `Settings.xml` (`Program.cs:70-82`). Далее пользователь выбирает `Project.xml` в OpenFileDialog (`Program.cs:92-101`).
|
||||||
|
|
||||||
|
Сценарий:
|
||||||
|
|
||||||
|
1. Прочитать настройки и выбрать проект.
|
||||||
|
2. Проверить корпоративный домен и наличие `N:\` (`Program.cs:104-119`); это инфраструктурный gate.
|
||||||
|
3. Определить `Glob.sProjectFolder`, расположение отчета A/Q и наличие материалов НКР (`Program.cs:135-160`).
|
||||||
|
4. Проверить SQLite и отсутствие открытых чертежей (`Program.cs:163-188`).
|
||||||
|
5. Прочитать `Piping.dcf`, проверить `EngineeringItems` и принадлежность компонентов номерам линий (`Program.cs:191-261`).
|
||||||
|
6. Прочитать `ProcessPower.dcf` (`Program.cs:265-285`), заполнить форму основной надписи (`Program.cs:289-296`).
|
||||||
|
7. Проверить Z-координату и построить списки чертежей/линий; пользователь подтверждает выбор (`Program.cs:313-356`).
|
||||||
|
8. При отсутствии ошибок создать `ReportWithWorder`, построить документ и открыть его (`Program.cs:726-770`).
|
||||||
|
|
||||||
|
Команд AutoCAD `CommandMethod` и lifecycle `IExtensionApplication` в исходниках не обнаружено; результат зафиксирован в `evidence/commands-search.txt` как отсутствие совпадений. Это делает EXE внешним инструментом, даже если он использует AutoCAD console для чтения отдельных DWG.
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# Совместимость 2019 → 2026
|
||||||
|
|
||||||
|
Подтвержденные привязки: `Settings.xml:7` — `C:\Program Files\Autodesk\AutoCAD 2019\accoreconsole.exe`; `P_Rec_BOP.csproj` — `.NET Framework 4.7`, x86, Office PIA 15 и x32 SQLite; `DrawingsInformation.cs:132` — комментарий AutoCAD 2019. Это потенциальные точки миграции, а не доказательство несовместимости.
|
||||||
|
|
||||||
|
Официальные материалы Autodesk 2026 описывают новые/измененные Plant 3D функции, в том числе улучшения проекта, 3D-моделирования и Ortho; отдельная официальная документация не подтверждает, что корпоративная ВОР, специфические DCF-запросы или внешний `ConsoleGetDrawingInformation.dll` заменяются штатной возможностью. Поэтому статус: `OFFICIAL_RESEARCH_REQUIRED`, runtime-снятие плагина не рекомендовано.
|
||||||
|
|
||||||
|
План адаптации:
|
||||||
|
|
||||||
|
* вынести чтение DCF и модели в `IPlantProjectDataProvider`;
|
||||||
|
* заменить AutoCAD 2019 console path конфигурацией и adapter 2026;
|
||||||
|
* отделить document-independent DTO/calculation от Word engine;
|
||||||
|
* заменить PIA-обязательность поздним COM или отдельным Word worker, проверить Office 64-bit;
|
||||||
|
* заменить x86 SQLite native dependency на проверенную 2026-совместимую сборку;
|
||||||
|
* сравнить golden DOCX/PDF и значения на тестовом копировании проекта.
|
||||||
|
|
||||||
|
Официальные источники: [Plant 3D 2026 What's New](https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-WhatsNew/files/GUID-384C71E7-9012-48B1-95B2-D4C42EBCF423.htm), [Plant 3D 2026 Release Notes](https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-ReleaseNotes/files/AUTOCAD_PLNT3D_2026_RELEASE_NOTES.html), [2026 commands/system variables](https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-UserGuide/files/GUID-65DE87DF-BF07-49A0-B026-FF51210E349A.htm).
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# Зависимости
|
||||||
|
|
||||||
|
| Зависимость | Где | Назначение | Риск |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Microsoft.Office.Interop.Word 15.0.0.0 | `P_Rec_BOP.csproj`, `Worder.cs` | Word COM, поля, таблицы, сохранение | Office PIA/версия/битность, COM lifecycle |
|
||||||
|
| SautinSoft.Document | csproj/lib, `Worder.cs` | альтернативный DOCX/RTF engine | лицензия, качество round-trip, бинарная зависимость |
|
||||||
|
| System.Data.SQLite x32 | csproj/lib, Program/SQLiteDataBase | чтение DCF SQLite | x86 и native DLL |
|
||||||
|
| `ConsoleGetDrawingInformation.dll` | csproj/DrawingsInformation | чтение сведений DWG через console | AutoCAD 2019 путь/API и временные копии |
|
||||||
|
| `accoreconsole.exe` | `Settings.xml` | извлечение данных из DWG | жесткий путь AutoCAD 2019 |
|
||||||
|
| внешние XLS/PSPC/XML | `Settings.xml`, `XMLFile.cs` | материалы, трассировка, НКР | сетевые пути и отсутствие версионирования |
|
||||||
|
|
||||||
|
Прямых ссылок на `AcMgd`, `AcDbMgd`, `PnP3dObjectsMgd` в проекте не найдено; Plant coupling — через DCF и console helper. Полный безопасный список ссылок: `evidence/project-references.csv`; поиск API: `evidence/plant-api-search.txt`.
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# Формирование Word-документа
|
||||||
|
|
||||||
|
`ReportWithWorder.OutputReport` проверяет `.docx`-шаблон, создает каталог проекта и имя `Ведомость объемов работ (yyyy.MM.dd HH.mm.ss).docx` (`ReportWithWorder.cs:30-54`). Движок по умолчанию — Microsoft Office Interop, но пользователю предлагается переключиться на SautinSoft (`ReportWithWorder.cs:54-85`).
|
||||||
|
|
||||||
|
`Worder.Load` копирует шаблон в `%TEMP%` (`Worder.cs:305-322`). Office-ветка создает `Word.Application`, открывает временный документ, берет `Tables[1]`, таблицы footer первой и основной страницы, делает Word видимым и меняет View/Selection (`Worder.cs:326-355`). SautinSoft-ветка загружает DocumentCore и берет первую таблицу и footer-таблицы по индексам (`Worder.cs:357-370`).
|
||||||
|
|
||||||
|
Основные строки результата строятся `ReportWithWorder.cs:93-1287`: группы `PipingElement` и сварные стыки превращаются в строки `Cells12345TableRow`; строки добавляются через `Worder.AddNewRowToTable`. `Worder.cs:588-626` показывает, что Office использует `_wordTable.Rows.Add(ref oMissing)`, а SautinSoft клонирует вторую строку.
|
||||||
|
|
||||||
|
Поля обновляются в основном тексте и headers/footers (`Worder.cs:742-763`), затем документ сохраняется, закрывается и Word завершается (`Worder.cs:383-420`). Важный риск: COM-объекты не освобождаются через `Marshal.FinalReleaseComObject`, а `Load`/`SaveAndUnload` ловят исключения и продолжают путь копирования (`Worder.cs:372-380`, `508-519`); возможны поврежденный результат и зависший WINWORD.EXE.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
NO_MATCH
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
command_or_entrypoint,file,line,class_or_method,user_purpose,confidence
|
||||||
|
Main,P_Rec_BOP/Program.cs,53,Program.Main,Standalone WinForms entrypoint,confirmed
|
||||||
|
AutoCAD command registration,none,none,none,No CommandMethod/IExtensionApplication found,confirmed
|
||||||
|
Report generation,P_Rec_BOP/Program.cs,745,ReportWithWorder.OutputReport,Create and open VOR DOCX,confirmed
|
||||||
|
@@ -0,0 +1,7 @@
|
|||||||
|
field,source,transform,destination,evidence
|
||||||
|
ProjectName,ProcessPower.dcf/PnPProject or SetMainTitle UI,string pass-through,footer cell 7,SetMainTitle.cs:21-24; Worder.cs:812-820
|
||||||
|
DocumentName,ReportWithWorder constant,string pass-through,first-page footer cell 24,ReportWithWorder.cs:1308-1310; Worder.cs:821-826
|
||||||
|
DesignerRows,SetMainTitle UI,string pass-through,footer title cells,Worder.cs:827 onward
|
||||||
|
PipingElements,Piping.dcf tables,group/round/format,main table rows,ReportWithWorder.cs:93-190
|
||||||
|
Welds,Piping.dcf and selected line data,group by line/control,main table rows,Welds.cs; ReportWithWorder.cs
|
||||||
|
OutputFileName,current date/time,yyyy.MM.dd HH.mm.ss,project report folder,ReportWithWorder.cs:49-52
|
||||||
|
@@ -0,0 +1,150 @@
|
|||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\CHANGELOG.md:166: - добавление проверки библиотеки SQLite при старте программы
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\README.md:89:добавлена проверка библиотеки SQLite на работоспособность при старте
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:2://using System.Data;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\CSVFile.cs:3:using System.Data;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\CSVFile.cs:10: // Класс для работы с CSV-файлами
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\CSVFile.cs:11: class CSVFile
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\CSVFile.cs:13: public DataTable dtRows; // таблица с записями CSV-файла
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\CSVFile.cs:14: public const string csCSVDelimeter = ";"; // разделитель CSV-файла
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\CSVFile.cs:15: const bool cbIncludeHeader = true; // включить заголовки полей CSV-файла
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\CSVFile.cs:31: // Прочитать CSV-файл
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\CSVFile.cs:41: string[] asColumnNames = srStreamReader.ReadLine().Split(csCSVDelimeter.ToCharArray());
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\CSVFile.cs:81: //This will work for Excel, Access, etc. default exports.
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\CSVFile.cs:90: string[] asFieldValues = sRecord.Split(csCSVDelimeter.ToCharArray());
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\CSVFile.cs:101: // Сохранить CSV-файл
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\CSVFile.cs:104: // StringBuilder для содержимого CSV-файла
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\CSVFile.cs:114: sbResult.Append(csCSVDelimeter);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\CSVFile.cs:125: string sFieldValue = string.Format("{0}", oFieldValue).Replace(csCSVDelimeter, "\"" + csCSVDelimeter + "\"");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\CSVFile.cs:126: sbResult.Append(sFieldValue + csCSVDelimeter);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\CSVFile.cs:144: // Сохранить CSV-файл
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\CSVFile.cs:145: using (StreamWriter swStreamWriter = new StreamWriter(sFullFileName, false, Encoding.GetEncoding(1251)))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\CSVFile.cs:147: swStreamWriter.Write(sbResult.ToString());
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:6:using System.Data;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:7:using System.Data.SqlClient;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:8:using System.Data.SQLite;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:9:using System.Xml.Linq;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:159: System.Data.DataTable tablePnPDrawings = _projectPipingDcf.Tables["PnPDrawings"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:211: //System.Data.DataTable tableEngineeringItems = _projectPipingDcf.Tables["EngineeringItems"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:256: System.Data.DataTable tableEngineeringItems = _projectPipingDcf.Tables["EngineeringItems"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:257: System.Data.DataTable tablePnPDataLinks = _projectPipingDcf.Tables["PnPDataLinks"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:258: System.Data.DataTable tablePnPDrawings = _projectPipingDcf.Tables["PnPDrawings"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:259: System.Data.DataTable tableP3dLineGroupPartRelationship = _projectPipingDcf.Tables["P3dLineGroupPartRelationship"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:260: System.Data.DataTable tableP3dLineGroup = _projectPipingDcf.Tables["P3dLineGroup"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:262: // System.Data.DataTable tableP3dDrawingLineGroupRelationship = _projectPipingDcf.Tables["P3dDrawingLineGroupRelationship"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:472: System.Data.DataTable tableEngineeringItems = _projectPipingDcf.Tables["EngineeringItems"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:473: System.Data.DataTable tablePnPDataLinks = _projectPipingDcf.Tables["PnPDataLinks"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:474: System.Data.DataTable tablePnPDrawings = _projectPipingDcf.Tables["PnPDrawings"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:475: System.Data.DataTable tableP3dLineGroupPartRelationship = _projectPipingDcf.Tables["P3dLineGroupPartRelationship"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:476: System.Data.DataTable tableP3dLineGroup = _projectPipingDcf.Tables["P3dLineGroup"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:478: // System.Data.DataTable tableP3dDrawingLineGroupRelationship = _projectPipingDcf.Tables["P3dDrawingLineGroupRelationship"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:480: System.Data.DataTable tablePipe = _projectPipingDcf.Tables["Pipe"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:483: System.Data.DataTable tablePipeBend = null;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsInformation.cs:7:using System.Data;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsInformation.cs:22: System.Data.DataTable dtDrawingsInformation;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsInformation.cs:64: using (StreamWriter swScriptFile = new StreamWriter(Path.GetTempPath() + "\\" + sScriptFileName, false, Encoding.GetEncoding(1251)))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsInformation.cs:66: swScriptFile.Write(sbScriptFile.ToString());
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsInformation.cs:95: dtDrawingsInformation = CSVFile.ReadFile(Path.GetTempPath() + "\\" + sReportFileName);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsInformation.cs:128: private System.Data.DataTable ApplyConsoleGetDrawingInformationLibToDwgs(List<Drawing> dwgItemList, string sCSVDelimeter)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsInformation.cs:130: System.Data.DataTable resTable = new System.Data.DataTable();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsInformation.cs:211: scr += "\"" + sCSVDelimeter + "\"";
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsInformation.cs:248: using (StreamWriter swScriptFile = new StreamWriter(
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsInformation.cs:251: swScriptFile.Write(sbScriptFile.ToString());
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsInformation.cs:291: resTable = CSVFile.ReadFile(sOutputFilePath);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Glob.cs:35: // читается в [CSVFile.cs], [Program.cs], [SetMainTitle.cs]
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Materials.cs:5:using System.Data;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Materials.cs:21: public static bool AllMaterialsInXml(string[] asSpecPaths, string sTracingSpecPath)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Materials.cs:143: DataSet dsSpec = SQLiteDataBase.ReadDB(sSpecFile);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Materials.cs:300: Program.IsErrorCodeNotOK(ErrorCode.ecCatchInAllMaterialsInXml);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:3:using System.Data;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:158: DataSet dsTracingSpec = SQLiteDataBase.ReadDB(Glob.sTracingSpecPath);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:4:using System.Data;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:14:using System.Data.SQLite;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:82: if (XMLFile.ReadXMLFile() != 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:163: // проверяем работоспособность модуля SQLite
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:168: using (SQLiteConnection sqlcConnection = new SQLiteConnection())
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:177: Glob.TracedMessageBoxShow("Проблема с подключением к библиотекам SQLite");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:200: isSqlite = sr.ReadLine().StartsWith("SQLite");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:208: dsPipingDCF = SQLiteDataBase.ReadDB(Glob.sProjectFolder + "\\Piping.dcf");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:273: isSqlite = sr.ReadLine().StartsWith("SQLite");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:281: dsProcessPowerDCF = SQLiteDataBase.ReadDB(Glob.sProjectFolder + "\\ProcessPower.dcf");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:556: if (!Materials.AllMaterialsInXml(Glob.workingSpecPathList.ToArray(), Glob.sTracingSpecPath))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:579: //if (!Specs.AllSpecsInXml()) {
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:639: CSVFile csvfErrorNKRs = new CSVFile();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:640: csvfErrorNKRs.dtRows = new System.Data.DataTable();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:752: using (StreamWriter sZCorrectionFile = new StreamWriter(
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:757: sZCorrectionFile.WriteLine(dZCorrection.ToString());
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:959: ecCatchInAllMaterialsInXml = 40, // catch в методе AllMaterialsInXml
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:962: ecNoMetricNominalDiameterFoundInMaterial = 43, // невозможно определить метрический номинальный диаметр для британского в AllMaterialsInXml
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:974: ecNoImperialNominalDiameterFoundInMaterial = 55, // невозможно определить британский номинальный диаметр для метрического в AllMaterialsInXml
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\lib\Readme.txt:2:System.Data.SQLite.dll
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\lib\Readme.txt:3:SQLite.Interop.dll
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\P_Rec_BOP.csproj:56: <Compile Include="CSVFile.cs" />
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\P_Rec_BOP.csproj:89: <Compile Include="SQLiteDataBase.cs" />
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\P_Rec_BOP.csproj:96: <Compile Include="XLSFile.cs" />
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\P_Rec_BOP.csproj:109: <Reference Include="System.Data" />
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\P_Rec_BOP.csproj:110: <Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\P_Rec_BOP.csproj:111: <Reference Include="System.Data.SQLite">
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\P_Rec_BOP.csproj:112: <HintPath>lib\x32\System.Data.SQLite.dll</HintPath>
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\P_Rec_BOP.csproj:117: <Reference Include="System.Xml.Linq" />
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\P_Rec_BOP.csproj:165: <Content Include="SQLite.Interop.dll">
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PYFile.cs:7:using System.Data;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PYFile.cs:120: dsMaterials = XLSFile.ReadFile(sMaterialsFile);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PYFile.cs:133: string sLines = srScriptFile.ReadToEnd();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PYFile.cs:178: foreach (DataTable dtXLSheet in dsMaterials.Tables)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PYFile.cs:180: DataRow[] adrMaterial = dtXLSheet.Select("[Guid]='" + gTag.ToString() + "'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SelectDrawingsAndLinenumbers.cs:4:using System.Data;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SetMainTitle.cs:4:using System.Data;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SetMainTitle.cs:72: bool bFromCSV = false;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SetMainTitle.cs:100: DataTable dtSource = CSVFile.ReadFile(sProjectPropertiesFile);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SetMainTitle.cs:117: bFromCSV = true;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SetMainTitle.cs:123: if (!bFromCSV)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SetMainTitle.cs:184: if (bFromCSV || bFromProject)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SetMainTitle.cs:255: CSVFile csvfProjectProperties = new CSVFile();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SQLDataBase.cs:4:using System.Data;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SQLDataBase.cs:5:using System.Data.SqlClient;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SQLDataBase.cs:8:using System.Xml.Linq;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SQLDataBase.cs:32: XElement dcfAsXml = XElement.Load(sFileName);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SQLDataBase.cs:33: IEnumerable<string> names = from item in dcfAsXml.Descendants("Parameter")
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SQLDataBase.cs:37: names = from item in dcfAsXml.Descendants("Parameter")
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SQLDataBase.cs:55: using (sqldaAdapter = new SqlDataAdapter("SELECT * FROM [" + sTableName + "]", sqlcConnection))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Specs.cs:18: //public static bool AllSpecsInXml() {
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SQLiteDataBase.cs:2:using System.Data;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SQLiteDataBase.cs:3:using System.Data.SQLite;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SQLiteDataBase.cs:11: // Класс для чтения базы данных SQLite
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SQLiteDataBase.cs:12: class SQLiteDataBase
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SQLiteDataBase.cs:14: // Прочитать базу данных SQLite
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SQLiteDataBase.cs:20: SQLiteDataAdapter sqldaAdapter = null; // SQLiteDataAdapter для чтения таблицы БД
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SQLiteDataBase.cs:25: using (SQLiteConnection sqlcConnection = new SQLiteConnection())
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SQLiteDataBase.cs:37: using (sqldaAdapter = new SQLiteDataAdapter("SELECT * FROM [" + sTableName + "]", sqlcConnection))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:3:using System.Data;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:3:using System.Data;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:2:using System.Data;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:18: // Создать объект CSVFile для вывода информации по PipingElements.lpePipingElements
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:19: CSVFile csvfPipingElements = new CSVFile();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:72: // Создать объект CSVFile для вывода информации по ValveGroups.lvgValveGroups
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:73: CSVFile csvfValves = new CSVFile();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:112: // Создать объект CSVFile для вывода информации по SupportGroups.lsgSupportGroups
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:113: CSVFile csvfSupports = new CSVFile();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:148: // Создать объект CSVFile для вывода информации по SupportGroups.lnkrNKRGroups
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:149: CSVFile csvfNKRs = new CSVFile();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:186: // Создать объект CSVFile для вывода информации по Welds.lwlnLineNumbers
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:187: CSVFile csvfWeldControlForLineNumbers = new CSVFile();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:230: // Создать объект CSVFile для вывода информации по Welds.lpWelds
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:231: CSVFile csvfWeldControlTotal = new CSVFile();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:256: // Создать объект CSVFile для вывода информации по Welds.lhtWelds
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:257: CSVFile csvfWeldHeatTreatment = new CSVFile();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:310: // Создать объект CSVFile для вывода информации по TestLineNumbers.lpPiping
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:311: CSVFile csvfPipingTest = new CSVFile();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\XLSFile.cs:2:using System.Data;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\XLSFile.cs:3:using System.Data.OleDb;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\XLSFile.cs:9: // Класс для чтения XLS-файла
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\XLSFile.cs:10: class XLSFile
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\XLSFile.cs:15: DataSet dsXLSFile = new DataSet();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\XLSFile.cs:23: "Data Source=" + sFileName + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\XLSFile.cs:28: DataTable dtDbSchemaTable = odbcConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); // DataTable для хранения схемы файла Excel
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\XLSFile.cs:29: //string[] asExcelSheets = new String[dtDbSchemaTable.Rows.Count]; // массив с именами листов файла Excel
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\XLSFile.cs:50: dsXLSFile.Tables.Add(dtTempDataTable);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\XLSFile.cs:63: return dsXLSFile;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:4:using System.Data;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\XMLFile.cs:2:using System.Xml.Linq;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:3:using System.Data;
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
file,line,api,purpose,risk,reuse
|
||||||
|
P_Rec_BOP/Worder.cs,331,Word.Application,Create Word COM server,PIA/COM lifecycle,DO_NOT_REUSE
|
||||||
|
P_Rec_BOP/Worder.cs,332,Documents.Open,Open temporary template copy,Office/version,REUSE_AFTER_ISOLATION
|
||||||
|
P_Rec_BOP/Worder.cs,333,Tables[1],Select main output table,Template schema fragility,REIMPLEMENT_WITH_SAME_BEHAVIOR
|
||||||
|
P_Rec_BOP/Worder.cs,335,Sections[1].Footers[...].Range.Tables[1],Select title block footer tables,Template schema fragility,REIMPLEMENT_WITH_SAME_BEHAVIOR
|
||||||
|
P_Rec_BOP/Worder.cs,609,Rows.Add,Append report rows,Fixed row assumptions,REIMPLEMENT_WITH_SAME_BEHAVIOR
|
||||||
|
P_Rec_BOP/Worder.cs,748,Fields.Update,Update document fields,Word automation,REUSE_AFTER_ISOLATION
|
||||||
|
P_Rec_BOP/Worder.cs,755,HeaderFooter.Range.Fields.Update,Update header/footer fields,Word automation,REUSE_AFTER_ISOLATION
|
||||||
|
P_Rec_BOP/Worder.cs,416,Document.Save,Save result,COM cleanup,REUSE_AFTER_ISOLATION
|
||||||
|
@@ -0,0 +1,58 @@
|
|||||||
|
"RelativePath","Extension","Category","Length","LastWriteTimeUtc"
|
||||||
|
".editorconfig",".editorconfig","other","1158","2024-09-17T10:28:36.0000000Z"
|
||||||
|
".gitattributes",".gitattributes","other","1663","2024-09-17T10:28:36.0000000Z"
|
||||||
|
".gitignore",".gitignore","other","6578","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"CHANGELOG.md",".md","other","6550","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP.sln",".sln","project","1077","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\App.config",".config","configuration","217","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\Components.cs",".cs","source","14041","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\ConsoleGetDrawingInformation.dll",".dll","binary","17920","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\CSVFile.cs",".cs","source","7037","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\DrawingsAndLinenumbers.cs",".cs","source","52738","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\DrawingsInformation.cs",".cs","source","34474","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\Glob.cs",".cs","source","6410","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\InputBox.cs",".cs","source","2033","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\lib\ConsoleGetDrawingInformation.dll",".dll","binary","17920","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\lib\Precompiled Binaries for 64-bit Windows (.NET Framework 4.6).txt",".txt","other","0","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\lib\Readme.txt",".txt","other","369","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\lib\SautinSoft.Document.dll",".dll","binary","5899264","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\lib\SQLite.Interop.dll",".dll","binary","1626624","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\lib\System.Data.SQLite.dll",".dll","binary","381952","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\lib\x32\Microsoft.Office.Interop.Word.dll",".dll","binary","940672","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\lib\x32\Microsoft.Office.Interop.Word.xml",".xml","other","2898934","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\lib\x32\SQLite.Interop.dll",".dll","binary","1248768","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\lib\x32\System.Data.SQLite.dll",".dll","binary","381952","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\Materials.cs",".cs","source","20141","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\P_Rec_BOP.csproj",".csproj","project","7590","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\PipingElements.cs",".cs","source","100089","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\Program.cs",".cs","source","61679","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\Properties\AssemblyInfo.cs",".cs","source","1825","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\Properties\Resources.Designer.cs",".cs","source","3607","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\Properties\Resources.resx",".resx","resource","6327","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\PYFile.cs",".cs","source","14445","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\ReportWithWorder.cs",".cs","source","71204","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\Resources\TitleBox1.png",".png","resource","37188","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\Resources\TitleBox2.png",".png","resource","35579","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\ReversePolishNotation.cs",".cs","source","27685","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\SelectDrawingsAndLinenumbers.cs",".cs","source","25971","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\SelectDrawingsAndLinenumbers.designer.cs",".cs","source","8468","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\SelectDrawingsAndLinenumbers.resx",".resx","resource","5698","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\SetMainTitle.cs",".cs","source","15478","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\SetMainTitle.designer.cs",".cs","source","9881","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\SetMainTitle.resx",".resx","resource","62444","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\Settings.xml",".xml","other","49258","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\Specs.cs",".cs","source","7094","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\SQLDataBase.cs",".cs","source","4038","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\SQLite.Interop.dll",".dll","binary","1248768","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\SQLiteDataBase.cs",".cs","source","3075","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\Supports.cs",".cs","source","66253","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\TestLineNumbers.cs",".cs","source","14600","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\Valves.cs",".cs","source","40930","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\Versions.cs",".cs","source","19162","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\Welds.cs",".cs","source","144425","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\Worder.cs",".cs","source","41818","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\XLSFile.cs",".cs","source","3358","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"P_Rec_BOP\XMLFile.cs",".cs","source","20822","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"README.md",".md","other","8712","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"templates\Шаблон.docx",".docx","template/document","88534","2024-09-17T10:28:36.0000000Z"
|
||||||
|
"Комментарии.txt",".txt","other","1853","2024-09-17T10:28:36.0000000Z"
|
||||||
|
@@ -0,0 +1,58 @@
|
|||||||
|
"RelativePath","Length","SHA256"
|
||||||
|
".editorconfig","1158","0D35A75B9504BE5DB63CB11D44DB059825746DCF2FB6AAAB29A8798F0758252B"
|
||||||
|
".gitattributes","1663","AD78EDB5DFD7802DC618E3586DA0DCEFD2A4F311A64A359CC16398DCD06025C9"
|
||||||
|
".gitignore","6578","E9B79DE00820EBEB34759EBDEEF03EC5A3DA8CC79E337B0A8AFABA72A86BD7C4"
|
||||||
|
"CHANGELOG.md","6550","E9141F4781860034B2BA0617B4B84EB8E465B631E9F9835F320B542ECBEDC6EE"
|
||||||
|
"P_Rec_BOP.sln","1077","BE2D871B2399E0210837EB47F4B66D52CB79D3581F1099F3C95ED66D45261B02"
|
||||||
|
"P_Rec_BOP\App.config","217","3ACCE006549322AA227A742F945A57CCC951950DFADDD069654B9A9A54178A29"
|
||||||
|
"P_Rec_BOP\Components.cs","14041","93E4F2620CDD2C57B021F7351FFFE70184ED56D1E0BBD02A22C1DF8EC0F08021"
|
||||||
|
"P_Rec_BOP\ConsoleGetDrawingInformation.dll","17920","9EC139C1973B58EF2072086C16CD5824BF45B8B7D835018B37B1A516A4EE5D1C"
|
||||||
|
"P_Rec_BOP\CSVFile.cs","7037","B84B579A69477A8BE41D100C3478493536A1D55462AFAB8C55C88DA64DB0BF95"
|
||||||
|
"P_Rec_BOP\DrawingsAndLinenumbers.cs","52738","A9907AB6B46EB8C0339D2F77BDB0F659A502E051828D2D16E3E6932A258C7D1A"
|
||||||
|
"P_Rec_BOP\DrawingsInformation.cs","34474","068B63AC2B63E5AC936D258C450946650CE09F989A612C109341BEACAB9BA0E2"
|
||||||
|
"P_Rec_BOP\Glob.cs","6410","EC0E26CB215CEEB99BF4CCD5D82D36B402E607D7FEC99830E4C2E2F2377960FC"
|
||||||
|
"P_Rec_BOP\InputBox.cs","2033","A4EE6B38E58FDCFDD86B1E8ACF90BEBFBEAFCCA7AF70AE818FD8454AC2F613A3"
|
||||||
|
"P_Rec_BOP\lib\ConsoleGetDrawingInformation.dll","17920","9EC139C1973B58EF2072086C16CD5824BF45B8B7D835018B37B1A516A4EE5D1C"
|
||||||
|
"P_Rec_BOP\lib\Precompiled Binaries for 64-bit Windows (.NET Framework 4.6).txt","0","E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855"
|
||||||
|
"P_Rec_BOP\lib\Readme.txt","369","A7CE8A8E1A272B1A9DD6D5DE24CBA9C1341A50E59F1CE103EF5A289D90BC74FE"
|
||||||
|
"P_Rec_BOP\lib\SautinSoft.Document.dll","5899264","960DE19C66F486B1954B1E6E55DF13683F169D8955EF05BE7073B4B11BEE4DF7"
|
||||||
|
"P_Rec_BOP\lib\SQLite.Interop.dll","1626624","B7DFA963A09C21AE3EE7642416A168EEDBE690416C30C274E1666873117DF06D"
|
||||||
|
"P_Rec_BOP\lib\System.Data.SQLite.dll","381952","AC20FF6022AB6E5DAA9D1CA620941399AE4094CC72FE988EC92024A465E99EE3"
|
||||||
|
"P_Rec_BOP\lib\x32\Microsoft.Office.Interop.Word.dll","940672","23B1A58D7745524EFD87D3740E8363FE34D766E159C28BDF9FF2AABC79ED72D0"
|
||||||
|
"P_Rec_BOP\lib\x32\Microsoft.Office.Interop.Word.xml","2898934","76D668B99C41EBD7577111EAE2874FAF44995FD8EB20BF9F6175C4E22E09D5FD"
|
||||||
|
"P_Rec_BOP\lib\x32\SQLite.Interop.dll","1248768","E86066B2C0B9D00D75BFA5C4F7CDAC63BC520A70B72D6A58283804F4365A705B"
|
||||||
|
"P_Rec_BOP\lib\x32\System.Data.SQLite.dll","381952","AC20FF6022AB6E5DAA9D1CA620941399AE4094CC72FE988EC92024A465E99EE3"
|
||||||
|
"P_Rec_BOP\Materials.cs","20141","E9D759B563AB67C1577B49E5F70031A9B33E6F9425D089C4E908501402A42F66"
|
||||||
|
"P_Rec_BOP\P_Rec_BOP.csproj","7590","21C0D403A5F9EA8998CC718D63212446FDC1FD17709EC80BA8E909154422EDE4"
|
||||||
|
"P_Rec_BOP\PipingElements.cs","100089","89CC9C85FFFBA71395A293B112D270A33D4C339B118515341665905EDF5B9F71"
|
||||||
|
"P_Rec_BOP\Program.cs","61679","4EC712986EB584D75258F2714CF3035C06B5BF528ADC6458AD2D15190525CA7D"
|
||||||
|
"P_Rec_BOP\Properties\AssemblyInfo.cs","1825","453418BB1A77E5EE2E2ABA2DED4FFC6C7F748850B987DDEC60C85A73F2241BF6"
|
||||||
|
"P_Rec_BOP\Properties\Resources.Designer.cs","3607","B23A2C4AA1B1F2487292C8937B686B216B282158A82A098974B64CF45A48E458"
|
||||||
|
"P_Rec_BOP\Properties\Resources.resx","6327","98F984C20982C6EB8825A8E8701D56C8B80F2E7FCD874FD929A1F4611721E4E8"
|
||||||
|
"P_Rec_BOP\PYFile.cs","14445","A2FF325E1AA7CF67261951FD6EF2719CBB4BE4424E6AB6F7DA4309E7DD9B4771"
|
||||||
|
"P_Rec_BOP\ReportWithWorder.cs","71204","4EB13368BA7EC3F166612EB0093C9FACAFD1F4C34DA1EC20922E64E512D3B265"
|
||||||
|
"P_Rec_BOP\Resources\TitleBox1.png","37188","358E4618CA2AFA6DAB2BFC29FDB2316B1B8DDD472932A73AE991CB4110E93674"
|
||||||
|
"P_Rec_BOP\Resources\TitleBox2.png","35579","7C6837B130802983CA3D407EA56F46B148CDBFCB5B6B503EBE746F8945D98F41"
|
||||||
|
"P_Rec_BOP\ReversePolishNotation.cs","27685","764D375518BC1CB813DCC07BD60FFAA5D9908F4F5FDEFA109F690411340366BD"
|
||||||
|
"P_Rec_BOP\SelectDrawingsAndLinenumbers.cs","25971","6DE460137AD18ACCB80568F5C88C72BA7627CA7A657BFA87FF82C78DD571C596"
|
||||||
|
"P_Rec_BOP\SelectDrawingsAndLinenumbers.designer.cs","8468","792FDBC7D3D7C0638FFED1602106201D9300C9087749F290B9B8D984F2D6B7AD"
|
||||||
|
"P_Rec_BOP\SelectDrawingsAndLinenumbers.resx","5698","4D3EE9059F5B98AB1806F6916EBEA2A8C56023F8C63DDFD80B7378D27D1AA0F6"
|
||||||
|
"P_Rec_BOP\SetMainTitle.cs","15478","DD18254BE4653D0D419A92849B12665BA48C8E59B65C305E88EE4C65636617D9"
|
||||||
|
"P_Rec_BOP\SetMainTitle.designer.cs","9881","99409F220F85DFBAE0BC98D734B959001076BC9B1A9D620D6A354CF9C547EF37"
|
||||||
|
"P_Rec_BOP\SetMainTitle.resx","62444","CEB607A1CEB9B4AA262F4C779F2ED5AF730B8661A0031C63C02E8B425CA84EAF"
|
||||||
|
"P_Rec_BOP\Settings.xml","49258","AAEF4762FC246F8ABC5965FA5E6283DFB1716CCB9F1462EBDAE37CAD4847C136"
|
||||||
|
"P_Rec_BOP\Specs.cs","7094","E92FB765BEB5F1924F27D84FC61BD2DE5770C6D68525A2A755FBD30360A3EDA8"
|
||||||
|
"P_Rec_BOP\SQLDataBase.cs","4038","D1087DF5C777BF2B2F8A6700D0EE3AA6003B45C1BC01F52C6895F00BFB1043CD"
|
||||||
|
"P_Rec_BOP\SQLite.Interop.dll","1248768","E86066B2C0B9D00D75BFA5C4F7CDAC63BC520A70B72D6A58283804F4365A705B"
|
||||||
|
"P_Rec_BOP\SQLiteDataBase.cs","3075","424B09DB18D63284932AE8591C950D726DB57759A28F85B280BD8A0B1B719A11"
|
||||||
|
"P_Rec_BOP\Supports.cs","66253","625F261E8690A26F82F94FB193DEB4388699DCC6469E922ED38EF1CD4038B79F"
|
||||||
|
"P_Rec_BOP\TestLineNumbers.cs","14600","9E90DA99AF0DC84E8B334CE58CB8B5434BCA668EBDC83DDFEF1A33242051432F"
|
||||||
|
"P_Rec_BOP\Valves.cs","40930","D61C6ED91864535542795EF63B6858F79DBD7EFCD1DD1319B2DD3E9641EF42A7"
|
||||||
|
"P_Rec_BOP\Versions.cs","19162","BC0E748C956C00280E043A451BDDE831352A54AF79B087699002C63FD7AC0144"
|
||||||
|
"P_Rec_BOP\Welds.cs","144425","0F477FAD844FFFF59872C0C8C1E229846ADB1E2E9DA3C53B092A335EC5A04507"
|
||||||
|
"P_Rec_BOP\Worder.cs","41818","51FC57C057146B75AB9EF9F62DEDE4DB92BEA673B033F7184F67C33A0D1EF4ED"
|
||||||
|
"P_Rec_BOP\XLSFile.cs","3358","FD0C4B0A899EE98648786C8327A0AEF5EC9DBE1A0C8239CA1235B718D827C6B9"
|
||||||
|
"P_Rec_BOP\XMLFile.cs","20822","4075FDC3B58AECED0A6FF3DF62834B682B71F9BF601750FE67D7B06A9811393D"
|
||||||
|
"README.md","8712","CAA5BF352FAA414354909E49B29183125F91D1890892C27345E00B53685435CB"
|
||||||
|
"templates\Шаблон.docx","88534","C669900F2D7D8A3B80BF6898FE80B0F0A6CF4F38694694A66367E487EB3EA79B"
|
||||||
|
"Комментарии.txt","1853","80FB6E56EF3797EECDF59E6530927E5CACD8B1B82B73636B648749F0DF05DCA8"
|
||||||
|
@@ -0,0 +1,7 @@
|
|||||||
|
binary 9
|
||||||
|
configuration 1
|
||||||
|
other 10
|
||||||
|
project 2
|
||||||
|
resource 5
|
||||||
|
source 29
|
||||||
|
template/document 1
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
NO_MATCH
|
||||||
@@ -0,0 +1,836 @@
|
|||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:14:// // Выбрать все записи из таблицы EngineeringItems
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:15:// DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:18:// foreach (DataRow drEngineeringItem in adrEngineeringItems) {
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:25:// // Извлечь PnPID компонента
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:26:// int iComponentPnPId = Convert.ToInt32(drEngineeringItem["PnPID"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:28:// // Узнать PnPID чертежа для компонента
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:29:// DataRow[] adrDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:30:// if (adrDataLinks.Length != 1)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:34:// int iDwgId = Convert.ToInt32(adrDataLinks[0]["DwgId"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:40:// if (dDrawing.iPnPId == iDwgId) {
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:49:// // Узнать PnPID номера линии для компонента
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:50:// DataRow[] adrLineGroupPartRelationships = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[Part]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:51:// if (adrLineGroupPartRelationships.Length != 1) {
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:54:// int iLineNumberId = Convert.ToInt32(adrLineGroupPartRelationships[0]["LineGroup"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:60:// if (lnLineNumber.iPnPId == iLineNumberId) {
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:71:// switch (string.Format("{0}", adrDataLinks[0]["RowClassName"])) {
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:82:// lcComponents.Add(new Component(iComponentPnPId));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:96:// int iPnPId; // PnPId компонента
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:107:// public Component(int iPnPId) {
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:108:// this.iPnPId = iPnPId;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:109:// DataRow[] adrDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + this.iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:110:// string sClassName = string.Format("{0}", adrDataLinks[0]["RowClassName"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:143:// DataRow[] drPipeBend = Program.dsPipingDCF.Tables["PipeBend"].Select("[PnPID]=" + this.iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:155:// if (!GetDrawingFileNameAndComponentHandle(this.iPnPId, ref sDrawingFileName, ref lHandle)) {
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:169:// Components.lcComponents.Add(new Component(this.iPnPId, iNextZ - 500, Program.diDrawingsInformation.GetPipeLength(sDrawingFileName, lHandle, iNextZ, iNextZ - 1000)));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:172:// Components.lcComponents.Add(new Component(this.iPnPId, (((dS1Z > dS2Z) ? dS2Z : dS1Z) + iNextZ) / 2, Program.diDrawingsInformation.GetPipeLength(sDrawingFileName, lHandle, iNextZ, (dS1Z > dS2Z) ? dS2Z : dS1Z)));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:179:// Console.WriteLine(iPnPId + ":" + ctComponentType.ToString() + ":" + dPositionZ + ":" + dPipeLength);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:183:// public Component(int iPnPId, double dPositionZ, double dPipeLength) {
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:184:// this.iPnPId = iPnPId;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:188:// Console.WriteLine(iPnPId + ":" + ctComponentType.ToString() + ":" + dPositionZ + ":" + dPipeLength);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:191:// // Получить запись "PnPDataLinks" номера чертежа по БД 'Piping.dcf' с компонентом
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:193:// static bool GetDrawingFileNameAndComponentHandle(int iPnPId, ref string sDrawingFileName, ref long lHandle) {
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:195:// DataRow[] drRows3 = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:199:// Program.IsErrorCodeNotOK(ErrorCode.ecPnPDataLinksNotSingleRow);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:209:// Program.IsErrorCodeNotOK(ErrorCode.ecPnPDataLinksCannotConvertToLongDwgHandleLow);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:213:// // Получить PnPId чертежа с этим компонентом или выйти,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:220:// Program.IsErrorCodeNotOK(ErrorCode.ecPnPDataLinksCannotConvertToInt32DwgId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:224:// // Получить наименование файла чертежа по его PnPId из Program.ldSelectedDrawings
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:226:// if (dDrawing.iPnPId == iDwgId) {
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:149: // миникаталоги, которые зарегистрированы [PnPDrawings]
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:150: // имя в поле [Title] таблицы [PnPDrawings] может содержать
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:152: // для сравнения, поле [Spec] таблицы [EngineeringItems] не содержит
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:159: System.Data.DataTable tablePnPDrawings = _projectPipingDcf.Tables["PnPDrawings"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:161: res = tablePnPDrawings.Select()
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:162: .Where(x => x.Field<string>("PnPType") == "SPEC")
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:167: // from t1 in tablePnPDrawings.AsEnumerable()
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:168: // where t1.Field<string>("PnPType") == "SPEC"
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:201: // миникаталоги, к которым обращаются компоненты [EngineeringItems]
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:207: public List<(string sName, string sPath, List<long> ComponentPnPIDList)>
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:211: //System.Data.DataTable tableEngineeringItems = _projectPipingDcf.Tables["EngineeringItems"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:212: //res = tableEngineeringItems.Select().Select(x => x.Field<string>("Spec")).Distinct().ToList();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:214: List<(string sName, string sPath, List<long> ComponentPnPIDList)> res
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:215: = new List<(string sName, string sPath, List<long> ComponentPnPIDList)>();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:221: if (_projectPipingDcf.Tables.Contains("EngineeringItems")
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:222: && (_projectPipingDcf.Tables.Contains("PnPDataLinks"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:223: && (_projectPipingDcf.Tables.Contains("PnPDrawings"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:224: && (_projectPipingDcf.Tables.Contains("P3dLineGroupPartRelationship"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:225: && (_projectPipingDcf.Tables.Contains("P3dLineGroup"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:227: && (_projectPipingDcf.Tables["EngineeringItems"].Columns.Contains("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:228: && (_projectPipingDcf.Tables["EngineeringItems"].Columns.Contains("Status"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:229: && (_projectPipingDcf.Tables["EngineeringItems"].Columns.Contains("Spec"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:231: && (_projectPipingDcf.Tables["PnPDataLinks"].Columns.Contains("RowId"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:232: && (_projectPipingDcf.Tables["PnPDataLinks"].Columns.Contains("DwgId"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:234: && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:235: && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("PnPType"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:236: // && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("Dwg Name"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:237: // && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("Title"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:238: // && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("PnPRelativePath"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:239: && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("Path"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:240: && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("PnPUnc"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:241: && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("Area"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:243: && (_projectPipingDcf.Tables["P3dLineGroupPartRelationship"].Columns.Contains("Part"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:244: && (_projectPipingDcf.Tables["P3dLineGroupPartRelationship"].Columns.Contains("LineGroup"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:246: && (_projectPipingDcf.Tables["P3dLineGroup"].Columns.Contains("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:247: && (_projectPipingDcf.Tables["P3dLineGroup"].Columns.Contains("Tag"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:248: // && (_projectPipingDcf.Tables["P3dLineGroup"].Columns.Contains("Number"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:251: //DataSet dataSetEngineeringItemsAndLinks = new DataSet();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:252: //dataSetEngineeringItemsAndLinks.Load(_projectPipingDcf.CreateDataReader(), LoadOption.Upsert,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:253: // "EngineeringItems", "PnPDataLinks", "P3dLineGroupPartRelationship");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:256: System.Data.DataTable tableEngineeringItems = _projectPipingDcf.Tables["EngineeringItems"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:257: System.Data.DataTable tablePnPDataLinks = _projectPipingDcf.Tables["PnPDataLinks"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:258: System.Data.DataTable tablePnPDrawings = _projectPipingDcf.Tables["PnPDrawings"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:259: System.Data.DataTable tableP3dLineGroupPartRelationship = _projectPipingDcf.Tables["P3dLineGroupPartRelationship"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:260: System.Data.DataTable tableP3dLineGroup = _projectPipingDcf.Tables["P3dLineGroup"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:262: // System.Data.DataTable tableP3dDrawingLineGroupRelationship = _projectPipingDcf.Tables["P3dDrawingLineGroupRelationship"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:267: // имена миникаталогов в таблице [PnPDrawings] могут иметь расширение, и могут не иметь его
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:269: var querySpecPnPDrawings =
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:270: from t1 in tablePnPDrawings.AsEnumerable()
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:271: where t1.Field<string>("PnPType") == "SPEC"
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:280: foreach (var itm in querySpecPnPDrawings)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:287: //var queryEngineeringItems =
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:288: // from t1 in tableEngineeringItems.AsEnumerable()
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:294: // ComponentPnPID = t1["PnPID"].GetType() == typeof(long)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:295: // ? t1.Field<long>("PnPID") : t1.Field<int>("PnPID"),
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:309: // по связи с компонентами в [EngineeringItems]
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:313: var queryEngineeringItems =
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:314: from t1 in tableEngineeringItems.AsEnumerable()
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:316: join t2 in tablePnPDataLinks.AsEnumerable()
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:317: on Convert.ToInt32(t1["PnPID"].GetType() == typeof(long)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:318: ? t1.Field<long>("PnPID") : t1.Field<int>("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:322: join t3 in tablePnPDrawings.AsEnumerable()
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:325: equals Convert.ToInt32(t3["PnPID"].GetType() == typeof(long)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:326: ? t3.Field<long>("PnPID") : t3.Field<int>("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:328: join t4 in tableP3dLineGroupPartRelationship.AsEnumerable()
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:329: on Convert.ToInt32(t1["PnPID"].GetType() == typeof(long)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:330: ? t1.Field<long>("PnPID") : t1.Field<int>("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:334: join t5 in tableP3dLineGroup.AsEnumerable()
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:335: on Convert.ToInt32(t4["LineGroup"].GetType() == typeof(long)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:336: ? t4.Field<long>("LineGroup") : t4.Field<int>("LineGroup"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:337: equals Convert.ToInt32(t5["PnPID"].GetType() == typeof(long)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:338: ? t5.Field<long>("PnPID") : t5.Field<int>("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:349: Convert.ToInt32(t5["PnPID"].GetType() == typeof(long)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:350: ? t5.Field<long>("PnPID") : t5.Field<int>("PnPID")))))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:352: // where t3.Field<string>("PnPType") == "SPEC"
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:353: // where t3.Field<string>("PnPType") == "DWG"
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:357: ComponentPnPID = t1["PnPID"].GetType() == typeof(long)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:358: ? t1.Field<long>("PnPID") : t1.Field<int>("PnPID"),
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:365: //DwgPnPID = t3["PnPID"].GetType() == typeof(long)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:366: // ? t3.Field<long>("PnPID") : t3.Field<int>("PnPID"),
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:370: // t3.Field<string>("PnPUnc"),
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:374: //LineNamePnPID = t5["PnPID"].GetType() == typeof(long)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:375: // ? t5.Field<long>("PnPID") : t5.Field<int>("PnPID"),
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:380: //res = queryEngineeringItems.Select(x => x.SpecName).Distinct().ToList();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:381: foreach (var itm in queryEngineeringItems)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:385: specComponentsDict[itm.SpecName].Add(itm.ComponentPnPID);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:401: res.Add((sName: key, sPath: sPath, ComponentPnPIDList: specComponentsDict[key].ToList()));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:414: // получаем список труб, по таблицам [EngineeringItems], [Pipe], [PipeBend]:
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:415: // iPnPId, длина трубы, вес погонного метра, количество сварных швов пролета трубы (без краев)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:420: public List<(int iPnPId, double CutLength, double? LinearWeight, int WeldsInsidePipe)>
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:423: List<(int iPnPId, double CutLength, double? LinearWeight, int WeldsInsidePipe)> res
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:424: = new List<(int iPnPId, double CutLength, double? LinearWeight, int WeldsInsidePipe)>();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:426: int iPnPId;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:432: if (_projectPipingDcf.Tables.Contains("EngineeringItems")
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:433: && (_projectPipingDcf.Tables.Contains("PnPDataLinks"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:434: && (_projectPipingDcf.Tables.Contains("PnPDrawings"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:435: && (_projectPipingDcf.Tables.Contains("P3dLineGroupPartRelationship"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:436: && (_projectPipingDcf.Tables.Contains("P3dLineGroup"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:440: && (_projectPipingDcf.Tables["EngineeringItems"].Columns.Contains("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:441: && (_projectPipingDcf.Tables["EngineeringItems"].Columns.Contains("Status"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:443: && (_projectPipingDcf.Tables["PnPDataLinks"].Columns.Contains("RowId"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:444: && (_projectPipingDcf.Tables["PnPDataLinks"].Columns.Contains("DwgId"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:446: && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:447: // && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("PnPType"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:448: // && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("Dwg Name"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:449: // && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("Title"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:450: // && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("PnPRelativePath"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:451: && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("Path"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:452: // && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("PnPUnc"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:453: // && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("Area"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:455: && (_projectPipingDcf.Tables["P3dLineGroupPartRelationship"].Columns.Contains("Part"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:456: && (_projectPipingDcf.Tables["P3dLineGroupPartRelationship"].Columns.Contains("LineGroup"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:458: && (_projectPipingDcf.Tables["P3dLineGroup"].Columns.Contains("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:459: && (_projectPipingDcf.Tables["P3dLineGroup"].Columns.Contains("Tag"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:460: // && (_projectPipingDcf.Tables["P3dLineGroup"].Columns.Contains("Number"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:462: && (_projectPipingDcf.Tables["Pipe"].Columns.Contains("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:467: //DataSet dataSetEngineeringItemsAndLinks = new DataSet();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:468: //dataSetEngineeringItemsAndLinks.Load(_projectPipingDcf.CreateDataReader(), LoadOption.Upsert,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:469: // "EngineeringItems", "PnPDataLinks", "P3dLineGroupPartRelationship");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:472: System.Data.DataTable tableEngineeringItems = _projectPipingDcf.Tables["EngineeringItems"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:473: System.Data.DataTable tablePnPDataLinks = _projectPipingDcf.Tables["PnPDataLinks"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:474: System.Data.DataTable tablePnPDrawings = _projectPipingDcf.Tables["PnPDrawings"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:475: System.Data.DataTable tableP3dLineGroupPartRelationship = _projectPipingDcf.Tables["P3dLineGroupPartRelationship"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:476: System.Data.DataTable tableP3dLineGroup = _projectPipingDcf.Tables["P3dLineGroup"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:478: // System.Data.DataTable tableP3dDrawingLineGroupRelationship = _projectPipingDcf.Tables["P3dDrawingLineGroupRelationship"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:486: && (_projectPipingDcf.Tables["PipeBend"].Columns.Contains("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:500: // получаем список iPnPId труб / гнутых отводов по связи с компонентами
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:505: from t1 in tableEngineeringItems.AsEnumerable()
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:507: join t2 in tablePnPDataLinks.AsEnumerable()
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:508: on Convert.ToInt32(t1["PnPID"].GetType() == typeof(long)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:509: ? t1.Field<long>("PnPID") : t1.Field<int>("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:513: join t3 in tablePnPDrawings.AsEnumerable()
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:516: equals Convert.ToInt32(t3["PnPID"].GetType() == typeof(long)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:517: ? t3.Field<long>("PnPID") : t3.Field<int>("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:519: join t4 in tableP3dLineGroupPartRelationship.AsEnumerable()
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:520: on Convert.ToInt32(t1["PnPID"].GetType() == typeof(long)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:521: ? t1.Field<long>("PnPID") : t1.Field<int>("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:525: join t5 in tableP3dLineGroup.AsEnumerable()
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:526: on Convert.ToInt32(t4["LineGroup"].GetType() == typeof(long)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:527: ? t4.Field<long>("LineGroup") : t4.Field<int>("LineGroup"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:528: equals Convert.ToInt32(t5["PnPID"].GetType() == typeof(long)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:529: ? t5.Field<long>("PnPID") : t5.Field<int>("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:535: on Convert.ToInt32(t1["PnPID"].GetType() == typeof(long)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:536: ? t1.Field<long>("PnPID") : t1.Field<int>("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:537: equals Convert.ToInt32(t6["PnPID"].GetType() == typeof(long)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:538: ? t6.Field<long>("PnPID") : t6.Field<int>("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:547: Convert.ToInt32(t5["PnPID"].GetType() == typeof(long)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:548: ? t5.Field<long>("PnPID") : t5.Field<int>("PnPID")))))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:552: ComponentPnPID = t1["PnPID"].GetType() == typeof(long)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:553: ? t1.Field<long>("PnPID") : t1.Field<int>("PnPID"),
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:562: iPnPId = Convert.ToInt32(itm.ComponentPnPID);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:571: res.Add((iPnPId, CutLength, LinearWeight, WeldsInsidePipe));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:593: // если линия не именованная, то обращаемся к ней по ее PnPId
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:596: private string GetUnnamedLineName(int iPnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:598: return "(PnPId:" + iPnPId + ")";
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:610: foreach (DataRow drRow in _projectPipingDcf.Tables["PnPDrawings"].Rows)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:612: if (string.Format("{0}", drRow["PnPType"]) != "FOLDER")
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:617: dNewDrawing.iPnPId = Convert.ToInt32(drRow["PnPID"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:619: // dNewDrawing.sPath = Glob.sProjectFolder + "\\" + drRow["PnPRelativePath"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:625: DataRow[] adrRows = _projectPipingDcf.Tables["P3dDrawingLineGroupRelationship"]
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:626: .Select("[Drawing]=" + dNewDrawing.iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:632: if (lnLineNumber.iPnPId == Convert.ToInt32(drRow1["LineGroup"]))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:635: .Tables["P3dLineGroupPartRelationship"]
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:636: .Select("[LineGroup]=" + lnLineNumber.iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:662: foreach (DataRow drRow in _projectPipingDcf.Tables["P3dLineGroup"].Rows)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:667: lnNewLineNumber.iPnPId = Convert.ToInt32(drRow["PnPID"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:673: // lnNewLineNumber.sName = "(PnPId:" + lnNewLineNumber.iPnPId + ")";
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:674: lnNewLineNumber.sName = GetUnnamedLineName(lnNewLineNumber.iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:681: lineNameItmCalculated = CalculateTested(lnNewLineNumber.iPnPId, Glob.lkvpsdReplacePressure);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:713: int iPnPIdLineName, List<KeyValuePair<string, double>> lkvpsdReplacePressure)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:721: drSourceRow = _projectPipingDcf.Tables["P3dLineGroup"]
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:722: .Select("[PnPID]=" + iPnPIdLineName).First();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:864: public int iPnPId; // PnPId чертежа по БД 'Piping.dcf'
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:877: iPnPId = Convert.ToInt32(drSourceRow["PnPID"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:878: sPath = Program.sProjectFolder + "\\" + drSourceRow["PnPRelativePath"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:881: DataRow[] adrRows = Program.dsPipingDCF.Tables["P3dDrawingLineGroupRelationship"].Select("[Drawing]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:887: if (lnLineNumber.iPnPId == Convert.ToInt32(drRow["LineGroup"]))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:889: DataRow[] adrRows2 = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[LineGroup]=" + lnLineNumber.iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:908: public int iPnPId; // PnPId номера линии по БД 'Piping.dcf'
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:929: iPnPId = Convert.ToInt32(drSourceRow["PnPID"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:933: sName = "(PnPId:" + iPnPId + ")";
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsInformation.cs:42: sbScriptFile.AppendLine("(arxload \"PnP3dObjects.dbx\" \"Ошибка загрузки ARX (PnP3dObjects.dbx)!\")");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsInformation.cs:137: if (!File.Exists(Path.Combine(Path.GetDirectoryName(sAcCoreConsolePathInternal), "PnP3dObjects.dbx")))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsInformation.cs:139: Glob.TracedMessageBoxShow("Не найдено окружение приложения Plant 3D [PnP3dObjects.dbx]");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsInformation.cs:192:_arx _l ""PnP3dObjects.dbx""
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Materials.cs:77: List<(string sSpecFile, string sMaterial, int iPnPIdOfTheFirstFound)> lsMissedMaterialsAndItsSpec
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Materials.cs:78: = new List<(string sSpecFile, string sMaterial, int iPnPIdOfTheFirstFound)>();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Materials.cs:103: + "Обращение к материалу \n (миникаталог - EngineeringItems - PnPID): "
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Materials.cs:105: + "[" + string.Join("]\n[", lsMissedMaterialsAndItsSpec.Select(x => x.iPnPIdOfTheFirstFound).Distinct().ToList()) + "]"
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Materials.cs:140: ref List<(string sSpecFile, string sMaterial, int iPnPIdOfTheFirstFound)> lsMissedMaterialsAndItsComponent)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Materials.cs:158: DataRow[] adrPipes = dsSpec.Tables["EngineeringItems"].Select("[PartCategory]='Pipe'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Materials.cs:281: iPnPIdOfTheFirstFound: Convert.ToInt32(drPipe["PnPID"])));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:217: if (!dsPipingDCF.Tables.Contains("EngineeringItems"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:219: Glob.TracedMessageBoxShow("Не найдена таблица [EngineeringItems]");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:225: DataRow[] adrEngineeringItems = dsPipingDCF.Tables["EngineeringItems"].Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:226: foreach (DataRow drEngineeringItem in adrEngineeringItems)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:228: int iPnPId = Convert.ToInt32(drEngineeringItem["PnPID"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:229: DataRow[] adrLineGroupPartRelationships = dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[Part]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:230: if (adrLineGroupPartRelationships.Length == 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:237: // iNozzle = dsPipingDCF.Tables["Nozzle"].Select("PnPID=" + iPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:242: // iEquipment = dsPipingDCF.Tables["Equipment"].Select("PnPID=" + iPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:247: iNozzle = dsPipingDCF.Tables["Nozzle"].Select("PnPID=" + iPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:249: iEquipment = dsPipingDCF.Tables["Equipment"].Select("PnPID=" + iPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:389: + "\n\nPnPID" + msgFoundMoreThan + ": \n"
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:400: // миникаталоги, к которым обращаются компоненты [EngineeringItems]
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:401: List< (string sName, string sPath, List<long> ComponentPnPIDList)>
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:402: specList = new List<(string sName, string sPath, List<long> ComponentPnPIDList)>();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:411: foreach ((string sName, string sPath, List<long> ComponentPnPIDList) spec
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:414: testSpec.AddRange(spec.ComponentPnPIDList.Select(x => x.ToString()).ToList());
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:427: + "\n\nPnPID" + msgFoundMoreThan + ": \n"
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:434: // имена миникаталогов из [EngineeringItems]
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:435: //List<string> testSpecEngineeringItems = specList
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:437: List<string> testSpecEngineeringItems = specList.Select(x => x.sName).ToList();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:439: // миникаталоги, которые зарегистрированы [PnPDrawings]
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:440: // List<string> testSpecPnPDrawings = drawingsAndLinenumbers.GetProjectSpecNameList();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:446: testSpec = testSpecEngineeringItems.Except(testSpecFolder).ToList();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:466: // test = testSpecEngineeringItems.Except(testSpecPnPDrawings).ToList();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:531: .Select(x => x.iPnPId).ToList();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:543: + "\n\nPnPID" + msgFoundMoreThan + ": \n"
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:641: csvfErrorNKRs.AddColumnToTable("PnPId");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:653: + "Сейчас будет выведен список 'PnPId' НКР и наименований параметров у них, "
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:656: + "Используйте команду 'PXP-SI' для поиска НКР в проекте Plant 3D по номеру 'PnPId'",
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:921: ecPnPDataLinksNotSingleRow = 1, // в БД "Piping.dcf" в таблице "PnPDataLinks" нет ни одной, либо более одной записи с данным PnPId
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:922: ecPnPDataLinksCannotConvertToLongDwgHandleLow = 2, // невозможно получить значение типа long из поля "DwgHandleLow" записи таблицы "PnPDataLinks"
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:923: ecPnPDataLinksCannotConvertToInt32DwgId = 3, // невозможно получить значение типа int из поля "DwgId" записи таблицы "PnPDataLinks"
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:930: //ecP3dConnectorMoreThan1Row = 10, // более 1 записи с с данным PnPId в таблице "P3dConnector"
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:931: //ecP3dConnectorMoreThan1RowStage2 = 11, // более 1 записи с с данным PnPId в таблице "P3dConnector" далее в методе
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:932: //ecP3dLineGroupNoFieldTracingTemperature = 12, // нет поля "TracingTemperature" в таблице "P3dLineGroup"
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:27: // Выбрать все записи из таблицы EngineeringItems
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:28: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:31: foreach (DataRow drEngineeringItem in adrEngineeringItems)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:33: // Получить PnPID компонента
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:34: int iComponentPnPId = Convert.ToInt32(drEngineeringItem["PnPID"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:36: // Получить PnPID чертежа для компонента
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:37: DataRow[] adrDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:38: if (adrDataLinks.Length != 1)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:42: int iDwgId = Convert.ToInt32(adrDataLinks[0]["DwgId"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:46: if (Glob.ldSelectedDrawings.Where(o => o.iPnPId == iDwgId).Count() == 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:53: // if (dDrawing.iPnPId == iDwgId) {
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:62: // Получить PnPID номера линии для компонента
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:63: DataRow[] adrLineGroupPartRelationships = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[Part]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:64: if (adrLineGroupPartRelationships.Length == 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:71: // iNozzle = Program.dsPipingDCF.Tables["Nozzle"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:76: // iEquipment = Program.dsPipingDCF.Tables["Equipment"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:81: iNozzle = Program.dsPipingDCF.Tables["Nozzle"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:84: iEquipment = Program.dsPipingDCF.Tables["Equipment"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:89: Program.liComponentsWOLineNumber.Add(iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:93: int iLineNumberId = Convert.ToInt32(adrLineGroupPartRelationships[0]["LineGroup"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:97: if (Glob.ldSelectedLineNumbers.Where(o => o.iPnPId == iLineNumberId).Count() == 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:104: // if (lnLineNumber.iPnPId == iLineNumberId) {
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:115: DataRow[] adrPartPorts = Program.dsPipingDCF.Tables["PartPort"].Select("[Part]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:119: int iPortPnPId = Convert.ToInt32(drPartPort["Port"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:120: DataRow[] adrPorts = Program.dsPipingDCF.Tables["Port"].Select("[PnPID]=" + iPortPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:134: switch (string.Format("{0}", adrDataLinks[0]["RowClassName"]))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:143: UpdateOrCreatePipingElement(iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:165: foreach (DataRow drEngineeringItem in adrEngineeringItems)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:174: // Получить PnPID компонента
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:175: int iComponentPnPId = Convert.ToInt32(drEngineeringItem["PnPID"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:177: // Узнать PnPID чертежа для компонента
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:178: DataRow[] adrDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:179: if (adrDataLinks.Length != 1)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:183: int iDwgId = Convert.ToInt32(adrDataLinks[0]["DwgId"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:187: if (Glob.ldSelectedDrawings.Where(o => o.iPnPId == iDwgId).Count() == 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:193: // if (dDrawing.iPnPId == iDwgId) {
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:202: // Получить PnPID номера линии для компонента
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:203: DataRow[] adrLineGroupPartRelationships = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[Part]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:205: if (adrLineGroupPartRelationships.Length == 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:212: // iNozzle = Program.dsPipingDCF.Tables["Nozzle"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:217: // iEquipment = Program.dsPipingDCF.Tables["Equipment"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:222: iNozzle = Program.dsPipingDCF.Tables["Nozzle"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:224: iEquipment = Program.dsPipingDCF.Tables["Equipment"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:229: Program.liComponentsWOLineNumber.Add(iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:233: int iLineNumberId = Convert.ToInt32(adrLineGroupPartRelationships[0]["LineGroup"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:237: if (Glob.ldSelectedLineNumbers.Where(o => o.iPnPId == iLineNumberId).Count() == 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:243: // if (lnCurrentLineNumber.iPnPId == iLineNumberId) {
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:253: DataRow[] adrLineGroup = Program.dsPipingDCF.Tables["P3dLineGroup"].Select("[PnPID]=" + iLineNumberId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:254: string sTracingNumber = string.Format("{0}", adrLineGroup[0]["TracingNumber"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:267: string sTracingOuterDiameter = string.Format("{0}", adrLineGroup[0]["TracingDiameter"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:324: DataRow[] adrTracingPipes = dsTracingSpec.Tables["EngineeringItems"].Select("[MatchingPipeOd]=" + dTracingOuterDiameter);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:403: UpdateOrCreateTracingPipingElement(iComponentPnPId, mMaterial, ptfFormat, iNominalDiameter, dWallThickness, dOuterDiameter, dNominalPressure, iTracingCount, dWeight);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:415: public static double GetElbowLength(int iPnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:418: DataRow drElbow = Program.dsPipingDCF.Tables["Elbow"].Select("[PnPID]=" + iPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:425: // компонента с iComponentPnPId (добавить трубу теплоспутника)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:426: void UpdateOrCreateTracingPipingElement(int iComponentPnPId, Material mMaterial, PipingTitleFormat ptfFormat, int iNominalDiameter, double dWallThickness, double dOuterDiameter, double dNominalPressure, int iTracingCount, double dWeight)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:428: // Получить запись таблицы "EngineeringItems" для дальнейшей работы
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:429: DataRow[] adrComponent = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:437: if (!GetDrawingFileNameAndComponentHandle(iComponentPnPId, ref sDrawingFileName, ref lHandle))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:443: DataRow[] adrDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:444: string sComponentType = string.Format("{0}", adrDataLinks[0]["RowClassName"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:537: DataRow drPipe = Program.dsPipingDCF.Tables["Pipe"].Select("[PnPId]=" + iComponentPnPId).First();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:735: DataRow[] drPipeBend = Program.dsPipingDCF.Tables["PipeBend"].Select("[PnPID]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:743: dLength = GetElbowLength(iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:802: // компонента с iComponentPnPId
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:803: void UpdateOrCreatePipingElement(int iComponentPnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:805: // Получить запись таблицы "EngineeringItems" для дальнейшей работы
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:806: DataRow[] adrComponent = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:864: // Получить PnPID номера линии для компонента
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:865: DataRow[] adrLineGroupPartRelationships = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[Part]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:866: if (adrLineGroupPartRelationships.Length == 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:873: // iNozzle = Program.dsPipingDCF.Tables["Nozzle"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:878: // iEquipment = Program.dsPipingDCF.Tables["Equipment"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:883: iNozzle = Program.dsPipingDCF.Tables["Nozzle"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:885: iEquipment = Program.dsPipingDCF.Tables["Equipment"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:890: Program.liComponentsWOLineNumber.Add(iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:894: int iLineNumberId = Convert.ToInt32(adrLineGroupPartRelationships[0]["LineGroup"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:897: LineNumber lnLineNumber = Glob.ldSelectedLineNumbers.Where(o => o.iPnPId == iLineNumberId).First();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:904: // if (lnCurrentLineNumber.iPnPId == iLineNumberId) {
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:943: + "\nКомпоненту с PnPId в проекте [" + iComponentPnPId + "], "
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:969: Glob.TracedMessageBoxShow(iComponentPnPId.ToString());
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1015: if (!GetDrawingFileNameAndComponentHandle(iComponentPnPId, ref sDrawingFileName, ref lHandle))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1021: DataRow[] adrDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1022: string sComponentType = string.Format("{0}", adrDataLinks[0]["RowClassName"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1129: DataRow[] aPipes = Program.dsPipingDCF.Tables["Pipe"].Select("PnPID=" + iComponentPnPId);//2018
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1154: vpePipingElement.First().Add(mMaterial, ldPipeLengths[i], dWeight, iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1160: pePipingElement.Add(mMaterial, ldPipeLengths[i], dWeight, iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1172: // pePipingElement.Add(mMaterial, ldPipeLengths[i], dWeight, iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1184: // pePipingElement.Add(mMaterial, ldPipeLengths[i], dWeight, iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1226: + " PnPId[" + iComponentPnPId + "]"
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1254: vpePipingElement.First().Add(mMaterial, dLength, dWeight, iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1260: pePipingElement.Add(mMaterial, dLength, dWeight, iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1273: // pePipingElement.Add(mMaterial, dLength, dWeight, iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1285: // pePipingElement.Add(mMaterial, dLength, dWeight, iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1319: DataRow[] aPipeBends = Program.dsPipingDCF.Tables["PipeBend"].Select("PnPID=" + iComponentPnPId);//2018
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1331: + " PnPId[" + iComponentPnPId + "]"
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1344: DataRow[] drPipeBend = Program.dsPipingDCF.Tables["PipeBend"].Select("[PnPID]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1355: dLength = GetElbowLength(iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1381: vpePipingElement.First().Add(mMaterial, dLength, dWeight, iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1387: pePipingElement.Add(mMaterial, dLength, dWeight, iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1399: // pePipingElement.Add(mMaterial, dLength, dWeight, iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1411: // pePipingElement.Add(mMaterial, dLength, dWeight, iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1419: // Получить запись "PnPDataLinks" номера чертежа по БД 'Piping.dcf' с компонентом
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1422: public static bool GetDrawingFileNameAndComponentHandle(int iPnPId, ref string sDrawingFileName, ref long lHandle, bool bSkipError = false)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1426: // Получить запись "PnPDataLinks"
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1427: DataRow[] adrDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1430: if (adrDataLinks.Length == 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1432: Program.IsErrorCodeNotOK(ErrorCode.ecPnPDataLinksNotSingleRow);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1440: lHandle = Convert.ToInt64(adrDataLinks[0]["DwgHandleLow"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1444: Program.IsErrorCodeNotOK(ErrorCode.ecPnPDataLinksCannotConvertToLongDwgHandleLow);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1448: // Получить PnPId чертежа с этим компонентом или выйти,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1453: iDwgId = Convert.ToInt32(adrDataLinks[0]["DwgId"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1457: Program.IsErrorCodeNotOK(ErrorCode.ecPnPDataLinksCannotConvertToInt32DwgId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1461: // Получить наименование файла чертежа по его PnPId из Program.ldAllDrawings // support 492
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1462: var vDrawing = Glob.ldAllDrawings.Where(o => o.iPnPId == iDwgId); // support 492
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1466: if (Glob.ldSelectedDrawings.Where(o => o.iPnPId == iDwgId).Count() == 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1481: //// Получить наименование файла чертежа по его PnPId из Program.ldSelectedDrawings // support 492
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1482: //var vDrawing = Program.ldSelectedDrawings.Where(o => o.iPnPId == iDwgId); // support 492
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1496: // if (dDrawing.iPnPId == iDwgId) {
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1545: List<int> liPnPIds = new List<int>(); // список PnPId компонентов, которые образуют PipingElement
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1630: public void Add(Material mMaterial, double dLength, double dWeight, int iPnPId = -1, double tracingLength = 0.0, int tracingCount = 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1634: if (iPnPId != -1)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1636: liPnPIds.Add(iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1653: // Вернуть список PnPId компонентов, которые образуют PipingElement
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1654: public List<int> PnPIds
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1658: return liPnPIds;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SetMainTitle.cs:126: if (!Program.dsProcessPowerDCF.Tables.Contains("PnPProject"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SetMainTitle.cs:128: Glob.TracedMessageBoxShow("В базе данных 'ProcessPower.dcf' не найдена таблица 'PnPProject' "
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SetMainTitle.cs:138: // Прочитать таблицу 'PnPProject' из базы данных 'ProcessPower.dcf'
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SetMainTitle.cs:139: DataRow[] adrRows = Program.dsProcessPowerDCF.Tables["PnPProject"].Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SetMainTitle.cs:165: Glob.TracedMessageBoxShow("В базе данных 'ProcessPower.dcf' в таблице 'PnPProject' более одной записи! "
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Settings.xml:393: query: запрос к таблице EngineeringItems-->
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SelectDrawingsAndLinenumbers.cs:39: foreach (DataRow drRow in Program.dsPipingDCF.Tables["P3dLineGroup"].Rows)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SelectDrawingsAndLinenumbers.cs:47: foreach (DataRow drRow in Program.dsPipingDCF.Tables["PnPDrawings"].Rows)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SelectDrawingsAndLinenumbers.cs:49: if (string.Format("{0}", drRow["PnPType"]) != "FOLDER")
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SelectDrawingsAndLinenumbers.cs:330: public int iPnPId; // PnPId чертежа по БД 'Piping.dcf'
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SelectDrawingsAndLinenumbers.cs:339: iPnPId = Convert.ToInt32(drSourceRow["PnPID"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SelectDrawingsAndLinenumbers.cs:340: sPath = Program.sProjectFolder + "\\" + drSourceRow["PnPRelativePath"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SelectDrawingsAndLinenumbers.cs:343: DataRow[] adrRows = Program.dsPipingDCF.Tables["P3dDrawingLineGroupRelationship"].Select("[Drawing]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SelectDrawingsAndLinenumbers.cs:349: if (lnLineNumber.iPnPId == Convert.ToInt32(drRow["LineGroup"]))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SelectDrawingsAndLinenumbers.cs:351: DataRow[] adrRows2 = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[LineGroup]=" + lnLineNumber.iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SelectDrawingsAndLinenumbers.cs:370: public int iPnPId; // PnPId номера линии по БД 'Piping.dcf'
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SelectDrawingsAndLinenumbers.cs:380: iPnPId = Convert.ToInt32(drSourceRow["PnPID"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SelectDrawingsAndLinenumbers.cs:384: sName = "(PnPId:" + iPnPId + ")";
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:26: // Выбрать все записи из таблицы PnPDataLinks с арматурой и инструментами
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:27: DataRow[] adrDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowClassName]='Valve' OR [RowClassName]='InlineInstrument'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:29: // Создать списки PnPId элементов арматуры и инструментов,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:30: // если PnPId повторяются от группы к группе,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:32: List<int> liAllPnPIdValvesOrInstruments = new List<int>();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:33: List<int> liAddedPnPIdValvesOrInstruments = new List<int>();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:35: // Заполнить список PnPId всех элементов арматуры и инструментов
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:36: foreach (DataRow drValveOrInstrument in adrDataLinks)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:38: liAllPnPIdValvesOrInstruments.Add(Convert.ToInt32(drValveOrInstrument["RowId"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:63: // Получить PnPId компонента
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:64: int iPnPId = Convert.ToInt32(drValve["PnPID"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:68: if (liAllPnPIdValvesOrInstruments.IndexOf(iPnPId) == -1)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:76: if (!CheckExistingAndDrawingsAndLineNumbers(iPnPId))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:83: if (liAddedPnPIdValvesOrInstruments.IndexOf(iPnPId) == -1)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:85: liAddedPnPIdValvesOrInstruments.Add(iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:93: double dNominalPressure = GetNominalPressure(iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:96: int iNominalDiameter = GetNominalDiameter(iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:98: // Получить запись таблицы EngineeringItems
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:99: DataRow drEngineeringItem = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:108: DataRow drPipeRunComponent = Program.dsPipingDCF.Tables["PipeRunComponent"].Select("[PnPID]=" + iPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:113: AddOrCreateValveGroup(vfValveFilter, dNominalPressure, iNominalDiameter, sDescription, (vfValveFilter.OutputTag) ? sTag : "", iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:116: // Eсли задан запрос по таблице EngineeringItems...
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:117: if (vfValveFilter.EngineeringItemsQuery != "")
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:120: DataRow[] adrValves = Program.dsPipingDCF.Tables["EngineeringItems"].Select(vfValveFilter.EngineeringItemsQuery);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:125: // Получить PnPId компонента
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:126: int iPnPId = Convert.ToInt32(drValve["PnPID"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:130: if (liAllPnPIdValvesOrInstruments.IndexOf(iPnPId) == -1)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:138: if (!CheckExistingAndDrawingsAndLineNumbers(iPnPId))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:145: if (liAddedPnPIdValvesOrInstruments.IndexOf(iPnPId) == -1)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:147: liAddedPnPIdValvesOrInstruments.Add(iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:155: double dNominalPressure = GetNominalPressure(iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:158: int iNominalDiameter = GetNominalDiameter(iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:175: DataRow drPipeRunComponent = Program.dsPipingDCF.Tables["PipeRunComponent"].Select("[PnPID]=" + iPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:180: AddOrCreateValveGroup(vfValveFilter, dNominalPressure, iNominalDiameter, sDescription, (vfValveFilter.OutputTag) ? sTag : "", iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:186: // Обработать каждый элемент liAllPnPIdValvesOrInstruments
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:187: foreach (int iMissedPnPId in liAllPnPIdValvesOrInstruments)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:190: if (liAddedPnPIdValvesOrInstruments.IndexOf(iMissedPnPId) == -1)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:195: if (!CheckExistingAndDrawingsAndLineNumbers(iMissedPnPId))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:205: DataRow drValve = Program.dsPipingDCF.Tables["Valve"].Select("[PnPID]=" + iMissedPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:208: double dNominalPressure = GetNominalPressure(iMissedPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:211: int iNominalDiameter = GetNominalDiameter(iMissedPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:214: string sDescription = string.Format("{0}", Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iMissedPnPId)[0]["ComponentDescription"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:217: sDescription = string.Format("{0}", Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iMissedPnPId)[0]["PartSizeLongDesc"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:228: DataRow drPipeRunComponent = Program.dsPipingDCF.Tables["PipeRunComponent"].Select("[PnPID]=" + iMissedPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:233: sTag = "PnPId: " + iMissedPnPId;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:238: AddOrCreateValveGroup(vfValveFilter, dNominalPressure, iNominalDiameter, sDescription, sTag, iMissedPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:245: DataRow drInlineInstrument = Program.dsPipingDCF.Tables["InlineInstrument"].Select("[PnPID]=" + iMissedPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:248: double dNominalPressure = GetNominalPressure(iMissedPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:251: int iNominalDiameter = GetNominalDiameter(iMissedPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:254: string sDescription = string.Format("{0}", Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iMissedPnPId)[0]["ComponentDescription"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:257: sDescription = string.Format("{0}", Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iMissedPnPId)[0]["PartSizeLongDesc"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:268: DataRow drPipeRunComponent = Program.dsPipingDCF.Tables["PipeRunComponent"].Select("[PnPID]=" + iMissedPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:273: sTag = "PnPId: " + +iMissedPnPId;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:278: AddOrCreateValveGroup(vfValveFilter, dNominalPressure, iNominalDiameter, sDescription, sTag, iMissedPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:294: dataRowsComonents = Program.dsPipingDCF.Tables["Valve"].Select("[PnPID]=" + iMissedPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:302: dataRowsComonents = Program.dsPipingDCF.Tables["InlineInstrument"].Select("[PnPID]=" + iMissedPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:311: double dNominalPressure = GetNominalPressure(iMissedPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:314: int iNominalDiameter = GetNominalDiameter(iMissedPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:317: string sDescription = string.Format("{0}", Program.dsPipingDCF.Tables["EngineeringItems"].Select(
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:318: "[PnPID]=" + iMissedPnPId)[0]["ComponentDescription"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:321: sDescription = string.Format("{0}", Program.dsPipingDCF.Tables["EngineeringItems"].Select(
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:322: "[PnPID]=" + iMissedPnPId)[0]["PartSizeLongDesc"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:333: DataRow drPipeRunComponent = Program.dsPipingDCF.Tables["PipeRunComponent"].Select("[PnPID]=" + iMissedPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:338: sTag = "PnPId: " + +iMissedPnPId;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:343: AddOrCreateValveGroup(vfValveFilter, dNominalPressure, iNominalDiameter, sDescription, sTag, iMissedPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:368: void AddOrCreateValveGroup(ValveFilter vfValveFilter, double dNominalPressure, int iNominalDiameter, string sDescription, string sTag, int iComponentPnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:376: if (!PipingElements.GetDrawingFileNameAndComponentHandle(iComponentPnPId, ref sDrawingFileName, ref lHandle))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:390: dWeight = Convert.ToDouble(Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iComponentPnPId)[0]["Weight"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:433: double GetNominalPressure(int iPnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:436: DataRow drEngineeringItem = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:498: public static int GetNominalDiameter(int iPnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:501: DataRow drEngineeringItem = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:523: public static bool CheckExistingAndDrawingsAndLineNumbers(int iPnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:528: // Получить запись таблицы EngineeringItems по iPnPId
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:529: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:533: if (string.Format("{0}", adrEngineeringItems[0]["Status"]) != "New")
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:538: // Узнать PnPID чертежа для компонента
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:539: DataRow[] adrDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:540: int iDwgId = Convert.ToInt32(adrDataLinks[0]["DwgId"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:548: if (dDrawing.iPnPId == iDwgId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:559: // Узнать PnPID номера линии для компонента
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:560: DataRow[] adrLineGroupPartRelationships = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[Part]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:561: if (adrLineGroupPartRelationships.Length == 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:563: Program.liComponentsWOLineNumber.Add(iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:566: int iLineNumberId = Convert.ToInt32(adrLineGroupPartRelationships[0]["LineGroup"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:574: if (lnLineNumber.iPnPId == iLineNumberId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:778: string sEngineeringItemsQuery; // запрос к таблице EngeneerinItems (если не задано, то поиск в этой таблице игнорируется)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:799: // Член для чтения sEngineeringItemsQuery
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:800: public string EngineeringItemsQuery
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:804: return sEngineeringItemsQuery;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:818: public ValveFilter(string sName, string sValveBodyType, string sEngineeringItemsQuery, bool bOutputTag)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:822: this.sEngineeringItemsQuery = sEngineeringItemsQuery;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:21: // Выбрать все записи из таблицы EngineeringItems
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:22: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:25: foreach (DataRow drEngineeringItem in adrEngineeringItems)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:27: // Извлечь PnPID компонента
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:28: int iComponentPnPId = Convert.ToInt32(drEngineeringItem["PnPID"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:34: if (!CheckExistingAndDrawingsAndLineNumbers(iComponentPnPId))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:40: UpdateOrCreatePiping(iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:53: // компонента с iComponentPnPId
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:54: void UpdateOrCreatePiping(int iComponentPnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:56: // Получить запись таблицы "EngineeringItems" для дальнейшей работы
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:57: DataRow drEngineeringItem = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iComponentPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:72: if (!PipingElements.GetDrawingFileNameAndComponentHandle(iComponentPnPId, ref sDrawingFileName, ref lHandle))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:78: DataRow[] adrDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:79: string sComponentType = string.Format("{0}", adrDataLinks[0]["RowClassName"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:109: // DataRow[] aPipes = Program.dsPipingDCF.Tables["Pipe"].Select("PnPID=" + iComponentPnPId);//2018
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:123: aPipes = Program.dsPipingDCF.Tables["Pipe"].Select("PnPID=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:128: aPipes = Program.dsPipingDCF.Tables["PipeBend"].Select("PnPID=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:154: //dLength = Convert.ToDouble(Program.dsPipingDCF.Tables["Pipe"].Select("[PnPID]=" + iComponentPnPId)[0]["Length"]) / 1000; // support
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:155: dLength = Convert.ToDouble(Program.dsPipingDCF.Tables["Pipe"].Select("[PnPID]=" + iComponentPnPId)[0]["CutLength"]) / 1000; // support
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:164: dLength = PipingElements.GetElbowLength(iComponentPnPId) / 1000;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:170: dLength = Convert.ToDouble(Program.dsPipingDCF.Tables["PipeBend"].Select("[PnPID]=" + iComponentPnPId)[0]["CutLength"]) / 1000;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:208: public static bool CheckExistingAndDrawingsAndLineNumbers(int iPnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:213: // Получить запись таблицы EngineeringItems по iPnPId
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:214: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:218: if (string.Format("{0}", adrEngineeringItems[0]["Status"]) != "New")
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:223: // Узнать PnPID чертежа для компонента
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:224: DataRow drDataLink = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:230: if (Glob.ldSelectedDrawings.Where(o => o.iPnPId == iDwgId).Count() == 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:235: // Узнать PnPID номера линии для компонента
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:236: DataRow[] adrLineGroupPartRelationships = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[Part]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:237: if (adrLineGroupPartRelationships.Length == 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:239: Program.liComponentsWOLineNumber.Add(iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:242: int iLineNumberId = Convert.ToInt32(adrLineGroupPartRelationships[0]["LineGroup"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:248: if (Glob.ldSelectedLineNumbers.Where(o => (o.iPnPId == iLineNumberId) && (o.bTested)).Count() == 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:21: public static string sNKRTitle; // значение поля Title таблицы EngineeringItems, по которому определяется, что опора является НКР
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:31: // Выбрать все записи из таблицы PnPDataLinks с опорами
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:32: DataRow[] adrDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowClassName]='Support'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:34: // Создать списки PnPId элементов опор,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:35: // если PnPId повторяются от группы к группе,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:37: List<int> liAllPnPIdSupports = new List<int>();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:38: List<int> liAddedPnPIdSupports = new List<int>();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:40: // Заполнить список PnPId всех элементов опор
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:41: foreach (DataRow drSupport in adrDataLinks)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:43: liAllPnPIdSupports.Add(Convert.ToInt32(drSupport["RowId"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:51: // Если в sfSupportFilter задан запрос к таблице EngineeringItems...
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:52: if (sfSupportFilter.EngineeringItemsQuery != "")
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:54: // ...получить все записи таблицы EngineeringItems по этому фильтру
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:55: DataRow[] adrSupports = Program.dsPipingDCF.Tables["EngineeringItems"].Select(sfSupportFilter.EngineeringItemsQuery);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:60: // Получить PnPId компонента
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:61: int iPnPId = Convert.ToInt32(drSupport["PnPID"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:63: // Объявить или иницировать переменную PnPId трубы или отвода,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:65: int iParentPipeOrElbowPnPId = -1;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:67: // Определить PnPId трубы или отвода,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:69: List<int> liCheckedPnPIds = new List<int>();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:70: iParentPipeOrElbowPnPId = GetParentPnPId(iPnPId, ref liCheckedPnPIds);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:75: if (!ValveGroups.CheckExistingAndDrawingsAndLineNumbers(iPnPId))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:82: if (liAddedPnPIdSupports.IndexOf(iPnPId) == -1)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:84: liAddedPnPIdSupports.Add(iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:92: int iNominalDiameter = ValveGroups.GetNominalDiameter(iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:102: AddOrCreateSupportGroup(sfSupportFilter, iNominalDiameter, sDescription, iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:108: // Обработать каждый элемент liAllPnPIdSupports
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:109: foreach (int iMissedPnPId in liAllPnPIdSupports)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:112: if (liAddedPnPIdSupports.IndexOf(iMissedPnPId) == -1)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:114: // Объявить или иницировать переменную PnPId трубы или отвода,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:116: int iParentPipeOrElbowPnPId = -1;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:118: // Определить PnPId трубы или отвода,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:120: List<int> liCheckedPnPIds = new List<int>();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:121: iParentPipeOrElbowPnPId = GetParentPnPId(iMissedPnPId, ref liCheckedPnPIds);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:126: //if (iParentPipeOrElbowPnPId != -1) {
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:127: // if (!ValveGroups.CheckExistingAndDrawingsAndLineNumbers(iParentPipeOrElbowPnPId)) {
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:132: if (!ValveGroups.CheckExistingAndDrawingsAndLineNumbers(iMissedPnPId))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:139: int iNominalDiameter = ValveGroups.GetNominalDiameter(iMissedPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:141: // Получить запись таблицы EngineeringItems
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:142: DataRow drSupport = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iMissedPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:155: AddOrCreateSupportGroup(sfSupportFilter, iNominalDiameter, sDescription, iMissedPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:162: AddOrCreareNKRGroup(iNominalDiameter, sDescription, iMissedPnPId, sGroup);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:262: void AddOrCreareNKRGroup(int iNominalDiameter, string sDescription, int iComponentPnPId, string sGroup)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:266: int iParentSupportPnPId = 0;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:270: // iParentSupportPnPId = Convert.ToInt32(Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part1]=" + iComponentPnPId)[0]["Part2"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:276: // iParentSupportPnPId = Convert.ToInt32(Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part2]=" + iComponentPnPId)[0]["Part1"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:280: // iParentSupportPnPId = iComponentPnPId;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:295: dataRowsConnectionsPart = dataTablePartConnection.Select("[Part1]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:300: iParentSupportPnPId = Convert.ToInt32(dataRowsConnectionsPart[0]["Part2"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:304: if (iParentSupportPnPId != 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:309: dataRowsConnectionsPart = dataTablePartConnection.Select("[Part2]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:314: iParentSupportPnPId = Convert.ToInt32(dataRowsConnectionsPart[0]["Part1"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:318: if (iParentSupportPnPId != 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:325: iParentSupportPnPId = iComponentPnPId;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:328: DataRow drParentSupport = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iParentSupportPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:358: if (!PipingElements.GetDrawingFileNameAndComponentHandle(iComponentPnPId, ref sDrawingFileName, ref lHandle))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:388: nkrNKRSubGroup.AddNKR(iComponentPnPId, nkrNKR, ref lkvpsdGeometryParameters, out dWeight);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:389: //AddSupportToPipingElement(iComponentPnPId, iMinZ, iMaxZ, dWeight);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:393: nkrNKRSubGroup.AddNKR(iComponentPnPId, new NKR(sDescription), ref lkvpsdGeometryParameters, out dWeight);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:394: //AddSupportToPipingElement(iComponentPnPId, iMinZ, iMaxZ, dWeight);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:399: nkrNKRNewSubGroup.AddNKR(iComponentPnPId, new NKR(sDescription), ref lkvpsdGeometryParameters, out dWeight);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:400: //AddSupportToPipingElement(iComponentPnPId, iMinZ, iMaxZ, dWeight);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:407: nkrNKRNewSubGroup2.AddNKR(iComponentPnPId, new NKR(sDescription), ref lkvpsdGeometryParameters, out dWeight);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:408: //AddSupportToPipingElement(iComponentPnPId, iMinZ, iMaxZ, dWeight);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:413: // Рекурсивно обработать опору или НКР с PnPId iCurrentPnPId.
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:414: // вернуть PnPId трубы или отвода, к которому присоединен компонент
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:415: int GetParentPnPId(int iCurrentPnPId, ref List<int> liCheckedPnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:417: DataRow[] adrParentPnPIds1 = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part1]=" + iCurrentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:418: if (adrParentPnPIds1.Length != 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:420: foreach (DataRow drParentPnPId in adrParentPnPIds1)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:422: int iPipeOrElbow1 = Convert.ToInt32(drParentPnPId["Part2"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:423: if (liCheckedPnPId.IndexOf(iPipeOrElbow1) == -1)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:425: liCheckedPnPId.Add(iPipeOrElbow1);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:426: DataRow drParentClassName1 = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iPipeOrElbow1).First();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:433: int iRecursion1 = GetParentPnPId(iPipeOrElbow1, ref liCheckedPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:441: DataRow[] adrParentPnPIds2 = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part2]=" + iCurrentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:442: if (adrParentPnPIds2.Length != 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:444: foreach (DataRow drParentPnPId in adrParentPnPIds2)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:446: int iPipeOrElbow2 = Convert.ToInt32(drParentPnPId["Part1"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:447: if (liCheckedPnPId.IndexOf(iPipeOrElbow2) == -1)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:449: liCheckedPnPId.Add(iPipeOrElbow2);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:450: DataRow drParentClassName2 = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iPipeOrElbow2).First();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:457: int iRecursion2 = GetParentPnPId(iPipeOrElbow2, ref liCheckedPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:469: void AddSupportToPipingElement(int iSupportPnPId, int iMinZ, int iMaxZ, double dWeight)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:471: // Объявить или иницировать переменную PnPId трубы или отвода,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:473: int iParentPipeOrElbowPnPId = -1;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:475: // Определить PnPId трубы или отвода,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:477: List<int> liCheckedPnPIds = new List<int>();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:478: iParentPipeOrElbowPnPId = GetParentPnPId(iSupportPnPId, ref liCheckedPnPIds);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:480: // Если iParentPipeOrElbowPnPId определить не удалось, выйти
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:481: if (iParentPipeOrElbowPnPId == -1)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:486: // Получить спискок PipingElement, в состав которого входит iParentPipeOrElbowPnPId
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:487: List<PipingElement> lpeParentPipingElements = PipingElements.lpePipingElements.Where(o => o.PnPIds.IndexOf(iParentPipeOrElbowPnPId) != -1).ToList();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:502: // Определить PipingElement, в состав которого входит iParentPipeOrElbowPnPId,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:514: void AddOrCreateSupportGroup(SupportFilter sfSupportFilter, int iNominalDiameter, string sDescription, int iComponentPnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:522: if (!PipingElements.GetDrawingFileNameAndComponentHandle(iComponentPnPId, ref sDrawingFileName, ref lHandle))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:538: dWeight = Convert.ToDouble(Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iComponentPnPId)[0]["Weight"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:559: AddSupportToPipingElement(iComponentPnPId, iMinZ, iMaxZ, dWeight);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:729: string sEngineeringItemsQuery; // запрос к таблице EngeneerinItems
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:740: // Член для чтения sEngineeringItemsQuery
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:741: public string EngineeringItemsQuery
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:745: return sEngineeringItemsQuery;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:750: public SupportFilter(string sName, string sEngineeringItemsQuery)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:753: this.sEngineeringItemsQuery = sEngineeringItemsQuery;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:942: public void AddNKR(int iComponentPnPId, NKR nkrNKR, ref List<KeyValuePair<string, double>> lkvpsdGeometryParameters, out double dWeight)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:953: int iPnPId = iComponentPnPId;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:954: if (Program.liErrorNKRs.IndexOf(iPnPId) == -1)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:956: Program.liErrorNKRs.Add(iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:961: Program.lsErrorNKRs[Program.liErrorNKRs.IndexOf(iPnPId)] += "," + sParameter.Replace("{", "").Replace("}", "");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1196: lWeldedSupports.Add(new WeldedSupport(Convert.ToInt32(dSupport["PnPID"])));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1200: lWeldedSupports = lWeldedSupports.Where(o => Glob.ldSelectedDrawings.Select(o1 => o1.iPnPId).ToList().IndexOf(o.DrawingId) != -1).
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1203: Where(o => Glob.ldSelectedLineNumbers.Select(o1 => o1.iPnPId).ToList().IndexOf(o.LineGroupId) != -1).
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1204: Where(o => Welds.lwlnLineNumbers.First(o1 => o1.PnPId == o.LineGroupId).IsHeatTreated).ToList();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1226: public int LineGroupId { get; private set; } // PnPID номера линии компонента, к которому присоединена опора
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1227: public int DrawingId { get; private set; } // PnPID чертежа компонента, к которому присоединена опора
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1233: public WeldedSupport(int PnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1236: DataRow dEItem = Program.dsPipingDCF.Tables["EngineeringItems"].Select("PnPId=" + PnPId).First();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1255: DataRow[] aConnectionsAsPart1 = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("Part1=" + PnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1256: DataRow[] aConnectionsAsPart2 = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("Part2=" + PnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1268: DataRow dItem = Program.dsPipingDCF.Tables["EngineeringItems"].Select("PnPId=" + iConnectedPartId).First();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1275: DataRow dLineGroup1 = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("Part=" + iConnectedPartId).First();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1276: LineGroupId = Convert.ToInt32(dLineGroup1["LineGroup"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1278: DataRow dDataLink1 = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("RowId=" + iConnectedPartId).First();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1287: // LineGroupId = -1;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1289: DataRow dLineGroup1 = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("Part=" + PnPId).First();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1290: LineGroupId = Convert.ToInt32(dLineGroup1["LineGroup"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1292: DataRow dDataLink1 = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("RowId=" + PnPId).First();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1294: NominalDiameter = ValveGroups.GetNominalDiameter(PnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:25: static int iCurrentWeldPnPId; // PnPId текущего анализируемого шва
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:26: static int iCurrentConnectorPnPId; // PnPId текущего анализируемого соединения
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:44: iCurrentWeldPnPId = Convert.ToInt32(string.Format("{0}", drWeld["PnPID"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:46: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iCurrentWeldPnPId + " AND [Status]='New'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:47: if (adrEngineeringItems.Length == 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:51: DataRow[] adrPnPDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iCurrentWeldPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:52: int iDwgId = Convert.ToInt32(string.Format("{0}", adrPnPDataLinks[0]["DwgId"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:53: long lHandle = Convert.ToInt32(string.Format("{0}", adrPnPDataLinks[0]["DwgHandleLow"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:54: adrPnPDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[DwgId]=" + iDwgId + " AND [DwgHandleLow]=" + lHandle + " AND [DwgSubIndex]=0");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:55: iCurrentConnectorPnPId = Convert.ToInt32(string.Format("{0}", adrPnPDataLinks[0]["RowId"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:58: DataRow[] adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part1]=" + iCurrentConnectorPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:64: adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part2]=" + iCurrentConnectorPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:80: if ((Program.dsPipingDCF.Tables.Contains("Nozzle") && Program.dsPipingDCF.Tables["Nozzle"].Select("PnPId=" + liConnectedParts[0]).Length > 0) || (Program.dsPipingDCF.Tables.Contains("Equipment") && Program.dsPipingDCF.Tables["Equipment"].Select("PnPId=" + liConnectedParts[0]).Length > 0))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:113: iCurrentWeldPnPId = Convert.ToInt32(string.Format("{0}", drWeld["PnPID"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:114: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iCurrentWeldPnPId + " AND [Status]='New'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:115: if (adrEngineeringItems.Length == 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:119: DataRow[] adrPnPDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iCurrentWeldPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:120: int iDwgId = Convert.ToInt32(string.Format("{0}", adrPnPDataLinks[0]["DwgId"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:121: long lHandle = Convert.ToInt32(string.Format("{0}", adrPnPDataLinks[0]["DwgHandleLow"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:122: adrPnPDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[DwgId]=" + iDwgId + " AND [DwgHandleLow]=" + lHandle + " AND [DwgSubIndex]=0");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:123: iCurrentConnectorPnPId = Convert.ToInt32(string.Format("{0}", adrPnPDataLinks[0]["RowId"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:126: DataRow[] adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part1]=" + iCurrentConnectorPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:132: adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part2]=" + iCurrentConnectorPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:148: if ((Program.dsPipingDCF.Tables.Contains("Nozzle") && Program.dsPipingDCF.Tables["Nozzle"].Select("PnPId=" + liConnectedParts[0]).Length > 0) || (Program.dsPipingDCF.Tables.Contains("Equipment") && Program.dsPipingDCF.Tables["Equipment"].Select("PnPId=" + liConnectedParts[0]).Length > 0))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:179: iCurrentWeldPnPId = Convert.ToInt32(string.Format("{0}", drWeld["PnPID"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:180: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iCurrentWeldPnPId + " AND [Status]='New'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:181: if (adrEngineeringItems.Length == 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:185: DataRow[] adrPnPDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iCurrentWeldPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:186: int iDwgId = Convert.ToInt32(string.Format("{0}", adrPnPDataLinks[0]["DwgId"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:187: long lHandle = Convert.ToInt32(string.Format("{0}", adrPnPDataLinks[0]["DwgHandleLow"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:188: adrPnPDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[DwgId]=" + iDwgId + " AND [DwgHandleLow]=" + lHandle + " AND [DwgSubIndex]=0");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:189: iCurrentConnectorPnPId = Convert.ToInt32(string.Format("{0}", adrPnPDataLinks[0]["RowId"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:192: DataRow[] adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part1]=" + iCurrentConnectorPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:198: adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part2]=" + iCurrentConnectorPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:214: if ((Program.dsPipingDCF.Tables.Contains("Nozzle") && Program.dsPipingDCF.Tables["Nozzle"].Select("PnPId=" + liConnectedParts[0]).Length > 0) || (Program.dsPipingDCF.Tables.Contains("Equipment") && Program.dsPipingDCF.Tables["Equipment"].Select("PnPId=" + liConnectedParts[0]).Length > 0))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:244: int iPipePnPId = Convert.ToInt32(drPipe["PnPID"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:247: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iPipePnPId + " AND [Status]='New'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:248: if (adrEngineeringItems.Length == 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:252: string sSpec = Connection.GetSpecForComponent(iPipePnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:254: double dNominalDiameter = Connection.GetNominalDiameter(iPipePnPId, out bImperial);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:255: WeldLineNumber wlnLineNumber = Connection.GetLineNumberForComponent(iPipePnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:264: if (!PipingElements.GetDrawingFileNameAndComponentHandle(iPipePnPId, ref sDrawingFileName, ref lHandle, true))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:277: lwWelds.Add(new Weld(wpWeldPipe, wlnLineNumber, new List<string> { string.Format("{0}", adrEngineeringItems[0]["Material"]), string.Format("{0}", adrEngineeringItems[0]["Material"]) }, z));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:291: iCurrentWeldPnPId = Convert.ToInt32(string.Format("{0}", drWeld["PnPID"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:293: if (!Connection.OnLineNumbersAndDrawings(iCurrentWeldPnPId))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:298: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iCurrentWeldPnPId + " AND [Status]='New'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:299: if (adrEngineeringItems.Length == 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:303: DataRow[] adrPnPDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iCurrentWeldPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:304: int iDwgId = Convert.ToInt32(string.Format("{0}", adrPnPDataLinks[0]["DwgId"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:305: long lHandle = Convert.ToInt32(string.Format("{0}", adrPnPDataLinks[0]["DwgHandleLow"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:306: adrPnPDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[DwgId]=" + iDwgId + " AND [DwgHandleLow]=" + lHandle + " AND [DwgSubIndex]=0");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:307: iCurrentConnectorPnPId = Convert.ToInt32(string.Format("{0}", adrPnPDataLinks[0]["RowId"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:308: DataRow[] adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part1]=" + iCurrentConnectorPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:315: adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part2]=" + iCurrentConnectorPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:324: DataRow[] adrOlets1 = Program.dsPipingDCF.Tables["Olet"].Select("[PnPID]=" + iConnectedPart1);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:325: DataRow[] adrOlets2 = Program.dsPipingDCF.Tables["Olet"].Select("[PnPID]=" + iConnectedPart2);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:354: if (iConnectedPart1 != iCurrentConnectorPnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:366: if (iConnectedPart2 != iCurrentConnectorPnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:428: iCurrentWeldPnPId = Convert.ToInt32(string.Format("{0}", drWeld["PnPID"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:430: if (!Connection.OnLineNumbersAndDrawings(iCurrentWeldPnPId))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:435: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iCurrentWeldPnPId + " AND [Status]='New'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:436: if (adrEngineeringItems.Length == 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:440: DataRow[] adrPnPDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iCurrentWeldPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:441: int iDwgId = Convert.ToInt32(string.Format("{0}", adrPnPDataLinks[0]["DwgId"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:442: long lHandle = Convert.ToInt32(string.Format("{0}", adrPnPDataLinks[0]["DwgHandleLow"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:443: adrPnPDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[DwgId]=" + iDwgId + " AND [DwgHandleLow]=" + lHandle + " AND [DwgSubIndex]=0");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:444: iCurrentConnectorPnPId = Convert.ToInt32(string.Format("{0}", adrPnPDataLinks[0]["RowId"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:445: DataRow[] adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part1]=" + iCurrentConnectorPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:452: adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part2]=" + iCurrentConnectorPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:461: DataRow[] adrCouplings1 = Program.dsPipingDCF.Tables["Coupling"].Select("[PnPID]=" + iConnectedPart1);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:462: DataRow[] adrCouplings2 = Program.dsPipingDCF.Tables["Coupling"].Select("[PnPID]=" + iConnectedPart2);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:491: if (iConnectedPart1 != iCurrentConnectorPnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:503: if (iConnectedPart2 != iCurrentConnectorPnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:917: List<int> liConnectedParts; // список PnPId 2-х соединенных элементов
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:944: DataRow[] adrEngineeringItems;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:948: adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + liConnectedParts[i]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:950: if (adrEngineeringItems.Length > 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:954: // if (string.Format("{0}", adrEngineeringItems[0]["ComponentDesignation"]) == "Custom")
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:959: //if (string.Format("{0}", adrEngineeringItems[0]["Spec"]) == "")
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:964: if ((string.Format("{0}", adrEngineeringItems[0]["Spec"]) == "")
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:965: && (string.Format("{0}", adrEngineeringItems[0]["ComponentDesignation"]) != "Custom"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:972: adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + liConnectedParts[i] + " AND [Status]='New'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:973: lbExistingParts.Add(adrEngineeringItems.Length == 0);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:974: adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + liConnectedParts[i]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:975: if (adrEngineeringItems.Length > 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:977: lsNominalDiameters.Add(Convert.ToDouble(adrEngineeringItems[0]["NominalDiameter"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:988: //DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + liConnectedParts[i]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:989: //if (adrEngineeringItems.Length == 1) {
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:990: // lsMaterials.Add(string.Format("{0}", adrEngineeringItems[0]["Material"]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1154: string GetPipeSpecMaterial(int iPnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1156: DataRow drEngineeringItem = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1159: DataRow drDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1160: //switch (string.Format("{0}", drDataLinks["RowClassName"])) {
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1171: double dNominalDiameter = GetNominalDiameter(iPnPId, out bImperial, true);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1190: public static bool OnLineNumbersAndDrawings(int iPnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1194: int iLineNumberPnPId = Convert.ToInt32(Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[Part]=" + iPnPId)[0]["LineGroup"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1195: bool bOnLineNumbers = (lwlnLineNumbers.Where(o => o.PnPId == iLineNumberPnPId).Count() > 0);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1196: int iDrawingPnPId = Convert.ToInt32(Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iPnPId)[0]["DwgId"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1197: bool bOnDrawings = (Glob.ldSelectedDrawings.Where(o => o.iPnPId == iDrawingPnPId).Count() > 0);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1206: // Получить WeldLineNumber по PnPId компонента
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1209: public static WeldLineNumber GetLineNumberForComponent(int iComponentPnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1211: DataRow[] adrP3dLineGroupPartRelationship = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[Part]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1212: if (adrP3dLineGroupPartRelationship.Length == 0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1219: // iNozzle = Program.dsPipingDCF.Tables["Nozzle"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1224: // iEquipment = Program.dsPipingDCF.Tables["Equipment"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1229: iNozzle = Program.dsPipingDCF.Tables["Nozzle"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1231: iEquipment = Program.dsPipingDCF.Tables["Equipment"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1236: Program.liComponentsWOLineNumber.Add(iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1242: int iLineNumberPnPId = 0;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1245: iLineNumberPnPId = Convert.ToInt32(adrP3dLineGroupPartRelationship[0]["LineGroup"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1250: if (wlnLineNumber.PnPId == iLineNumberPnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1262: public static double GetNominalDiameter(int iComponentPnPId, out bool bImperial, bool bAllwaysGetMetric = false)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1265: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1268: bImperial = (adrEngineeringItems[0]["NominalUnit"].ToString().ToUpper() == "IN");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1269: double dNominalDiameter = Convert.ToDouble(adrEngineeringItems[0]["NominalDiameter"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1281: // Получить наименование миникаталога по PnPId компонента
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1283: public static string GetSpecForComponent(int iComponentPnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1285: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1288: string sSpec = adrEngineeringItems[0]["Spec"].ToString();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1316: // Вернуть WeldPipe по PnPId компонента
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1318: WeldPipe GetWeldPipeForComponent(int iComponentPnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1320: string sSpec = GetSpecForComponent(iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1326: double dNominalDiameter = GetNominalDiameter(iComponentPnPId, out bImperial);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1334: // Вернуть список PnPId на номере линии wlnLineNumber, которые относятся к ctComponetType,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1337: List<int> GetListOfNotExistingComponetsPnPIdForWeldLineNumberAndComponentType(WeldLineNumber wlnLineNumber, ComponentType ctComponetType, double dNominalDiameter = -1.0)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1340: DataRow[] adrP3dLineGroupPartRelationship = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[LineGroup]=" + wlnLineNumber.PnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1341: foreach (DataRow drComponent in adrP3dLineGroupPartRelationship)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1343: int iCurrentPnPId = Convert.ToInt32(drComponent["Part"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1344: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iCurrentPnPId + " AND [Status]='New'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1349: if ((GetComponentType(iCurrentPnPId) == ctComponetType) &&
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1351: (adrEngineeringItems.Length > 0))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1353: liCurrentReturnValue.Add(iCurrentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1355: else if ((GetComponentType(iCurrentPnPId) == ctComponetType) &&
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1357: (adrEngineeringItems.Length > 0) &&
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1358: (dNominalDiameter == Convert.ToDouble(adrEngineeringItems[0]["NominalDiameter"])))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1360: liCurrentReturnValue.Add(iCurrentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1448: WeldLineNumber wlnLineNumber = GetLineNumberForComponent(iCurrentConnectorPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1492: // Получить список PnPId труб или грутых отводов с указанных номера линии
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1494: List<int> liPipeOrPipeBendWithSameDiameter = GetListOfNotExistingComponetsPnPIdForWeldLineNumberAndComponentType(wlnLineNumber, ComponentType.ctPipeOrPipeBend, dNominalDiameter);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1513: // Получить список PnPId труб или грутых отводов с указанного номера линии
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1514: List<int> liPipesOrPipeBendsWithAnyDiameter = GetListOfNotExistingComponetsPnPIdForWeldLineNumberAndComponentType(wlnLineNumber, ComponentType.ctPipeOrPipeBend);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1534: // Получить список PnPId "не фланцев, инструментов, арматуры, труб или гнутых отводов" с указанного номера линии
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1535: List<int> liNotFlangeOrInstrumentOrValveOrPipeOrPipeBend = GetListOfNotExistingComponetsPnPIdForWeldLineNumberAndComponentType(wlnLineNumber, ComponentType.ctNotFlangeOrInstrumentOrValveOrPipeOrPipeBend);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1561: // Получить список PnPId "не фланцев, инструментов, арматуры, труб или гнутых отводов" с указанного номера линии
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1562: List<int> liNotFlangeOrInstrumentOrValveOrPipeOrPipeBendOrSupportOrConnection = GetListOfNotExistingComponetsPnPIdForWeldLineNumberAndComponentType(wlnLineNumber, ComponentType.ctNotFlangeOrInstrumentOrValveOrPipeOrPipeBendOrSupportOrConnection);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1588: // Получить список PnPId "фланцев, инструментов или арматуры" с указанного номера линии
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1589: List<int> liFlangeOrInstrumentOrValve = GetListOfNotExistingComponetsPnPIdForWeldLineNumberAndComponentType(wlnLineNumber, ComponentType.ctFlangeOrInstrumentOrValve);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1623: WeldLineNumber wlnLineNumber = GetLineNumberForComponent(iCurrentConnectorPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1625: double dNominalDiameter = GetNominalDiameter(iCurrentWeldPnPId, out bImperial);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1671: double dNominalDiameter = GetNominalDiameter(iCurrentWeldPnPId, out bImperial);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1707: double dNominalDiameter = GetNominalDiameter(iCurrentWeldPnPId, out bImperial);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1712: ComponentType GetComponentType(int iPnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1714: DataRow[] adrPnPDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1715: switch (string.Format("{0}", adrPnPDataLinks[0]["RowClassName"]))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1873: WeldLineNumber wlnNewLineNumber = new WeldLineNumber(lnLineNumber.iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2025: int iPnPId; // PnPId номера линии
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2049: public WeldLineNumber(int iPnPId)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2051: this.iPnPId = iPnPId;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2052: DataRow[] adrLineNumber = Program.dsPipingDCF.Tables["P3dLineGroup"].Select("[PnPID]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2115: int iThread = Convert.ToInt32(drThread["PnPID"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2116: DataRow[] adrDatalinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("RowId=" + iThread);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2122: adrDatalinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("DwgId=" + iDwgId + " AND DwgHandleLow=" + lDwgHandleLow + " AND RowClassName='P3dConnector'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2136: adrDatalinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("RowId=" + iConnectedPart);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2143: if (!Glob.ldSelectedDrawings.Any(o => o.iPnPId == iDwgId))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2148: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("PnPID=" + iConnectedPart);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2149: if ((adrEngineeringItems.Length == 0) || (string.Format("{0}", adrEngineeringItems[0]["Status"]).ToUpper() != "NEW"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2154: DataRow[] adrRelations = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("Part=" + iConnectedPart + " AND LineGroup=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2186: // Вернуть iPnPId
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2187: public int PnPId
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2191: return iPnPId;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\XMLFile.cs:230: // Прочитать значение поля Title таблицы EngineeringItems,
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
P_Rec_BOP.sln
|
||||||
|
P_Rec_BOP\App.config
|
||||||
|
P_Rec_BOP\P_Rec_BOP.csproj
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
"Project","Kind","Name","HintPath","CopyLocal"
|
||||||
|
"P_Rec_BOP\P_Rec_BOP.csproj","Reference","Microsoft.Office.Interop.Word, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL","C:\Program Files (x86)\Microsoft Visual Studio\Shared\Visual Studio Tools for Office\PIA\Office15\Microsoft.Office.Interop.Word.dll",""
|
||||||
|
"P_Rec_BOP\P_Rec_BOP.csproj","Reference","SautinSoft.Document","lib\SautinSoft.Document.dll",""
|
||||||
|
"P_Rec_BOP\P_Rec_BOP.csproj","Reference","System","",""
|
||||||
|
"P_Rec_BOP\P_Rec_BOP.csproj","Reference","System.Data","",""
|
||||||
|
"P_Rec_BOP\P_Rec_BOP.csproj","Reference","System.Data.DataSetExtensions","",""
|
||||||
|
"P_Rec_BOP\P_Rec_BOP.csproj","Reference","System.Data.SQLite","lib\x32\System.Data.SQLite.dll",""
|
||||||
|
"P_Rec_BOP\P_Rec_BOP.csproj","Reference","System.Drawing","",""
|
||||||
|
"P_Rec_BOP\P_Rec_BOP.csproj","Reference","System.Windows.Forms","",""
|
||||||
|
"P_Rec_BOP\P_Rec_BOP.csproj","Reference","System.XML","",""
|
||||||
|
"P_Rec_BOP\P_Rec_BOP.csproj","Reference","System.Xml.Linq","",""
|
||||||
|
@@ -0,0 +1 @@
|
|||||||
|
NO_GIT_DIRECTORY
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
"RelativePath","Format","Length","SHA256","SourceModified"
|
||||||
|
"templates\Шаблон.docx",".docx","88534","C669900F2D7D8A3B80BF6898FE80B0F0A6CF4F38694694A66367E487EB3EA79B","False"
|
||||||
|
@@ -0,0 +1,152 @@
|
|||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\CHANGELOG.md:33: - быстрый вывод в Word дополнен явным присвоением режима просмотра
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\CHANGELOG.md:132:Новый вывод в Word, фильтр миникаталогов
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\CHANGELOG.md:139: - применен промежуточный класс для вывода отчета в Word
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\CHANGELOG.md:150: - переход на классический вывод в Word
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\CHANGELOG.md:168: - размещение файла вывода в Word во временной папке
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\README.md:22:настройка на шаблон .docx отключена в [Settings.xml]
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\README.md:23: и в таком режиме файл [Шаблон.docx] берется по-умолчанию
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\README.md:26: - Q:\Projects\_TemplateProject\2019\2019 - Инструменты заполнения Ведомости объемов работ\Шаблон.docx
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\README.md:56:переработан шаблон выводимого документа [Шаблон.docx]
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\README.md:59:добавлен промежуточный класс [Worder] для обращения к нему
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\README.md:62: для непосредственной работы с Word библиотекой.
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\README.md:64: [ReportWithWorder], который является, по сути, копией прежнего
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\README.md:68:работоспособность класса [Worder] полная, как для классического
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\README.md:69: COM-вывода (Microsoft.Office.Interop.Word), так и для библиотеки
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\README.md:92:файл вывода в Word для формирования перемещен в локальную временную
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\Комментарии.txt:1:1. Программа теперь использует библиотеку SautinSoft.Document.dll для получения документа Word "на лету", а не построчно выводит в создаваемый документ.
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\Комментарии.txt:6:6. Формат отчета - ".docx". Соответственно пересохранил шаблон в этом формате.
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\Комментарии.txt:7:7. Откомпилированная программа уже находится тут: "Q:\Projects\_TemplateProject\2019\2019 - Инструменты заполнения Ведомости объемов работ (новый шаблон ПТХ)\GetSmeta (с быстрым выводом в Word).exe"
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\Комментарии.txt:8:8. Если в готовом документе "поедет" таблица, то в Word нужно включить режим совместимости.
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\Комментарии.txt:9:Для этого нужно сохранить документ как ".doc".
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\Комментарии.txt:10:Потом снова сохранить как ".docx".
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\Комментарии.txt:12:Эта настройка сохраняется для всех новых сеансов Word.
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:14:using Microsoft.Office.Interop.Word;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsInformation.cs:9:using Microsoft.Office.Interop.Word;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsInformation.cs:69: // http://www.dotnetperls.com/process
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Glob.cs:1:using Microsoft.Office.Interop.Word;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Glob.cs:31: // Report / ReportWithWorder:
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Glob.cs:47: // путь шаблона документа отчета в формате MS Word
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Glob.cs:51: "Шаблон.docx");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:9:using Microsoft.Office.Interop.Word;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:15:using Microsoft.Office.Interop.Word;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:745: ReportWithWorder reportWithWorder = new ReportWithWorder();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:746: reportWithWorder.OutputReport();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:748: if (!string.IsNullOrEmpty(reportWithWorder.WordFileName))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:753: Path.Combine(Path.GetDirectoryName(reportWithWorder.WordFileName),
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:754: Path.GetFileNameWithoutExtension(reportWithWorder.WordFileName) + " z-base.txt"
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:761: // reportWithWorder.WordFileName) { UseShellExecute = true });
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:762: Process.Start(reportWithWorder.WordFileName);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\P_Rec_BOP.csproj:71: <Compile Include="ReportWithWorder.cs" />
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\P_Rec_BOP.csproj:95: <Compile Include="Worder.cs" />
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\P_Rec_BOP.csproj:100: <Reference Include="Microsoft.Office.Interop.Word, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL">
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\P_Rec_BOP.csproj:103: <HintPath>C:\Program Files (x86)\Microsoft Visual Studio\Shared\Visual Studio Tools for Office\PIA\Office15\Microsoft.Office.Interop.Word.dll</HintPath>
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PYFile.cs:50: Regex rRegexWordSpaceNumber = new Regex(@"[a-zA-Zа-яА-Я]+\s\d+");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PYFile.cs:51: MatchCollection mcRegexWordSpaceNumber = rRegexWordSpaceNumber.Matches(sResult);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PYFile.cs:54: string sResultWithoutWordSpaceNumber = Regex.Replace(sResult, @"[a-zA-Zа-яА-Я]+\s\d+", "*").Trim();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PYFile.cs:57: string sResultWithoutWordSpaceNumberPiEAndFunctions = Regex.Replace(sResult, "(?<alpha>(pi|e|sin|cos|tan))", "*").Trim();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PYFile.cs:60: Regex rRegexWord = new Regex(@"[a-zA-Zа-яА-Я]+");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PYFile.cs:61: MatchCollection mcRegexWord = rRegexWord.Matches(sResultWithoutWordSpaceNumberPiEAndFunctions);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PYFile.cs:67: foreach (Match mMatch in mcRegexWordSpaceNumber)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PYFile.cs:73: foreach (Match mMatch in mcRegexWord)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:15: internal class ReportWithWorder
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:18: // Glob.sReportTemplatePath - путь шаблона документа отчета в формате MS Word
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:21: private Worder worder;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:24: private string _sWordFileName;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:26: public string WordFileName
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:27: { get { return _sWordFileName; } }
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:34: || Path.GetExtension(Glob.sReportTemplatePath) != ".docx")
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:39: _sWordFileName = string.Empty;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:50: _sWordFileName = Glob.sProjectFolder + "\\" + Glob.sMainFolder + "\\"
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:52: System.DateTime.Now)) + ".docx";
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:54: worder = new Worder(Glob.sReportTemplatePath, _sWordFileName);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:55: // worder.Engine = WordEngineName.EngineNone;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:56: worder.Engine = WordEngineName.EngineMicrosoftOfficeInterop;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:60: "Вывод в Word быстро?",
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:64: worder.Engine = WordEngineName.EngineSautinSoftDocument;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:68: if (worder.Engine == WordEngineName.EngineNone)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:70: _sWordFileName = string.Empty;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:76: Glob.TracedMessageBoxShow("Ошибка: не удается обратиться к приложению Microsoft Word"
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:81: _sWordFileName = string.Empty;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:1321: _sWordFileName = worder.ResultFilePath;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SetMainTitle.cs:49: // (титулы меняем в визуальном представлении формы и в шаблоне .docx)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Settings.xml:10: <!-- Путь шаблона документа отчета в формате MS Word -->
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Settings.xml:13: <ReportTemplate path="Q:\Projects\_TemplateProject\2019\2019 - Инструменты заполнения Ведомости объемов работ\Шаблон.docx"/>
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Settings.xml:14: <ReportTemplate path="Q:\Projects\_TemplateProject\2019\2019 - Инструменты заполнения Ведомости объемов работ (новый шаблон ПТХ)\Шаблон.docx"/>
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:2:#if (true) // MicrosoftOfficeInterop - \PIA\Office15\Microsoft.Office.Interop.Word.dll
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:22:using Word = Microsoft.Office.Interop.Word;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:23:using Microsoft.Office.Interop.Word;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:34: enum WordEngineName
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:115: internal class Worder
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:122: // private WordEngineName _engineName = WordEngineName.EngineMicrosoftOfficeInterop;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:123: // private WordEngineName _engineName = WordEngineName.EngineSautinSoftDocument;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:124: private WordEngineName _engineName = WordEngineName.EngineNone;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:128: // WordEngineName.EngineMicrosoftOfficeInterop
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:130: private Word.Application _wordApp;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:131: private Word.Document _wordDoc;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:132: private Word.Table _wordTable;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:133: private Word.Table _wordFooterTableFirstPage;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:134: private Word.Table _wordFooterTableSecondPage;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:142: // WordEngineName.EngineSautinSoftDocument
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:166: public Worder() { }
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:168: public Worder(string sEmptyTemplateFilePath)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:174: public Worder(string sEmptyTemplateFilePath, string sResultFilePath)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:204: public WordEngineName Engine
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:219: private bool CheckEngine(WordEngineName engineName)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:221: return engineName != WordEngineName.EngineNone;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:232: && Path.GetExtension(sEmptyTemplateFilePath) == ".docx")
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:309: // throw new Exception("The output to Word process is not ready");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:311: Glob.TracedMessageBoxShow("Ошибка: не удается обратиться к приложению Microsoft Word "
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:327: else if (_engineName == WordEngineName.EngineMicrosoftOfficeInterop)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:331: _wordApp = new Word.Application();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:335: .Footers[Word.WdHeaderFooterIndex.wdHeaderFooterFirstPage].Range.Tables[1];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:337: .Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.Tables[1];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:344: _wordApp.Selection.LanguageID = Word.WdLanguageID.wdRussian;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:347: _wordDoc.ActiveWindow.View.Type = Word.WdViewType.wdNormalView;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:348: // _wordApp.ActiveWindow.ActivePane.View.Zoom.PageFit = Word.WdPageFit.wdPageFitBestFit;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:358: else if (_engineName == WordEngineName.EngineSautinSoftDocument)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:375: Glob.TracedMessageBoxShow("Ошибка: не удается обратиться к приложению Microsoft Word "
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:387: // throw new Exception("The output to Word process is not ready");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:389: Glob.TracedMessageBoxShow("Ошибка: не удается обратиться к приложению Microsoft Word "
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:400: else if (_engineName == WordEngineName.EngineMicrosoftOfficeInterop)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:412: _wordDoc.ActiveWindow.View.Type = Word.WdViewType.wdPrintView;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:413: // _wordApp.ActiveWindow.ActivePane.View.Zoom.PageFit = Word.WdPageFit.wdPageFitBestFit;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:423: else if (_engineName == WordEngineName.EngineSautinSoftDocument)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:446: // сохраняется rtf-содержимое в файл с .docx-расширением
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:461: // при открытии rtf-файла даже в [Microsoft.Office.Interop.Word] обязательно,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:463: // иметь расширение .docx не обязательно
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:465: // если библиотека [Microsoft.Office.Interop.Word] не подключена,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:468: // то выводим файл результата с исходным расширением .docx
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:476: _wordApp = new Word.Application();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:490: _wordDoc.ActiveWindow.View.Type = Word.WdViewType.wdPrintView;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:491: // _wordApp.ActiveWindow.ActivePane.View.Zoom.PageFit = Word.WdPageFit.wdPageFitBestFit;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:510: Glob.TracedMessageBoxShow("Ошибка: не удается обратиться к приложению Microsoft Word "
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:527: // throw new Exception("The output to Word process is not ready");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:529: Glob.TracedMessageBoxShow("Ошибка: не удается обратиться к приложению Microsoft Word "
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:538: else if (_engineName == WordEngineName.EngineMicrosoftOfficeInterop)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:544: //else if (_engineName == WordEngineName.EngineSautinSoftDocument)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:558: // throw new Exception("The output to Word process is not ready");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:560: Glob.TracedMessageBoxShow("Ошибка: не удается обратиться к приложению Microsoft Word "
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:571: else if (_engineName == WordEngineName.EngineMicrosoftOfficeInterop)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:577: else if (_engineName == WordEngineName.EngineSautinSoftDocument)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:592: // throw new Exception("The output to Word process is not ready");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:594: Glob.TracedMessageBoxShow("Ошибка: не удается обратиться к приложению Microsoft Word "
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:605: else if (_engineName == WordEngineName.EngineMicrosoftOfficeInterop)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:615: else if (_engineName == WordEngineName.EngineSautinSoftDocument)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:634: // throw new Exception("The output to Word process is not ready");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:636: Glob.TracedMessageBoxShow("Ошибка: не удается обратиться к приложению Microsoft Word "
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:647: else if (_engineName == WordEngineName.EngineMicrosoftOfficeInterop)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:657: else if (_engineName == WordEngineName.EngineSautinSoftDocument)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:673: private void ApplyCell(Word.Cell cellToApply,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:689: = Word.WdParagraphAlignment.wdAlignParagraphLeft;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:692: = Word.WdParagraphAlignment.wdAlignParagraphCenter;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:695: = Word.WdParagraphAlignment.wdAlignParagraphRight;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:744: private void UpdateAllFields(Word.Document doc)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:750: foreach (Word.Section section in doc.Sections)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:753: foreach (Word.HeaderFooter hf in section.Headers)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:758: foreach (Word.HeaderFooter hf in section.Footers)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:799: // throw new Exception("The output to Word process is not ready");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:801: Glob.TracedMessageBoxShow("Ошибка: не удается обратиться к приложению Microsoft Word "
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:810: else if (_engineName == WordEngineName.EngineMicrosoftOfficeInterop)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:860: else if (_engineName == WordEngineName.EngineSautinSoftDocument)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\XMLFile.cs:29: string sGeometryName = xeUpdateSupport.Attribute("contentgeometrytemplate").Value;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\XMLFile.cs:128: // Прочитать путь шаблона документа отчета в формате MS Word
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
Template metadata (aggregated; source not copied)
|
||||||
|
Format=DOCX
|
||||||
|
Parts=document.xml, _rels/document.xml.rels, footnotes.xml, endnotes.xml, header1.xml, footer1.xml, header2.xml, footer2.xml, _rels/footer2.xml.rels, media/image1.jpeg, theme/theme1.xml, settings.xml, numbering.xml, styles.xml, webSettings.xml, fontTable.xml
|
||||||
|
ParagraphsInBody=1
|
||||||
|
TablesInBody=1
|
||||||
|
SectionProperties=1
|
||||||
|
BookmarksInBody=0
|
||||||
|
ContentControlsInBody=0
|
||||||
|
SimpleFields=0
|
||||||
|
FieldChars=0
|
||||||
|
InstructionTexts=0
|
||||||
|
HeaderParts=2
|
||||||
|
FooterParts=2
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
P_Rec_BOP
|
||||||
|
templates
|
||||||
@@ -0,0 +1,539 @@
|
|||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\CHANGELOG.md:42: - вывод документа с помощью [Document .Net] SautinSoft.Document.dll
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\CHANGELOG.md:53: - включен вариант с Document .Net (SautinSoft.Document)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\CHANGELOG.md:143: - вариант с Document .Net (SautinSoft.Document) полностью реализован
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\CHANGELOG.md:154: - вариант с Document .Net (SautinSoft.Document)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\Комментарии.txt:1:1. Программа теперь использует библиотеку SautinSoft.Document.dll для получения документа Word "на лету", а не построчно выводит в создаваемый документ.
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\README.md:69: COM-вывода (Microsoft.Office.Interop.Word), так и для библиотеки
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\README.md:70: Document .Net (SautinSoft.Document). оба варианта имели реализацию
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\CSVFile.cs:93: dtCurrentResultValue.Rows.Add(asFieldValues);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:15:// DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:29:// DataRow[] adrDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:50:// DataRow[] adrLineGroupPartRelationships = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[Part]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:109:// DataRow[] adrDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + this.iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:143:// DataRow[] drPipeBend = Program.dsPipingDCF.Tables["PipeBend"].Select("[PnPID]=" + this.iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Components.cs:195:// DataRow[] drRows3 = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:14:using Microsoft.Office.Interop.Word;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:159: System.Data.DataTable tablePnPDrawings = _projectPipingDcf.Tables["PnPDrawings"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:211: //System.Data.DataTable tableEngineeringItems = _projectPipingDcf.Tables["EngineeringItems"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:221: if (_projectPipingDcf.Tables.Contains("EngineeringItems")
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:222: && (_projectPipingDcf.Tables.Contains("PnPDataLinks"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:223: && (_projectPipingDcf.Tables.Contains("PnPDrawings"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:224: && (_projectPipingDcf.Tables.Contains("P3dLineGroupPartRelationship"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:225: && (_projectPipingDcf.Tables.Contains("P3dLineGroup"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:227: && (_projectPipingDcf.Tables["EngineeringItems"].Columns.Contains("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:228: && (_projectPipingDcf.Tables["EngineeringItems"].Columns.Contains("Status"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:229: && (_projectPipingDcf.Tables["EngineeringItems"].Columns.Contains("Spec"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:231: && (_projectPipingDcf.Tables["PnPDataLinks"].Columns.Contains("RowId"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:232: && (_projectPipingDcf.Tables["PnPDataLinks"].Columns.Contains("DwgId"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:234: && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:235: && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("PnPType"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:236: // && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("Dwg Name"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:237: // && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("Title"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:238: // && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("PnPRelativePath"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:239: && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("Path"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:240: && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("PnPUnc"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:241: && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("Area"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:243: && (_projectPipingDcf.Tables["P3dLineGroupPartRelationship"].Columns.Contains("Part"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:244: && (_projectPipingDcf.Tables["P3dLineGroupPartRelationship"].Columns.Contains("LineGroup"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:246: && (_projectPipingDcf.Tables["P3dLineGroup"].Columns.Contains("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:247: && (_projectPipingDcf.Tables["P3dLineGroup"].Columns.Contains("Tag"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:248: // && (_projectPipingDcf.Tables["P3dLineGroup"].Columns.Contains("Number"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:256: System.Data.DataTable tableEngineeringItems = _projectPipingDcf.Tables["EngineeringItems"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:257: System.Data.DataTable tablePnPDataLinks = _projectPipingDcf.Tables["PnPDataLinks"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:258: System.Data.DataTable tablePnPDrawings = _projectPipingDcf.Tables["PnPDrawings"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:259: System.Data.DataTable tableP3dLineGroupPartRelationship = _projectPipingDcf.Tables["P3dLineGroupPartRelationship"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:260: System.Data.DataTable tableP3dLineGroup = _projectPipingDcf.Tables["P3dLineGroup"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:262: // System.Data.DataTable tableP3dDrawingLineGroupRelationship = _projectPipingDcf.Tables["P3dDrawingLineGroupRelationship"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:432: if (_projectPipingDcf.Tables.Contains("EngineeringItems")
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:433: && (_projectPipingDcf.Tables.Contains("PnPDataLinks"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:434: && (_projectPipingDcf.Tables.Contains("PnPDrawings"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:435: && (_projectPipingDcf.Tables.Contains("P3dLineGroupPartRelationship"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:436: && (_projectPipingDcf.Tables.Contains("P3dLineGroup"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:438: && (_projectPipingDcf.Tables.Contains("Pipe"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:440: && (_projectPipingDcf.Tables["EngineeringItems"].Columns.Contains("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:441: && (_projectPipingDcf.Tables["EngineeringItems"].Columns.Contains("Status"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:443: && (_projectPipingDcf.Tables["PnPDataLinks"].Columns.Contains("RowId"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:444: && (_projectPipingDcf.Tables["PnPDataLinks"].Columns.Contains("DwgId"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:446: && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:447: // && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("PnPType"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:448: // && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("Dwg Name"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:449: // && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("Title"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:450: // && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("PnPRelativePath"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:451: && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("Path"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:452: // && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("PnPUnc"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:453: // && (_projectPipingDcf.Tables["PnPDrawings"].Columns.Contains("Area"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:455: && (_projectPipingDcf.Tables["P3dLineGroupPartRelationship"].Columns.Contains("Part"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:456: && (_projectPipingDcf.Tables["P3dLineGroupPartRelationship"].Columns.Contains("LineGroup"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:458: && (_projectPipingDcf.Tables["P3dLineGroup"].Columns.Contains("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:459: && (_projectPipingDcf.Tables["P3dLineGroup"].Columns.Contains("Tag"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:460: // && (_projectPipingDcf.Tables["P3dLineGroup"].Columns.Contains("Number"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:462: && (_projectPipingDcf.Tables["Pipe"].Columns.Contains("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:463: && (_projectPipingDcf.Tables["Pipe"].Columns.Contains("CutLength"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:464: && (_projectPipingDcf.Tables["Pipe"].Columns.Contains("LinearWeight"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:472: System.Data.DataTable tableEngineeringItems = _projectPipingDcf.Tables["EngineeringItems"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:473: System.Data.DataTable tablePnPDataLinks = _projectPipingDcf.Tables["PnPDataLinks"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:474: System.Data.DataTable tablePnPDrawings = _projectPipingDcf.Tables["PnPDrawings"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:475: System.Data.DataTable tableP3dLineGroupPartRelationship = _projectPipingDcf.Tables["P3dLineGroupPartRelationship"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:476: System.Data.DataTable tableP3dLineGroup = _projectPipingDcf.Tables["P3dLineGroup"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:478: // System.Data.DataTable tableP3dDrawingLineGroupRelationship = _projectPipingDcf.Tables["P3dDrawingLineGroupRelationship"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:480: System.Data.DataTable tablePipe = _projectPipingDcf.Tables["Pipe"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:484: if (_projectPipingDcf.Tables.Contains("PipeBend")
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:486: && (_projectPipingDcf.Tables["PipeBend"].Columns.Contains("PnPID"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:487: && (_projectPipingDcf.Tables["PipeBend"].Columns.Contains("CutLength"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:488: && (_projectPipingDcf.Tables["PipeBend"].Columns.Contains("LinearWeight"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:491: tablePipeBend = _projectPipingDcf.Tables["PipeBend"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:610: foreach (DataRow drRow in _projectPipingDcf.Tables["PnPDrawings"].Rows)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:625: DataRow[] adrRows = _projectPipingDcf.Tables["P3dDrawingLineGroupRelationship"]
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:635: .Tables["P3dLineGroupPartRelationship"]
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:662: foreach (DataRow drRow in _projectPipingDcf.Tables["P3dLineGroup"].Rows)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:721: drSourceRow = _projectPipingDcf.Tables["P3dLineGroup"]
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:881: DataRow[] adrRows = Program.dsPipingDCF.Tables["P3dDrawingLineGroupRelationship"].Select("[Drawing]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsAndLinenumbers.cs:889: DataRow[] adrRows2 = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[LineGroup]=" + lnLineNumber.iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\DrawingsInformation.cs:9:using Microsoft.Office.Interop.Word;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Glob.cs:1:using Microsoft.Office.Interop.Word;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Materials.cs:158: DataRow[] adrPipes = dsSpec.Tables["EngineeringItems"].Select("[PartCategory]='Pipe'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:9:using Microsoft.Office.Interop.Word;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:28: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:37: DataRow[] adrDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:63: DataRow[] adrLineGroupPartRelationships = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[Part]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:71: // iNozzle = Program.dsPipingDCF.Tables["Nozzle"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:76: // iEquipment = Program.dsPipingDCF.Tables["Equipment"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:80: if (Program.dsPipingDCF.Tables.Contains("Nozzle"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:81: iNozzle = Program.dsPipingDCF.Tables["Nozzle"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:83: if (Program.dsPipingDCF.Tables.Contains("Equipment"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:84: iEquipment = Program.dsPipingDCF.Tables["Equipment"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:115: DataRow[] adrPartPorts = Program.dsPipingDCF.Tables["PartPort"].Select("[Part]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:120: DataRow[] adrPorts = Program.dsPipingDCF.Tables["Port"].Select("[PnPID]=" + iPortPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:178: DataRow[] adrDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:203: DataRow[] adrLineGroupPartRelationships = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[Part]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:212: // iNozzle = Program.dsPipingDCF.Tables["Nozzle"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:217: // iEquipment = Program.dsPipingDCF.Tables["Equipment"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:221: if (Program.dsPipingDCF.Tables.Contains("Nozzle"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:222: iNozzle = Program.dsPipingDCF.Tables["Nozzle"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:223: if (Program.dsPipingDCF.Tables.Contains("Equipment"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:224: iEquipment = Program.dsPipingDCF.Tables["Equipment"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:253: DataRow[] adrLineGroup = Program.dsPipingDCF.Tables["P3dLineGroup"].Select("[PnPID]=" + iLineNumberId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:324: DataRow[] adrTracingPipes = dsTracingSpec.Tables["EngineeringItems"].Select("[MatchingPipeOd]=" + dTracingOuterDiameter);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:418: DataRow drElbow = Program.dsPipingDCF.Tables["Elbow"].Select("[PnPID]=" + iPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:429: DataRow[] adrComponent = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:443: DataRow[] adrDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:537: DataRow drPipe = Program.dsPipingDCF.Tables["Pipe"].Select("[PnPId]=" + iComponentPnPId).First();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:735: DataRow[] drPipeBend = Program.dsPipingDCF.Tables["PipeBend"].Select("[PnPID]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:806: DataRow[] adrComponent = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:865: DataRow[] adrLineGroupPartRelationships = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[Part]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:873: // iNozzle = Program.dsPipingDCF.Tables["Nozzle"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:878: // iEquipment = Program.dsPipingDCF.Tables["Equipment"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:882: if (Program.dsPipingDCF.Tables.Contains("Nozzle"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:883: iNozzle = Program.dsPipingDCF.Tables["Nozzle"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:884: if (Program.dsPipingDCF.Tables.Contains("Equipment"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:885: iEquipment = Program.dsPipingDCF.Tables["Equipment"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1021: DataRow[] adrDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1129: DataRow[] aPipes = Program.dsPipingDCF.Tables["Pipe"].Select("PnPID=" + iComponentPnPId);//2018
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1319: DataRow[] aPipeBends = Program.dsPipingDCF.Tables["PipeBend"].Select("PnPID=" + iComponentPnPId);//2018
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1344: DataRow[] drPipeBend = Program.dsPipingDCF.Tables["PipeBend"].Select("[PnPID]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PipingElements.cs:1427: DataRow[] adrDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:15:using Microsoft.Office.Interop.Word;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:217: if (!dsPipingDCF.Tables.Contains("EngineeringItems"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:225: DataRow[] adrEngineeringItems = dsPipingDCF.Tables["EngineeringItems"].Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:229: DataRow[] adrLineGroupPartRelationships = dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[Part]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:237: // iNozzle = dsPipingDCF.Tables["Nozzle"].Select("PnPID=" + iPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:242: // iEquipment = dsPipingDCF.Tables["Equipment"].Select("PnPID=" + iPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:246: if (Program.dsPipingDCF.Tables.Contains("Nozzle"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:247: iNozzle = dsPipingDCF.Tables["Nozzle"].Select("PnPID=" + iPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:248: if (Program.dsPipingDCF.Tables.Contains("Equipment"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:249: iEquipment = dsPipingDCF.Tables["Equipment"].Select("PnPID=" + iPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Program.cs:645: csvfErrorNKRs.dtRows.Rows.Add(new string[2] { liErrorNKRs[i].ToString(), lsErrorNKRs[i] });
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\PYFile.cs:178: foreach (DataTable dtXLSheet in dsMaterials.Tables)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\P_Rec_BOP.csproj:100: <Reference Include="Microsoft.Office.Interop.Word, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL">
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\P_Rec_BOP.csproj:103: <HintPath>C:\Program Files (x86)\Microsoft Visual Studio\Shared\Visual Studio Tools for Office\PIA\Office15\Microsoft.Office.Interop.Word.dll</HintPath>
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\P_Rec_BOP.csproj:105: <Reference Include="SautinSoft.Document">
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\P_Rec_BOP.csproj:106: <HintPath>lib\SautinSoft.Document.dll</HintPath>
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:22: private Cells12345TableRow cells12345TableRow;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:58:#if (true) // SautinSoftDocument
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:64: worder.Engine = WordEngineName.EngineSautinSoftDocument;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:139: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:148: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:160: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:179: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:229: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:238: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:250: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:269: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:326: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:335: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:347: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:366: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:420: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:429: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:437: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:449: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:457: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:469: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:484: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:522: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:559: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:570: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:605: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:632: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:644: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:656: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:684: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:695: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:716: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:730: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:743: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:757: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:785: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:796: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:817: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:835: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:847: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:859: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:889: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:900: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:910: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:925: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:951: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:962: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:970: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:995: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:1006: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:1014: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:1040: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:1064: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:1095: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:1124: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:1135: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:1164: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:1175: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:1204: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:1215: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:1243: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\ReportWithWorder.cs:1271: cells12345TableRow = new Cells12345TableRow();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SelectDrawingsAndLinenumbers.cs:39: foreach (DataRow drRow in Program.dsPipingDCF.Tables["P3dLineGroup"].Rows)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SelectDrawingsAndLinenumbers.cs:47: foreach (DataRow drRow in Program.dsPipingDCF.Tables["PnPDrawings"].Rows)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SelectDrawingsAndLinenumbers.cs:343: DataRow[] adrRows = Program.dsPipingDCF.Tables["P3dDrawingLineGroupRelationship"].Select("[Drawing]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SelectDrawingsAndLinenumbers.cs:351: DataRow[] adrRows2 = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[LineGroup]=" + lnLineNumber.iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SelectDrawingsAndLinenumbers.designer.cs:92: this.lbSelectLineNumber.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SelectDrawingsAndLinenumbers.designer.cs:106: this.lbSelectDrawing.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SetMainTitle.cs:126: if (!Program.dsProcessPowerDCF.Tables.Contains("PnPProject"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SetMainTitle.cs:139: DataRow[] adrRows = Program.dsProcessPowerDCF.Tables["PnPProject"].Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SetMainTitle.cs:263: //csvfProjectProperties.dtRows.Rows.Add(asRow);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SetMainTitle.cs:271: csvfProjectProperties.dtRows.Rows.Add(asRow);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SQLDataBase.cs:46: DataTable dtSchema = sqlcConnection.GetSchema("Tables");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SQLDataBase.cs:59: DataTable dtTempTable = dsTempDataSet.Tables[0].Copy();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SQLDataBase.cs:61: dsCurrentReturnValue.Tables.Add(dtTempTable);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SQLiteDataBase.cs:31: DataTable dtSchema = sqlcConnection.GetSchema("Tables");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SQLiteDataBase.cs:41: DataTable dtTempTable = dsTempDataSet.Tables[0].Copy();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\SQLiteDataBase.cs:43: dsCurrentReturnValue.Tables.Add(dtTempTable);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:32: DataRow[] adrDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowClassName]='Support'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:55: DataRow[] adrSupports = Program.dsPipingDCF.Tables["EngineeringItems"].Select(sfSupportFilter.EngineeringItemsQuery);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:142: DataRow drSupport = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iMissedPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:270: // iParentSupportPnPId = Convert.ToInt32(Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part1]=" + iComponentPnPId)[0]["Part2"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:276: // iParentSupportPnPId = Convert.ToInt32(Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part2]=" + iComponentPnPId)[0]["Part1"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:287: if (Program.dsPipingDCF.Tables.Contains("P3dPartConnection"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:289: dataTablePartConnection = Program.dsPipingDCF.Tables["P3dPartConnection"];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:328: DataRow drParentSupport = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iParentSupportPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:417: DataRow[] adrParentPnPIds1 = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part1]=" + iCurrentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:426: DataRow drParentClassName1 = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iPipeOrElbow1).First();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:441: DataRow[] adrParentPnPIds2 = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part2]=" + iCurrentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:450: DataRow drParentClassName2 = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iPipeOrElbow2).First();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:538: dWeight = Convert.ToDouble(Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iComponentPnPId)[0]["Weight"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1189: if (Program.dsPipingDCF.Tables.Contains("Support"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1191: aSupports = Program.dsPipingDCF.Tables["Support"].Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1236: DataRow dEItem = Program.dsPipingDCF.Tables["EngineeringItems"].Select("PnPId=" + PnPId).First();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1255: DataRow[] aConnectionsAsPart1 = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("Part1=" + PnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1256: DataRow[] aConnectionsAsPart2 = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("Part2=" + PnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1268: DataRow dItem = Program.dsPipingDCF.Tables["EngineeringItems"].Select("PnPId=" + iConnectedPartId).First();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1275: DataRow dLineGroup1 = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("Part=" + iConnectedPartId).First();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1278: DataRow dDataLink1 = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("RowId=" + iConnectedPartId).First();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1289: DataRow dLineGroup1 = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("Part=" + PnPId).First();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Supports.cs:1292: DataRow dDataLink1 = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("RowId=" + PnPId).First();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:22: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:57: DataRow drEngineeringItem = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iComponentPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:78: DataRow[] adrDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:109: // DataRow[] aPipes = Program.dsPipingDCF.Tables["Pipe"].Select("PnPID=" + iComponentPnPId);//2018
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:123: aPipes = Program.dsPipingDCF.Tables["Pipe"].Select("PnPID=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:128: aPipes = Program.dsPipingDCF.Tables["PipeBend"].Select("PnPID=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:154: //dLength = Convert.ToDouble(Program.dsPipingDCF.Tables["Pipe"].Select("[PnPID]=" + iComponentPnPId)[0]["Length"]) / 1000; // support
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:155: dLength = Convert.ToDouble(Program.dsPipingDCF.Tables["Pipe"].Select("[PnPID]=" + iComponentPnPId)[0]["CutLength"]) / 1000; // support
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:170: dLength = Convert.ToDouble(Program.dsPipingDCF.Tables["PipeBend"].Select("[PnPID]=" + iComponentPnPId)[0]["CutLength"]) / 1000;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:214: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:224: DataRow drDataLink = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\TestLineNumbers.cs:236: DataRow[] adrLineGroupPartRelationships = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[Part]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:27: DataRow[] adrDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowClassName]='Valve' OR [RowClassName]='InlineInstrument'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:51: if (Program.dsPipingDCF.Tables.Contains("Valve"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:55: adrValves = Program.dsPipingDCF.Tables["Valve"].Select("[ValveBodyType]='" + vfValveFilter.ValveBodyType + "'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:99: DataRow drEngineeringItem = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:108: DataRow drPipeRunComponent = Program.dsPipingDCF.Tables["PipeRunComponent"].Select("[PnPID]=" + iPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:120: DataRow[] adrValves = Program.dsPipingDCF.Tables["EngineeringItems"].Select(vfValveFilter.EngineeringItemsQuery);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:175: DataRow drPipeRunComponent = Program.dsPipingDCF.Tables["PipeRunComponent"].Select("[PnPID]=" + iPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:205: DataRow drValve = Program.dsPipingDCF.Tables["Valve"].Select("[PnPID]=" + iMissedPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:214: string sDescription = string.Format("{0}", Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iMissedPnPId)[0]["ComponentDescription"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:217: sDescription = string.Format("{0}", Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iMissedPnPId)[0]["PartSizeLongDesc"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:228: DataRow drPipeRunComponent = Program.dsPipingDCF.Tables["PipeRunComponent"].Select("[PnPID]=" + iMissedPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:245: DataRow drInlineInstrument = Program.dsPipingDCF.Tables["InlineInstrument"].Select("[PnPID]=" + iMissedPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:254: string sDescription = string.Format("{0}", Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iMissedPnPId)[0]["ComponentDescription"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:257: sDescription = string.Format("{0}", Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iMissedPnPId)[0]["PartSizeLongDesc"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:268: DataRow drPipeRunComponent = Program.dsPipingDCF.Tables["PipeRunComponent"].Select("[PnPID]=" + iMissedPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:292: if (!bComponentFound && Program.dsPipingDCF.Tables.Contains("Valve"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:294: dataRowsComonents = Program.dsPipingDCF.Tables["Valve"].Select("[PnPID]=" + iMissedPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:300: if (!bComponentFound && Program.dsPipingDCF.Tables.Contains("InlineInstrument"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:302: dataRowsComonents = Program.dsPipingDCF.Tables["InlineInstrument"].Select("[PnPID]=" + iMissedPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:317: string sDescription = string.Format("{0}", Program.dsPipingDCF.Tables["EngineeringItems"].Select(
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:321: sDescription = string.Format("{0}", Program.dsPipingDCF.Tables["EngineeringItems"].Select(
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:333: DataRow drPipeRunComponent = Program.dsPipingDCF.Tables["PipeRunComponent"].Select("[PnPID]=" + iMissedPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:390: dWeight = Convert.ToDouble(Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iComponentPnPId)[0]["Weight"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:436: DataRow drEngineeringItem = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:501: DataRow drEngineeringItem = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:529: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:539: DataRow[] adrDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Valves.cs:560: DataRow[] adrLineGroupPartRelationships = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[Part]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:64: csvfPipingElements.dtRows.Rows.Add(asNewRow);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:103: csvfValves.dtRows.Rows.Add(asNewRow);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:139: csvfSupports.dtRows.Rows.Add(asNewRow);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:176: csvfNKRs.dtRows.Rows.Add(asNewRow);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:221: csvfWeldControlForLineNumbers.dtRows.Rows.Add(asNewRow);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:248: csvfWeldControlTotal.dtRows.Rows.Add(asNewRow);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:278: csvfWeldHeatTreatment.dtRows.Rows.Add(asNewRow);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:290: csvfWeldHeatTreatment.dtRows.Rows.Add(asNewRow);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:302: csvfWeldHeatTreatment.dtRows.Rows.Add(asNewRow);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Versions.cs:330: csvfPipingTest.dtRows.Rows.Add(asNewRow);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:2:#if (true) // MicrosoftOfficeInterop - \PIA\Office15\Microsoft.Office.Interop.Word.dll
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:5:#if (true) // SautinSoftDocument - SautinSoft.Document.dll
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:6:#define SautinSoftDocument
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:22:using Word = Microsoft.Office.Interop.Word;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:23:using Microsoft.Office.Interop.Word;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:25:#if (SautinSoftDocument) // SautinSoftDocument
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:26:using SautinSoft.Document;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:27:using SautinSoft.Document.Tables;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:40:#if (SautinSoftDocument) // SautinSoftDocument
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:41: EngineSautinSoftDocument,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:76: internal class Cells12345TableRow
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:78: public Cells12345TableRow()
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:123: // private WordEngineName _engineName = WordEngineName.EngineSautinSoftDocument;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:130: private Word.Application _wordApp;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:131: private Word.Document _wordDoc;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:141:#if (SautinSoftDocument) // SautinSoftDocument
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:142: // WordEngineName.EngineSautinSoftDocument
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:143: // https://github.com/SautinSoft/SautinSoft.Document.Examples
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:145: private SautinSoft.Document.DocumentCore _dc; // текущий документ
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:146: private SautinSoft.Document.Tables.Table _dcTable;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:147: private SautinSoft.Document.Tables.Table _dcTableFooterFirstPage;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:148: private SautinSoft.Document.Tables.Table _dcTableFooterSecondPage;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:150: private readonly SautinSoft.Document.CharacterFormat arialBold10
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:151: = new SautinSoft.Document.CharacterFormat() { Bold = true, FontName = "Arial", Size = 10.0 };
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:152: private readonly SautinSoft.Document.CharacterFormat arialBold11
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:153: = new SautinSoft.Document.CharacterFormat() { Bold = true, FontName = "Arial", Size = 11.0 };
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:154: private readonly SautinSoft.Document.CharacterFormat arialNotBold10
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:155: = new SautinSoft.Document.CharacterFormat() { Bold = false, FontName = "Arial", Size = 10.0 };
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:156: private readonly SautinSoft.Document.CharacterFormat arialNotBold11
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:157: = new SautinSoft.Document.CharacterFormat() { Bold = false, FontName = "Arial", Size = 11.0 };
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:158: private readonly SautinSoft.Document.CharacterFormat arialNotBold14
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:159: = new SautinSoft.Document.CharacterFormat() { Bold = false, FontName = "Arial", Size = 14.0 };
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:160: private readonly SautinSoft.Document.CharacterFormat arialNotBold16
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:161: = new SautinSoft.Document.CharacterFormat() { Bold = false, FontName = "Arial", Size = 16.0 };
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:331: _wordApp = new Word.Application();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:332: _wordDoc = _wordApp.Documents.Open(_tmpFilePath);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:333: _wordTable = _wordDoc.Tables[1];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:334: _wordFooterTableFirstPage = _wordDoc.Sections[1]
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:335: .Footers[Word.WdHeaderFooterIndex.wdHeaderFooterFirstPage].Range.Tables[1];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:336: _wordFooterTableSecondPage = _wordDoc.Sections[1]
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:337: .Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.Tables[1];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:343: _wordDoc.Tables[1].Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:344: _wordApp.Selection.LanguageID = Word.WdLanguageID.wdRussian;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:345: _wordDoc.Tables[1].Cell(1, 1).Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:357:#if (SautinSoftDocument) // SautinSoftDocument
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:358: else if (_engineName == WordEngineName.EngineSautinSoftDocument)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:360: _dc = SautinSoft.Document.DocumentCore.Load(_tmpFilePath);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:361: _dcTable = (SautinSoft.Document.Tables.Table)_dc.GetChildElements(true, ElementType.Table).First();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:363: List<SautinSoft.Document.HeaderFooter> headers = _dc
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:365: .Select(x => x as SautinSoft.Document.HeaderFooter).ToList();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:366: _dcTableFooterFirstPage = (SautinSoft.Document.Tables.Table)headers[3]
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:368: _dcTableFooterSecondPage = (SautinSoft.Document.Tables.Table)headers[1]
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:410: _wordDoc.Tables[1].Cell(1, 1).Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:417: // _wordDoc.SaveAs(_tmpFilePath);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:422:#if (SautinSoftDocument) // SautinSoftDocument
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:423: else if (_engineName == WordEngineName.EngineSautinSoftDocument)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:425: //foreach (SautinSoft.Document.Tables.TableCell t
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:447: // это помогает сделать документ после библиотеки SautinSoft
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:458: // сохраняя все преимущества документа rtf с библиотекой SautinSoft
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:460: // с помощью одной только библиотеки SautinSoft
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:461: // при открытии rtf-файла даже в [Microsoft.Office.Interop.Word] обязательно,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:465: // если библиотека [Microsoft.Office.Interop.Word] не подключена,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:474:#if (SautinSoftDocument && MicrosoftOfficeInterop)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:476: _wordApp = new Word.Application();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:477: _wordDoc = _wordApp.Documents.Open(FileName: _tmpFilePath,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:488: _wordDoc.Tables[1].Cell(1, 1).Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:495: _wordDoc.SaveAs(FileName: _tmpFilePath,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:540: _wordDoc.Tables[1].Cell(rowIndex, 1).Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:543:#if (SautinSoftDocument) // SautinSoftDocument
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:544: //else if (_engineName == WordEngineName.EngineSautinSoftDocument)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:576:#if (SautinSoftDocument) // SautinSoftDocument
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:577: else if (_engineName == WordEngineName.EngineSautinSoftDocument)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:579: SautinSoft.Document.Tables.TableRow row = _dcTable.Rows[rowIndex - 1];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:609: _wordTable.Rows.Add(ref oMissing);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:614:#if (SautinSoftDocument) // SautinSoftDocument
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:615: else if (_engineName == WordEngineName.EngineSautinSoftDocument)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:617: SautinSoft.Document.Tables.TableRow rowfirst = _dcTable.Rows[1]; // second row
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:618: SautinSoft.Document.Tables.TableRow row = rowfirst.Clone(true);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:619: _dcTable.Rows.Add(row);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:621: rowIndex = _dcTable.Rows.Count; // index + 1 according SautinSoftDocument style
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:630: public int AddNewRowToTable(Cells12345TableRow row)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:649: ApplyCell(_wordTable.Rows[rowIndex].Cells[1], row.Cell1);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:650: ApplyCell(_wordTable.Rows[rowIndex].Cells[2], row.Cell2);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:651: ApplyCell(_wordTable.Rows[rowIndex].Cells[3], row.Cell3);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:652: ApplyCell(_wordTable.Rows[rowIndex].Cells[4], row.Cell4);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:653: ApplyCell(_wordTable.Rows[rowIndex].Cells[5], row.Cell5);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:656:#if (SautinSoftDocument) // SautinSoftDocument
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:657: else if (_engineName == WordEngineName.EngineSautinSoftDocument)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:659: ApplyCell(_dcTable.Rows[rowIndex - 1].Cells[0], row.Cell1);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:660: ApplyCell(_dcTable.Rows[rowIndex - 1].Cells[1], row.Cell2);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:661: ApplyCell(_dcTable.Rows[rowIndex - 1].Cells[2], row.Cell3);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:662: ApplyCell(_dcTable.Rows[rowIndex - 1].Cells[3], row.Cell4);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:663: ApplyCell(_dcTable.Rows[rowIndex - 1].Cells[4], row.Cell5);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:701:#if (SautinSoftDocument) // SautinSoftDocument
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:702: // SautinSoftDocument overload
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:703: private void ApplyCell(SautinSoft.Document.Tables.TableCell cellToApply,
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:706: SautinSoft.Document.CharacterFormat characterFormat;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:729: ((SautinSoft.Document.Paragraph)cellToApply.Blocks.Last()).ParagraphFormat.Alignment
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:730: = SautinSoft.Document.HorizontalAlignment.Left;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:732: ((SautinSoft.Document.Paragraph)cellToApply.Blocks.Last()).ParagraphFormat.Alignment
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:733: = SautinSoft.Document.HorizontalAlignment.Center;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:735: ((SautinSoft.Document.Paragraph)cellToApply.Blocks.Last()).ParagraphFormat.Alignment
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:736: = SautinSoft.Document.HorizontalAlignment.Right;
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:744: private void UpdateAllFields(Word.Document doc)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:748: doc.Fields.Update();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:750: foreach (Word.Section section in doc.Sections)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:753: foreach (Word.HeaderFooter hf in section.Headers)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:755: hf.Range.Fields.Update();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:758: foreach (Word.HeaderFooter hf in section.Footers)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:760: hf.Range.Fields.Update();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:767:#if (SautinSoftDocument) // SautinSoftDocument
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:768: // SautinSoftDocument overload
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:769: private void UpdateAllFields(SautinSoft.Document.DocumentCore doc)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:776: List<SautinSoft.Document.Field> fields = doc.GetChildElements(true, ElementType.Field)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:777: .Select(x => x as SautinSoft.Document.Field).ToList();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:778: foreach (SautinSoft.Document.Field field in fields)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:814: _wordFooterTableFirstPage.Range.Cells[7].Range.Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:815: _wordFooterTableFirstPage.Range.Cells[7].Range.Text
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:817: _wordFooterTableSecondPage.Range.Cells[7].Range.Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:818: _wordFooterTableSecondPage.Range.Cells[7].Range.Text
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:823: _wordFooterTableFirstPage.Range.Cells[24].Range.Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:824: _wordFooterTableFirstPage.Range.Cells[24].Range.Text
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:829: _wordFooterTableFirstPage.Range.Cells[21].Range.Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:830: _wordFooterTableFirstPage.Range.Cells[21].Range.Text
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:835: _wordFooterTableFirstPage.Range.Cells[29].Range.Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:836: _wordFooterTableFirstPage.Range.Cells[29].Range.Text
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:841: _wordFooterTableFirstPage.Range.Cells[36].Range.Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:842: _wordFooterTableFirstPage.Range.Cells[36].Range.Text
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:847: _wordFooterTableFirstPage.Range.Cells[41].Range.Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:848: _wordFooterTableFirstPage.Range.Cells[41].Range.Text
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:853: _wordFooterTableFirstPage.Range.Cells[45].Range.Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:854: _wordFooterTableFirstPage.Range.Cells[45].Range.Text
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:859:#if (SautinSoftDocument) // SautinSoftDocument
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:860: else if (_engineName == WordEngineName.EngineSautinSoftDocument)
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:864: _dcTableFooterFirstPage.Rows[0].Cells[6].Content.End
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:866: _dcTableFooterSecondPage.Rows[0].Cells[6].Content.End
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:871: _dcTableFooterFirstPage.Rows[3].Cells[4].Content.End
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:876: _dcTableFooterFirstPage.Rows[3].Cells[1].Content.End
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:881: _dcTableFooterFirstPage.Rows[4].Cells[1].Content.End
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:886: _dcTableFooterFirstPage.Rows[5].Cells[1].Content.End
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:891: _dcTableFooterFirstPage.Rows[6].Cells[1].Content.End
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Worder.cs:896: _dcTableFooterFirstPage.Rows[7].Cells[1].Content.End
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:41: DataRow[] adrButtweld = Program.dsPipingDCF.Tables["Buttweld"].Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:46: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iCurrentWeldPnPId + " AND [Status]='New'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:51: DataRow[] adrPnPDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iCurrentWeldPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:54: adrPnPDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[DwgId]=" + iDwgId + " AND [DwgHandleLow]=" + lHandle + " AND [DwgSubIndex]=0");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:58: DataRow[] adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part1]=" + iCurrentConnectorPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:64: adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part2]=" + iCurrentConnectorPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:80: if ((Program.dsPipingDCF.Tables.Contains("Nozzle") && Program.dsPipingDCF.Tables["Nozzle"].Select("PnPId=" + liConnectedParts[0]).Length > 0) || (Program.dsPipingDCF.Tables.Contains("Equipment") && Program.dsPipingDCF.Tables["Equipment"].Select("PnPId=" + liConnectedParts[0]).Length > 0))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:103: // adrSocketWeld = Program.dsPipingDCF.Tables["SocketWeld"].Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:106: if (Program.dsPipingDCF.Tables.Contains("SocketWeld"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:108: adrSocketWeld = Program.dsPipingDCF.Tables["SocketWeld"].Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:114: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iCurrentWeldPnPId + " AND [Status]='New'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:119: DataRow[] adrPnPDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iCurrentWeldPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:122: adrPnPDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[DwgId]=" + iDwgId + " AND [DwgHandleLow]=" + lHandle + " AND [DwgSubIndex]=0");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:126: DataRow[] adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part1]=" + iCurrentConnectorPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:132: adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part2]=" + iCurrentConnectorPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:148: if ((Program.dsPipingDCF.Tables.Contains("Nozzle") && Program.dsPipingDCF.Tables["Nozzle"].Select("PnPId=" + liConnectedParts[0]).Length > 0) || (Program.dsPipingDCF.Tables.Contains("Equipment") && Program.dsPipingDCF.Tables["Equipment"].Select("PnPId=" + liConnectedParts[0]).Length > 0))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:171: // adrSlipOn = Program.dsPipingDCF.Tables["SlipOn"].Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:174: if (Program.dsPipingDCF.Tables.Contains("SlipOn"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:175: adrSlipOn = Program.dsPipingDCF.Tables["SlipOn"].Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:180: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iCurrentWeldPnPId + " AND [Status]='New'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:185: DataRow[] adrPnPDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iCurrentWeldPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:188: adrPnPDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[DwgId]=" + iDwgId + " AND [DwgHandleLow]=" + lHandle + " AND [DwgSubIndex]=0");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:192: DataRow[] adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part1]=" + iCurrentConnectorPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:198: adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part2]=" + iCurrentConnectorPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:214: if ((Program.dsPipingDCF.Tables.Contains("Nozzle") && Program.dsPipingDCF.Tables["Nozzle"].Select("PnPId=" + liConnectedParts[0]).Length > 0) || (Program.dsPipingDCF.Tables.Contains("Equipment") && Program.dsPipingDCF.Tables["Equipment"].Select("PnPId=" + liConnectedParts[0]).Length > 0))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:239: DataRow[] adrPipes = Program.dsPipingDCF.Tables["Pipe"].Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:247: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iPipePnPId + " AND [Status]='New'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:285: if ((Program.dsPipingDCF.Tables.Contains("Tapweld")) && (Program.dsPipingDCF.Tables.Contains("Olet")))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:288: DataRow[] adrTapweld = Program.dsPipingDCF.Tables["Tapweld"].Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:298: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iCurrentWeldPnPId + " AND [Status]='New'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:303: DataRow[] adrPnPDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iCurrentWeldPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:306: adrPnPDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[DwgId]=" + iDwgId + " AND [DwgHandleLow]=" + lHandle + " AND [DwgSubIndex]=0");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:308: DataRow[] adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part1]=" + iCurrentConnectorPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:315: adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part2]=" + iCurrentConnectorPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:324: DataRow[] adrOlets1 = Program.dsPipingDCF.Tables["Olet"].Select("[PnPID]=" + iConnectedPart1);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:325: DataRow[] adrOlets2 = Program.dsPipingDCF.Tables["Olet"].Select("[PnPID]=" + iConnectedPart2);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:350: adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part1]=" + iOlet);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:362: adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part2]=" + iOlet);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:378: adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part1]=" + iSecondConnector);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:387: adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part2]=" + iSecondConnector);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:422: if ((Program.dsPipingDCF.Tables.Contains("Tapweld")) && (Program.dsPipingDCF.Tables.Contains("Coupling")))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:425: DataRow[] adrTapweld = Program.dsPipingDCF.Tables["Tapweld"].Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:435: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iCurrentWeldPnPId + " AND [Status]='New'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:440: DataRow[] adrPnPDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iCurrentWeldPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:443: adrPnPDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[DwgId]=" + iDwgId + " AND [DwgHandleLow]=" + lHandle + " AND [DwgSubIndex]=0");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:445: DataRow[] adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part1]=" + iCurrentConnectorPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:452: adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part2]=" + iCurrentConnectorPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:461: DataRow[] adrCouplings1 = Program.dsPipingDCF.Tables["Coupling"].Select("[PnPID]=" + iConnectedPart1);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:462: DataRow[] adrCouplings2 = Program.dsPipingDCF.Tables["Coupling"].Select("[PnPID]=" + iConnectedPart2);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:487: adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part1]=" + iCoupling);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:499: adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part2]=" + iCoupling);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:515: adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part1]=" + iSecondConnector);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:524: adrP3dPartConnections = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("[Part2]=" + iSecondConnector);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:920: List<bool> lbInSelectionParts = new List<bool>(); // список "='Existing'" 2-х соединенных элементов
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:935: lbInSelectionParts.Add(OnLineNumbersAndDrawings(liConnectedParts[i]));
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:938: if ((!lbInSelectionParts[0]) &&
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:939: (!lbInSelectionParts[1]))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:948: adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + liConnectedParts[i]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:972: adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + liConnectedParts[i] + " AND [Status]='New'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:974: adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + liConnectedParts[i]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:988: //DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + liConnectedParts[i]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1041: if (((!lbInSelectionParts[0]) && (lbInSelectionParts[1]) && (!lbExistingParts[1])) ||
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1042: ((!lbInSelectionParts[1]) && (lbInSelectionParts[0]) && (!lbExistingParts[0])))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1046: else if (((!lbInSelectionParts[0]) && (lbExistingParts[1])) ||
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1047: ((!lbInSelectionParts[1]) && (lbExistingParts[0])))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1156: DataRow drEngineeringItem = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1159: DataRow drDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iPnPId)[0];
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1194: int iLineNumberPnPId = Convert.ToInt32(Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[Part]=" + iPnPId)[0]["LineGroup"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1196: int iDrawingPnPId = Convert.ToInt32(Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iPnPId)[0]["DwgId"]);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1211: DataRow[] adrP3dLineGroupPartRelationship = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[Part]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1219: // iNozzle = Program.dsPipingDCF.Tables["Nozzle"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1224: // iEquipment = Program.dsPipingDCF.Tables["Equipment"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1228: if (Program.dsPipingDCF.Tables.Contains("Nozzle"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1229: iNozzle = Program.dsPipingDCF.Tables["Nozzle"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1230: if (Program.dsPipingDCF.Tables.Contains("Equipment"))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1231: iEquipment = Program.dsPipingDCF.Tables["Equipment"].Select("PnPID=" + iComponentPnPId).Count();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1265: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1285: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iComponentPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1340: DataRow[] adrP3dLineGroupPartRelationship = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("[LineGroup]=" + wlnLineNumber.PnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1344: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("[PnPID]=" + iCurrentPnPId + " AND [Status]='New'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1639: if ((!lbInSelectionParts[0]) && (lbInSelectionParts[1]) && (!lbExistingParts[1]))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1653: else if ((!lbInSelectionParts[1]) && (lbInSelectionParts[0]) && (!lbExistingParts[0]))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:1714: DataRow[] adrPnPDataLinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("[RowId]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2052: DataRow[] adrLineNumber = Program.dsPipingDCF.Tables["P3dLineGroup"].Select("[PnPID]=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2110: if ((dThreadControlRatio > 0.0) && (Program.dsPipingDCF.Tables.Contains("Thread")))
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2112: DataRow[] adrThreads = Program.dsPipingDCF.Tables["Thread"].Select();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2116: DataRow[] adrDatalinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("RowId=" + iThread);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2122: adrDatalinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("DwgId=" + iDwgId + " AND DwgHandleLow=" + lDwgHandleLow + " AND RowClassName='P3dConnector'");
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2127: DataRow[] adrConnectedPart1 = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("Part1=" + iConnector);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2128: DataRow[] adrConnectedPart2 = Program.dsPipingDCF.Tables["P3dPartConnection"].Select("Part2=" + iConnector);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2136: adrDatalinks = Program.dsPipingDCF.Tables["PnPDataLinks"].Select("RowId=" + iConnectedPart);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2148: DataRow[] adrEngineeringItems = Program.dsPipingDCF.Tables["EngineeringItems"].Select("PnPID=" + iConnectedPart);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\Welds.cs:2154: DataRow[] adrRelations = Program.dsPipingDCF.Tables["P3dLineGroupPartRelationship"].Select("Part=" + iConnectedPart + " AND LineGroup=" + iPnPId);
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\XLSFile.cs:28: DataTable dtDbSchemaTable = odbcConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); // DataTable для хранения схемы файла Excel
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\XLSFile.cs:48: DataTable dtTempDataTable = dsTempDataSet.Tables[0].Copy();
|
||||||
|
\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo\P_Rec_BOP\XLSFile.cs:50: dsXLSFile.Tables.Add(dtTempDataTable);
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# Карта полей и таблиц
|
||||||
|
|
||||||
|
| Поле/слот | Источник | Преобразование | Word-место | Доказательство |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| Номер проекта | `ProcessPower.dcf` / `PnPProject`, либо форма | передается как string | footer cell 7 first/default | `SetMainTitle.cs:21-24,125-174`; `Worder.cs:812-820` |
|
||||||
|
| Имя документа | константа `Ведомость объемов работ` | без преобразования | first-page footer cell 24 | `ReportWithWorder.cs:1308-1317`; `Worder.cs:821-826` |
|
||||||
|
| Подписи | `SetMainTitle` UI | введенные строки | footer cells 21, 29 и далее | `ReportWithWorder.cs:1311-1315`; `Worder.cs:827-...` |
|
||||||
|
| Позиции ВОР | `PipingElements`/`Materials` | группы, длина в метрах, масса | основная таблица, строки/ячейки 1–5 | `ReportWithWorder.cs:93-190`; `Worder.cs:630-699` |
|
||||||
|
| Сварные стыки | `Welds` и выбранные линии | группировка по линии/контролю | основная таблица | `ReportWithWorder.cs` и `Welds.cs` |
|
||||||
|
| Номер файла | дата-время | `yyyy.MM.dd HH.mm.ss` | имя output | `ReportWithWorder.cs:49-52` |
|
||||||
|
|
||||||
|
Пустые значения обрабатываются не единым валидатором: часть полей пропускается по `IsNullOrEmpty`, а ошибки данных прерывают `Program.Main` до генерации. Жесткая привязка к индексам таблиц/ячеек делает изменение шаблона потенциально разрушительным.
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"auditId": "p-rec-bop-plant3d-2019-document-generation",
|
||||||
|
"sourceRoot": "\\\\phpsrv03\\NBIM\\code\\CS\\P_Rec_BOP\\repo",
|
||||||
|
"sourceHead": null,
|
||||||
|
"findings": [
|
||||||
|
{"id":"DOC-001","category":"DocumentGeneration","severity":"HIGH","title":"Office PIA and hard-coded Word structure","description":"The project embeds Office Word PIA 15 and addresses tables, sections and cells by numeric indexes.","evidence":[{"file":"P_Rec_BOP/P_Rec_BOP.csproj","startLine":90,"endLine":99},{"file":"P_Rec_BOP/Worder.cs","startLine":326,"endLine":345},{"file":"P_Rec_BOP/Worder.cs","startLine":812,"endLine":850}],"impact":"Version, bitness and template changes can prevent startup or corrupt mapping.","recommendation":"Isolate Word worker and replace numeric slots with validated schema identifiers.","reuseClassification":"REIMPLEMENT_WITH_SAME_BEHAVIOR"},
|
||||||
|
{"id":"PLANT-001","category":"PlantData","severity":"HIGH","title":"Plant data is read through project DCF files","description":"Piping.dcf and ProcessPower.dcf are opened directly and queried into DataSets.","evidence":[{"file":"P_Rec_BOP/Program.cs","startLine":191,"endLine":283}],"impact":"DCF schema and file access must be verified for 2026.","recommendation":"Create versioned Plant data adapters and golden data fixtures.","reuseClassification":"USE_AS_REFERENCE_ONLY"},
|
||||||
|
{"id":"INFRA-001","category":"Infrastructure","severity":"HIGH","title":"AutoCAD 2019 and network paths are configured explicitly","description":"Settings contains AutoCAD 2019 accoreconsole and external network resources.","evidence":[{"file":"P_Rec_BOP/Settings.xml","startLine":7,"endLine":24}],"impact":"Missing or changed resources stop or alter generation.","recommendation":"Use validated configuration and a 2026 adapter; do not hard-code production paths.","reuseClassification":"REIMPLEMENT_WITH_SAME_BEHAVIOR"},
|
||||||
|
{"id":"COM-001","category":"WordInterop","severity":"HIGH","title":"COM cleanup is incomplete","description":"The code closes and quits Word but does not explicitly release all COM proxies and catches errors before copying output.","evidence":[{"file":"P_Rec_BOP/Worder.cs","startLine":372,"endLine":380},{"file":"P_Rec_BOP/Worder.cs","startLine":383,"endLine":420},{"file":"P_Rec_BOP/Worder.cs","startLine":508,"endLine":519}],"impact":"WINWORD.EXE leaks and partial output are possible.","recommendation":"Implement one STA job per operation with finally-based cleanup and output validation.","reuseClassification":"DO_NOT_REUSE"}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
# План миграции
|
||||||
|
|
||||||
|
## Этап 1 — повторить поведение (L)
|
||||||
|
|
||||||
|
Зафиксировать входной проект-копию, выбранные чертежи/линии, title block, таблицы и DOCX golden sample. Сравнить значения и структуру, не подключая production.
|
||||||
|
|
||||||
|
## Этап 2 — изолировать Plant 3D (XL)
|
||||||
|
|
||||||
|
Ввести `IPlantProjectDataProvider`; оставить legacy provider для DCF 2019 и сделать отдельный provider для 2026. DTO не должны зависеть от `DataRow` и AutoCAD COM.
|
||||||
|
|
||||||
|
## Этап 3 — перенести документный mapping (L)
|
||||||
|
|
||||||
|
Перенести только подтвержденный контракт: группы материалов, строки ВОР, title block и правила округления. Реализовать именованные slots/таблицы вместо индексов.
|
||||||
|
|
||||||
|
## Этап 4 — Word lifecycle (M)
|
||||||
|
|
||||||
|
Вынести Word в отдельный STA worker, cleanup каждого COM proxy, temporary copy, validation и диагностические ошибки. Сохранить шаблон неизменным.
|
||||||
|
|
||||||
|
## Этап 5 — эквивалентность (L)
|
||||||
|
|
||||||
|
Сравнить DOCX package, значения таблиц, headers/footers, PAGE/NUMPAGES, повторное открытие и отсутствие созданного Word process. PDF считать отдельным тестом: старый исходник экспорт PDF не подтверждает.
|
||||||
|
|
||||||
|
## Этап 6 — Plant 3D 2026 (XL)
|
||||||
|
|
||||||
|
Проверить console helper и DCF schema на копии проекта, затем обновить adapter/SDK. Не смешивать миграцию Plant и переписывание document engine.
|
||||||
|
|
||||||
|
### Runtime tests
|
||||||
|
|
||||||
|
Минимум: отсутствующие/открытые DWG; SQLite и SQL DCF; пустой проект; компоненты без line group; несколько материалов; пользовательская деталь; измененный шаблон; отсутствующий сетевой файл; Office отсутствует; Word COM cleanup; повторное открытие DOCX; сохранение исходного шаблона.
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# Plant 3D → расчеты → отчет
|
||||||
|
|
||||||
|
Основной источник — проектные DCF. `Program.cs:197-210` определяет SQLite/старый SQL формат и читает `Piping.dcf`; `Program.cs:270-283` аналогично читает `ProcessPower.dcf`. Минимальная проверка требует `EngineeringItems` (`Program.cs:216-221`) и связи `P3dLineGroupPartRelationship` (`Program.cs:225-261`).
|
||||||
|
|
||||||
|
По исходникам `PipingElements.cs`, `Welds.cs` и `DrawingsAndLinenumbers.cs` используются таблицы/области `EngineeringItems`, `P3dLineGroupPartRelationship`, `P3dLineGroup`, `Pipe`, `PipeBend`, `Nozzle`, `Equipment`, `PartPort`, `Port`, `PnPDataLinks`, `PnPDrawings`, `P3dDrawingLineGroupRelationship` и связанные поля. Это извлечение через DataSet/DataRow, а не через Plant 3D managed API.
|
||||||
|
|
||||||
|
Свойства проекта берутся из `ProcessPower.dcf`, таблица `PnPProject`; `SetMainTitle.cs:21-24`, `125-174` связывает их с номером проекта, предприятием, установкой и названием проекта. Пользовательские подписи вводятся в `SetMainTitle` и передаются в title block (`ReportWithWorder.cs:1306-1317`).
|
||||||
|
|
||||||
|
`DrawingsInformation.cs:37-158` создает временные CSV/скрипт, копирует `ConsoleGetDrawingInformation.dll`, обращается к `accoreconsole.exe`, читает результаты и удаляет временные файлы. В `DrawingsInformation.cs:132` есть комментарий о пути AutoCAD 2019. Эта ветка требует отдельного adapter и теста в 2026.
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# Повторное использование в DocumentAutomation
|
||||||
|
|
||||||
|
| Компонент | Классификация | Решение |
|
||||||
|
|---|---|---|
|
||||||
|
| DTO title block и строки таблицы | REUSE_AFTER_ISOLATION | сделать чистые record-модели |
|
||||||
|
| группировка материалов/элементов | REIMPLEMENT_WITH_SAME_BEHAVIOR | покрыть golden tests, не переносить DataRow-зависимости |
|
||||||
|
| DCF/Plant чтение | USE_AS_REFERENCE_ONLY | отдельный Plant 2019/2026 adapter |
|
||||||
|
| жесткое заполнение `Tables[1]`/`Cells[n]` | REIMPLEMENT_WITH_SAME_BEHAVIOR | schema/slot IDs, диагностика отсутствующих слотов |
|
||||||
|
| копирование шаблона и временный output | REUSE_AFTER_ISOLATION | безопасный atomic output и cleanup |
|
||||||
|
| Word COM cleanup | DO_NOT_REUSE | переписать с STA worker, try/finally и release proxy |
|
||||||
|
| SautinSoft fallback | USE_AS_REFERENCE_ONLY | отдельно подтвердить лицензию и round-trip |
|
||||||
|
| обновление полей | REUSE_AFTER_ISOLATION | адаптер Word/Open XML и тест headers/footers |
|
||||||
|
|
||||||
|
DocumentAutomation уже имеет смысл использовать как единый document engine, но контракт P_Rec_BOP сначала нужно зафиксировать на golden sample. Существующий P_Rec_BOP-код не переносить автоматически.
|
||||||
|
|
||||||
|
## Required DocumentAutomation Skills
|
||||||
|
|
||||||
|
1. Legacy DOCX template inventory и безопасная копия шаблона — источник `Worder.Load`, приоритет P0.
|
||||||
|
2. Table-slot mapping/clone-row — `Worder.AddNewRowToTable`, P0.
|
||||||
|
3. Header/footer field update — `Worder.UpdateAllFields` и `WriteOutTitleBlock`, P1.
|
||||||
|
4. Plant DTO → document slots — `ReportWithWorder`, `SetMainTitle`, P0.
|
||||||
|
5. Word COM STA lifecycle/cleanup — `Worder.Load/SaveAndUnload`, P0.
|
||||||
|
6. PDF export и deterministic filename — в старом коде PDF не найден, требуется отдельный контракт, P2.
|
||||||
|
7. Plant project data adapter — `Program`, `PipingElements`, `Welds`, P0.
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# Риски
|
||||||
|
|
||||||
|
* **CRITICAL** — Office PIA 15 с абсолютным HintPath и COM proxy без гарантированного release; результат зависит от Office installation и может оставлять WINWORD.EXE (`P_Rec_BOP.csproj`, `Worder.cs:326-355,383-420`).
|
||||||
|
* **HIGH** — жёсткие индексы `Tables[1]`, `Sections[1]`, footer tables и ячеек; любое изменение шаблона ломает mapping (`Worder.cs:331-337,812-...`).
|
||||||
|
* **HIGH** — x86/.NET Framework 4.7 и x32 SQLite; переход на .NET 8 требует отдельного процесса/Windows compatibility и native dependency review.
|
||||||
|
* **HIGH** — жесткий путь `accoreconsole.exe` AutoCAD 2019 и внешний console DLL (`Settings.xml:7`, `DrawingsInformation.cs:132`).
|
||||||
|
* **HIGH** — сетевые и производственные зависимости в Settings: XLS, PSPC, НКР Settings.xml; отсутствие ресурса меняет результат.
|
||||||
|
* **MEDIUM** — исключения часто показываются пользователю, но не превращаются в структурированный результат; после ошибки возможен неполный output (`Worder.cs:372-380,508-519`).
|
||||||
|
* **MEDIUM** — `Process.Start` открывает результат без отдельной верификации DOCX; PDF export в коде не найден.
|
||||||
|
|
||||||
|
Секреты в опубликованных отчетах не копировались; значения конфигурации с потенциально внутренними путями не повторяются сверх необходимого.
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
# Инвентаризация исходника
|
||||||
|
|
||||||
|
Источник: `\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo` (только чтение). Git-метаданные в каталоге отсутствуют (`evidence/source-git.txt`: `NO_GIT_DIRECTORY`), поэтому source HEAD/branch/commit не определены.
|
||||||
|
|
||||||
|
Инвентаризация содержит 29 C# файлов, один solution, один project, один DOCX-шаблон, 9 DLL, 3 RESX, 2 PNG и конфигурационные/текстовые файлы. Полный относительный список, размеры, даты и SHA-256: `evidence/file-inventory.csv`, `evidence/hashes.csv`.
|
||||||
|
|
||||||
|
Основные исходники:
|
||||||
|
|
||||||
|
| Область | Файлы | Роль |
|
||||||
|
|---|---|---|
|
||||||
|
| Вход и UI | `P_Rec_BOP/Program.cs`, `SetMainTitle.cs`, `SelectDrawingsAndLinenumbers.cs` | проект, проверки, формы ввода и выбора |
|
||||||
|
| Plant/data | `PipingElements.cs`, `Welds.cs`, `DrawingsAndLinenumbers.cs`, `DrawingsInformation.cs`, `SQLDataBase.cs`, `SQLiteDataBase.cs` | чтение DCF, расчеты, извлечение сведений о DWG |
|
||||||
|
| Документ | `ReportWithWorder.cs`, `Worder.cs`, `Versions.cs` | заполнение таблицы, колонтитулов, сохранение |
|
||||||
|
| Настройки | `XMLFile.cs`, `Settings.xml`, `Glob.cs` | пути, фильтры, материалы, имя результата |
|
||||||
|
| Внешние зависимости | `lib/SautinSoft.Document.dll`, `lib/x32/System.Data.SQLite.dll`, Office PIA, `ConsoleGetDrawingInformation.dll` | Word/RTF, SQLite, AutoCAD console helper |
|
||||||
|
|
||||||
|
Проект — legacy MSBuild, `.NET Framework 4.7`, `OutputType=Exe`, `x86`, AssemblyName `P_Rec_BOP`; ссылка на Word PIA с `EmbedInteropTypes=True` и абсолютным HintPath. Фактический проектный файл: `P_Rec_BOP/P_Rec_BOP.csproj:1-177`.
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# Анализ шаблона
|
||||||
|
|
||||||
|
Найден один DOCX: `templates\Шаблон.docx`; его размер и SHA-256 — `evidence/template-files.csv`. Содержимое шаблона в Git не добавлялось. Агрегированные сведения Open XML — `evidence/template-structure.txt`.
|
||||||
|
|
||||||
|
По коду шаблон должен содержать основную таблицу `Tables[1]` и таблицы в first-page/default footer. Адресация не использует bookmarks или Content Controls: `Worder.cs:331-337`, `ReportWithWorder.cs:1306-1317`, `Worder.cs:812-...` обращаются к таблицам и ячейкам по номерам. Для title block используются ячейки 7, 24, 21, 29 и последующие фиксированные ячейки (`Worder.cs:812-...`).
|
||||||
|
|
||||||
|
Шаблон не изменяется напрямую: перед работой копируется во временный файл (`Worder.cs:318-322`), однако подготовка результата заранее удаляет/перемещает существующий output (`Worder.cs:273-301`). Точная карта визуальных полей требует отдельного безопасного просмотра копии на машине с Word; статический аудит не запускает Word и не извлекает проектные данные.
|
||||||
|
|
||||||
|
Риск структуры: жесткие `Tables[1]`, `Sections[1]`, `Headers/Footers`, `Cells[n]` и зависимость от наличия конкретной строки-образца. Это не переносимый контракт `.dtemplate`; перед повторным использованием нужен golden template и schema-based mapping.
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# Functional inventory: Plant 3D plugin purpose
|
||||||
|
|
||||||
|
Date: 2026-07-30. Read-only source: C:\dev\autodesk\link. No EXE/DLL/ARX/DBX/LISP/PowerShell/BAT was run; no build/restore/SQL/runtime was performed.
|
||||||
|
|
||||||
|
Unique normalized families: 43. Project/module rows: 229. Raw candidate P_/P3D directories: 138.
|
||||||
|
|
||||||
|
P_Rec_Annot is a confirmed Ortho annotation/DataLinks/PnP family and is classified KEEP_REDESIGN. P_Rec_Spec contains spec/catalog helpers and SQLite-oriented programs and is classified KEEP_REDESIGN. Bolt/update families are BUG_WORKAROUND_RETEST, not deletions. Report families may overlap Data Manager/Report Creator, but field parity is not proven. Revit/Hydra/Insul integrations remain research/review items.
|
||||||
|
|
||||||
|
Status counts:
|
||||||
|
- BUG_WORKAROUND_RETEST: 5
|
||||||
|
- KEEP_REDESIGN: 27
|
||||||
|
- OFFICIAL_RESEARCH_REQUIRED: 5
|
||||||
|
- REVIEW_USAGE: 8
|
||||||
|
- UNKNOWN: 14
|
||||||
|
|
||||||
|
All classifications are static and do not approve deletion. See official-sources.md, evidence, retirement-candidates.md, migration-candidates.md, runtime-tests-required.md and unknowns.md.
|
||||||
@@ -0,0 +1,130 @@
|
|||||||
|
"family","path","version_signal","selection","duplicate_or_history"
|
||||||
|
"P_Check_CompP3D","_v2.5\Applications\P_Check_CompP3D","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Check_CompP3D","_v2.5\P_Check_CompP3D","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Check_CompP3D","_v2.5\P_Check_CompP3D\P_Check_CompP3D","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Check_Pipe","_v2.5\Applications\P_Check_Pipe","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Check_Pipe","_v2.5\P_Check_Pipe","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Check_Pipe","_v2.5\P_Check_Pipe\P_Check_Pipe","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Check_Project","_v2.5\Applications\P_Check_Project","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Check_Project","_v2.5\P_Check_Project","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Check_Project","_v2.5\P_Check_Project\P_Check_Project","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Exp_EquipToRevit","P_Exp_EquipToRevit","none","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Exp_To5DSmeta","P_Exp_To5DSmeta","none","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Exp_ToHydra","_v2.5\Applications\P_Exp_ToHydra","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Exp_ToHydra","_v2.5\P_Exp_ToHydra","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Exp_ToHydra","_v2.5\P_Exp_ToHydra\P_Exp_ToHydra","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Exp_ToInsul","_v2.5\P_Exp_ToInsul","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Exp_ToInsul","_v2.5\P_Exp_ToInsul\info\prev\P_Exp_ToInsul","v2","latest probable version not runtime validated","possible"
|
||||||
|
"P_Exp_ToInsul","_v2.5\P_Exp_ToInsul\repo\P_Exp_ToInsul","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Exp_ToRevit_MS","_v2.5\Applications\P_Exp_ToRevit_MS","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Exp_ToRevit_MS","_v2.5\P_Exp_ToRevit_MS","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Exp_ToRevit_MS","_v2.5\P_Exp_ToRevit_MS\P_Exp_ToRevit_MS","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Exp_ToRevit_MS","P_Exp_ToRevit_MS","none","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Exp_ToRevit_MS","P_Exp_ToRevit_MS\P_Exp_ToRevit_MS v.2.0.0.0","none","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Exp_ToRevit_MS","P_Exp_ToRevit_MS\P_Exp_ToRevit_MS v.2.0.0.0\P_Exp_ToRevit_MS","none","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Exp_ToStart","_v2.5\P_Exp_ToStart","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Exp_ToStart","_v2.5\P_Exp_ToStart\P_Exp_ToStart","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Imp_FromPTH","_v2.5\Applications\P_Imp_FromPTH","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Imp_FromPTH","_v2.5\P_Imp_FromPTH","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Imp_FromPTH","_v2.5\P_Imp_FromPTH\P_Imp_FromPTH","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Rec_Annot","_v2.5\Applications\P_Rec_Annot","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Rec_Annot","_v2.5\P_Rec_Annot","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Rec_Annot","P_Rec_Annot","none","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Rec_Annot","P_Rec_Annot\v1.0.2.6\P_Rec_Annot v1.0.2","v1","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Rec_Annot","P_Rec_Annot\v1.0.2\release\P_Rec_Annot v1.0.2","v1","latest probable version not runtime validated","possible"
|
||||||
|
"P_Rec_Annot","P_Rec_Annot\v1.0.4\release\P_Rec_Annot v1.0.4.2","v1","latest probable version not runtime validated","possible"
|
||||||
|
"P_Rec_BOP","_v2.5\P_Rec_BOP (old)","v2","latest probable version not runtime validated","possible"
|
||||||
|
"P_Rec_BOP","_v2.5\P_Rec_BOP (old)\P_Rec_BOP","v2","latest probable version not runtime validated","possible"
|
||||||
|
"P_Rec_BOP","P_Rec_BOP","none","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Rec_BOP","P_Rec_BOP\repo\P_Rec_BOP","repo","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Rec_Brac","_v2.5\Applications\P_Rec_Brac","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Rec_Brac","_v2.5\P_Rec_Brac","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Rec_Brac","_v2.5\P_Rec_Brac\P_Rec_Brac","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Rec_Color","_v2.5\P_Rec_Color","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Rec_PipelineList","P_Rec_PipelineList","none","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Rec_Print","_v2.5\Applications\P_Rec_Print","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Rec_Print","_v2.5\P_Rec_Print","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Rec_Print","_v2.5\P_Rec_Print\P_Rec_Print","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Rec_Spec","_v2.5\P_Rec_Spec","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Rec_TextDoc","_v2.5\P_Rec_TextDoc","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Rec_TextDoc","_v2.5\P_Rec_TextDoc\P_Rec_TextDoc","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Rec_Update","_v2.1\P_Rec_Update","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Rec_Update","_v2.1\P_Rec_Update\P_Rec_Update","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Rec_Update","P_Rec_Update","none","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Rec_Update","P_Rec_Update\P_Rec_Update","none","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Serv_ActualizeProjectBySpec","_v3.0\P_Serv_ActualizeProjectBySpec","v3","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Serv_ActualizeProjectBySpec","_v3.0\P_Serv_ActualizeProjectBySpec\releases\P_Serv_ActualizeProjectBySpec v.0.100.0","v3","latest probable version not runtime validated","possible"
|
||||||
|
"P_Serv_ActualizeProjectBySpec","_v3.0\P_Serv_ActualizeProjectBySpec\repo\P_Serv_ActualizeProjectBySpec","v3","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Serv_CompP3D","_v2.5\Applications\P_Serv_CompP3D","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Serv_CompP3D","_v2.5\P_Serv_CompP3D","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Serv_CompP3D","_v2.5\P_Serv_CompP3D\P_Serv_CompP3D","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Serv_CreateLineGroupAnnotationText","P_Serv_CreateLineGroupAnnotationText","none","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Serv_CreateLineGroupAnnotationText","P_Serv_CreateLineGroupAnnotationText\P_Serv_CreateLineGroupAnnotationText","none","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Serv_CreateLineGroupAnnotationText","P_Serv_CreateLineGroupAnnotationText\P_Serv_CreateLineGroupAnnotationText\P_Serv_CreateLineGroupAnnotationText","none","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Serv_Master","_v2.5\P_Serv_Master","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Serv_Master","_v2.5\P_Serv_Master\P_Serv_Master","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Serv_OpenProject","P_Serv_OpenProject","none","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Serv_Starter","P_Serv_Starter","none","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Serv_UpdateLinearWeight","_v3.0\P_Serv_UpdateLinearWeight","v3","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Serv_UpdateLinearWeight","_v3.0\P_Serv_UpdateLinearWeight\releases\P_Serv_UpdateLinearWeight v.0.100.0","v3","latest probable version not runtime validated","possible"
|
||||||
|
"P_Serv_UpdateLinearWeight","_v3.0\P_Serv_UpdateLinearWeight\repo\P_Serv_UpdateLinearWeight","v3","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Serv_UpSpecs","_v2.5\P_Serv_UpSpecs","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Serv_UpSpecs","_v2.5\P_Serv_UpSpecs\P_Serv_UpSpecs","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Task_MO07","_v2.5\Applications\P_Task_MO07","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Task_MO07","_v2.5\P_Task_MO07","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P_Task_MO07","_v2.5\P_Task_MO07\P_Task_MO07","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DCheckProject","_v2.0\P3DCheckProject","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DCheckProject","_v2.0\P3DCheckProject\P3DCheckProject","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DCheckProject","_v2.0\P3DCheckProject\P3DCheckProject\P3DCheckProject","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DCommands","_v2.0\P3DCommands","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DCommands","_v2.0\P3DCommands\P3DCommands","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DCommands","_v2.0\P3DCommands\P3DCommands\P3DCommands","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DCommands","_v2.5\Applications\P3DCommands v.0.0.1","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DCommands","_v2.5\P3DCommands","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DCommands","_v2.5\P3DCommands\P3DCommands","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DCommands","_v2.5\P3DCommands\P3DCommands\P3DCommands","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DCorrectBoltsetLengths","P3DCorrectBoltsetLengths","none","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DCorrectBoltsetLengths","P3DCorrectBoltsetLengths\old\P3DCorrectBoltsetLengths","old","latest probable version not runtime validated","possible"
|
||||||
|
"P3DCorrectBoltsetLengths","P3DCorrectBoltsetLengths\repo\P3DCorrectBoltsetLengths","repo","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DCreateIsoBOM","_v2.5\Applications\P3DCreateIsoBOM v.0.0.4","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DDeleteNewLineInValues","_v2.0\P3DDeleteNewLineInValues","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DDeleteNewLineInValues","_v2.0\P3DDeleteNewLineInValues\P3DDeleteNewLineInValues","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DDeleteNewLineInValues","_v2.0\P3DDeleteNewLineInValues\P3DDeleteNewLineInValues\P3DDeleteNewLineInValues","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DDeleteNewLineInValues","_v2.5\P3DDeleteNewLineInValues","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DDeleteNewLineInValues","_v2.5\P3DDeleteNewLineInValues\P3DDeleteNewLineInValues","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DEnumerateSupports","_v2.0\P3DEnumerateSupports","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DEnumerateSupports","_v2.0\P3DEnumerateSupports\P3DEnumerateSupports","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DEnumerateSupports","_v2.0\P3DEnumerateSupports\P3DEnumerateSupports\P3DEnumerateSupports","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DGetBoltsetReport","P3DGetBoltsetReport","Repo","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DGetBoltsetReport","P3DGetBoltsetReport\P3DGetBoltsetReport","Repo","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DGetPnPId","_v2.0\P3DGetPnPId","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DGetPnPId","_v2.0\P3DGetPnPId\P3DGetPnPId","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DGetPnPId","_v2.0\P3DGetPnPId\P3DGetPnPId\P3DGetPnPId","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DGetReportNew","_v2.0\Отчет элементов по линиям\P3DGetReportNew","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DGetReportNew","_v2.0\Отчет элементов по линиям\P3DGetReportNew\P3DGetReportNew","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DGetReportNew","_v2.5\Отчет элементов по линиям\P3DGetReportNew","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DGetReportNew","_v2.5\Отчет элементов по линиям\P3DGetReportNew\P3DGetReportNew","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DPlotToPdfIsoMasterfile","_v2.0\P3DPlotToPdfIsoMasterfile","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DPlotToPdfIsoMasterfile","_v2.0\P3DPlotToPdfIsoMasterfile\P3DPlotToPdfIsoMasterfile","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DPlotToPdfIsoMasterfile","_v2.0\P3DPlotToPdfIsoMasterfile\P3DPlotToPdfIsoMasterfile\P3DPlotToPdfIsoMasterfile","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DSelectComponents","_v2.0\P3DSelectComponents","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DSelectComponents","_v2.0\P3DSelectComponents\P3DSelectComponents","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DSelectComponents","_v2.0\P3DSelectComponents\P3DSelectComponents\P3DSelectComponents","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DSetLayerForViewport","_v2.0\OrthoTools.2019\P3DSetLayerForViewport","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DSetLayerForViewport","_v2.0\OrthoTools.2019\P3DSetLayerForViewport\P3DSetLayerForViewport","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DUpdateFixedPipeLengths","_v2.0\P3DUpdateFixedPipeLengths","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DUpdateFixedPipeLengths","_v2.5\Applications\P3DUpdateFixedPipeLengths v.0.0.4","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DUpdateFixedPipeLengths","_v2.5\P3DUpdateFixedPipeLengths","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DUpdateFixedPipeLengths","_v2.5\P3DUpdateFixedPipeLengths\P3DUpdateFixedPipeLengths","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DUpdateFlanges","_v2.0\P3DUpdateFlanges","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DUpdateFlanges","_v2.0\P3DUpdateFlanges\P3DUpdateFlanges","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DUpdateFlanges","_v2.5\Applications\P3DUpdateFlanges v.0.0.8","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DUpdateFlanges","_v2.5\P3DUpdateFlanges","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DUpdateFlanges","_v2.5\P3DUpdateFlanges\_prev v.0.0.8\P3DUpdateFlanges","v2","latest probable version not runtime validated","possible"
|
||||||
|
"P3DUpdateFlanges","_v2.5\P3DUpdateFlanges\releases\P3DUpdateFlanges v.0.0.11","v2","latest probable version not runtime validated","possible"
|
||||||
|
"P3DUpdateFlanges","_v2.5\P3DUpdateFlanges\repo\P3DUpdateFlanges","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DUpdateValves","_v2.0\P3DUpdateValves","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DUpdateValves","_v2.0\P3DUpdateValves\P3DUpdateValves","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DUpdateValves","_v2.5\Applications\P3DUpdateValves v.0.0.3","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DUpdateValves","_v2.5\P3DUpdateValves","v2","latest probable version not runtime validated","unknown"
|
||||||
|
"P3DUpdateValves","_v2.5\P3DUpdateValves\P3DUpdateValves","v2","latest probable version not runtime validated","unknown"
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
|||||||
|
Generated 2026-07-30T11:10:31
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
|
|
@@ -0,0 +1,7 @@
|
|||||||
|
# Migration candidates
|
||||||
|
|
||||||
|
Highest priority redesign/port: P_Rec_Annot, P_Rec_Update, P_Serv_ActualizeProjectBySpec, P_Serv_UpdateLinearWeight, P_Serv_CompP3D, P_Rec_Spec and P_Imp_FromPTH.
|
||||||
|
|
||||||
|
Targeted port/retest: P3DCorrectBoltsetLengths, P3DUpdateFixedPipeLengths, P3DUpdateFlanges, P3DUpdateValves, P3DDeleteNewLineInValues, P3DCommands and P3DEnumerateSupports.
|
||||||
|
|
||||||
|
Architecture review: P_Exp_EquipToRevit, P_Exp_ToRevit_MS, P_Exp_ToHydra, P_Exp_ToInsul and P_Exp_To5DSmeta.
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# Official research required
|
||||||
|
|
||||||
|
Official sources confirm Ortho generation/update, annotation styles, Spec/Catalog Editor, calculated properties, bolt length mapping and Data Manager/Report Creator. They do not establish one-to-one replacements for corporate Hydra/Insul/Revit schemas, direct PnP/SQLite repair tools or every batch operation.
|
||||||
|
|
||||||
|
Verify API compatibility of each referenced PnP/Ortho assembly, supported bolt repair automation, exact export schemas and supported batch annotation APIs.
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# Official Autodesk sources used
|
||||||
|
|
||||||
|
- https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-WhatsNew/files/GUID-384C71E7-9012-48B1-95B2-D4C42EBCF423.htm (What's New 2026/2026.1)
|
||||||
|
- https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-WhatsNew/files/GUID-1D0F9938-E23A-4870-A4AB-E544701D20CB.htm (Spec Editor redesign)
|
||||||
|
- https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-ReleaseNotes/files/AUTOCAD_PLNT3D_2026_RELEASE_NOTES.html (release notes)
|
||||||
|
- https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-UserGuide/files/GUID-EEDF2AA7-B50B-484B-B47F-B48986A51C3D.htm (update multiple Ortho drawings)
|
||||||
|
- https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-UserGuide/files/GUID-DAD70DC1-32F2-45E4-8685-0C574EF31299.htm (Ortho annotations)
|
||||||
|
- https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-UserGuide/files/GUID-6D5E3975-53AA-4495-B727-BBB2B599B464.htm (annotation format/project setup)
|
||||||
|
- https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-UserGuide/files/GUID-E0A54B13-5318-418B-B274-4D02673EC2ED.htm (calculated properties)
|
||||||
|
- https://help.autodesk.com/view/PLNT3D/2026/ENU/?guid=GUID-6EF131FA-E852-4B8C-A21E-E2B2ED1016AC (Data Manager/Report Creator)
|
||||||
|
- https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-UserGuide/files/GUID-7C60418E-3A86-47E0-ABED-1E5BB2F5C48A.htm (bolt length mapping)
|
||||||
|
- https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-UserGuide/files/GUID-B82D8701-7101-428E-A475-7B093A36DF01.htm (piping connections/fasteners)
|
||||||
|
- https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-SpecEditor/files/GUID-0B871505-A498-42C0-AAA7-B83A244CE5C4.htm (spec creation)
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# Plugin dependency graph
|
||||||
|
|
||||||
|
Plant 3D/AutoCAD host -> custom loader or NETLOAD/APPLOAD workflow (runtime not confirmed) -> P_Rec_Annot Ortho modules -> Plant DataLinks/PnPDatabase/ProjectManager/Ortho assemblies. P_Rec_Update/P_Serv/P_Rec_Spec -> Plant managed API and/or SQLite/CSV/XML/Excel. P3D bolt/update/report families -> Plant PnP/spec/catalog/report data. P_Exp_* -> Revit/Navisworks/corporate outputs.
|
||||||
|
|
||||||
|
Edges are static from project references and source markers; no DLL was loaded.
|
||||||
@@ -0,0 +1,130 @@
|
|||||||
|
"family","path","is_root_candidate"
|
||||||
|
"P_Check_CompP3D","_v2.5\Applications\P_Check_CompP3D","yes"
|
||||||
|
"P_Check_CompP3D","_v2.5\P_Check_CompP3D","yes"
|
||||||
|
"P_Check_CompP3D","_v2.5\P_Check_CompP3D\P_Check_CompP3D","yes"
|
||||||
|
"P_Check_Pipe","_v2.5\Applications\P_Check_Pipe","yes"
|
||||||
|
"P_Check_Pipe","_v2.5\P_Check_Pipe","yes"
|
||||||
|
"P_Check_Pipe","_v2.5\P_Check_Pipe\P_Check_Pipe","yes"
|
||||||
|
"P_Check_Project","_v2.5\Applications\P_Check_Project","yes"
|
||||||
|
"P_Check_Project","_v2.5\P_Check_Project","yes"
|
||||||
|
"P_Check_Project","_v2.5\P_Check_Project\P_Check_Project","yes"
|
||||||
|
"P_Exp_EquipToRevit","P_Exp_EquipToRevit","yes"
|
||||||
|
"P_Exp_To5DSmeta","P_Exp_To5DSmeta","yes"
|
||||||
|
"P_Exp_ToHydra","_v2.5\Applications\P_Exp_ToHydra","yes"
|
||||||
|
"P_Exp_ToHydra","_v2.5\P_Exp_ToHydra","yes"
|
||||||
|
"P_Exp_ToHydra","_v2.5\P_Exp_ToHydra\P_Exp_ToHydra","yes"
|
||||||
|
"P_Exp_ToInsul","_v2.5\P_Exp_ToInsul","yes"
|
||||||
|
"P_Exp_ToInsul","_v2.5\P_Exp_ToInsul\info\prev\P_Exp_ToInsul","yes"
|
||||||
|
"P_Exp_ToInsul","_v2.5\P_Exp_ToInsul\repo\P_Exp_ToInsul","yes"
|
||||||
|
"P_Exp_ToRevit_MS","_v2.5\Applications\P_Exp_ToRevit_MS","yes"
|
||||||
|
"P_Exp_ToRevit_MS","_v2.5\P_Exp_ToRevit_MS","yes"
|
||||||
|
"P_Exp_ToRevit_MS","_v2.5\P_Exp_ToRevit_MS\P_Exp_ToRevit_MS","yes"
|
||||||
|
"P_Exp_ToRevit_MS","P_Exp_ToRevit_MS","yes"
|
||||||
|
"P_Exp_ToRevit_MS","P_Exp_ToRevit_MS\P_Exp_ToRevit_MS v.2.0.0.0","yes"
|
||||||
|
"P_Exp_ToRevit_MS","P_Exp_ToRevit_MS\P_Exp_ToRevit_MS v.2.0.0.0\P_Exp_ToRevit_MS","yes"
|
||||||
|
"P_Exp_ToStart","_v2.5\P_Exp_ToStart","yes"
|
||||||
|
"P_Exp_ToStart","_v2.5\P_Exp_ToStart\P_Exp_ToStart","yes"
|
||||||
|
"P_Imp_FromPTH","_v2.5\Applications\P_Imp_FromPTH","yes"
|
||||||
|
"P_Imp_FromPTH","_v2.5\P_Imp_FromPTH","yes"
|
||||||
|
"P_Imp_FromPTH","_v2.5\P_Imp_FromPTH\P_Imp_FromPTH","yes"
|
||||||
|
"P_Rec_Annot","_v2.5\Applications\P_Rec_Annot","yes"
|
||||||
|
"P_Rec_Annot","_v2.5\P_Rec_Annot","yes"
|
||||||
|
"P_Rec_Annot","P_Rec_Annot","yes"
|
||||||
|
"P_Rec_Annot","P_Rec_Annot\v1.0.2.6\P_Rec_Annot v1.0.2","yes"
|
||||||
|
"P_Rec_Annot","P_Rec_Annot\v1.0.2\release\P_Rec_Annot v1.0.2","yes"
|
||||||
|
"P_Rec_Annot","P_Rec_Annot\v1.0.4\release\P_Rec_Annot v1.0.4.2","yes"
|
||||||
|
"P_Rec_BOP","_v2.5\P_Rec_BOP (old)","yes"
|
||||||
|
"P_Rec_BOP","_v2.5\P_Rec_BOP (old)\P_Rec_BOP","yes"
|
||||||
|
"P_Rec_BOP","P_Rec_BOP","yes"
|
||||||
|
"P_Rec_BOP","P_Rec_BOP\repo\P_Rec_BOP","yes"
|
||||||
|
"P_Rec_Brac","_v2.5\Applications\P_Rec_Brac","yes"
|
||||||
|
"P_Rec_Brac","_v2.5\P_Rec_Brac","yes"
|
||||||
|
"P_Rec_Brac","_v2.5\P_Rec_Brac\P_Rec_Brac","yes"
|
||||||
|
"P_Rec_Color","_v2.5\P_Rec_Color","yes"
|
||||||
|
"P_Rec_PipelineList","P_Rec_PipelineList","yes"
|
||||||
|
"P_Rec_Print","_v2.5\Applications\P_Rec_Print","yes"
|
||||||
|
"P_Rec_Print","_v2.5\P_Rec_Print","yes"
|
||||||
|
"P_Rec_Print","_v2.5\P_Rec_Print\P_Rec_Print","yes"
|
||||||
|
"P_Rec_Spec","_v2.5\P_Rec_Spec","yes"
|
||||||
|
"P_Rec_TextDoc","_v2.5\P_Rec_TextDoc","yes"
|
||||||
|
"P_Rec_TextDoc","_v2.5\P_Rec_TextDoc\P_Rec_TextDoc","yes"
|
||||||
|
"P_Rec_Update","_v2.1\P_Rec_Update","yes"
|
||||||
|
"P_Rec_Update","_v2.1\P_Rec_Update\P_Rec_Update","yes"
|
||||||
|
"P_Rec_Update","P_Rec_Update","yes"
|
||||||
|
"P_Rec_Update","P_Rec_Update\P_Rec_Update","yes"
|
||||||
|
"P_Serv_ActualizeProjectBySpec","_v3.0\P_Serv_ActualizeProjectBySpec","yes"
|
||||||
|
"P_Serv_ActualizeProjectBySpec","_v3.0\P_Serv_ActualizeProjectBySpec\releases\P_Serv_ActualizeProjectBySpec v.0.100.0","yes"
|
||||||
|
"P_Serv_ActualizeProjectBySpec","_v3.0\P_Serv_ActualizeProjectBySpec\repo\P_Serv_ActualizeProjectBySpec","yes"
|
||||||
|
"P_Serv_CompP3D","_v2.5\Applications\P_Serv_CompP3D","yes"
|
||||||
|
"P_Serv_CompP3D","_v2.5\P_Serv_CompP3D","yes"
|
||||||
|
"P_Serv_CompP3D","_v2.5\P_Serv_CompP3D\P_Serv_CompP3D","yes"
|
||||||
|
"P_Serv_CreateLineGroupAnnotationText","P_Serv_CreateLineGroupAnnotationText","yes"
|
||||||
|
"P_Serv_CreateLineGroupAnnotationText","P_Serv_CreateLineGroupAnnotationText\P_Serv_CreateLineGroupAnnotationText","yes"
|
||||||
|
"P_Serv_CreateLineGroupAnnotationText","P_Serv_CreateLineGroupAnnotationText\P_Serv_CreateLineGroupAnnotationText\P_Serv_CreateLineGroupAnnotationText","yes"
|
||||||
|
"P_Serv_Master","_v2.5\P_Serv_Master","yes"
|
||||||
|
"P_Serv_Master","_v2.5\P_Serv_Master\P_Serv_Master","yes"
|
||||||
|
"P_Serv_OpenProject","P_Serv_OpenProject","yes"
|
||||||
|
"P_Serv_Starter","P_Serv_Starter","yes"
|
||||||
|
"P_Serv_UpdateLinearWeight","_v3.0\P_Serv_UpdateLinearWeight","yes"
|
||||||
|
"P_Serv_UpdateLinearWeight","_v3.0\P_Serv_UpdateLinearWeight\releases\P_Serv_UpdateLinearWeight v.0.100.0","yes"
|
||||||
|
"P_Serv_UpdateLinearWeight","_v3.0\P_Serv_UpdateLinearWeight\repo\P_Serv_UpdateLinearWeight","yes"
|
||||||
|
"P_Serv_UpSpecs","_v2.5\P_Serv_UpSpecs","yes"
|
||||||
|
"P_Serv_UpSpecs","_v2.5\P_Serv_UpSpecs\P_Serv_UpSpecs","yes"
|
||||||
|
"P_Task_MO07","_v2.5\Applications\P_Task_MO07","yes"
|
||||||
|
"P_Task_MO07","_v2.5\P_Task_MO07","yes"
|
||||||
|
"P_Task_MO07","_v2.5\P_Task_MO07\P_Task_MO07","yes"
|
||||||
|
"P3DCheckProject","_v2.0\P3DCheckProject","yes"
|
||||||
|
"P3DCheckProject","_v2.0\P3DCheckProject\P3DCheckProject","yes"
|
||||||
|
"P3DCheckProject","_v2.0\P3DCheckProject\P3DCheckProject\P3DCheckProject","yes"
|
||||||
|
"P3DCommands","_v2.0\P3DCommands","yes"
|
||||||
|
"P3DCommands","_v2.0\P3DCommands\P3DCommands","yes"
|
||||||
|
"P3DCommands","_v2.0\P3DCommands\P3DCommands\P3DCommands","yes"
|
||||||
|
"P3DCommands","_v2.5\Applications\P3DCommands v.0.0.1","yes"
|
||||||
|
"P3DCommands","_v2.5\P3DCommands","yes"
|
||||||
|
"P3DCommands","_v2.5\P3DCommands\P3DCommands","yes"
|
||||||
|
"P3DCommands","_v2.5\P3DCommands\P3DCommands\P3DCommands","yes"
|
||||||
|
"P3DCorrectBoltsetLengths","P3DCorrectBoltsetLengths","yes"
|
||||||
|
"P3DCorrectBoltsetLengths","P3DCorrectBoltsetLengths\old\P3DCorrectBoltsetLengths","yes"
|
||||||
|
"P3DCorrectBoltsetLengths","P3DCorrectBoltsetLengths\repo\P3DCorrectBoltsetLengths","yes"
|
||||||
|
"P3DCreateIsoBOM","_v2.5\Applications\P3DCreateIsoBOM v.0.0.4","yes"
|
||||||
|
"P3DDeleteNewLineInValues","_v2.0\P3DDeleteNewLineInValues","yes"
|
||||||
|
"P3DDeleteNewLineInValues","_v2.0\P3DDeleteNewLineInValues\P3DDeleteNewLineInValues","yes"
|
||||||
|
"P3DDeleteNewLineInValues","_v2.0\P3DDeleteNewLineInValues\P3DDeleteNewLineInValues\P3DDeleteNewLineInValues","yes"
|
||||||
|
"P3DDeleteNewLineInValues","_v2.5\P3DDeleteNewLineInValues","yes"
|
||||||
|
"P3DDeleteNewLineInValues","_v2.5\P3DDeleteNewLineInValues\P3DDeleteNewLineInValues","yes"
|
||||||
|
"P3DEnumerateSupports","_v2.0\P3DEnumerateSupports","yes"
|
||||||
|
"P3DEnumerateSupports","_v2.0\P3DEnumerateSupports\P3DEnumerateSupports","yes"
|
||||||
|
"P3DEnumerateSupports","_v2.0\P3DEnumerateSupports\P3DEnumerateSupports\P3DEnumerateSupports","yes"
|
||||||
|
"P3DGetBoltsetReport","P3DGetBoltsetReport","yes"
|
||||||
|
"P3DGetBoltsetReport","P3DGetBoltsetReport\P3DGetBoltsetReport","yes"
|
||||||
|
"P3DGetPnPId","_v2.0\P3DGetPnPId","yes"
|
||||||
|
"P3DGetPnPId","_v2.0\P3DGetPnPId\P3DGetPnPId","yes"
|
||||||
|
"P3DGetPnPId","_v2.0\P3DGetPnPId\P3DGetPnPId\P3DGetPnPId","yes"
|
||||||
|
"P3DGetReportNew","_v2.0\Отчет элементов по линиям\P3DGetReportNew","yes"
|
||||||
|
"P3DGetReportNew","_v2.0\Отчет элементов по линиям\P3DGetReportNew\P3DGetReportNew","yes"
|
||||||
|
"P3DGetReportNew","_v2.5\Отчет элементов по линиям\P3DGetReportNew","yes"
|
||||||
|
"P3DGetReportNew","_v2.5\Отчет элементов по линиям\P3DGetReportNew\P3DGetReportNew","yes"
|
||||||
|
"P3DPlotToPdfIsoMasterfile","_v2.0\P3DPlotToPdfIsoMasterfile","yes"
|
||||||
|
"P3DPlotToPdfIsoMasterfile","_v2.0\P3DPlotToPdfIsoMasterfile\P3DPlotToPdfIsoMasterfile","yes"
|
||||||
|
"P3DPlotToPdfIsoMasterfile","_v2.0\P3DPlotToPdfIsoMasterfile\P3DPlotToPdfIsoMasterfile\P3DPlotToPdfIsoMasterfile","yes"
|
||||||
|
"P3DSelectComponents","_v2.0\P3DSelectComponents","yes"
|
||||||
|
"P3DSelectComponents","_v2.0\P3DSelectComponents\P3DSelectComponents","yes"
|
||||||
|
"P3DSelectComponents","_v2.0\P3DSelectComponents\P3DSelectComponents\P3DSelectComponents","yes"
|
||||||
|
"P3DSetLayerForViewport","_v2.0\OrthoTools.2019\P3DSetLayerForViewport","yes"
|
||||||
|
"P3DSetLayerForViewport","_v2.0\OrthoTools.2019\P3DSetLayerForViewport\P3DSetLayerForViewport","yes"
|
||||||
|
"P3DUpdateFixedPipeLengths","_v2.0\P3DUpdateFixedPipeLengths","yes"
|
||||||
|
"P3DUpdateFixedPipeLengths","_v2.5\Applications\P3DUpdateFixedPipeLengths v.0.0.4","yes"
|
||||||
|
"P3DUpdateFixedPipeLengths","_v2.5\P3DUpdateFixedPipeLengths","yes"
|
||||||
|
"P3DUpdateFixedPipeLengths","_v2.5\P3DUpdateFixedPipeLengths\P3DUpdateFixedPipeLengths","yes"
|
||||||
|
"P3DUpdateFlanges","_v2.0\P3DUpdateFlanges","yes"
|
||||||
|
"P3DUpdateFlanges","_v2.0\P3DUpdateFlanges\P3DUpdateFlanges","yes"
|
||||||
|
"P3DUpdateFlanges","_v2.5\Applications\P3DUpdateFlanges v.0.0.8","yes"
|
||||||
|
"P3DUpdateFlanges","_v2.5\P3DUpdateFlanges","yes"
|
||||||
|
"P3DUpdateFlanges","_v2.5\P3DUpdateFlanges\_prev v.0.0.8\P3DUpdateFlanges","yes"
|
||||||
|
"P3DUpdateFlanges","_v2.5\P3DUpdateFlanges\releases\P3DUpdateFlanges v.0.0.11","yes"
|
||||||
|
"P3DUpdateFlanges","_v2.5\P3DUpdateFlanges\repo\P3DUpdateFlanges","yes"
|
||||||
|
"P3DUpdateValves","_v2.0\P3DUpdateValves","yes"
|
||||||
|
"P3DUpdateValves","_v2.0\P3DUpdateValves\P3DUpdateValves","yes"
|
||||||
|
"P3DUpdateValves","_v2.5\Applications\P3DUpdateValves v.0.0.3","yes"
|
||||||
|
"P3DUpdateValves","_v2.5\P3DUpdateValves","yes"
|
||||||
|
"P3DUpdateValves","_v2.5\P3DUpdateValves\P3DUpdateValves","yes"
|
||||||
|
@@ -0,0 +1,230 @@
|
|||||||
|
"family","module","source_path","target_framework","platform_target","output_type","assembly_name","references","autodesk_refs","sqlite","com","source_present"
|
||||||
|
"P_Check_CompP3D","P_Check_CompP3D","_v2.5\P_Check_CompP3D\P_Check_CompP3D\P_Check_CompP3D.csproj","v4.7",,"Library","P_Check_CompP3D","accoremgd|acdbmgd|acmgd|Autodesk.AutoCAD.Interop, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Windows.Forms|Microsoft.CSharp|System.XML|","acmgd|Autodesk.AutoCAD.Interop, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","possible","yes"
|
||||||
|
"P_Check_Pipe","P_Check_Pipe","_v2.5\P_Check_Pipe\P_Check_Pipe\P_Check_Pipe.csproj","v4.7","x86","Library","P_Check_Pipe","|accoremgd|acdbmgd|acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|PresentationCore|System|System.Data|System.Drawing|System.Windows.Forms|System.Xml|","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Check_Project","P3DCheckProject","_v2.5\P_Check_Project\P_Check_Project\P3DCheckProject.csproj","v4.7",,"Library","P_Check_Project","accoremgd|acdbmgd|acmgd|EnablerLoader|HelpDesk|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Net.Http|System.Xml||","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Exp_ToHydra","P_Exp_ToHydra","_v2.5\P_Exp_ToHydra\P_Exp_ToHydra\P_Exp_ToHydra.csproj","v4.7","x64","Library","P_Exp_ToHydra","accoremgd|acdbmgd|acmgd|PnP3dObjectsMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Net.Http|System.Xml|||","acmgd|PnP3dObjectsMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Exp_ToInsul","ExportToInsulation","_v2.5\P_Exp_ToInsul\info\prev\P_Exp_ToInsul\ExportToInsulation.csproj","v4.7","x86","Exe","P_Exp_ToInsul","|Excel|PresentationCore|PresentationFramework|System|System.Data|System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=AMD64|System.Drawing|System.Windows.Forms|System.Xaml|System.XML|System.Xml.Linq|TaskDialog|WindowsBase|||","","yes","possible","yes"
|
||||||
|
"P_Exp_ToInsul","ExportToInsulation","_v2.5\P_Exp_ToInsul\repo\P_Exp_ToInsul\ExportToInsulation.csproj","v4.7","x86","Exe","P_Exp_ToInsul","|Excel, Version=2.1.0.0, Culture=neutral, PublicKeyToken=93517dbe6a4012fa, processorArchitecture=MSIL|PresentationCore|PresentationFramework|System|System.Data|System.Data.SQLite, Version=1.0.118.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL|System.Drawing|System.Windows.Forms|System.Xaml|System.XML|System.Xml.Linq|TaskDialog, Version=1.0.4372.18283, Culture=neutral, processorArchitecture=MSIL|WindowsBase||||","","yes","possible","yes"
|
||||||
|
"P_Exp_ToRevit_MS","P_Exp_ToRevit_MS","_v2.5\P_Exp_ToRevit_MS\P_Exp_ToRevit_MS\P_Exp_ToRevit_MS.csproj","v4.7",,"Library","P_Exp_ToRevit_MS","accoremgd|acdbmgd|acmgd|PnPProjectManagerMgd|System|System.Core|System.Data.SQLite|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Net.Http|System.Xml||","acmgd|PnPProjectManagerMgd","yes","not observed","yes"
|
||||||
|
"P_Exp_ToRevit_MS","P_Exp_ToRevit_MS","P_Exp_ToRevit_MS\P_Exp_ToRevit_MS v.2.0.0.0\P_Exp_ToRevit_MS\P_Exp_ToRevit_MS.csproj","v4.8","x64","Library","P_Exp_ToRevit_MS","accoremgd|acdbmgd|acmgd|AdWindows|PnPProjectManagerMgd|PresentationCore|PresentationFramework|System|System.Core|System.Data.SQLite|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Net.Http|System.Xml|WindowsBase|||","acmgd|PnPProjectManagerMgd","yes","not observed","yes"
|
||||||
|
"P_Exp_ToRevit_MS","p2r","_v2.5\P_Exp_ToRevit_MS\P_Exp_ToRevit_MS\Old\p2r.csproj","v4.7.2",,"Library","p2r","accoremgd|acdbmgd|acmgd|Autodesk.AutoCAD.Interop|Autodesk.AutoCAD.Interop.Common|System|System.Core|System.Data.SQLite|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Net.Http|System.Xml||","acmgd|Autodesk.AutoCAD.Interop|Autodesk.AutoCAD.Interop.Common","yes","possible","yes"
|
||||||
|
"P_Exp_ToRevit_MS","p2r","_v2.5\P_Exp_ToRevit_MS\versions\01 v1.0.0.0\p2r\Old\p2r.csproj","v4.7.2",,"Library","p2r","accoremgd|acdbmgd|acmgd|Autodesk.AutoCAD.Interop|Autodesk.AutoCAD.Interop.Common|System|System.Core|System.Data.SQLite|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Net.Http|System.Xml||","acmgd|Autodesk.AutoCAD.Interop|Autodesk.AutoCAD.Interop.Common","yes","possible","yes"
|
||||||
|
"P_Exp_ToRevit_MS","p2r","_v2.5\P_Exp_ToRevit_MS\versions\01 v1.0.0.0\p2r\p2r.csproj","v4.7.2",,"Library","p2r","accoremgd|acdbmgd|acmgd|PnPProjectManagerMgd|System|System.Core|System.Data.SQLite|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Net.Http|System.Xml||","acmgd|PnPProjectManagerMgd","yes","not observed","yes"
|
||||||
|
"P_Exp_ToRevit_MS","p2r","_v2.5\P_Exp_ToRevit_MS\versions\v1.0.0.1\p2r\Old\p2r.csproj","v4.7.2",,"Library","p2r","accoremgd|acdbmgd|acmgd|Autodesk.AutoCAD.Interop|Autodesk.AutoCAD.Interop.Common|System|System.Core|System.Data.SQLite|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Net.Http|System.Xml||","acmgd|Autodesk.AutoCAD.Interop|Autodesk.AutoCAD.Interop.Common","yes","possible","yes"
|
||||||
|
"P_Exp_ToRevit_MS","p2r","_v2.5\P_Exp_ToRevit_MS\versions\v1.0.0.1\p2r\p2r.csproj","v4.7.2",,"Library","p2r","accoremgd|acdbmgd|acmgd|PnPProjectManagerMgd|System|System.Core|System.Data.SQLite|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Net.Http|System.Xml||","acmgd|PnPProjectManagerMgd","yes","not observed","yes"
|
||||||
|
"P_Exp_ToRevit_MS","p2r","_v2.5\P_Exp_ToRevit_MS\versions\v1.0.0.2\p2r\Old\p2r.csproj","v4.7.2",,"Library","p2r","accoremgd|acdbmgd|acmgd|Autodesk.AutoCAD.Interop|Autodesk.AutoCAD.Interop.Common|System|System.Core|System.Data.SQLite|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Net.Http|System.Xml||","acmgd|Autodesk.AutoCAD.Interop|Autodesk.AutoCAD.Interop.Common","yes","possible","yes"
|
||||||
|
"P_Exp_ToRevit_MS","p2r","_v2.5\P_Exp_ToRevit_MS\versions\v1.0.0.2\p2r\p2r.csproj","v4.7.2",,"Library","p2r","accoremgd|acdbmgd|acmgd|PnPProjectManagerMgd|System|System.Core|System.Data.SQLite|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Net.Http|System.Xml||","acmgd|PnPProjectManagerMgd","yes","not observed","yes"
|
||||||
|
"P_Exp_ToRevit_MS","p2r","P_Exp_ToRevit_MS\P_Exp_ToRevit_MS v.2.0.0.0\P_Exp_ToRevit_MS\Old\p2r.csproj","v4.7.2",,"Library","p2r","accoremgd|acdbmgd|acmgd|Autodesk.AutoCAD.Interop|Autodesk.AutoCAD.Interop.Common|System|System.Core|System.Data.SQLite|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Net.Http|System.Xml||","acmgd|Autodesk.AutoCAD.Interop|Autodesk.AutoCAD.Interop.Common","yes","possible","yes"
|
||||||
|
"P_Exp_ToStart","P_Exp_ToStart","_v2.5\P_Exp_ToStart\P_Exp_ToStart\P_Exp_ToStart.csproj","v4.7","x64","Library","P_Exp_ToStart","accoremgd|acdbmgd|acmgd|PnP3dObjectsMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Net.Http|System.Xml|||","acmgd|PnP3dObjectsMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Imp_FromPTH","P_Imp_FromPTH","_v2.5\P_Imp_FromPTH\P_Imp_FromPTH\P_Imp_FromPTH.csproj","v4.7",,"Library","P_Imp_FromPTH","accoremgd|acdbmgd|Excel|PnP3dPipeUI|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|PresentationCore|PresentationFramework|System|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|System.Data|System.Xml|WindowsBase||","PnP3dPipeUI|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","possible","yes"
|
||||||
|
"P_Rec_Annot","AnnotateLineNumbers","_v2.5\P_Rec_Annot\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\AnnotateLineNumbers.csproj","v4.7",,"Library","AnnotateLineNumbers","accoremgd|acdbmgd|acmgd|Autodesk.AutoCAD.Interop, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|Autodesk.AutoCAD.Interop.Common, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|EnablerLoader, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|GetLinenumberAnnotationText, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|P3DCopyMissingObjectsToOrthoDrawing, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|P3DSetLayerForViewport, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","acmgd|Autodesk.AutoCAD.Interop, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|Autodesk.AutoCAD.Interop.Common, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","possible","yes"
|
||||||
|
"P_Rec_Annot","AnnotateLineNumbers","P_Rec_Annot\v1.0.2\repo\AnnotateLineNumbers\AnnotateLineNumbers.csproj","v4.7","x64","Library","AnnotateLineNumbers","accoremgd|acdbmgd|acmgd|Autodesk.AutoCAD.Interop, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|Autodesk.AutoCAD.Interop.Common, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|EnablerLoader|GetLinenumberAnnotationText|P3DCopyMissingObjectsToOrthoDrawing|P3DSetLayerForViewport|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||||","acmgd|Autodesk.AutoCAD.Interop, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|Autodesk.AutoCAD.Interop.Common, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","possible","yes"
|
||||||
|
"P_Rec_Annot","AnnotateLineNumbers","P_Rec_Annot\v1.0.4\repo\AnnotateLineNumbers\AnnotateLineNumbers.csproj","v4.7","x64","Library","AnnotateLineNumbers","accoremgd|acdbmgd|acmgd|Autodesk.AutoCAD.Interop, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|Autodesk.AutoCAD.Interop.Common, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|EnablerLoader|GetLinenumberAnnotationText|P3DCopyMissingObjectsToOrthoDrawing|P3DSetLayerForViewport|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||||","acmgd|Autodesk.AutoCAD.Interop, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|Autodesk.AutoCAD.Interop.Common, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","possible","yes"
|
||||||
|
"P_Rec_Annot","AutoAnnotateView","_v2.5\P_Rec_Annot\2019_AutoAnnotateView\2019_AutoAnnotateView\AutoAnnotateView.csproj","v4.7",,"Library","AutoAnnotateView","accoremgd|acdbmgd|acmgd|CheckOrthoView, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|EnablerLoader, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|ExtentsIntersect, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|P3DCopyMissingObjectsToOrthoDrawing, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|P3DSetLayerForViewport, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","AutoAnnotateView","P_Rec_Annot\v1.0.2\repo\AutoAnnotateView\AutoAnnotateView.csproj","v4.7","AnyCPU","Library","AutoAnnotateView","accoremgd|acdbmgd|acmgd|CheckOrthoView|EnablerLoader|ExtentsIntersect|P3DCopyMissingObjectsToOrthoDrawing|P3DSetLayerForViewport|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","AutoAnnotateView","P_Rec_Annot\v1.0.4\repo\AutoAnnotateView\AutoAnnotateView.csproj","v4.7","x64","Library","AutoAnnotateView","accoremgd|acdbmgd|acmgd|CheckOrthoView|EnablerLoader|ExtentsIntersect|P3DCopyMissingObjectsToOrthoDrawing|P3DSetLayerForViewport|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","AutoElevation","_v2.5\P_Rec_Annot\2019_AutoElevation\2019_AutoElevation\AutoElevation.csproj","v4.7",,"Library","AutoElevation","accoremgd|acdbmgd|acmgd|CheckOrthoView|EnablerLoader|GetComponentGeometry, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|P3DCopyMissingObjectsToOrthoDrawing|P3DSetLayerForViewport|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPDwg2dUtil|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPDwg2dUtil|PnPProjectManagerMgd","no","possible","yes"
|
||||||
|
"P_Rec_Annot","AutoElevation","P_Rec_Annot\v1.0.2\repo\AutoElevation\AutoElevation.csproj","v4.7","x64","Library","AutoElevation","accoremgd|acdbmgd|acmgd|CheckOrthoView|EnablerLoader|GetComponentGeometry|P3DCopyMissingObjectsToOrthoDrawing|P3DSetLayerForViewport|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPDwg2dUtil|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPDwg2dUtil|PnPProjectManagerMgd","no","possible","yes"
|
||||||
|
"P_Rec_Annot","AutoElevation","P_Rec_Annot\v1.0.4\repo\AutoElevation\AutoElevation.csproj","v4.7","x64","Library","AutoElevation","accoremgd|acdbmgd|acmgd|CheckOrthoView|EnablerLoader|GetComponentGeometry|P3DCopyMissingObjectsToOrthoDrawing|P3DSetLayerForViewport|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPDwg2dUtil|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPDwg2dUtil|PnPProjectManagerMgd","no","possible","yes"
|
||||||
|
"P_Rec_Annot","AutoLinenumberConnections","_v2.5\P_Rec_Annot\2019_AutoLinenumberConnections\2019_AutoLinenumberConnections\AutoLinenumberConnections.csproj","v4.7",,"Library","AutoLinenumberConnections","accoremgd|acdbmgd|acmgd|CheckOrthoView, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|EnablerLoader, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|ExtentsIntersect, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|GetLinenumberAnnotationText, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|P3DCopyMissingObjectsToOrthoDrawing, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|P3DSetLayerForViewport, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|PnP3dObjectsMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnP3dObjectsMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","AutoLinenumberConnections","P_Rec_Annot\v1.0.2\repo\AutoLinenumberConnections\AutoLinenumberConnections.csproj","v4.7","x64","Library","AutoLinenumberConnections","accoremgd|acdbmgd|acmgd|CheckOrthoView|EnablerLoader|ExtentsIntersect|GetLinenumberAnnotationText|P3DCopyMissingObjectsToOrthoDrawing|P3DSetLayerForViewport|PnP3dObjectsMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnP3dObjectsMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","AutoLinenumberConnections","P_Rec_Annot\v1.0.4\repo\AutoLinenumberConnections\AutoLinenumberConnections.csproj","v4.7","x64","Library","AutoLinenumberConnections","accoremgd|acdbmgd|acmgd|CheckOrthoView|EnablerLoader|ExtentsIntersect|GetLinenumberAnnotationText|P3DCopyMissingObjectsToOrthoDrawing|P3DSetLayerForViewport|PnP3dObjectsMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnP3dObjectsMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","CheckOrthoView","_v2.5\P_Rec_Annot\2019_CheckOrthoView\2019_CheckOrthoView\CheckOrthoView.csproj","v4.7",,"Library","CheckOrthoView","accoremgd|acdbmgd|acmgd|EnablerLoader|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","CheckOrthoView","P_Rec_Annot\v1.0.2\repo\CheckOrthoView\CheckOrthoView.csproj","v4.7","x64","Library","CheckOrthoView","accoremgd|acdbmgd|acmgd|EnablerLoader|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","CheckOrthoView","P_Rec_Annot\v1.0.4\repo\CheckOrthoView\CheckOrthoView.csproj","v4.7","x64","Library","CheckOrthoView","accoremgd|acdbmgd|acmgd|EnablerLoader|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","EnablerLoader","_v2.5\P_Rec_Annot\EnablerLoader\EnablerLoader\EnablerLoader.csproj","v4.7",,"Library","EnablerLoader","accoremgd|acdbmgd|LoadedAssemblies|System|Microsoft.CSharp|System.Windows.Forms|","","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","EnablerLoader","P_Rec_Annot\v1.0.2\repo\EnablerLoader\EnablerLoader.csproj","v4.7","x64","Library","EnablerLoader","accoremgd|acdbmgd|LoadedAssemblies|System|Microsoft.CSharp|System.Windows.Forms|","","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","EnablerLoader","P_Rec_Annot\v1.0.4\repo\EnablerLoader\EnablerLoader.csproj","v4.7","x64","Library","EnablerLoader","accoremgd|acdbmgd|LoadedAssemblies|System|Microsoft.CSharp|System.Windows.Forms|","","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","ExtentsIntersect","_v2.5\P_Rec_Annot\ExtentsIntersect\ExtentsIntersect\ExtentsIntersect.csproj","v4.7",,"Library","ExtentsIntersect","accoremgd|acdbmgd|acmgd|System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","ExtentsIntersect","P_Rec_Annot\v1.0.2\repo\ExtentsIntersect\ExtentsIntersect.csproj","v4.7","x64","Library","ExtentsIntersect","accoremgd|acdbmgd|acmgd|System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","ExtentsIntersect","P_Rec_Annot\v1.0.4\repo\ExtentsIntersect\ExtentsIntersect.csproj","v4.7","x64","Library","ExtentsIntersect","accoremgd|acdbmgd|acmgd|System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","GetComponentGeometry","P_Rec_Annot\v1.0.2\repo\GetComponentGeometry\GetComponentGeometry.csproj","v4.7","x64","Library","GetComponentGeometry","accoremgd|acdbmgd|acmgd|Autodesk.AutoCAD.Interop, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|Autodesk.AutoCAD.Interop.Common, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|GetPlantScriptFolderPath|GetScriptParameters|PnP3dObjectsMgd|PnP3dPartsRepository|System|Microsoft.CSharp|","acmgd|Autodesk.AutoCAD.Interop, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|Autodesk.AutoCAD.Interop.Common, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|PnP3dObjectsMgd|PnP3dPartsRepository","no","possible","yes"
|
||||||
|
"P_Rec_Annot","GetComponentGeometry","P_Rec_Annot\v1.0.4\repo\GetComponentGeometry\GetComponentGeometry.csproj","v4.7","x64","Library","GetComponentGeometry","accoremgd|acdbmgd|acmgd|Autodesk.AutoCAD.Interop, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|Autodesk.AutoCAD.Interop.Common, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|GetPlantScriptFolderPath|GetScriptParameters|PnP3dObjectsMgd|PnP3dPartsRepository|System|Microsoft.CSharp|","acmgd|Autodesk.AutoCAD.Interop, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|Autodesk.AutoCAD.Interop.Common, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|PnP3dObjectsMgd|PnP3dPartsRepository","no","possible","yes"
|
||||||
|
"P_Rec_Annot","GetComponentGeometryDescription","_v2.5\P_Rec_Annot\2019_GetComponentGeometryDescription (без ReferenceFiler)\2019_GetComponentGeometryDescription\GetComponentGeometryDescription.csproj","v4.7",,"Library","GetComponentGeometry","accoremgd|acdbmgd|acmgd|Autodesk.AutoCAD.Interop, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|Autodesk.AutoCAD.Interop.Common, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|GetPlantScriptFolderPath, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|GetScriptParameters, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|PnP3dObjectsMgd|PnP3dPartsRepository|System|Microsoft.CSharp|","acmgd|Autodesk.AutoCAD.Interop, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|Autodesk.AutoCAD.Interop.Common, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|PnP3dObjectsMgd|PnP3dPartsRepository","no","possible","yes"
|
||||||
|
"P_Rec_Annot","GetLinenumberAnnotationText","_v2.5\P_Rec_Annot\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","v4.7",,"Library","GetLinenumberAnnotationText","Excel, Version=2.1.0.0, Culture=neutral, PublicKeyToken=93517dbe6a4012fa, processorArchitecture=MSIL|PnPDataLinks|PnPDataObjects|System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","PnPDataLinks|PnPDataObjects","no","possible","yes"
|
||||||
|
"P_Rec_Annot","GetLinenumberAnnotationText","_v2.5\P_Rec_Annot\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","v4.7",,"Library","GetLinenumberAnnotationText","Excel, Version=2.1.0.0, Culture=neutral, PublicKeyToken=93517dbe6a4012fa, processorArchitecture=MSIL|PnPDataLinks|PnPDataObjects|System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","PnPDataLinks|PnPDataObjects","no","possible","yes"
|
||||||
|
"P_Rec_Annot","GetLinenumberAnnotationText","P_Rec_Annot\v1.0.2\repo\_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","v4.7",,"Library","GetLinenumberAnnotationText","Excel|PnPDataLinks|PnPDataObjects|System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","PnPDataLinks|PnPDataObjects","no","possible","yes"
|
||||||
|
"P_Rec_Annot","GetLinenumberAnnotationText","P_Rec_Annot\v1.0.2\repo\_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","v4.7",,"Library","GetLinenumberAnnotationText","Excel|PnPDataLinks|PnPDataObjects|System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","PnPDataLinks|PnPDataObjects","no","possible","yes"
|
||||||
|
"P_Rec_Annot","GetLinenumberAnnotationText","P_Rec_Annot\v1.0.2\repo\GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","v4.7","x64","Library","GetLinenumberAnnotationText","accoremgd|acdbmgd|acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Net.Http|System.Xml||","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","GetLinenumberAnnotationText","P_Rec_Annot\v1.0.4\repo\_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","v4.7",,"Library","GetLinenumberAnnotationText","Excel|PnPDataLinks|PnPDataObjects|System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","PnPDataLinks|PnPDataObjects","no","possible","yes"
|
||||||
|
"P_Rec_Annot","GetLinenumberAnnotationText","P_Rec_Annot\v1.0.4\repo\_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","v4.7",,"Library","GetLinenumberAnnotationText","Excel|PnPDataLinks|PnPDataObjects|System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","PnPDataLinks|PnPDataObjects","no","possible","yes"
|
||||||
|
"P_Rec_Annot","GetLinenumberAnnotationText","P_Rec_Annot\v1.0.4\repo\GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","v4.7","x64","Library","GetLinenumberAnnotationText","accoremgd|acdbmgd|acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Net.Http|System.Xml||","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","GetPlantScriptFolderPath","_v2.5\P_Rec_Annot\GetPlantScriptFolderPath\GetPlantScriptFolderPath\GetPlantScriptFolderPath.csproj","v4.7",,"Library","GetPlantScriptFolderPath","accoremgd|acmgd|System|Microsoft.CSharp|System.XML|System.Xml.Linq|","acmgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","GetPlantScriptFolderPath","P_Rec_Annot\v1.0.2\repo\GetPlantScriptFolderPath\GetPlantScriptFolderPath.csproj","v4.7","x64","Library","GetPlantScriptFolderPath","accoremgd|acmgd|System|Microsoft.CSharp|System.XML|System.Xml.Linq|","acmgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","GetPlantScriptFolderPath","P_Rec_Annot\v1.0.4\repo\GetPlantScriptFolderPath\GetPlantScriptFolderPath.csproj","v4.7","x64","Library","GetPlantScriptFolderPath","accoremgd|acmgd|System|Microsoft.CSharp|System.XML|System.Xml.Linq|","acmgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","GetScriptParameters","_v2.5\P_Rec_Annot\GetScriptParameters\GetScriptParameters\GetScriptParameters.csproj","v4.7",,"Library","GetScriptParameters","System|Microsoft.CSharp|","","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","GetScriptParameters","P_Rec_Annot\v1.0.2\repo\GetScriptParameters\GetScriptParameters.csproj","v4.7","x64","Library","GetScriptParameters","System|Microsoft.CSharp|","","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","GetScriptParameters","P_Rec_Annot\v1.0.4\repo\GetScriptParameters\GetScriptParameters.csproj","v4.7","x64","Library","GetScriptParameters","System|Microsoft.CSharp|","","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","InsertElevation","_v2.5\P_Rec_Annot\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj","v4.7",,"Library","InsertElevation","accoremgd|acdbmgd|acmgd|EnablerLoader|P3DCopyMissingObjectsToOrthoDrawing|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","InsertElevation","_v2.5\P_Rec_Annot\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj","v4.7",,"Library","InsertElevation","accoremgd|acdbmgd|acmgd|EnablerLoader|P3DCopyMissingObjectsToOrthoDrawing|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","InsertElevation","P_Rec_Annot\v1.0.2\repo\_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj","v4.7",,"Library","InsertElevation","accoremgd|acdbmgd|acmgd|EnablerLoader, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|P3DCopyMissingObjectsToOrthoDrawing, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","InsertElevation","P_Rec_Annot\v1.0.2\repo\InsertElevation\InsertElevation.csproj","v4.7","x64","Library","InsertElevation","accoremgd|acdbmgd|acmgd|EnablerLoader|P3DCopyMissingObjectsToOrthoDrawing|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","InsertElevation","P_Rec_Annot\v1.0.4\repo\_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj","v4.7",,"Library","InsertElevation","accoremgd|acdbmgd|acmgd|EnablerLoader, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|P3DCopyMissingObjectsToOrthoDrawing, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","InsertElevation","P_Rec_Annot\v1.0.4\repo\InsertElevation\InsertElevation.csproj","v4.7","x64","Library","InsertElevation","accoremgd|acdbmgd|acmgd|EnablerLoader|P3DCopyMissingObjectsToOrthoDrawing|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","LoadedAssemblies","_v2.5\P_Rec_Annot\LoadedAssemblies\LoadedAssemblies\LoadedAssemblies.csproj","v4.7",,"Library","LoadedAssemblies","accoremgd|acdbmgd|System|Microsoft.CSharp|","","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","LoadedAssemblies","P_Rec_Annot\v1.0.2\repo\LoadedAssemblies\LoadedAssemblies.csproj","v4.7","x64","Library","LoadedAssemblies","accoremgd|acdbmgd|System|Microsoft.CSharp|","","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","LoadedAssemblies","P_Rec_Annot\v1.0.4\repo\LoadedAssemblies\LoadedAssemblies.csproj","v4.7","x64","Library","LoadedAssemblies","accoremgd|acdbmgd|System|Microsoft.CSharp|","","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","OrthoAutoAnnotate","_v2.5\P_Rec_Annot\2019_OrthoAutoAnnotate\2019_OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","v4.7","AnyCPU","Library",,"|accoremgd|acdbmgd|acmgd|CheckOrthoView|EnablerLoader|GetComponentGeometry|P3DCopyMissingObjectsToOrthoDrawing|P3DSetLayerForViewport|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPDwg2dUtil|PnPProjectManagerMgd|System|System.DirectoryServices|System.Windows.Forms|System.XML|System.Xml.Linq","acmgd|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPDwg2dUtil|PnPProjectManagerMgd","no","possible","yes"
|
||||||
|
"P_Rec_Annot","OrthoAutoAnnotate","P_Rec_Annot\v1.0.2\repo\OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","v4.7","AnyCPU","Library",,"|accoremgd|acdbmgd|acmgd|CheckOrthoView|EnablerLoader|GetComponentGeometry|P3DCopyMissingObjectsToOrthoDrawing|P3DSetLayerForViewport|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPDwg2dUtil|PnPProjectManagerMgd|System|System.DirectoryServices|System.Windows.Forms|System.XML|System.Xml.Linq","acmgd|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPDwg2dUtil|PnPProjectManagerMgd","no","possible","yes"
|
||||||
|
"P_Rec_Annot","OrthoAutoAnnotate","P_Rec_Annot\v1.0.4\repo\OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","v4.7","x64","Library",,"|accoremgd|acdbmgd|acmgd|CheckOrthoView|EnablerLoader|GetComponentGeometry|P3DCopyMissingObjectsToOrthoDrawing|P3DSetLayerForViewport|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPDwg2dUtil|PnPProjectManagerMgd|System|System.DirectoryServices|System.Windows.Forms|System.XML|System.Xml.Linq","acmgd|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPDwg2dUtil|PnPProjectManagerMgd","no","possible","yes"
|
||||||
|
"P_Rec_Annot","OrthoLoader","_v2.5\P_Rec_Annot\OrthoLoader\OrthoLoader\OrthoLoader.csproj","v4.7",,"Library","OrthoLoader","accoremgd|acdbmgd|acmgd|System|System.Core|System.Windows.Forms|System.XML|System.Xml.Linq|Microsoft.CSharp|","acmgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","OrthoLoader","P_Rec_Annot\v1.0.2\repo\OrthoLoader\OrthoLoader.csproj","v4.7","x64","Library","OrthoLoader","accoremgd|acdbmgd|acmgd|AdWindows|PnPProjectManagerMgd|PresentationCore|PresentationFramework|System|System.Core|System.Windows.Forms|System.XML|System.Xml.Linq|Microsoft.CSharp|WindowsBase||","acmgd|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","OrthoLoader","P_Rec_Annot\v1.0.4\repo\OrthoLoader\OrthoLoader.csproj","v4.7","x64","Library","OrthoLoader","accoremgd|acdbmgd|acmgd|AdWindows|PnPProjectManagerMgd|PresentationCore|PresentationFramework|System|System.Core|System.Windows.Forms|System.XML|System.Xml.Linq|Microsoft.CSharp|WindowsBase||","acmgd|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","P3DCopyMissingObjectsToOrthoDrawing","_v2.5\P_Rec_Annot\2019_P3DCopyMissingObjectsToOrthoDrawing\2019_P3DCopyMissingObjectsToOrthoDrawing\P3DCopyMissingObjectsToOrthoDrawing.csproj","v4.7",,"Library","P3DCopyMissingObjectsToOrthoDrawing","accoremgd|acdbmgd|acmgd|PnPProjectManagerMgd|System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","P3DCopyMissingObjectsToOrthoDrawing","P_Rec_Annot\v1.0.2\repo\P3DCopyMissingObjectsToOrthoDrawing\P3DCopyMissingObjectsToOrthoDrawing.csproj","v4.7","x64","Library","P3DCopyMissingObjectsToOrthoDrawing","accoremgd|acdbmgd|acmgd|PnPProjectManagerMgd|System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","P3DCopyMissingObjectsToOrthoDrawing","P_Rec_Annot\v1.0.4\repo\P3DCopyMissingObjectsToOrthoDrawing\P3DCopyMissingObjectsToOrthoDrawing.csproj","v4.7","x64","Library","P3DCopyMissingObjectsToOrthoDrawing","accoremgd|acdbmgd|acmgd|PnPProjectManagerMgd|System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","P3DNewMa","P_Rec_Annot\v1.0.4\repo\P3DNewMa\P3DNewMa.csproj","v4.7","x64","Library","P3DNewMa","accoremgd|acdbmgd, Version=23.0.0.0, Culture=neutral, processorArchitecture=AMD64|acmgd|EnablerLoader, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|GetLinenumberAnnotationText, Version=1.0.2.0, Culture=neutral, processorArchitecture=MSIL|P3DCopyMissingObjectsToOrthoDrawing|P3DSetLayerForViewport, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|PresentationCore|System|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data|System.Xml||","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","P3DSetLayerForViewport","_v2.5\P_Rec_Annot\P3DSetLayerForViewport\P3DSetLayerForViewport\P3DSetLayerForViewport.csproj","v4.7",,"Library","P3DSetLayerForViewport","accoremgd|acdbmgd|acmgd|System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","P3DSetLayerForViewport","P_Rec_Annot\v1.0.2\repo\P3DSetLayerForViewport\P3DSetLayerForViewport.csproj","v4.7","x64","Library","P3DSetLayerForViewport","accoremgd|acdbmgd|acmgd|System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","P3DSetLayerForViewport","P_Rec_Annot\v1.0.4\repo\P3DSetLayerForViewport\P3DSetLayerForViewport.csproj","v4.7","x64","Library","P3DSetLayerForViewport","accoremgd|acdbmgd|acmgd|System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","PHPAnnotations","_v2.5\P_Rec_Annot\2019_PHPAnnotations\2019_PHPAnnotations\PHPAnnotations.csproj","v4.7",,"Library","PHPAnnotations","accoremgd|acdbmgd|acmgd|GetLinenumberAnnotationText|PnPCommonDbxMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","acmgd|PnPCommonDbxMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","possible","yes"
|
||||||
|
"P_Rec_Annot","PHPAnnotations","P_Rec_Annot\v1.0.2\repo\PHPAnnotations\PHPAnnotations.csproj","v4.7","x64","Library","PHPAnnotations","accoremgd|acdbmgd|acmgd|GetLinenumberAnnotationText|PnPCommonDbxMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","acmgd|PnPCommonDbxMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","possible","yes"
|
||||||
|
"P_Rec_Annot","PHPAnnotations","P_Rec_Annot\v1.0.4\repo\PHPAnnotations\PHPAnnotations.csproj","v4.7","x64","Library","PHPAnnotations","accoremgd|acdbmgd|acmgd|GetLinenumberAnnotationText|PnPCommonDbxMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","acmgd|PnPCommonDbxMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","possible","yes"
|
||||||
|
"P_Rec_Annot","SwapAttributesMenuItem","_v2.5\P_Rec_Annot\SwapAttributesMenuItem\SwapAttributesMenuItem\SwapAttributesMenuItem.csproj","v4.7",,"Library","SwapAttributesMenuItem","accoremgd|acdbmgd|acmgd|System|System.Core|System.Xml.Linq|Microsoft.CSharp|System.Xml|","acmgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","SwapAttributesMenuItem","P_Rec_Annot\v1.0.2\repo\SwapAttributesMenuItem\SwapAttributesMenuItem.csproj","v4.7","x64","Library","SwapAttributesMenuItem","accoremgd|acdbmgd|acmgd|PnPProjectManagerMgd|System|System.Core|System.Windows.Forms|System.Xml.Linq|Microsoft.CSharp|System.Xml|","acmgd|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","SwapAttributesMenuItem","P_Rec_Annot\v1.0.4\repo\SwapAttributesMenuItem\SwapAttributesMenuItem.csproj","v4.7","x64","Library","SwapAttributesMenuItem","accoremgd|acdbmgd|acmgd|PnPProjectManagerMgd|System|System.Core|System.Windows.Forms|System.Xml.Linq|Microsoft.CSharp|System.Xml|","acmgd|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","UpdateOrthoDrawings","_v2.5\P_Rec_Annot\2019_UpdateOrthoDrawings\2019_UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","v4.7",,"Library","UpdateOrthoDrawings","accoremgd|acdbmgd|acmgd|AutoAnnotateView, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|AutoLinenumberConnections, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|OrthoAutoAnnotate, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|P3DCopyMissingObjectsToOrthoDrawing|P3DSetLayerForViewport|PnP3dOrthoDrawingsUI|PnP3dOrthoProjectPart|PnP3dOrthoUtilMgd|PnPDataLinks|PnPDataObjects|PnPDwg2dAnno|PnPDwg2dDbx|PnPDwg2dDef|PnPDwg2dGen|PnPDwg2dUtil|PnPProjectManagerMgd|PresentationCore|System|System.Core|System.DirectoryServices|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|UpdateOrthoViewBlocks, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|WindowsBase||","acmgd|PnP3dOrthoDrawingsUI|PnP3dOrthoProjectPart|PnP3dOrthoUtilMgd|PnPDataLinks|PnPDataObjects|PnPDwg2dAnno|PnPDwg2dDbx|PnPDwg2dDef|PnPDwg2dGen|PnPDwg2dUtil|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","UpdateOrthoDrawings","P_Rec_Annot\v1.0.2\repo\UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","v4.7","x64","Library","UpdateOrthoDrawings","accoremgd|acdbmgd|acmgd|AutoAnnotateView|AutoLinenumberConnections|OrthoAutoAnnotate|P3DCopyMissingObjectsToOrthoDrawing|P3DSetLayerForViewport|PnP3dOrthoDrawingsUI|PnP3dOrthoProjectPart|PnP3dOrthoUtilMgd|PnPDataLinks|PnPDataObjects|PnPDwg2dAnno|PnPDwg2dDbx|PnPDwg2dDef|PnPDwg2dGen|PnPDwg2dUtil|PnPProjectManagerMgd|PresentationCore|System|System.Core|System.DirectoryServices|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|UpdateOrthoViewBlocks|WindowsBase||","acmgd|PnP3dOrthoDrawingsUI|PnP3dOrthoProjectPart|PnP3dOrthoUtilMgd|PnPDataLinks|PnPDataObjects|PnPDwg2dAnno|PnPDwg2dDbx|PnPDwg2dDef|PnPDwg2dGen|PnPDwg2dUtil|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","UpdateOrthoDrawings","P_Rec_Annot\v1.0.4\repo\UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","v4.7","x64","Library","UpdateOrthoDrawings","accoremgd|acdbmgd|acmgd|AutoAnnotateView|AutoLinenumberConnections|OrthoAutoAnnotate|P3DCopyMissingObjectsToOrthoDrawing|P3DSetLayerForViewport|PnP3dOrthoDrawingsUI|PnP3dOrthoProjectPart|PnP3dOrthoUtilMgd|PnPDataLinks|PnPDataObjects|PnPDwg2dAnno|PnPDwg2dDbx|PnPDwg2dDef|PnPDwg2dGen|PnPDwg2dUtil|PnPProjectManagerMgd|PresentationCore|System|System.Core|System.DirectoryServices|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|UpdateOrthoViewBlocks|WindowsBase||","acmgd|PnP3dOrthoDrawingsUI|PnP3dOrthoProjectPart|PnP3dOrthoUtilMgd|PnPDataLinks|PnPDataObjects|PnPDwg2dAnno|PnPDwg2dDbx|PnPDwg2dDef|PnPDwg2dGen|PnPDwg2dUtil|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","UpdateOrthoViewBlocks","_v2.5\P_Rec_Annot\2019_UpdateOrthoViewBlocks\2019_UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","v4.7",,"Library","UpdateOrthoViewBlocks","accoremgd|acdbmgd|acmgd|P3DCopyMissingObjectsToOrthoDrawing, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|P3DSetLayerForViewport, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|PnP3dOrthoDrawingsUI|PnPDataLinks|PnPDataObjects|PnPDwg2dDbx|PnPDwg2dDef|PnPDwg2dUtil|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnP3dOrthoDrawingsUI|PnPDataLinks|PnPDataObjects|PnPDwg2dDbx|PnPDwg2dDef|PnPDwg2dUtil|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","UpdateOrthoViewBlocks","P_Rec_Annot\v1.0.2\repo\UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","v4.7","x64","Library","UpdateOrthoViewBlocks","accoremgd|acdbmgd|acmgd|P3DCopyMissingObjectsToOrthoDrawing|P3DSetLayerForViewport|PnP3dOrthoDrawingsUI|PnPDataLinks|PnPDataObjects|PnPDwg2dDbx|PnPDwg2dDef|PnPDwg2dUtil|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnP3dOrthoDrawingsUI|PnPDataLinks|PnPDataObjects|PnPDwg2dDbx|PnPDwg2dDef|PnPDwg2dUtil|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Annot","UpdateOrthoViewBlocks","P_Rec_Annot\v1.0.4\repo\UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","v4.7","x64","Library","UpdateOrthoViewBlocks","accoremgd|acdbmgd|acmgd|P3DCopyMissingObjectsToOrthoDrawing|P3DSetLayerForViewport|PnP3dOrthoDrawingsUI|PnPDataLinks|PnPDataObjects|PnPDwg2dDbx|PnPDwg2dDef|PnPDwg2dUtil|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnP3dOrthoDrawingsUI|PnPDataLinks|PnPDataObjects|PnPDwg2dDbx|PnPDwg2dDef|PnPDwg2dUtil|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_BOP","P_Rec_BOP","_v2.5\P_Rec_BOP (old)\P_Rec_BOP\P_Rec_BOP.csproj","v4.7","x86","Exe","P_Rec_BOP","|SautinSoft.Document|System|System.Data|System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=AMD64|System.Drawing|System.Windows.Forms|System.XML|System.Xml.Linq|||","","yes","not observed","yes"
|
||||||
|
"P_Rec_BOP","P_Rec_BOP","P_Rec_BOP\repo\P_Rec_BOP\P_Rec_BOP.csproj","v4.7","x86","Exe","P_Rec_BOP","|Microsoft.Office.Interop.Word, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL|SautinSoft.Document|System|System.Data|System.Data.DataSetExtensions|System.Data.SQLite|System.Drawing|System.Windows.Forms|System.XML|System.Xml.Linq||||","","yes","possible","yes"
|
||||||
|
"P_Rec_Brac","P_Rec_Brac","_v2.5\P_Rec_Brac\P_Rec_Brac\P_Rec_Brac.csproj","v4.7",,"Library","P_Rec_Brac","accoremgd|acdbmgd|acmgd|Autodesk.AutoCAD.Interop, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|Autodesk.AutoCAD.Interop.Common, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|EnablerLoader|GetComponentGeometryDescription|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=AMD64|System.Windows.Forms|System.XML|System.Xml.Linq|Microsoft.CSharp|System.Data||","acmgd|Autodesk.AutoCAD.Interop, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|Autodesk.AutoCAD.Interop.Common, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","yes","possible","yes"
|
||||||
|
"P_Rec_Color","GetAZO1","_v2.5\P_Rec_Color\GetAZO1\GetAZO1\GetAZO1.csproj","v4.7","AnyCPU","Exe","GetAZO1","ConsoleGetDrawingInformation|EPPlus|PresentationCore|PresentationFramework|System|System.Core|System.Data.SQLite|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Net.Http|System.Xml|TaskDialog|WindowsBase|||","","yes","not observed","yes"
|
||||||
|
"P_Rec_Color","GetAZO2","_v2.5\P_Rec_Color\GetAZO2\GetAZO2\GetAZO2.csproj","v4.7","AnyCPU","Exe","GetAZO2","EPPlus|SautinSoft.Document|System|System.Windows.Forms|System.Xml.Linq|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_PipelineList","OutputSpecificationToWord","P_Rec_PipelineList\OutputSpecificationToWord\OutputSpecificationToWord\OutputSpecificationToWord.csproj","v4.7","x86","Exe","OutputSpecificationToWord","System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|||","","no","not observed","yes"
|
||||||
|
"P_Rec_Print","P_Rec_Print","_v2.5\P_Rec_Print\P_Rec_Print\P_Rec_Print.csproj","v4.7",,"Library","P_Rec_Print","accoremgd|acdbmgd|acmgd|AdWindows|PnPProjectManagerMgd|System|System.Core|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","acmgd|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","AddNKRMaterials","_v2.5\P_Rec_Spec\_old\AddNKRMaterials\AddNKRMaterials\AddNKRMaterials.csproj","v4.7","x86","Exe","AddNKRMaterials","System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","AddNKRMaterials","_v2.5\P_Rec_Spec\10.0.1.2\source\AddNKRMaterials\AddNKRMaterials\AddNKRMaterials.csproj","v4.7","x86","Exe","AddNKRMaterials","System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","AddNKRMaterials","_v2.5\P_Rec_Spec\10.0.1.3\source\AddNKRMaterials\AddNKRMaterials\AddNKRMaterials.csproj","v4.7","x86","Exe","AddNKRMaterials","System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","AddNKRMaterials","_v2.5\P_Rec_Spec\10.0.1.4\source\AddNKRMaterials\AddNKRMaterials\AddNKRMaterials.csproj","v4.7","x86","Exe","AddNKRMaterials","System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","AddNKRMaterials","_v2.5\P_Rec_Spec\10.0.1.5\source\AddNKRMaterials\AddNKRMaterials\AddNKRMaterials.csproj","v4.7","x86","Exe","AddNKRMaterials","System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","AddNuts","_v2.5\P_Rec_Spec\_old\AddNuts\AddNuts\AddNuts.csproj","v4.7","x86","Exe","AddNuts","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","AddNuts","_v2.5\P_Rec_Spec\10.0.1.2\source\AddNuts\AddNuts\AddNuts.csproj","v4.7","x86","Exe","AddNuts","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","AddNuts","_v2.5\P_Rec_Spec\10.0.1.3\source\AddNuts\AddNuts\AddNuts.csproj","v4.7","x86","Exe","AddNuts","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","AddNuts","_v2.5\P_Rec_Spec\10.0.1.4\source\AddNuts\AddNuts\AddNuts.csproj","v4.7","x86","Exe","AddNuts","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","AddNuts","_v2.5\P_Rec_Spec\10.0.1.5\source\AddNuts\AddNuts\AddNuts.csproj","v4.7","x86","Exe","AddNuts","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","AddTracingPipeRecords","_v2.5\P_Rec_Spec\_old\AddTracingPipeRecords\AddTracingPipeRecords\AddTracingPipeRecords.csproj","v4.7","x86","Exe","AddTracingPipeRecords","System|System.Core|System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=AMD64|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","yes","not observed","yes"
|
||||||
|
"P_Rec_Spec","AddTracingPipeRecords","_v2.5\P_Rec_Spec\10.0.1.2\source\AddTracingPipeRecords\AddTracingPipeRecords\AddTracingPipeRecords.csproj","v4.7","x86","Exe","AddTracingPipeRecords","System|System.ComponentModel.DataAnnotations|System.Core|System.Data.SQLite, Version=1.0.118.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","yes","possible","yes"
|
||||||
|
"P_Rec_Spec","AddTracingPipeRecords","_v2.5\P_Rec_Spec\10.0.1.3\source\AddTracingPipeRecords\AddTracingPipeRecords\AddTracingPipeRecords.csproj","v4.7","x86","Exe","AddTracingPipeRecords","System|System.ComponentModel.DataAnnotations|System.Core|System.Data.SQLite, Version=1.0.118.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","yes","possible","yes"
|
||||||
|
"P_Rec_Spec","AddTracingPipeRecords","_v2.5\P_Rec_Spec\10.0.1.4\source\AddTracingPipeRecords\AddTracingPipeRecords\AddTracingPipeRecords.csproj","v4.7","x86","Exe","AddTracingPipeRecords","System|System.ComponentModel.DataAnnotations|System.Core|System.Data.SQLite, Version=1.0.118.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","yes","possible","yes"
|
||||||
|
"P_Rec_Spec","AddTracingPipeRecords","_v2.5\P_Rec_Spec\10.0.1.5\source\AddTracingPipeRecords\AddTracingPipeRecords\AddTracingPipeRecords.csproj","v4.7","x86","Exe","AddTracingPipeRecords","System|System.ComponentModel.DataAnnotations|System.Core|System.Data.SQLite, Version=1.0.118.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","yes","possible","yes"
|
||||||
|
"P_Rec_Spec","AddUnstandardMaterialsRecords","_v2.5\P_Rec_Spec\_old\AddUnstandardMaterialsRecords\AddUnstandardMaterialsRecords\AddUnstandardMaterialsRecords.csproj","v4.7","x86","Exe","AddUnstandardMaterialsRecords","|System|System.Data|System.XML|","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","AddUnstandardMaterialsRecords","_v2.5\P_Rec_Spec\10.0.1.2\source\AddUnstandardMaterialsRecords\AddUnstandardMaterialsRecords\AddUnstandardMaterialsRecords.csproj","v4.7","x86","Exe","AddUnstandardMaterialsRecords","|System|System.Data|System.XML|","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","AddUnstandardMaterialsRecords","_v2.5\P_Rec_Spec\10.0.1.3\source\AddUnstandardMaterialsRecords\AddUnstandardMaterialsRecords\AddUnstandardMaterialsRecords.csproj","v4.7","x86","Exe","AddUnstandardMaterialsRecords","|System|System.Data|System.XML|","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","AddUnstandardMaterialsRecords","_v2.5\P_Rec_Spec\10.0.1.4\source\AddUnstandardMaterialsRecords\AddUnstandardMaterialsRecords\AddUnstandardMaterialsRecords.csproj","v4.7","x86","Exe","AddUnstandardMaterialsRecords","|System|System.Data|System.XML|","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","AddUnstandardMaterialsRecords","_v2.5\P_Rec_Spec\10.0.1.5\source\AddUnstandardMaterialsRecords\AddUnstandardMaterialsRecords\AddUnstandardMaterialsRecords.csproj","v4.7","x86","Exe","AddUnstandardMaterialsRecords","|System|System.Data|System.XML|","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","EditProjectProperties","_v2.5\P_Rec_Spec\_old\EditProjectProperties\EditProjectProperties\EditProjectProperties.csproj","v4.7","x86","Exe","EditProjectProperties","System|System.Core|System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=AMD64|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|||","","yes","not observed","yes"
|
||||||
|
"P_Rec_Spec","EditProjectProperties","_v2.5\P_Rec_Spec\10.0.1.2\source\EditProjectProperties\EditProjectProperties\EditProjectProperties.csproj","v4.7","x86","Exe","EditProjectProperties","System|System.Core|System.Data.SQLite|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||||","","yes","not observed","yes"
|
||||||
|
"P_Rec_Spec","EditProjectProperties","_v2.5\P_Rec_Spec\10.0.1.3\source\EditProjectProperties\EditProjectProperties\EditProjectProperties.csproj","v4.7","x86","Exe","EditProjectProperties","System|System.Core|System.Data.SQLite|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||||","","yes","not observed","yes"
|
||||||
|
"P_Rec_Spec","EditProjectProperties","_v2.5\P_Rec_Spec\10.0.1.4\source\EditProjectProperties\EditProjectProperties\EditProjectProperties.csproj","v4.7","x86","Exe","EditProjectProperties","System|System.Core|System.Data.SQLite|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||||","","yes","not observed","yes"
|
||||||
|
"P_Rec_Spec","EditProjectProperties","_v2.5\P_Rec_Spec\10.0.1.5\source\EditProjectProperties\EditProjectProperties\EditProjectProperties.csproj","v4.7","x86","Exe","EditProjectProperties","System|System.Core|System.Data.SQLite|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||||","","yes","not observed","yes"
|
||||||
|
"P_Rec_Spec","ExcludeExistingComponentRecords","_v2.5\P_Rec_Spec\_old\ExcludeExistingComponentRecords\ExcludeExistingComponentRecords\ExcludeExistingComponentRecords.csproj","v4.7","x86","Exe","ExcludeExistingComponentRecords","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","ExcludeExistingComponentRecords","_v2.5\P_Rec_Spec\10.0.1.2\source\ExcludeExistingComponentRecords\ExcludeExistingComponentRecords\ExcludeExistingComponentRecords.csproj","v4.7","x86","Exe","ExcludeExistingComponentRecords","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","ExcludeExistingComponentRecords","_v2.5\P_Rec_Spec\10.0.1.3\source\ExcludeExistingComponentRecords\ExcludeExistingComponentRecords\ExcludeExistingComponentRecords.csproj","v4.7","x86","Exe","ExcludeExistingComponentRecords","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","ExcludeExistingComponentRecords","_v2.5\P_Rec_Spec\10.0.1.4\source\ExcludeExistingComponentRecords\ExcludeExistingComponentRecords\ExcludeExistingComponentRecords.csproj","v4.7","x86","Exe","ExcludeExistingComponentRecords","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","ExcludeExistingComponentRecords","_v2.5\P_Rec_Spec\10.0.1.5\source\ExcludeExistingComponentRecords\ExcludeExistingComponentRecords\ExcludeExistingComponentRecords.csproj","v4.7","x86","Exe","ExcludeExistingComponentRecords","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","GetAssemblies","_v2.5\P_Rec_Spec\_old\GetAssemblies1\GetAssemblies1\GetAssemblies.csproj","v4.7","x86","Exe","GetAssemblies","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","GetAssemblies","_v2.5\P_Rec_Spec\10.0.1.2\source\GetAssemblies1\GetAssemblies1\GetAssemblies.csproj","v4.7","x86","Exe","GetAssemblies","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","GetAssemblies","_v2.5\P_Rec_Spec\10.0.1.3\source\GetAssemblies1\GetAssemblies1\GetAssemblies.csproj","v4.7","x86","Exe","GetAssemblies","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","GetAssemblies","_v2.5\P_Rec_Spec\10.0.1.4\source\GetAssemblies1\GetAssemblies1\GetAssemblies.csproj","v4.7","x86","Exe","GetAssemblies","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","GetAssemblies","_v2.5\P_Rec_Spec\10.0.1.5\source\GetAssemblies1\GetAssemblies1\GetAssemblies.csproj","v4.7","x86","Exe","GetAssemblies","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","GetSpecialAssemblies","_v2.5\P_Rec_Spec\_old\GetSpecialAssemblies\GetSpecialAssemblies\GetSpecialAssemblies.csproj","v4.7","x86","Exe","GetSpecialAssemblies","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","GetSpecialAssemblies","_v2.5\P_Rec_Spec\10.0.1.2\source\GetSpecialAssemblies\GetSpecialAssemblies\GetSpecialAssemblies.csproj","v4.7","x86","Exe","GetSpecialAssemblies","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","GetSpecialAssemblies","_v2.5\P_Rec_Spec\10.0.1.3\source\GetSpecialAssemblies\GetSpecialAssemblies\GetSpecialAssemblies.csproj","v4.7","x86","Exe","GetSpecialAssemblies","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","GetSpecialAssemblies","_v2.5\P_Rec_Spec\10.0.1.4\source\GetSpecialAssemblies\GetSpecialAssemblies\GetSpecialAssemblies.csproj","v4.7","x86","Exe","GetSpecialAssemblies","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","GetSpecialAssemblies","_v2.5\P_Rec_Spec\10.0.1.5\source\GetSpecialAssemblies\GetSpecialAssemblies\GetSpecialAssemblies.csproj","v4.7","x86","Exe","GetSpecialAssemblies","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","GroupRecords","_v2.5\P_Rec_Spec\_old\GroupRecords\GroupRecords\GroupRecords.csproj","v4.7","x86","Exe","GroupRecords","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","GroupRecords","_v2.5\P_Rec_Spec\10.0.1.2\source\GroupRecords\GroupRecords\GroupRecords.csproj","v4.7","x86","Exe","GroupRecords","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","GroupRecords","_v2.5\P_Rec_Spec\10.0.1.3\source\GroupRecords\GroupRecords\GroupRecords.csproj","v4.7","x86","Exe","GroupRecords","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","GroupRecords","_v2.5\P_Rec_Spec\10.0.1.4\source\GroupRecords\GroupRecords\GroupRecords.csproj","v4.7","x86","Exe","GroupRecords","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","GroupRecords","_v2.5\P_Rec_Spec\10.0.1.5\source\GroupRecords\GroupRecords\GroupRecords.csproj","v4.7","x86","Exe","GroupRecords","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","OutputSpecificationToWord","_v2.5\P_Rec_Spec\_old\OutputSpecificationToWord\OutputSpecificationToWord\OutputSpecificationToWord.csproj","v4.7","x86","Exe","OutputSpecificationToWord","System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","OutputSpecificationToWord","_v2.5\P_Rec_Spec\10.0.1.2\source\OutputSpecificationToWord\OutputSpecificationToWord\OutputSpecificationToWord.csproj","v4.7","x86","Exe","OutputSpecificationToWord","System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","OutputSpecificationToWord","_v2.5\P_Rec_Spec\10.0.1.3\source\OutputSpecificationToWord\OutputSpecificationToWord\OutputSpecificationToWord.csproj","v4.7","x86","Exe","OutputSpecificationToWord","System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","OutputSpecificationToWord","_v2.5\P_Rec_Spec\10.0.1.4\source\OutputSpecificationToWord\OutputSpecificationToWord\OutputSpecificationToWord.csproj","v4.7","x86","Exe","OutputSpecificationToWord","System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","OutputSpecificationToWord","_v2.5\P_Rec_Spec\10.0.1.5\source\OutputSpecificationToWord\OutputSpecificationToWord\OutputSpecificationToWord.csproj","v4.7","x86","Exe","OutputSpecificationToWord","System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","PipeBendMakePipe","_v2.5\P_Rec_Spec\_old\PipeBendMakePipe\PipeBendMakePipe\PipeBendMakePipe.csproj","v4.7","x86","Exe","PipeBendMakePipe","System|System.Core|System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=AMD64|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","yes","not observed","yes"
|
||||||
|
"P_Rec_Spec","PipeBendMakePipe","_v2.5\P_Rec_Spec\10.0.1.2\source\PipeBendMakePipe\PipeBendMakePipe\PipeBendMakePipe.csproj","v4.7","x86","Exe","PipeBendMakePipe","System|System.ComponentModel.DataAnnotations|System.Core|System.Data.SQLite, Version=1.0.118.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","yes","possible","yes"
|
||||||
|
"P_Rec_Spec","PipeBendMakePipe","_v2.5\P_Rec_Spec\10.0.1.3\source\PipeBendMakePipe\PipeBendMakePipe\PipeBendMakePipe.csproj","v4.7","x86","Exe","PipeBendMakePipe","System|System.ComponentModel.DataAnnotations|System.Core|System.Data.SQLite, Version=1.0.118.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","yes","possible","yes"
|
||||||
|
"P_Rec_Spec","PipeBendMakePipe","_v2.5\P_Rec_Spec\10.0.1.4\source\PipeBendMakePipe\PipeBendMakePipe\PipeBendMakePipe.csproj","v4.7","x86","Exe","PipeBendMakePipe","System|System.ComponentModel.DataAnnotations|System.Core|System.Data.SQLite, Version=1.0.118.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","yes","possible","yes"
|
||||||
|
"P_Rec_Spec","PipeBendMakePipe","_v2.5\P_Rec_Spec\10.0.1.5\source\PipeBendMakePipe\PipeBendMakePipe\PipeBendMakePipe.csproj","v4.7","x86","Exe","PipeBendMakePipe","System|System.ComponentModel.DataAnnotations|System.Core|System.Data.SQLite, Version=1.0.118.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","yes","possible","yes"
|
||||||
|
"P_Rec_Spec","RemoveLeftAndRightFromScriptName","_v2.5\P_Rec_Spec\_old\RemoveLeftAndRightFromScroptName\RemoveLeftAndRightFromScroptName\RemoveLeftAndRightFromScriptName.csproj","v4.7","x86","Exe","RemoveLeftAndRightFromScriptName","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","RemoveLeftAndRightFromScriptName","_v2.5\P_Rec_Spec\10.0.1.2\source\RemoveLeftAndRightFromScroptName\RemoveLeftAndRightFromScroptName\RemoveLeftAndRightFromScriptName.csproj","v4.7","x86","Exe","RemoveLeftAndRightFromScriptName","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","RemoveLeftAndRightFromScriptName","_v2.5\P_Rec_Spec\10.0.1.3\source\RemoveLeftAndRightFromScroptName\RemoveLeftAndRightFromScroptName\RemoveLeftAndRightFromScriptName.csproj","v4.7","x86","Exe","RemoveLeftAndRightFromScriptName","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","RemoveLeftAndRightFromScriptName","_v2.5\P_Rec_Spec\10.0.1.4\source\RemoveLeftAndRightFromScroptName\RemoveLeftAndRightFromScroptName\RemoveLeftAndRightFromScriptName.csproj","v4.7","x86","Exe","RemoveLeftAndRightFromScriptName","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","RemoveLeftAndRightFromScriptName","_v2.5\P_Rec_Spec\10.0.1.5\source\RemoveLeftAndRightFromScroptName\RemoveLeftAndRightFromScroptName\RemoveLeftAndRightFromScriptName.csproj","v4.7","x86","Exe","RemoveLeftAndRightFromScriptName","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","ResetLostBoltSetsAndGaskets","_v2.5\P_Rec_Spec\_old\ResetLostBoltSetsAndGaskets\ResetLostBoltSetsAndGaskets\ResetLostBoltSetsAndGaskets.csproj","v4.7","x86","Exe","ResetLostBoltSetsAndGaskets","|System|System.Data|System.XML|","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","ResetLostBoltSetsAndGaskets","_v2.5\P_Rec_Spec\10.0.1.2\source\ResetLostBoltSetsAndGaskets\ResetLostBoltSetsAndGaskets\ResetLostBoltSetsAndGaskets.csproj","v4.7","x86","Exe","ResetLostBoltSetsAndGaskets","|System|System.Data|System.XML|","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","ResetLostBoltSetsAndGaskets","_v2.5\P_Rec_Spec\10.0.1.3\source\ResetLostBoltSetsAndGaskets\ResetLostBoltSetsAndGaskets\ResetLostBoltSetsAndGaskets.csproj","v4.7","x86","Exe","ResetLostBoltSetsAndGaskets","|System|System.Data|System.XML|","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","ResetLostBoltSetsAndGaskets","_v2.5\P_Rec_Spec\10.0.1.4\source\ResetLostBoltSetsAndGaskets\ResetLostBoltSetsAndGaskets\ResetLostBoltSetsAndGaskets.csproj","v4.7","x86","Exe","ResetLostBoltSetsAndGaskets","|System|System.Data|System.XML|","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","ResetLostBoltSetsAndGaskets","_v2.5\P_Rec_Spec\10.0.1.5\source\ResetLostBoltSetsAndGaskets\ResetLostBoltSetsAndGaskets\ResetLostBoltSetsAndGaskets.csproj","v4.7","x86","Exe","ResetLostBoltSetsAndGaskets","|System|System.Data|System.XML|","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","SetComponentGroup","_v2.5\P_Rec_Spec\_old\SetComponentGroup\SetComponentGroup\SetComponentGroup.csproj","v4.7","x86","Exe","SetComponentGroup","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","SetComponentGroup","_v2.5\P_Rec_Spec\10.0.1.2\source\SetComponentGroup\SetComponentGroup\SetComponentGroup.csproj","v4.7","x86","Exe","SetComponentGroup","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","SetComponentGroup","_v2.5\P_Rec_Spec\10.0.1.3\source\SetComponentGroup\SetComponentGroup\SetComponentGroup.csproj","v4.7","x86","Exe","SetComponentGroup","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","SetComponentGroup","_v2.5\P_Rec_Spec\10.0.1.4\source\SetComponentGroup\SetComponentGroup\SetComponentGroup.csproj","v4.7","x86","Exe","SetComponentGroup","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","SetComponentGroup","_v2.5\P_Rec_Spec\10.0.1.5\source\SetComponentGroup\SetComponentGroup\SetComponentGroup.csproj","v4.7","x86","Exe","SetComponentGroup","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","SetParentComponentInChain","_v2.5\P_Rec_Spec\_old\SetParentComponentInChain\SetParentComponentInChain\SetParentComponentInChain.csproj","v4.7","x86","Exe","SetParentComponentInChain","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","SetParentComponentInChain","_v2.5\P_Rec_Spec\10.0.1.2\source\SetParentComponentInChain\SetParentComponentInChain\SetParentComponentInChain.csproj","v4.7","x86","Exe","SetParentComponentInChain","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","SetParentComponentInChain","_v2.5\P_Rec_Spec\10.0.1.3\source\SetParentComponentInChain\SetParentComponentInChain\SetParentComponentInChain.csproj","v4.7","x86","Exe","SetParentComponentInChain","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","SetParentComponentInChain","_v2.5\P_Rec_Spec\10.0.1.4\source\SetParentComponentInChain\SetParentComponentInChain\SetParentComponentInChain.csproj","v4.7","x86","Exe","SetParentComponentInChain","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","SetParentComponentInChain","_v2.5\P_Rec_Spec\10.0.1.5\source\SetParentComponentInChain\SetParentComponentInChain\SetParentComponentInChain.csproj","v4.7","x86","Exe","SetParentComponentInChain","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","SortNKR","_v2.5\P_Rec_Spec\_old\SortNKR\SortNKR\SortNKR.csproj","v4.7","x86","Exe","SortNKR","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","SortNKR","_v2.5\P_Rec_Spec\10.0.1.2\source\SortNKR\SortNKR\SortNKR.csproj","v4.7","x86","Exe","SortNKR","System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","SortNKR","_v2.5\P_Rec_Spec\10.0.1.3\source\SortNKR\SortNKR\SortNKR.csproj","v4.7","x86","Exe","SortNKR","System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","SortNKR","_v2.5\P_Rec_Spec\10.0.1.4\source\SortNKR\SortNKR\SortNKR.csproj","v4.7","x86","Exe","SortNKR","System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","SortNKR","_v2.5\P_Rec_Spec\10.0.1.5\source\SortNKR\SortNKR\SortNKR.csproj","v4.7","x86","Exe","SortNKR","System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","SpecificationSelection","_v2.5\P_Rec_Spec\_old\SpecificationSelection\SpecificationSelection\SpecificationSelection.csproj","v4.7","x86","Exe","SpecificationSelection","System|System.Core|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|System.Management.Automation||||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","SpecificationSelection","_v2.5\P_Rec_Spec\10.0.1.2\source\SpecificationSelection\SpecificationSelection\SpecificationSelection.csproj","v4.7","x86","Exe","SpecificationSelection","System|System.Core|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|System.Management.Automation|||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","SpecificationSelection","_v2.5\P_Rec_Spec\10.0.1.3\source\SpecificationSelection\SpecificationSelection\SpecificationSelection.csproj","v4.7","x86","Exe","SpecificationSelection","System|System.Core|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|System.Management.Automation|||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","SpecificationSelection","_v2.5\P_Rec_Spec\10.0.1.4\source\SpecificationSelection\SpecificationSelection\SpecificationSelection.csproj","v4.7","x86","Exe","SpecificationSelection","System|System.Core|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|System.Management.Automation|||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","SpecificationSelection","_v2.5\P_Rec_Spec\10.0.1.5\source\SpecificationSelection\SpecificationSelection\SpecificationSelection.csproj","v4.7","x86","Exe","SpecificationSelection","System|System.Core|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|System.Management.Automation|||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","UpdateBoltSets","_v2.5\P_Rec_Spec\_old\UpdateBoltSets\UpdateBoltSets\UpdateBoltSets.csproj","v4.7","x86","Exe","UpdateBoltSets","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","UpdateBoltSets","_v2.5\P_Rec_Spec\10.0.1.2\source\UpdateBoltSets\UpdateBoltSets\UpdateBoltSets.csproj","v4.7","x86","Exe","UpdateBoltSets","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","UpdateBoltSets","_v2.5\P_Rec_Spec\10.0.1.3\source\UpdateBoltSets\UpdateBoltSets\UpdateBoltSets.csproj","v4.7","x86","Exe","UpdateBoltSets","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","UpdateBoltSets","_v2.5\P_Rec_Spec\10.0.1.4\source\UpdateBoltSets\UpdateBoltSets\UpdateBoltSets.csproj","v4.7","x86","Exe","UpdateBoltSets","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_Spec","UpdateBoltSets","_v2.5\P_Rec_Spec\10.0.1.5\source\UpdateBoltSets\UpdateBoltSets\UpdateBoltSets.csproj","v4.7","x86","Exe","UpdateBoltSets","System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P_Rec_TextDoc","P_Rec_TextDoc","_v2.5\P_Rec_TextDoc\P_Rec_TextDoc\P_Rec_TextDoc.csproj","v4.7","x86","WinExe","P_Rec_TextDoc","System|System.Core|System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=AMD64|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Deployment|System.Drawing|System.Windows.Forms|System.Xml||","","yes","not observed","yes"
|
||||||
|
"P_Rec_Update","P_Rec_Update","_v2.1\P_Rec_Update\P_Rec_Update\P_Rec_Update.csproj","v4.7","x64","Library","P_Rec_Update","accoremgd|acdbmgd|acmgd|EnablerLoader, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|GetComponentGeometryDescription, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Data.SQLite|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","yes","possible","yes"
|
||||||
|
"P_Rec_Update","P_Rec_Update","P_Rec_Update\P_Rec_Update\P_Rec_Update.csproj","v4.7","x64","Library","P_Rec_Update","accoremgd|acdbmgd|acmgd|AdWindows|GetComponentGeometryDescription|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|PresentationCore|PresentationFramework|System|System.Core|System.Data.SQLite|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Net.Http|System.Xml|WindowsBase|||||","acmgd|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","yes","possible","yes"
|
||||||
|
"P_Serv_ActualizeProjectBySpec","P_Serv_ActualizeProjectBySpec","_v3.0\P_Serv_ActualizeProjectBySpec\repo\P_Serv_ActualizeProjectBySpec\P_Serv_ActualizeProjectBySpec.csproj","v4.7","x64","Library","P_Serv_ActualizeProjectBySpec","AcCoreMgd|AcDbMgd|AcMgd|PnP3dObjectsMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Data.SQLite|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|||","AcMgd|PnP3dObjectsMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","yes","not observed","yes"
|
||||||
|
"P_Serv_CompP3D","P_Serv_CompP3D","_v2.5\P_Serv_CompP3D\P_Serv_CompP3D\P_Serv_CompP3D.csproj","v4.7",,"Library","P_Serv_CompP3D","accoremgd|acdbmgd|acmgd|PnP3dObjectsMgd|System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnP3dObjectsMgd","no","not observed","yes"
|
||||||
|
"P_Serv_CreateLineGroupAnnotationText","P_Serv_CreateLineGroupAnnotationText","P_Serv_CreateLineGroupAnnotationText\P_Serv_CreateLineGroupAnnotationText\P_Serv_CreateLineGroupAnnotationText\P_Serv_CreateLineGroupAnnotationText.csproj","v4.7",,"Library","P_Serv_CreateLineGroupAnnotationText","accoremgd|acdbmgd|acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Net.Http|System.Xml||","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Serv_Master","P_Serv_Master","_v2.5\P_Serv_Master\P_Serv_Master\P_Serv_Master.csproj","v4.7",,"Library","P_Serv_Master","accoremgd|acdbmgd|acmgd|Microsoft.CSharp|PnP3dDataLinkManager|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|System.Data|System.Xml|","acmgd|PnP3dDataLinkManager|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P_Serv_UpdateLinearWeight","P_Serv_UpdateLinearWeight","_v3.0\P_Serv_UpdateLinearWeight\repo\P_Serv_UpdateLinearWeight\P_Serv_UpdateLinearWeight.csproj","v4.7","x64","Library","P_Serv_UpdateLinearWeight","AcCoreMgd|AcDbMgd|AcMgd|PnP3dObjectsMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Data.SQLite|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|||","AcMgd|PnP3dObjectsMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","yes","not observed","yes"
|
||||||
|
"P_Serv_UpSpecs","P_Serv_UpSpecs","_v2.5\P_Serv_UpSpecs\P_Serv_UpSpecs\P_Serv_UpSpecs.csproj","v4.7",,"Library","P_Serv_UpSpecs","accoremgd|acdbmgd|acmgd|PnP3dObjectsMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=AMD64|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","acmgd|PnP3dObjectsMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","yes","not observed","yes"
|
||||||
|
"P_Task_MO07","P_Task_MO07","_v2.5\P_Task_MO07\P_Task_MO07\P_Task_MO07.csproj","v4.7",,"Library","P_Task_MO07","accoremgd|acdbmgd|acmgd|CheckOrthoView|EPPlus|P3DCopyMissingObjectsToOrthoDrawing|P3DSetLayerForViewport|PnP3dObjectsMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Net.Http|System.Xml|","acmgd|PnP3dObjectsMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P3DCheckProject","EnablerLoader","_v2.0\P3DCheckProject\EnablerLoader\EnablerLoader\EnablerLoader.csproj","v4.0",,"Library","EnablerLoader","accoremgd|acdbmgd|LoadedAssemblies|System|Microsoft.CSharp|System.Windows.Forms|","","no","not observed","yes"
|
||||||
|
"P3DCheckProject","LoadedAssemblies","_v2.0\P3DCheckProject\LoadedAssemblies\LoadedAssemblies\LoadedAssemblies.csproj","v4.0",,"Library","LoadedAssemblies","accoremgd|acdbmgd|System|Microsoft.CSharp|","","no","not observed","yes"
|
||||||
|
"P3DCheckProject","P3DCheckProject","_v2.0\P3DCheckProject\P3DCheckProject\P3DCheckProject\P3DCheckProject.csproj","v4.7",,"Library","P3DCheckProject","accoremgd|acdbmgd|acmgd|EnablerLoader|HelpDesk|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Net.Http|System.Xml||","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P3DCommands","P3DCommands","_v2.0\P3DCommands\P3DCommands\P3DCommands\P3DCommands.csproj","v4.0","x86","Library","P3DCommands","|accoremgd|acdbmgd|acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|PresentationCore|System|System.Data|System.DirectoryServices|System.Drawing|System.Windows.Forms|System.Xml|","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P3DCommands","P3DCommands","_v2.5\P3DCommands\P3DCommands\P3DCommands\P3DCommands.csproj","v4.7","x86","Library","P3DCommands","|accoremgd|acdbmgd|acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|PresentationCore|System|System.Data|System.DirectoryServices|System.Drawing|System.Windows.Forms|System.Xml|","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P3DCopyMissingObjectsToOrthoDrawing.csproj","P3DCopyMissingObjectsToOrthoDrawing","_v2.0\OrthoTools.2019\2019_P3DCopyMissingObjectsToOrthoDrawing\2019_P3DCopyMissingObjectsToOrthoDrawing\P3DCopyMissingObjectsToOrthoDrawing.csproj","v4.7",,"Library","P3DCopyMissingObjectsToOrthoDrawing","accoremgd|acdbmgd|acmgd|PnPProjectManagerMgd|System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P3DCorrectBoltsetLengths","P3DCorrectBoltsetLengths","P3DCorrectBoltsetLengths\old\P3DCorrectBoltsetLengths\P3DCorrectBoltsetLengths.csproj","v4.0",,"Library","P3DCorrectBoltsetLengths","accoremgd|acdbmgd|acmgd|EnablerLoader, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P3DCorrectBoltsetLengths","P3DCorrectBoltsetLengths","P3DCorrectBoltsetLengths\repo\P3DCorrectBoltsetLengths\P3DCorrectBoltsetLengths.csproj","v4.7",,"Library","P3DCorrectBoltsetLengths","accoremgd|acdbmgd|acmgd|EnablerLoader, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P3DDeleteNewLineInValues","P3DDeleteNewLineInValues","_v2.0\P3DDeleteNewLineInValues\P3DDeleteNewLineInValues\P3DDeleteNewLineInValues\P3DDeleteNewLineInValues.csproj","v4.0",,"Library","P3DDeleteNewLineInValues","accoremgd|acdbmgd|acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P3DDeleteNewLineInValues","P3DDeleteNewLineInValues","_v2.5\P3DDeleteNewLineInValues\P3DDeleteNewLineInValues\P3DDeleteNewLineInValues.csproj","v4.7",,"Library","P3DDeleteNewLineInValues","accoremgd|acdbmgd|acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P3DEnumerateSupports","CheckOrthoView","_v2.0\P3DEnumerateSupports\2019_CheckOrthoView\2019_CheckOrthoView\CheckOrthoView.csproj","v4.0",,"Library","CheckOrthoView","accoremgd|acdbmgd|acmgd|EnablerLoader|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.DirectoryServices|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P3DEnumerateSupports","EnablerLoader","_v2.0\P3DEnumerateSupports\EnablerLoader\EnablerLoader\EnablerLoader.csproj","v4.0",,"Library","EnablerLoader","accoremgd|acdbmgd|LoadedAssemblies|System|Microsoft.CSharp|System.Windows.Forms|","","no","not observed","yes"
|
||||||
|
"P3DEnumerateSupports","LoadedAssemblies","_v2.0\P3DEnumerateSupports\LoadedAssemblies\LoadedAssemblies\LoadedAssemblies.csproj","v4.0",,"Library","LoadedAssemblies","accoremgd|acdbmgd|System|Microsoft.CSharp|","","no","not observed","yes"
|
||||||
|
"P3DEnumerateSupports","P3DCopyMissingObjectsToOrthoDrawing","_v2.0\P3DEnumerateSupports\2019_P3DCopyMissingObjectsToOrthoDrawing\2019_P3DCopyMissingObjectsToOrthoDrawing\P3DCopyMissingObjectsToOrthoDrawing.csproj","v4.7",,"Library","P3DCopyMissingObjectsToOrthoDrawing","accoremgd|acdbmgd|acmgd|PnPProjectManagerMgd|System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P3DEnumerateSupports","P3DEnumerateSupports","_v2.0\P3DEnumerateSupports\P3DEnumerateSupports\P3DEnumerateSupports\P3DEnumerateSupports.csproj","v4.7",,"Library","P3DEnumerateSupports","accoremgd|acdbmgd|acmgd|CheckOrthoView|EPPlus|P3DCopyMissingObjectsToOrthoDrawing|P3DSetLayerForViewport|PnP3dObjectsMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Net.Http|System.Xml|","acmgd|PnP3dObjectsMgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P3DGetBoltsetReport","P3DGetBoltsetReport","P3DGetBoltsetReport\P3DGetBoltsetReport\P3DGetBoltsetReport.csproj","v4.0",,"Library","P3DGetBoltsetReport","accoremgd|acdbmgd|acmgd|EnablerLoader|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","acmgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P3DGetPnPId","P3DGetPnPId","_v2.0\P3DGetPnPId\P3DGetPnPId\P3DGetPnPId\P3DGetPnPId.csproj","v4.0",,"Library","P3DGetPnPId","accoremgd|acdbmgd|acmgd|PnP3dObjectsMgd|System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnP3dObjectsMgd","no","not observed","yes"
|
||||||
|
"P3DGetReportNew","P3DGetReport","_v2.0\Отчет элементов по линиям\P3DGetReportNew\P3DGetReportNew\P3DGetReport.csproj","v4.0","AnyCPU","Exe","P3DGetReport","System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","","no","not observed","yes"
|
||||||
|
"P3DGetReportNew","P3DGetReport","_v2.5\Отчет элементов по линиям\P3DGetReportNew\P3DGetReportNew\P3DGetReport.csproj","v4.7","AnyCPU","Exe","P3DGetReport","System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","","no","not observed","yes"
|
||||||
|
"P3DPlotToPdfIsoMasterfile","P3DPlotToPdfIsoMasterfile","_v2.0\P3DPlotToPdfIsoMasterfile\P3DPlotToPdfIsoMasterfile\P3DPlotToPdfIsoMasterfile\P3DPlotToPdfIsoMasterfile.csproj","v4.6",,"Library","P3DPlotToPdfIsoMasterfile","accoremgd|acdbmgd|acmgd|AdWindows|PnPProjectManagerMgd|System|System.Core|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","acmgd|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P3DSelectComponents","P3DSelectComponents","_v2.0\P3DSelectComponents\P3DSelectComponents\P3DSelectComponents\P3DSelectComponents.csproj","v4.7","x86","Library","P3DSelectComponents","|accoremgd|acdbmgd|acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|PresentationCore|System|System.Data|System.Drawing|System.Windows.Forms|System.Xml|","acmgd|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P3DSetLayerForViewport","P3DSetLayerForViewport","_v2.0\OrthoTools.2019\P3DSetLayerForViewport\P3DSetLayerForViewport\P3DSetLayerForViewport.csproj","v4.7",,"Library","P3DSetLayerForViewport","accoremgd|acdbmgd|acmgd|System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd","no","not observed","yes"
|
||||||
|
"P3DUpdateFixedPipeLengths","EnablerLoader","_v2.0\P3DUpdateFixedPipeLengths\EnablerLoader\EnablerLoader\EnablerLoader.csproj","v4.0",,"Library","EnablerLoader","accoremgd|acdbmgd|LoadedAssemblies|System|Microsoft.CSharp|System.Windows.Forms|","","no","not observed","yes"
|
||||||
|
"P3DUpdateFixedPipeLengths","GetComponentGeometryDescription","_v2.0\P3DUpdateFixedPipeLengths\GetComponentGeometryDescription - 2018\GetComponentGeometryDescription\GetComponentGeometryDescription.csproj","v4.7.2",,"Library","GetComponentGeometryDescription","accoremgd|acdbmgd|acmgd|Autodesk.AutoCAD.Interop, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|Autodesk.AutoCAD.Interop.Common, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|PnP3dObjectsMgd|PnP3dPartsRepository|PnPProjectManagerMgd|System|System.Core|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|Autodesk.AutoCAD.Interop, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|Autodesk.AutoCAD.Interop.Common, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL|PnP3dObjectsMgd|PnP3dPartsRepository|PnPProjectManagerMgd","no","possible","yes"
|
||||||
|
"P3DUpdateFixedPipeLengths","LoadedAssemblies","_v2.0\P3DUpdateFixedPipeLengths\LoadedAssemblies\LoadedAssemblies\LoadedAssemblies.csproj","v4.0",,"Library","LoadedAssemblies","accoremgd|acdbmgd|System|Microsoft.CSharp|","","no","not observed","yes"
|
||||||
|
"P3DUpdateFixedPipeLengths","P3DUpdateFixedPipeLengths","_v2.0\P3DUpdateFixedPipeLengths\2019_P3DUpdateFixedPipeLengths\2019_P3DUpdateFixedPipeLengths\P3DUpdateFixedPipeLengths.csproj","v4.7",,"Library","P3DUpdateFixedPipeLengths","accoremgd|acdbmgd|acmgd|AdWindows|EnablerLoader|GetComponentGeometryDescription|LoadedAssemblies, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","possible","yes"
|
||||||
|
"P3DUpdateFixedPipeLengths","P3DUpdateFixedPipeLengths","_v2.5\P3DUpdateFixedPipeLengths\P3DUpdateFixedPipeLengths\P3DUpdateFixedPipeLengths.csproj","v4.7",,"Library","P3DUpdateFixedPipeLengths","accoremgd|acdbmgd|acmgd|AdWindows|EnablerLoader|GetComponentGeometryDescription|LoadedAssemblies, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","possible","yes"
|
||||||
|
"P3DUpdateFlanges","P3DUpdateFlanges","_v2.0\P3DUpdateFlanges\P3DUpdateFlanges\P3DUpdateFlanges.csproj","v4.7.2",,"Library","P3DUpdateFlanges","accoremgd|acdbmgd|acmgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P3DUpdateFlanges","P3DUpdateFlanges","_v2.5\P3DUpdateFlanges\_prev v.0.0.8\P3DUpdateFlanges\P3DUpdateFlanges.csproj","v4.7",,"Library","P3DUpdateFlanges","accoremgd|acdbmgd|acmgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|","acmgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P3DUpdateFlanges","P3DUpdateFlanges","_v2.5\P3DUpdateFlanges\repo\P3DUpdateFlanges\P3DUpdateFlanges.csproj","v4.7","x64","Library","P3DUpdateFlanges","accoremgd|acdbmgd|acmgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml||","acmgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","no","not observed","yes"
|
||||||
|
"P3DUpdateValves","2019_P3DUpdateValves","_v2.0\P3DUpdateValves\P3DUpdateValves\2019_P3DUpdateValves\2019_P3DUpdateValves.csproj","v4.7",,"Library","P3DUpdateValves","accoremgd|acdbmgd|acmgd|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=AMD64|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|||","acmgd|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","yes","not observed","yes"
|
||||||
|
"P3DUpdateValves","P3DUpdateValves","_v2.5\P3DUpdateValves\P3DUpdateValves\P3DUpdateValves.csproj","v4.7",,"Library","P3DUpdateValves","accoremgd|acdbmgd|acmgd|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd|System|System.Core|System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=AMD64|System.Drawing|System.Windows.Forms|System.Xml.Linq|System.Data.DataSetExtensions|Microsoft.CSharp|System.Data|System.Xml|||","acmgd|PnP3dObjectsMgd|PnP3dPartsRepository|PnPDataLinks|PnPDataObjects|PnPProjectManagerMgd","yes","not observed","yes"
|
||||||
|
@@ -0,0 +1,60 @@
|
|||||||
|
"family","module","canonical_source_path","latest_probable_version","component_type","user_command","purpose","user_workflow","input","output","data_modified","autodesk_api_area","custom_dependencies","native_2026_candidate","native_difference","primary_status","business_criticality","migration_complexity","evidence_confidence","runtime_test","source_evidence","official_source_reference","notes"
|
||||||
|
"P_Check_CompP3D","__family__","_v2.5\Applications\P_Check_CompP3D","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","UNKNOWN","unknown","high","weak","required","_v2.5\Applications\P_Check_CompP3D","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Check_Pipe","__family__","_v2.5\Applications\P_Check_Pipe","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","UNKNOWN","unknown","high","weak","required","_v2.5\Applications\P_Check_Pipe","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Check_Project","__family__","_v2.5\Applications\P_Check_Project","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","UNKNOWN","unknown","high","weak","required","_v2.5\Applications\P_Check_Project","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Exp_EquipToRevit","__family__","P_Exp_EquipToRevit","not established","mixed/unknown","not established","Export equipment/Plant data to a Revit workflow","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","OFFICIAL_RESEARCH_REQUIRED","unknown","high","weak","required","P_Exp_EquipToRevit","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Exp_To5DSmeta","__family__","P_Exp_To5DSmeta","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","REVIEW_USAGE","unknown","high","weak","required","P_Exp_To5DSmeta","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Exp_ToHydra","__family__","_v2.5\Applications\P_Exp_ToHydra","not established","mixed/unknown","not established","Export data to corporate Hydra workflow","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","REVIEW_USAGE","unknown","high","weak","required","_v2.5\Applications\P_Exp_ToHydra","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Exp_ToInsul","__family__","_v2.5\P_Exp_ToInsul","not established","mixed/unknown","not established","Export data to corporate Insul workflow","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","REVIEW_USAGE","unknown","high","weak","required","_v2.5\P_Exp_ToInsul","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Exp_ToRevit_MS","__family__","_v2.5\Applications\P_Exp_ToRevit_MS","not established","mixed/unknown","not established","Export Plant/AutoCAD data to Revit","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","OFFICIAL_RESEARCH_REQUIRED","unknown","high","weak","required","_v2.5\Applications\P_Exp_ToRevit_MS","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Exp_ToStart","__family__","_v2.5\P_Exp_ToStart","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","REVIEW_USAGE","unknown","high","weak","required","_v2.5\P_Exp_ToStart","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Imp_FromPTH","__family__","_v2.5\Applications\P_Imp_FromPTH","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","KEEP_REDESIGN","unknown","high","weak","required","_v2.5\Applications\P_Imp_FromPTH","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Rec_Annot","__family__","_v2.5\Applications\P_Rec_Annot","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","KEEP_REDESIGN","unknown","high","weak","required","_v2.5\Applications\P_Rec_Annot","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Rec_BOP","__family__","_v2.5\P_Rec_BOP (old)","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","UNKNOWN","unknown","high","weak","required","_v2.5\P_Rec_BOP (old)","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Rec_Brac","__family__","_v2.5\Applications\P_Rec_Brac","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","UNKNOWN","unknown","high","weak","required","_v2.5\Applications\P_Rec_Brac","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Rec_Color","__family__","_v2.5\P_Rec_Color","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","UNKNOWN","unknown","high","weak","required","_v2.5\P_Rec_Color","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Rec_PipelineList","__family__","P_Rec_PipelineList","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","UNKNOWN","unknown","high","weak","required","P_Rec_PipelineList","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Rec_Print","__family__","_v2.5\Applications\P_Rec_Print","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","UNKNOWN","unknown","high","weak","required","_v2.5\Applications\P_Rec_Print","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Rec_Spec","__family__","_v2.5\P_Rec_Spec","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","KEEP_REDESIGN","unknown","high","weak","required","_v2.5\P_Rec_Spec","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Rec_TextDoc","__family__","_v2.5\P_Rec_TextDoc","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","UNKNOWN","unknown","high","weak","required","_v2.5\P_Rec_TextDoc","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Rec_Update","__family__","_v2.1\P_Rec_Update","not established","mixed/unknown","not established","Update Plant/PnP data, including flanges and XML/CSV settings","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","KEEP_REDESIGN","unknown","high","weak","required","_v2.1\P_Rec_Update","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Serv_ActualizeProjectBySpec","__family__","_v3.0\P_Serv_ActualizeProjectBySpec","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","KEEP_REDESIGN","unknown","high","weak","required","_v3.0\P_Serv_ActualizeProjectBySpec","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Serv_CompP3D","__family__","_v2.5\Applications\P_Serv_CompP3D","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","KEEP_REDESIGN","unknown","high","weak","required","_v2.5\Applications\P_Serv_CompP3D","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Serv_CreateLineGroupAnnotationText","__family__","P_Serv_CreateLineGroupAnnotationText","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","UNKNOWN","unknown","high","weak","required","P_Serv_CreateLineGroupAnnotationText","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Serv_Master","__family__","_v2.5\P_Serv_Master","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","UNKNOWN","unknown","high","weak","required","_v2.5\P_Serv_Master","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Serv_OpenProject","__family__","P_Serv_OpenProject","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","UNKNOWN","unknown","high","weak","required","P_Serv_OpenProject","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Serv_Starter","__family__","P_Serv_Starter","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","UNKNOWN","unknown","high","weak","required","P_Serv_Starter","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Serv_UpdateLinearWeight","__family__","_v3.0\P_Serv_UpdateLinearWeight","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","KEEP_REDESIGN","unknown","high","weak","required","_v3.0\P_Serv_UpdateLinearWeight","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Serv_UpSpecs","__family__","_v2.5\P_Serv_UpSpecs","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","KEEP_REDESIGN","unknown","high","weak","required","_v2.5\P_Serv_UpSpecs","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Task_MO07","__family__","_v2.5\Applications\P_Task_MO07","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","UNKNOWN","unknown","high","weak","required","_v2.5\Applications\P_Task_MO07","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P3DCheckProject","__family__","_v2.0\P3DCheckProject","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","KEEP_REDESIGN","unknown","high","weak","required","_v2.0\P3DCheckProject","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P3DCommands","__family__","_v2.0\P3DCommands","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","KEEP_REDESIGN","unknown","high","weak","required","_v2.0\P3DCommands","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P3DCorrectBoltsetLengths","__family__","P3DCorrectBoltsetLengths","not established","mixed/unknown","not established","Correct bolt-set length from Plant/PnP data","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","BUG_WORKAROUND_RETEST","unknown","high","weak","required","P3DCorrectBoltsetLengths","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P3DCreateIsoBOM","__family__","_v2.5\Applications\P3DCreateIsoBOM v.0.0.4","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","OFFICIAL_RESEARCH_REQUIRED","unknown","high","weak","required","_v2.5\Applications\P3DCreateIsoBOM v.0.0.4","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P3DDeleteNewLineInValues","__family__","_v2.0\P3DDeleteNewLineInValues","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","BUG_WORKAROUND_RETEST","unknown","high","weak","required","_v2.0\P3DDeleteNewLineInValues","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P3DEnumerateSupports","__family__","_v2.0\P3DEnumerateSupports","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","KEEP_REDESIGN","unknown","high","weak","required","_v2.0\P3DEnumerateSupports","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P3DGetBoltsetReport","__family__","P3DGetBoltsetReport","not established","mixed/unknown","not established","Produce a bolt-set report","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","OFFICIAL_RESEARCH_REQUIRED","unknown","high","weak","required","P3DGetBoltsetReport","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P3DGetPnPId","__family__","_v2.0\P3DGetPnPId","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","REVIEW_USAGE","unknown","high","weak","required","_v2.0\P3DGetPnPId","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P3DGetReportNew","__family__","_v2.0\Отчет элементов по линиям\P3DGetReportNew","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","OFFICIAL_RESEARCH_REQUIRED","unknown","high","weak","required","_v2.0\Отчет элементов по линиям\P3DGetReportNew","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P3DPlotToPdfIsoMasterfile","__family__","_v2.0\P3DPlotToPdfIsoMasterfile","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","REVIEW_USAGE","unknown","high","weak","required","_v2.0\P3DPlotToPdfIsoMasterfile","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P3DSelectComponents","__family__","_v2.0\P3DSelectComponents","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","REVIEW_USAGE","unknown","high","weak","required","_v2.0\P3DSelectComponents","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P3DSetLayerForViewport","__family__","_v2.0\OrthoTools.2019\P3DSetLayerForViewport","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","REVIEW_USAGE","unknown","high","weak","required","_v2.0\OrthoTools.2019\P3DSetLayerForViewport","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P3DUpdateFixedPipeLengths","__family__","_v2.0\P3DUpdateFixedPipeLengths","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","BUG_WORKAROUND_RETEST","unknown","high","weak","required","_v2.0\P3DUpdateFixedPipeLengths","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P3DUpdateFlanges","__family__","_v2.0\P3DUpdateFlanges","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","BUG_WORKAROUND_RETEST","unknown","high","weak","required","_v2.0\P3DUpdateFlanges","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P3DUpdateValves","__family__","_v2.0\P3DUpdateValves","not established","mixed/unknown","not established","Not proven at family level; see modules and evidence","not confirmed","Plant project/drawing or external data","drawing/data/report; varies","possible","see plugin-modules.csv","see plugin-modules.csv","not established","OFFICIAL_RESEARCH_REQUIRED","BUG_WORKAROUND_RETEST","unknown","high","weak","required","_v2.0\P3DUpdateValves","official-sources.md","Copies/releases are not separate families"
|
||||||
|
"P_Rec_Annot","AnnotateLineNumbers","P_Rec_Annot\v1.0.2\repo\AnnotateLineNumbers","v1.0.4 repo/release family","DLL/library","see code-markers.csv","Batch line-number annotations in Ortho drawings","Open Ortho drawing and invoke command or loader","Ortho DWG and Plant PnP data","annotations, view blocks, copied/highlighted objects","drawing and/or linked Ortho data","AutoCAD API + Plant DataLinks/ProjectManager/Ortho","shared P_Rec_Annot modules","Ortho Generation, Ortho Annotate, annotation styles, project setup","Official docs confirm core functions, not exact batch logic","KEEP_REDESIGN","important","high","confirmed","load command and compare single/multi-view output","P_Rec_Annot\v1.0.2\repo\AnnotateLineNumbers","official-sources.md#ortho","Static only"
|
||||||
|
"P_Rec_Annot","AutoAnnotateView","P_Rec_Annot\v1.0.2\repo\AutoAnnotateView","v1.0.4 repo/release family","DLL/library","see code-markers.csv","Automatic annotation update in viewport","Open Ortho drawing and invoke command or loader","Ortho DWG and Plant PnP data","annotations, view blocks, copied/highlighted objects","drawing and/or linked Ortho data","AutoCAD API + Plant DataLinks/ProjectManager/Ortho","shared P_Rec_Annot modules","Ortho Generation, Ortho Annotate, annotation styles, project setup","Official docs confirm core functions, not exact batch logic","KEEP_REDESIGN","important","high","confirmed","load command and compare single/multi-view output","P_Rec_Annot\v1.0.2\repo\AutoAnnotateView","official-sources.md#ortho","Static only"
|
||||||
|
"P_Rec_Annot","AutoElevation","P_Rec_Annot\v1.0.2\repo\AutoElevation","v1.0.4 repo/release family","DLL/library","see code-markers.csv","Automatic elevation annotations","Open Ortho drawing and invoke command or loader","Ortho DWG and Plant PnP data","annotations, view blocks, copied/highlighted objects","drawing and/or linked Ortho data","AutoCAD API + Plant DataLinks/ProjectManager/Ortho","shared P_Rec_Annot modules","Ortho Generation, Ortho Annotate, annotation styles, project setup","Official docs confirm core functions, not exact batch logic","KEEP_REDESIGN","important","high","confirmed","load command and compare single/multi-view output","P_Rec_Annot\v1.0.2\repo\AutoElevation","official-sources.md#ortho","Static only"
|
||||||
|
"P_Rec_Annot","AutoLinenumberConnections","P_Rec_Annot\v1.0.2\repo\AutoLinenumberConnections","v1.0.4 repo/release family","DLL/library","see code-markers.csv","Link line-number annotations to Ortho objects/connectors","Open Ortho drawing and invoke command or loader","Ortho DWG and Plant PnP data","annotations, view blocks, copied/highlighted objects","drawing and/or linked Ortho data","AutoCAD API + Plant DataLinks/ProjectManager/Ortho","shared P_Rec_Annot modules","Ortho Generation, Ortho Annotate, annotation styles, project setup","Official docs confirm core functions, not exact batch logic","KEEP_REDESIGN","important","high","confirmed","load command and compare single/multi-view output","P_Rec_Annot\v1.0.2\repo\AutoLinenumberConnections","official-sources.md#ortho","Static only"
|
||||||
|
"P_Rec_Annot","CheckOrthoView","P_Rec_Annot\v1.0.2\repo\CheckOrthoView","v1.0.4 repo/release family","DLL/library","see code-markers.csv","Detect missing or inconsistent objects in an Ortho view","Open Ortho drawing and invoke command or loader","Ortho DWG and Plant PnP data","annotations, view blocks, copied/highlighted objects","drawing and/or linked Ortho data","AutoCAD API + Plant DataLinks/ProjectManager/Ortho","shared P_Rec_Annot modules","Ortho Generation, Ortho Annotate, annotation styles, project setup","Official docs confirm core functions, not exact batch logic","KEEP_REDESIGN","important","high","confirmed","load command and compare single/multi-view output","P_Rec_Annot\v1.0.2\repo\CheckOrthoView","official-sources.md#ortho","Static only"
|
||||||
|
"P_Rec_Annot","GetComponentGeometry","P_Rec_Annot\v1.0.2\repo\GetComponentGeometry","v1.0.4 repo/release family","DLL/library","see code-markers.csv","Read Plant component geometry and parameters","Open Ortho drawing and invoke command or loader","Ortho DWG and Plant PnP data","annotations, view blocks, copied/highlighted objects","drawing and/or linked Ortho data","AutoCAD API + Plant DataLinks/ProjectManager/Ortho","shared P_Rec_Annot modules","Ortho Generation, Ortho Annotate, annotation styles, project setup","Official docs confirm core functions, not exact batch logic","KEEP_REDESIGN","important","high","confirmed","load command and compare single/multi-view output","P_Rec_Annot\v1.0.2\repo\GetComponentGeometry","official-sources.md#ortho","Static only"
|
||||||
|
"P_Rec_Annot","GetLinenumberAnnotationText","P_Rec_Annot\v1.0.2\repo\GetLinenumberAnnotationText","v1.0.4 repo/release family","DLL/library","see code-markers.csv","Build line-number annotation text from PnP data","Open Ortho drawing and invoke command or loader","Ortho DWG and Plant PnP data","annotations, view blocks, copied/highlighted objects","drawing and/or linked Ortho data","AutoCAD API + Plant DataLinks/ProjectManager/Ortho","shared P_Rec_Annot modules","Ortho Generation, Ortho Annotate, annotation styles, project setup","Official docs confirm core functions, not exact batch logic","KEEP_REDESIGN","important","high","confirmed","load command and compare single/multi-view output","P_Rec_Annot\v1.0.2\repo\GetLinenumberAnnotationText","official-sources.md#ortho","Static only"
|
||||||
|
"P_Rec_Annot","InsertElevation","P_Rec_Annot\v1.0.2\repo\InsertElevation","v1.0.4 repo/release family","DLL/library","see code-markers.csv","Insert elevation annotation in Ortho","Open Ortho drawing and invoke command or loader","Ortho DWG and Plant PnP data","annotations, view blocks, copied/highlighted objects","drawing and/or linked Ortho data","AutoCAD API + Plant DataLinks/ProjectManager/Ortho","shared P_Rec_Annot modules","Ortho Generation, Ortho Annotate, annotation styles, project setup","Official docs confirm core functions, not exact batch logic","KEEP_REDESIGN","important","high","confirmed","load command and compare single/multi-view output","P_Rec_Annot\v1.0.2\repo\InsertElevation","official-sources.md#ortho","Static only"
|
||||||
|
"P_Rec_Annot","OrthoAutoAnnotate","P_Rec_Annot\v1.0.2\repo\OrthoAutoAnnotate","v1.0.4 repo/release family","DLL/library","see code-markers.csv","Automatic Ortho annotations and dimensions","Open Ortho drawing and invoke command or loader","Ortho DWG and Plant PnP data","annotations, view blocks, copied/highlighted objects","drawing and/or linked Ortho data","AutoCAD API + Plant DataLinks/ProjectManager/Ortho","shared P_Rec_Annot modules","Ortho Generation, Ortho Annotate, annotation styles, project setup","Official docs confirm core functions, not exact batch logic","KEEP_REDESIGN","important","high","confirmed","load command and compare single/multi-view output","P_Rec_Annot\v1.0.2\repo\OrthoAutoAnnotate","official-sources.md#ortho","Static only"
|
||||||
|
"P_Rec_Annot","OrthoLoader","P_Rec_Annot\v1.0.2\repo\OrthoLoader","v1.0.4 repo/release family","DLL/library","see code-markers.csv","Loader/ribbon for Ortho tools","Open Ortho drawing and invoke command or loader","Ortho DWG and Plant PnP data","annotations, view blocks, copied/highlighted objects","drawing and/or linked Ortho data","AutoCAD API + Plant DataLinks/ProjectManager/Ortho","shared P_Rec_Annot modules","Ortho Generation, Ortho Annotate, annotation styles, project setup","Official docs confirm core functions, not exact batch logic","KEEP_REDESIGN","important","high","confirmed","load command and compare single/multi-view output","P_Rec_Annot\v1.0.2\repo\OrthoLoader","official-sources.md#ortho","Static only"
|
||||||
|
"P_Rec_Annot","P3DCopyMissingObjectsToOrthoDrawing","P_Rec_Annot\v1.0.2\repo\P3DCopyMissingObjectsToOrthoDrawing","v1.0.4 repo/release family","DLL/library","see code-markers.csv","Copy missing 3D objects to an Ortho drawing","Open Ortho drawing and invoke command or loader","Ortho DWG and Plant PnP data","annotations, view blocks, copied/highlighted objects","drawing and/or linked Ortho data","AutoCAD API + Plant DataLinks/ProjectManager/Ortho","shared P_Rec_Annot modules","Ortho Generation, Ortho Annotate, annotation styles, project setup","Official docs confirm core functions, not exact batch logic","KEEP_REDESIGN","important","high","confirmed","load command and compare single/multi-view output","P_Rec_Annot\v1.0.2\repo\P3DCopyMissingObjectsToOrthoDrawing","official-sources.md#ortho","Static only"
|
||||||
|
"P_Rec_Annot","P3DSetLayerForViewport","P_Rec_Annot\v1.0.2\repo\P3DSetLayerForViewport","v1.0.4 repo/release family","DLL/library","see code-markers.csv","Set layer for an Ortho viewport","Open Ortho drawing and invoke command or loader","Ortho DWG and Plant PnP data","annotations, view blocks, copied/highlighted objects","drawing and/or linked Ortho data","AutoCAD API + Plant DataLinks/ProjectManager/Ortho","shared P_Rec_Annot modules","Ortho Generation, Ortho Annotate, annotation styles, project setup","Official docs confirm core functions, not exact batch logic","KEEP_REDESIGN","important","high","confirmed","load command and compare single/multi-view output","P_Rec_Annot\v1.0.2\repo\P3DSetLayerForViewport","official-sources.md#ortho","Static only"
|
||||||
|
"P_Rec_Annot","PHPAnnotations","P_Rec_Annot\v1.0.2\repo\PHPAnnotations","v1.0.4 repo/release family","DLL/library","see code-markers.csv","Extended/batch Plant annotation processing","Open Ortho drawing and invoke command or loader","Ortho DWG and Plant PnP data","annotations, view blocks, copied/highlighted objects","drawing and/or linked Ortho data","AutoCAD API + Plant DataLinks/ProjectManager/Ortho","shared P_Rec_Annot modules","Ortho Generation, Ortho Annotate, annotation styles, project setup","Official docs confirm core functions, not exact batch logic","KEEP_REDESIGN","important","high","confirmed","load command and compare single/multi-view output","P_Rec_Annot\v1.0.2\repo\PHPAnnotations","official-sources.md#ortho","Static only"
|
||||||
|
"P_Rec_Annot","SwapAttributesMenuItem","P_Rec_Annot\v1.0.2\repo\SwapAttributesMenuItem","v1.0.4 repo/release family","DLL/library","see code-markers.csv","Change annotation attributes/menu action","Open Ortho drawing and invoke command or loader","Ortho DWG and Plant PnP data","annotations, view blocks, copied/highlighted objects","drawing and/or linked Ortho data","AutoCAD API + Plant DataLinks/ProjectManager/Ortho","shared P_Rec_Annot modules","Ortho Generation, Ortho Annotate, annotation styles, project setup","Official docs confirm core functions, not exact batch logic","KEEP_REDESIGN","important","high","confirmed","load command and compare single/multi-view output","P_Rec_Annot\v1.0.2\repo\SwapAttributesMenuItem","official-sources.md#ortho","Static only"
|
||||||
|
"P_Rec_Annot","UpdateOrthoDrawings","P_Rec_Annot\v1.0.2\repo\UpdateOrthoDrawings","v1.0.4 repo/release family","DLL/library","see code-markers.csv","Update Ortho drawing/toolset modules","Open Ortho drawing and invoke command or loader","Ortho DWG and Plant PnP data","annotations, view blocks, copied/highlighted objects","drawing and/or linked Ortho data","AutoCAD API + Plant DataLinks/ProjectManager/Ortho","shared P_Rec_Annot modules","Ortho Generation, Ortho Annotate, annotation styles, project setup","Official docs confirm core functions, not exact batch logic","KEEP_REDESIGN","important","high","confirmed","load command and compare single/multi-view output","P_Rec_Annot\v1.0.2\repo\UpdateOrthoDrawings","official-sources.md#ortho","Static only"
|
||||||
|
"P_Rec_Annot","UpdateOrthoViewBlocks","P_Rec_Annot\v1.0.2\repo\UpdateOrthoViewBlocks","v1.0.4 repo/release family","DLL/library","see code-markers.csv","Update Ortho view blocks","Open Ortho drawing and invoke command or loader","Ortho DWG and Plant PnP data","annotations, view blocks, copied/highlighted objects","drawing and/or linked Ortho data","AutoCAD API + Plant DataLinks/ProjectManager/Ortho","shared P_Rec_Annot modules","Ortho Generation, Ortho Annotate, annotation styles, project setup","Official docs confirm core functions, not exact batch logic","KEEP_REDESIGN","important","high","confirmed","load command and compare single/multi-view output","P_Rec_Annot\v1.0.2\repo\UpdateOrthoViewBlocks","official-sources.md#ortho","Static only"
|
||||||
|
@@ -0,0 +1,10 @@
|
|||||||
|
# Retirement candidates
|
||||||
|
|
||||||
|
No component is approved for deletion from this static audit.
|
||||||
|
|
||||||
|
- P3DGetBoltsetReport: likely overlaps Data Manager/Report Creator. Test field parity, grouping, formatting and totals before retiring only a duplicate.
|
||||||
|
- P3DCreateIsoBOM/P3DGetReportNew: likely report/BOM functions; field-level comparison is required.
|
||||||
|
- P3DSetLayerForViewport: project/viewport layer settings may cover part of the function; test inheritance and batch behavior.
|
||||||
|
- P_Rec_Spec helpers: Spec/Catalog Editor, calculated properties and Report Creator may replace parts, but direct SQLite and corporate rules are not automatically covered.
|
||||||
|
|
||||||
|
Required evidence: source command behavior, fixture before/after, official mapping, differences and runtime test in Plant 3D 2026/2026.1.
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# Runtime tests required
|
||||||
|
|
||||||
|
1. Load latest candidate in isolated Plant 3D 2026 and 2026.1; record command registration and errors.
|
||||||
|
2. Ortho: one view, multiple views/project, missing models, line-number/elevation/BOP annotations, layer inheritance and view-block update.
|
||||||
|
3. Bolt sets: standard/custom flange thickness, calculated length, mapping, gasket persistence and report totals.
|
||||||
|
4. Specs/catalogs: fixture comparison against Spec Editor/Catalog Editor, calculated properties, groups and no direct SQLite corruption.
|
||||||
|
5. Export/integration: Revit/Navisworks/IFC/Hydra/Insul schemas, units, errors, repeatability and offline behavior.
|
||||||
|
6. Safety: copies only, rollback, audit log, multi-user behavior and no production/network writes.
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# Source root
|
||||||
|
|
||||||
|
Read-only source root: C:\dev\autodesk\link
|
||||||
|
|
||||||
|
link is a symbolic link to the corporate UNC source. No source or binary files were copied.
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# Unknowns
|
||||||
|
|
||||||
|
- Production-selected release DLL and loader/download list.
|
||||||
|
- Actual usage frequency and business ownership.
|
||||||
|
- Corporate acceptance criteria for Hydra/Insul/Revit/5DSmeta outputs.
|
||||||
|
- Whether bolt/newline fixes reproduce on 2026/2026.1.
|
||||||
|
- Whether direct SQLite operations remain supported for migrated projects.
|
||||||
|
- Runtime load order, profiles, trusted paths and permissions.
|
||||||
@@ -0,0 +1,108 @@
|
|||||||
|
param([string]$Root='C:\dev\autodesk\link',[string]$Out='C:\dev\autodesk\migration\inventory\plant3d-plugin-purpose')
|
||||||
|
$ErrorActionPreference='SilentlyContinue'
|
||||||
|
New-Item -ItemType Directory -Force -Path $Out,(Join-Path $Out 'evidence') | Out-Null
|
||||||
|
$files=Get-ChildItem -LiteralPath $Root -Recurse -Force -File -ErrorAction SilentlyContinue
|
||||||
|
$text=$files|Where-Object {$_.Extension.ToLower() -in '.cs','.vb','.fs','.csproj','.vbproj','.vcxproj','.sln','.slnx','.xml','.config','.json','.txt','.md','.user','.props','.targets'}
|
||||||
|
$src=$text|Where-Object {$_.Extension.ToLower() -in '.cs','.vb','.fs'}
|
||||||
|
function Csv($n,$r){$r|Export-Csv -LiteralPath (Join-Path $Out $n) -NoTypeInformation -Encoding UTF8}
|
||||||
|
function Rel($p){$p.Substring($Root.Length).TrimStart('\')}
|
||||||
|
function Canon($n){$n -replace '(?i)\s+v\.?\s*[0-9].*$','' -replace '(?i)\s+version\s*[0-9].*$','' -replace '\s+\(old\)$','' -replace '\s+—.*$','' -replace '\s+$',''}
|
||||||
|
function FirstFamily($p){foreach($part in $p.Substring($Root.Length).TrimStart('\').Split('\')){if($part -match '^(?i:P_|P3D)'){return (Canon $part)}}; 'OUT_OF_SCOPE'}
|
||||||
|
$dirs=Get-ChildItem -LiteralPath $Root -Recurse -Force -Directory -ErrorAction SilentlyContinue|Where-Object {$_.Name -match '^(?i:P_|P3D)' -and $_.FullName -notmatch '\\(bin|obj|\.vs|\.git|Files|FilesRelease|Libraries)(\\|$)'}
|
||||||
|
$familyRows=@(); foreach($d in $dirs){$f=FirstFamily $d.FullName;if($f -eq (Canon $d.Name)){$familyRows += [pscustomobject]@{family=$f;path=(Rel $d.FullName);is_root_candidate='yes'}}};$familyRows=$familyRows|Sort-Object family,path -Unique
|
||||||
|
$families=$familyRows|Select-Object -Expand family -Unique
|
||||||
|
$status=@{'P_Rec_Annot'='KEEP_REDESIGN';'P_Rec_Update'='KEEP_REDESIGN';'P_Rec_Spec'='KEEP_REDESIGN';'P3DCorrectBoltsetLengths'='BUG_WORKAROUND_RETEST';'P3DGetBoltsetReport'='OFFICIAL_RESEARCH_REQUIRED';'P_Exp_EquipToRevit'='OFFICIAL_RESEARCH_REQUIRED';'P_Exp_ToRevit_MS'='OFFICIAL_RESEARCH_REQUIRED';'P_Exp_ToHydra'='REVIEW_USAGE';'P_Exp_ToInsul'='REVIEW_USAGE';'P_Exp_To5DSmeta'='REVIEW_USAGE';'P_Exp_ToStart'='REVIEW_USAGE';'P_Imp_FromPTH'='KEEP_REDESIGN';'P_Serv_ActualizeProjectBySpec'='KEEP_REDESIGN';'P_Serv_UpdateLinearWeight'='KEEP_REDESIGN';'P_Serv_CompP3D'='KEEP_REDESIGN';'P_Serv_UpSpecs'='KEEP_REDESIGN';'P3DUpdateFixedPipeLengths'='BUG_WORKAROUND_RETEST';'P3DUpdateFlanges'='BUG_WORKAROUND_RETEST';'P3DUpdateValves'='BUG_WORKAROUND_RETEST';'P3DCreateIsoBOM'='OFFICIAL_RESEARCH_REQUIRED';'P3DPlotToPdfIsoMasterfile'='REVIEW_USAGE';'P3DSetLayerForViewport'='REVIEW_USAGE';'P3DCommands'='KEEP_REDESIGN';'P3DDeleteNewLineInValues'='BUG_WORKAROUND_RETEST';'P3DCheckProject'='KEEP_REDESIGN';'P3DEnumerateSupports'='KEEP_REDESIGN';'P3DSelectComponents'='REVIEW_USAGE';'P3DGetPnPId'='REVIEW_USAGE';'P3DGetReportNew'='OFFICIAL_RESEARCH_REQUIRED'}
|
||||||
|
$purpose=@{'P_Rec_Annot|AnnotateLineNumbers'='Batch line-number annotations in Ortho drawings';'P_Rec_Annot|AutoAnnotateView'='Automatic annotation update in viewport';'P_Rec_Annot|AutoElevation'='Automatic elevation annotations';'P_Rec_Annot|AutoLinenumberConnections'='Link line-number annotations to Ortho objects/connectors';'P_Rec_Annot|CheckOrthoView'='Detect missing or inconsistent objects in an Ortho view';'P_Rec_Annot|GetComponentGeometry'='Read Plant component geometry and parameters';'P_Rec_Annot|GetLinenumberAnnotationText'='Build line-number annotation text from PnP data';'P_Rec_Annot|InsertElevation'='Insert elevation annotation in Ortho';'P_Rec_Annot|OrthoAutoAnnotate'='Automatic Ortho annotations and dimensions';'P_Rec_Annot|OrthoLoader'='Loader/ribbon for Ortho tools';'P_Rec_Annot|P3DCopyMissingObjectsToOrthoDrawing'='Copy missing 3D objects to an Ortho drawing';'P_Rec_Annot|P3DSetLayerForViewport'='Set layer for an Ortho viewport';'P_Rec_Annot|PHPAnnotations'='Extended/batch Plant annotation processing';'P_Rec_Annot|SwapAttributesMenuItem'='Change annotation attributes/menu action';'P_Rec_Annot|UpdateOrthoDrawings'='Update Ortho drawing/toolset modules';'P_Rec_Annot|UpdateOrthoViewBlocks'='Update Ortho view blocks';'P_Rec_Update|P_Rec_Update'='Update Plant/PnP data, including flanges and XML/CSV settings';'P_Rec_Spec|AddTracingPipeRecords'='Add tracing records to specs/catalog data';'P_Rec_Spec|ResetLostBoltSetsAndGaskets'='Restore lost bolt-set/gasket records';'P_Rec_Spec|UpdateBoltSets'='Mass update bolt-set records';'P_Rec_Spec|SetComponentGroup'='Mass assign component groups';'P_Rec_Spec|EditProjectProperties'='Edit Plant project properties';'P3DCorrectBoltsetLengths|P3DCorrectBoltsetLengths'='Correct bolt-set length from Plant/PnP data';'P3DGetBoltsetReport|P3DGetBoltsetReport'='Produce a bolt-set report';'P_Exp_EquipToRevit|P_Exp_EquipToRevit'='Export equipment/Plant data to a Revit workflow';'P_Exp_ToRevit_MS|P_Exp_ToRevit_MS'='Export Plant/AutoCAD data to Revit';'P_Exp_ToHydra|P_Exp_ToHydra'='Export data to corporate Hydra workflow';'P_Exp_ToInsul|P_Exp_ToInsul'='Export data to corporate Insul workflow'}
|
||||||
|
$rows=@();foreach($f in $families){$p=$familyRows|? family -eq $f|select -First 1;$rows += [pscustomobject]@{family=$f;module='__family__';canonical_source_path=$p.path;latest_probable_version='not established';component_type='mixed/unknown';user_command='not established';purpose=if($purpose.ContainsKey("$f|$f")){$purpose["$f|$f"]}else{'Not proven at family level; see modules and evidence'};user_workflow='not confirmed';input='Plant project/drawing or external data';output='drawing/data/report; varies';data_modified='possible';autodesk_api_area='see plugin-modules.csv';custom_dependencies='see plugin-modules.csv';native_2026_candidate='not established';native_difference='OFFICIAL_RESEARCH_REQUIRED';primary_status=if($status.ContainsKey($f)){$status[$f]}else{'UNKNOWN'};business_criticality='unknown';migration_complexity='high';evidence_confidence='weak';runtime_test='required';source_evidence=$p.path;official_source_reference='official-sources.md';notes='Copies/releases are not separate families'}}
|
||||||
|
$manual='AnnotateLineNumbers','AutoAnnotateView','AutoElevation','AutoLinenumberConnections','CheckOrthoView','GetComponentGeometry','GetLinenumberAnnotationText','InsertElevation','OrthoAutoAnnotate','OrthoLoader','P3DCopyMissingObjectsToOrthoDrawing','P3DSetLayerForViewport','PHPAnnotations','SwapAttributesMenuItem','UpdateOrthoDrawings','UpdateOrthoViewBlocks';foreach($m in $manual){$k="P_Rec_Annot|$m";$rows += [pscustomobject]@{family='P_Rec_Annot';module=$m;canonical_source_path='P_Rec_Annot\v1.0.2\repo\'+$m;latest_probable_version='v1.0.4 repo/release family';component_type='DLL/library';user_command='see code-markers.csv';purpose=$purpose[$k];user_workflow='Open Ortho drawing and invoke command or loader';input='Ortho DWG and Plant PnP data';output='annotations, view blocks, copied/highlighted objects';data_modified='drawing and/or linked Ortho data';autodesk_api_area='AutoCAD API + Plant DataLinks/ProjectManager/Ortho';custom_dependencies='shared P_Rec_Annot modules';native_2026_candidate='Ortho Generation, Ortho Annotate, annotation styles, project setup';native_difference='Official docs confirm core functions, not exact batch logic';primary_status='KEEP_REDESIGN';business_criticality='important';migration_complexity='high';evidence_confidence='confirmed';runtime_test='load command and compare single/multi-view output';source_evidence='P_Rec_Annot\v1.0.2\repo\'+$m;official_source_reference='official-sources.md#ortho';notes='Static only'}}
|
||||||
|
Csv 'plugin-families.csv' $familyRows;Csv 'plugin-purpose-matrix.csv' $rows
|
||||||
|
$proj=@();foreach($f in $text|? Extension -in '.csproj','.vbproj','.vcxproj'){$fam=FirstFamily $f.FullName;if($fam -eq 'OUT_OF_SCOPE'){continue};$x=$null;try{$x=[xml](Get-Content -Raw -LiteralPath $f.FullName)}catch{};$pg=@($x.Project.PropertyGroup);$refs=@($x.Project.ItemGroup.Reference);$proj += [pscustomobject]@{family=$fam;module=$f.BaseName;source_path=(Rel $f.FullName);target_framework=(($pg|? TargetFrameworkVersion|select -First 1).TargetFrameworkVersion);platform_target=(($pg|? PlatformTarget|select -First 1).PlatformTarget);output_type=(($pg|? OutputType|select -First 1).OutputType);assembly_name=(($pg|? AssemblyName|select -First 1).AssemblyName);references=(($refs|% Include)-join '|');autodesk_refs=(($refs|? Include -match '(?i)acmgd|pnp|autodesk|processpower')|% Include)-join '|';sqlite=if(($refs|% Include)-match '(?i)sqlite'){'yes'}else{'no'};com=if(($refs|% Include)-match '(?i)interop|excel|word|com'){'possible'}else{'not observed'};source_present='yes'}};Csv 'plugin-modules.csv' ($proj|sort family,module,source_path)
|
||||||
|
$dup=@();foreach($g in $familyRows|group family){foreach($r in $g.Group){$dup += [pscustomobject]@{family=$g.Name;path=$r.path;version_signal=if($r.path -match '(?i)release|repo|source|versions?|v[0-9]|old|archive|backup|prev'){$matches[0]}else{'none'};selection='latest probable version not runtime validated';duplicate_or_history=if($r.path -match '(?i)old|archive|backup|prev|versions?|release'){'possible'}else{'unknown'}}}};Csv 'duplicate-version-map.csv' $dup
|
||||||
|
$ev=@();$sf=@();foreach($f in $src|? FullName -match '(?i)P_|P3D'){$m=Select-String -LiteralPath $f.FullName -Pattern '\[CommandMethod\s*\(\s*"([^"]+)' -CaseSensitive:$false;foreach($x in $m){$ev += [pscustomobject]@{file=(Rel $f.FullName);line=$x.LineNumber;kind='CommandMethod';detail=([regex]::Match($x.Line,'CommandMethod\s*\(\s*"([^"]+)').Groups[1].Value)}};$m2=Select-String -LiteralPath $f.FullName -Pattern 'IExtensionApplication|DllImport|DataLinksManager|PnPDatabase|ProjectParts\[|Tables\[|File\.Delete|Directory\.Delete|StreamWriter|Excel|Revit|Navisworks|Hydra|Insul' -CaseSensitive:$false;foreach($x in $m2){if($x.Line -match '(?i)password|passwd|pwd|token|secret|apikey|private key|connectionstring|user id|integrated security'){$sf += [pscustomobject]@{file=(Rel $f.FullName);line=$x.LineNumber;type='credential or connection-string keyword';risk='review';note='value omitted'}}else{$ev += [pscustomobject]@{file=(Rel $f.FullName);line=$x.LineNumber;kind='API/IO marker';detail=($x.Line -replace '\s+',' ')}}}};Csv 'evidence/code-markers.csv' $ev;Csv 'evidence/secret-findings.csv' $sf
|
||||||
|
Set-Content -LiteralPath (Join-Path $Out 'source-root.md') -Encoding UTF8 -Value "# Source root`r`n`r`nRead-only source root: $Root`r`n`r`nlink is a symbolic link to the corporate UNC source. No source or binary files were copied."
|
||||||
|
Set-Content -LiteralPath (Join-Path $Out 'official-sources.md') -Encoding UTF8 -Value @'
|
||||||
|
# Official Autodesk sources used
|
||||||
|
|
||||||
|
- https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-WhatsNew/files/GUID-384C71E7-9012-48B1-95B2-D4C42EBCF423.htm (What's New 2026/2026.1)
|
||||||
|
- https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-WhatsNew/files/GUID-1D0F9938-E23A-4870-A4AB-E544701D20CB.htm (Spec Editor redesign)
|
||||||
|
- https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-ReleaseNotes/files/AUTOCAD_PLNT3D_2026_RELEASE_NOTES.html (release notes)
|
||||||
|
- https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-UserGuide/files/GUID-EEDF2AA7-B50B-484B-B47F-B48986A51C3D.htm (update multiple Ortho drawings)
|
||||||
|
- https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-UserGuide/files/GUID-DAD70DC1-32F2-45E4-8685-0C574EF31299.htm (Ortho annotations)
|
||||||
|
- https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-UserGuide/files/GUID-6D5E3975-53AA-4495-B727-BBB2B599B464.htm (annotation format/project setup)
|
||||||
|
- https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-UserGuide/files/GUID-E0A54B13-5318-418B-B274-4D02673EC2ED.htm (calculated properties)
|
||||||
|
- https://help.autodesk.com/view/PLNT3D/2026/ENU/?guid=GUID-6EF131FA-E852-4B8C-A21E-E2B2ED1016AC (Data Manager/Report Creator)
|
||||||
|
- https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-UserGuide/files/GUID-7C60418E-3A86-47E0-ABED-1E5BB2F5C48A.htm (bolt length mapping)
|
||||||
|
- https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-UserGuide/files/GUID-B82D8701-7101-428E-A475-7B093A36DF01.htm (piping connections/fasteners)
|
||||||
|
- https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-SpecEditor/files/GUID-0B871505-A498-42C0-AAA7-B83A244CE5C4.htm (spec creation)
|
||||||
|
'@
|
||||||
|
Set-Content -LiteralPath (Join-Path $Out 'plugin-dependency-graph.md') -Encoding UTF8 -Value @'
|
||||||
|
# Plugin dependency graph
|
||||||
|
|
||||||
|
Plant 3D/AutoCAD host -> custom loader or NETLOAD/APPLOAD workflow (runtime not confirmed) -> P_Rec_Annot Ortho modules -> Plant DataLinks/PnPDatabase/ProjectManager/Ortho assemblies. P_Rec_Update/P_Serv/P_Rec_Spec -> Plant managed API and/or SQLite/CSV/XML/Excel. P3D bolt/update/report families -> Plant PnP/spec/catalog/report data. P_Exp_* -> Revit/Navisworks/corporate outputs.
|
||||||
|
|
||||||
|
Edges are static from project references and source markers; no DLL was loaded.
|
||||||
|
'@
|
||||||
|
Set-Content -LiteralPath (Join-Path $Out 'retirement-candidates.md') -Encoding UTF8 -Value @'
|
||||||
|
# Retirement candidates
|
||||||
|
|
||||||
|
No component is approved for deletion from this static audit.
|
||||||
|
|
||||||
|
- P3DGetBoltsetReport: likely overlaps Data Manager/Report Creator. Test field parity, grouping, formatting and totals before retiring only a duplicate.
|
||||||
|
- P3DCreateIsoBOM/P3DGetReportNew: likely report/BOM functions; field-level comparison is required.
|
||||||
|
- P3DSetLayerForViewport: project/viewport layer settings may cover part of the function; test inheritance and batch behavior.
|
||||||
|
- P_Rec_Spec helpers: Spec/Catalog Editor, calculated properties and Report Creator may replace parts, but direct SQLite and corporate rules are not automatically covered.
|
||||||
|
|
||||||
|
Required evidence: source command behavior, fixture before/after, official mapping, differences and runtime test in Plant 3D 2026/2026.1.
|
||||||
|
'@
|
||||||
|
Set-Content -LiteralPath (Join-Path $Out 'migration-candidates.md') -Encoding UTF8 -Value @'
|
||||||
|
# Migration candidates
|
||||||
|
|
||||||
|
Highest priority redesign/port: P_Rec_Annot, P_Rec_Update, P_Serv_ActualizeProjectBySpec, P_Serv_UpdateLinearWeight, P_Serv_CompP3D, P_Rec_Spec and P_Imp_FromPTH.
|
||||||
|
|
||||||
|
Targeted port/retest: P3DCorrectBoltsetLengths, P3DUpdateFixedPipeLengths, P3DUpdateFlanges, P3DUpdateValves, P3DDeleteNewLineInValues, P3DCommands and P3DEnumerateSupports.
|
||||||
|
|
||||||
|
Architecture review: P_Exp_EquipToRevit, P_Exp_ToRevit_MS, P_Exp_ToHydra, P_Exp_ToInsul and P_Exp_To5DSmeta.
|
||||||
|
'@
|
||||||
|
Set-Content -LiteralPath (Join-Path $Out 'runtime-tests-required.md') -Encoding UTF8 -Value @'
|
||||||
|
# Runtime tests required
|
||||||
|
|
||||||
|
1. Load latest candidate in isolated Plant 3D 2026 and 2026.1; record command registration and errors.
|
||||||
|
2. Ortho: one view, multiple views/project, missing models, line-number/elevation/BOP annotations, layer inheritance and view-block update.
|
||||||
|
3. Bolt sets: standard/custom flange thickness, calculated length, mapping, gasket persistence and report totals.
|
||||||
|
4. Specs/catalogs: fixture comparison against Spec Editor/Catalog Editor, calculated properties, groups and no direct SQLite corruption.
|
||||||
|
5. Export/integration: Revit/Navisworks/IFC/Hydra/Insul schemas, units, errors, repeatability and offline behavior.
|
||||||
|
6. Safety: copies only, rollback, audit log, multi-user behavior and no production/network writes.
|
||||||
|
'@
|
||||||
|
Set-Content -LiteralPath (Join-Path $Out 'official-research-required.md') -Encoding UTF8 -Value @'
|
||||||
|
# Official research required
|
||||||
|
|
||||||
|
Official sources confirm Ortho generation/update, annotation styles, Spec/Catalog Editor, calculated properties, bolt length mapping and Data Manager/Report Creator. They do not establish one-to-one replacements for corporate Hydra/Insul/Revit schemas, direct PnP/SQLite repair tools or every batch operation.
|
||||||
|
|
||||||
|
Verify API compatibility of each referenced PnP/Ortho assembly, supported bolt repair automation, exact export schemas and supported batch annotation APIs.
|
||||||
|
'@
|
||||||
|
Set-Content -LiteralPath (Join-Path $Out 'unknowns.md') -Encoding UTF8 -Value @'
|
||||||
|
# Unknowns
|
||||||
|
|
||||||
|
- Production-selected release DLL and loader/download list.
|
||||||
|
- Actual usage frequency and business ownership.
|
||||||
|
- Corporate acceptance criteria for Hydra/Insul/Revit/5DSmeta outputs.
|
||||||
|
- Whether bolt/newline fixes reproduce on 2026/2026.1.
|
||||||
|
- Whether direct SQLite operations remain supported for migrated projects.
|
||||||
|
- Runtime load order, profiles, trusted paths and permissions.
|
||||||
|
'@
|
||||||
|
$counts=($rows|Group-Object primary_status|Sort-Object Name|ForEach-Object {"- $($_.Name): $($_.Count)"}) -join "`r`n"
|
||||||
|
$readme=@"
|
||||||
|
# Functional inventory: Plant 3D plugin purpose
|
||||||
|
|
||||||
|
Date: 2026-07-30. Read-only source: $Root. No EXE/DLL/ARX/DBX/LISP/PowerShell/BAT was run; no build/restore/SQL/runtime was performed.
|
||||||
|
|
||||||
|
Unique normalized families: $($families.Count). Project/module rows: $($proj.Count). Raw candidate P_/P3D directories: $($dirs.Count).
|
||||||
|
|
||||||
|
P_Rec_Annot is a confirmed Ortho annotation/DataLinks/PnP family and is classified KEEP_REDESIGN. P_Rec_Spec contains spec/catalog helpers and SQLite-oriented programs and is classified KEEP_REDESIGN. Bolt/update families are BUG_WORKAROUND_RETEST, not deletions. Report families may overlap Data Manager/Report Creator, but field parity is not proven. Revit/Hydra/Insul integrations remain research/review items.
|
||||||
|
|
||||||
|
Status counts:
|
||||||
|
$counts
|
||||||
|
|
||||||
|
All classifications are static and do not approve deletion. See official-sources.md, evidence, retirement-candidates.md, migration-candidates.md, runtime-tests-required.md and unknowns.md.
|
||||||
|
"@;Set-Content -LiteralPath (Join-Path $Out 'README.md') -Encoding UTF8 -Value $readme
|
||||||
|
"Generated $(Get-Date -Format s)"|Set-Content -LiteralPath (Join-Path $Out 'evidence/generation.txt') -Encoding UTF8
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
param(
|
||||||
|
[string]$Source = '\\phpsrv03\NBIM\code\CS\P_Rec_BOP\repo',
|
||||||
|
[string]$Output = 'C:\dev\autodesk\migration\audits\p-rec-bop-plant3d-2019'
|
||||||
|
)
|
||||||
|
|
||||||
|
$ErrorActionPreference = 'Stop'
|
||||||
|
$evidence = Join-Path $Output 'evidence'
|
||||||
|
New-Item -ItemType Directory -Force -Path $evidence | Out-Null
|
||||||
|
|
||||||
|
function Rel([string]$path) { $path.Substring($Source.Length).TrimStart('\','/') }
|
||||||
|
function Hash([string]$path) { (Get-FileHash -LiteralPath $path -Algorithm SHA256).Hash }
|
||||||
|
function Classify([string]$extension) {
|
||||||
|
switch ($extension.ToLowerInvariant()) {
|
||||||
|
'.cs' { 'source' }; '.vb' { 'source' }; '.fs' { 'source' }
|
||||||
|
'.sln' { 'project' }; '.csproj' { 'project' }; '.vbproj' { 'project' }; '.props' { 'project' }; '.targets' { 'project' }; '.config' { 'configuration' }; '.json' { 'configuration' }
|
||||||
|
'.doc' { 'template/document' }; '.docx' { 'template/document' }; '.dot' { 'template/document' }; '.dotx' { 'template/document' }; '.dotm' { 'template/document' }; '.rtf' { 'template/document' }
|
||||||
|
'.dll' { 'binary' }; '.arx' { 'binary' }; '.dbx' { 'binary' }; '.cuix' { 'binary' }
|
||||||
|
'.resx' { 'resource' }; '.png' { 'resource' }; '.jpg' { 'resource' }; '.bmp' { 'resource' }; '.ico' { 'resource' }
|
||||||
|
default { 'other' }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$files = Get-ChildItem -LiteralPath $Source -Recurse -File | Sort-Object FullName
|
||||||
|
$inventory = foreach ($file in $files) {
|
||||||
|
[pscustomobject]@{ RelativePath = Rel $file.FullName; Extension = $file.Extension.ToLowerInvariant(); Category = Classify $file.Extension; Length = $file.Length; LastWriteTimeUtc = $file.LastWriteTimeUtc.ToString('o') }
|
||||||
|
}
|
||||||
|
$inventory | Export-Csv (Join-Path $evidence 'file-inventory.csv') -NoTypeInformation -Encoding UTF8
|
||||||
|
$hashes = foreach ($file in $files) { [pscustomobject]@{ RelativePath = Rel $file.FullName; Length = $file.Length; SHA256 = Hash $file.FullName } }
|
||||||
|
$hashes | Export-Csv (Join-Path $evidence 'hashes.csv') -NoTypeInformation -Encoding UTF8
|
||||||
|
|
||||||
|
$projectFiles = $files | Where-Object { $_.Extension -in '.sln','.csproj','.vbproj','.props','.targets','.config','packages.config','packages.lock.json' } | ForEach-Object { Rel $_.FullName }
|
||||||
|
$projectFiles | Set-Content (Join-Path $evidence 'project-files.txt') -Encoding UTF8
|
||||||
|
$sourceFiles = $files | Where-Object { $_.Extension -in '.cs','.vb','.fs' }
|
||||||
|
|
||||||
|
function Search([string]$name, [string]$pattern, [string[]]$paths = @('*.cs','*.csproj','*.config','*.xml','*.json','*.md','*.txt')) {
|
||||||
|
$arguments = @('-n','--no-heading','--hidden','--glob','!.git/**','--glob','!**/lib/**','--glob','!**/bin/**','--glob','!**/obj/**')
|
||||||
|
foreach ($path in $paths) { $arguments += @('--glob', $path) }
|
||||||
|
$arguments += @($pattern, $Source)
|
||||||
|
$result = & rg @arguments 2>$null
|
||||||
|
if ($LASTEXITCODE -ne 0 -and $null -eq $result) { $result = 'NO_MATCH' }
|
||||||
|
$result | ForEach-Object { $_.ToString().TrimEnd() } | Set-Content (Join-Path $evidence $name) -Encoding UTF8
|
||||||
|
}
|
||||||
|
|
||||||
|
Search 'commands-search.txt' 'CommandMethod|IExtensionApplication|Initialize\(|Terminate\(|ExtensionApplication|CommandClass|PlantApplication|ProjectManager|DataLinksManager|PnPDatabase|PnPTable|PnPRow|ConnectionManager|ContentManager'
|
||||||
|
Search 'plant-api-search.txt' 'Autodesk\.AutoCAD|Autodesk\.ProcessPower|PlantInstance|PlantProject|DataLinks|PnP|ProjectManager|EngineeringItems|PipingComponents|PipeLines|LineGroup|DrawingProperties'
|
||||||
|
Search 'word-api-search.txt' 'Microsoft\.Office\.Interop\.Word|Microsoft\.Office\.Core|Word\.Application|Word\.Document|Word\.Range|Documents\.Open|Documents\.Add|SaveAs2?|ExportAsFixedFormat|InsertFile|FormattedText|Bookmarks|ContentControls|Tables|Rows\.Add|Cells|Find\.Execute|Fields\.Update|Repaginate|Sections|Headers|Footers|StoryRanges|Selection|Clipboard|PasteSpecial|SautinSoft|DocumentFormat\.OpenXml'
|
||||||
|
Search 'template-search.txt' '\.docx?|\.dotx?|\.dotm|template|шаблон|образец|бланк|Word'
|
||||||
|
Search 'paths-and-settings-search.txt' '^[^:]+:[0-9]+:.*([A-Za-z]:\\|\\\\|Settings\.xml|App\.config|Registry|Environment\.GetEnvironmentVariable|GetFolderPath)'
|
||||||
|
Search 'database-and-io-search.txt' 'SQLite|System\.Data|SELECT |INSERT |UPDATE |DELETE |File\.Read|File\.Write|StreamWriter|Xml|CSV|Excel|XLS|HTTP|WebClient|HttpClient'
|
||||||
|
|
||||||
|
$referenceRows = foreach ($project in ($files | Where-Object Extension -eq '.csproj')) {
|
||||||
|
try {
|
||||||
|
[xml]$xml = Get-Content -LiteralPath $project.FullName -Raw
|
||||||
|
foreach ($reference in $xml.SelectNodes("//*[local-name()='Reference']")) { [pscustomobject]@{ Project = Rel $project.FullName; Kind = 'Reference'; Name = [string]$reference.Include; HintPath = [string]$reference.HintPath; CopyLocal = [string]$reference.Private } }
|
||||||
|
foreach ($reference in $xml.SelectNodes("//*[local-name()='ProjectReference']")) { [pscustomobject]@{ Project = Rel $project.FullName; Kind = 'ProjectReference'; Name = [string]$reference.Include; HintPath = ''; CopyLocal = '' } }
|
||||||
|
foreach ($package in $xml.SelectNodes("//*[local-name()='PackageReference']")) { [pscustomobject]@{ Project = Rel $project.FullName; Kind = 'PackageReference'; Name = [string]$package.Include; HintPath = [string]$package.Version; CopyLocal = '' } }
|
||||||
|
} catch { [pscustomobject]@{ Project = Rel $project.FullName; Kind = 'ParseError'; Name = $_.Exception.Message; HintPath = ''; CopyLocal = '' } }
|
||||||
|
}
|
||||||
|
$referenceRows | Export-Csv (Join-Path $evidence 'project-references.csv') -NoTypeInformation -Encoding UTF8
|
||||||
|
|
||||||
|
$templateRows = foreach ($file in ($files | Where-Object { $_.Extension -in '.doc','.docx','.dot','.dotx','.dotm','.rtf' })) { [pscustomobject]@{ RelativePath = Rel $file.FullName; Format = $file.Extension.ToLowerInvariant(); Length = $file.Length; SHA256 = Hash $file.FullName; SourceModified = $false } }
|
||||||
|
$templateRows | Export-Csv (Join-Path $evidence 'template-files.csv') -NoTypeInformation -Encoding UTF8
|
||||||
|
|
||||||
|
$sourceGit = if (Test-Path -LiteralPath (Join-Path $Source '.git')) { & git -C $Source status --short; & git -C $Source branch --show-current; & git -C $Source rev-parse HEAD; & git -C $Source log -1 --format=fuller; & git -C $Source remote -v } else { 'NO_GIT_DIRECTORY' }
|
||||||
|
$sourceGit | Set-Content (Join-Path $evidence 'source-git.txt') -Encoding UTF8
|
||||||
|
Get-ChildItem -LiteralPath $Source -Directory | Select-Object -ExpandProperty Name | Set-Content (Join-Path $evidence 'top-level-directories.txt') -Encoding UTF8
|
||||||
|
$inventory | Group-Object Category | Sort-Object Name | ForEach-Object { "{0}`t{1}" -f $_.Name,$_.Count } | Set-Content (Join-Path $evidence 'inventory-summary.txt') -Encoding UTF8
|
||||||
Reference in New Issue
Block a user