solidworks-mcp-server 3.0.8 → 3.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +175 -98
- package/LICENSE +20 -20
- package/README.md +195 -423
- package/dist/adapters/circuit-breaker.d.ts +84 -0
- package/dist/adapters/circuit-breaker.d.ts.map +1 -0
- package/dist/adapters/circuit-breaker.js +228 -0
- package/dist/adapters/circuit-breaker.js.map +1 -0
- package/dist/adapters/connection-pool.d.ts +83 -0
- package/dist/adapters/connection-pool.d.ts.map +1 -0
- package/dist/adapters/connection-pool.js +282 -0
- package/dist/adapters/connection-pool.js.map +1 -0
- package/dist/adapters/edge-adapter.d.ts +43 -0
- package/dist/adapters/edge-adapter.d.ts.map +1 -0
- package/dist/adapters/edge-adapter.js +417 -0
- package/dist/adapters/edge-adapter.js.map +1 -0
- package/dist/adapters/factory.d.ts +60 -0
- package/dist/adapters/factory.d.ts.map +1 -0
- package/dist/adapters/factory.js +212 -0
- package/dist/adapters/factory.js.map +1 -0
- package/dist/adapters/feature-complexity-analyzer.d.ts +102 -0
- package/dist/adapters/feature-complexity-analyzer.d.ts.map +1 -0
- package/dist/adapters/feature-complexity-analyzer.js +322 -0
- package/dist/adapters/feature-complexity-analyzer.js.map +1 -0
- package/dist/adapters/macro-generator.d.ts +30 -0
- package/dist/adapters/macro-generator.d.ts.map +1 -0
- package/dist/adapters/macro-generator.js +524 -0
- package/dist/adapters/macro-generator.js.map +1 -0
- package/dist/adapters/mock-solidworks-adapter.d.ts +92 -0
- package/dist/adapters/mock-solidworks-adapter.d.ts.map +1 -0
- package/dist/adapters/mock-solidworks-adapter.js +367 -0
- package/dist/adapters/mock-solidworks-adapter.js.map +1 -0
- package/dist/adapters/types.d.ts +376 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +261 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/adapters/winax-adapter-enhanced.d.ts +55 -0
- package/dist/adapters/winax-adapter-enhanced.d.ts.map +1 -0
- package/dist/adapters/winax-adapter-enhanced.js +601 -0
- package/dist/adapters/winax-adapter-enhanced.js.map +1 -0
- package/dist/adapters/winax-adapter.d.ts +55 -0
- package/dist/adapters/winax-adapter.d.ts.map +1 -0
- package/dist/adapters/winax-adapter.js +667 -0
- package/dist/adapters/winax-adapter.js.map +1 -0
- package/dist/api/stainless-api.d.ts +29 -0
- package/dist/api/stainless-api.d.ts.map +1 -0
- package/dist/api/stainless-api.js +408 -0
- package/dist/api/stainless-api.js.map +1 -0
- package/dist/cache/manager.d.ts.map +1 -1
- package/dist/cache/manager.js +4 -3
- package/dist/cache/manager.js.map +1 -1
- package/dist/core/interfaces/core-abstractions.d.ts.map +1 -1
- package/dist/core/interfaces/core-abstractions.js.map +1 -1
- package/dist/db/connection.js +4 -4
- package/dist/db/connection.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +86 -79
- package/dist/index.js.map +1 -1
- package/dist/knowledge/chromadb.d.ts.map +1 -1
- package/dist/knowledge/chromadb.js +5 -3
- package/dist/knowledge/chromadb.js.map +1 -1
- package/dist/macro/recorder.d.ts +1 -1
- package/dist/macro/recorder.d.ts.map +1 -1
- package/dist/macro/recorder.js +10 -10
- package/dist/macro/recorder.js.map +1 -1
- package/dist/resources/base.js +10 -10
- package/dist/resources/base.js.map +1 -1
- package/dist/resources/design-table.d.ts +10 -12
- package/dist/resources/design-table.d.ts.map +1 -1
- package/dist/resources/design-table.js +42 -39
- package/dist/resources/design-table.js.map +1 -1
- package/dist/resources/pdm.d.ts +44 -45
- package/dist/resources/pdm.d.ts.map +1 -1
- package/dist/resources/pdm.js +118 -79
- package/dist/resources/pdm.js.map +1 -1
- package/dist/resources/registry.d.ts +1 -1
- package/dist/resources/registry.d.ts.map +1 -1
- package/dist/resources/registry.js +1 -1
- package/dist/shared/constants/solidworks-constants.d.ts.map +1 -1
- package/dist/shared/constants/solidworks-constants.js +9 -9
- package/dist/shared/constants/solidworks-constants.js.map +1 -1
- package/dist/solidworks/api.d.ts +8 -6
- package/dist/solidworks/api.d.ts.map +1 -1
- package/dist/solidworks/api.js +614 -188
- package/dist/solidworks/api.js.map +1 -1
- package/dist/state/store.d.ts +1 -1
- package/dist/state/store.d.ts.map +1 -1
- package/dist/state/store.js +14 -14
- package/dist/state/store.js.map +1 -1
- package/dist/tools/analysis.d.ts +12 -2
- package/dist/tools/analysis.d.ts.map +1 -1
- package/dist/tools/analysis.js +141 -31
- package/dist/tools/analysis.js.map +1 -1
- package/dist/tools/diagnostics.d.ts +1 -1
- package/dist/tools/diagnostics.d.ts.map +1 -1
- package/dist/tools/diagnostics.js +2 -2
- package/dist/tools/diagnostics.js.map +1 -1
- package/dist/tools/drawing.d.ts +2 -2
- package/dist/tools/drawing.d.ts.map +1 -1
- package/dist/tools/drawing.js +94 -10
- package/dist/tools/drawing.js.map +1 -1
- package/dist/tools/enhanced-drawing.d.ts +1 -1
- package/dist/tools/enhanced-drawing.d.ts.map +1 -1
- package/dist/tools/enhanced-drawing.js +10 -13
- package/dist/tools/enhanced-drawing.js.map +1 -1
- package/dist/tools/export.d.ts +1 -1
- package/dist/tools/export.d.ts.map +1 -1
- package/dist/tools/export.js +88 -14
- package/dist/tools/export.js.map +1 -1
- package/dist/tools/extrusion-helper.d.ts +15 -0
- package/dist/tools/extrusion-helper.d.ts.map +1 -0
- package/dist/tools/extrusion-helper.js +61 -0
- package/dist/tools/extrusion-helper.js.map +1 -0
- package/dist/tools/macro-security.d.ts +2 -2
- package/dist/tools/macro-security.d.ts.map +1 -1
- package/dist/tools/macro-security.js +2 -2
- package/dist/tools/macro-security.js.map +1 -1
- package/dist/tools/modeling.d.ts +2 -2
- package/dist/tools/modeling.d.ts.map +1 -1
- package/dist/tools/modeling.js +6 -6
- package/dist/tools/modeling.js.map +1 -1
- package/dist/tools/native-macro.d.ts +1 -1
- package/dist/tools/native-macro.d.ts.map +1 -1
- package/dist/tools/native-macro.js +246 -239
- package/dist/tools/native-macro.js.map +1 -1
- package/dist/tools/sketch.d.ts +28 -28
- package/dist/tools/sketch.d.ts.map +1 -1
- package/dist/tools/sketch.js +202 -136
- package/dist/tools/sketch.js.map +1 -1
- package/dist/tools/template-manager.d.ts +5 -5
- package/dist/tools/template-manager.d.ts.map +1 -1
- package/dist/tools/template-manager.js +66 -65
- package/dist/tools/template-manager.js.map +1 -1
- package/dist/tools/vba-advanced.d.ts +10 -10
- package/dist/tools/vba-advanced.d.ts.map +1 -1
- package/dist/tools/vba-advanced.js +791 -708
- package/dist/tools/vba-advanced.js.map +1 -1
- package/dist/tools/vba-assembly.d.ts +10 -10
- package/dist/tools/vba-assembly.d.ts.map +1 -1
- package/dist/tools/vba-assembly.js +562 -500
- package/dist/tools/vba-assembly.js.map +1 -1
- package/dist/tools/vba-drawing.d.ts +12 -12
- package/dist/tools/vba-drawing.d.ts.map +1 -1
- package/dist/tools/vba-drawing.js +681 -572
- package/dist/tools/vba-drawing.js.map +1 -1
- package/dist/tools/vba-file-management.d.ts +12 -12
- package/dist/tools/vba-file-management.d.ts.map +1 -1
- package/dist/tools/vba-file-management.js +662 -589
- package/dist/tools/vba-file-management.js.map +1 -1
- package/dist/tools/vba-part.d.ts +10 -10
- package/dist/tools/vba-part.d.ts.map +1 -1
- package/dist/tools/vba-part.js +484 -426
- package/dist/tools/vba-part.js.map +1 -1
- package/dist/tools/vba.d.ts +361 -361
- package/dist/tools/vba.d.ts.map +1 -1
- package/dist/tools/vba.js +67 -81
- package/dist/tools/vba.js.map +1 -1
- package/dist/utils/config.js +2 -2
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/environment.d.ts +243 -0
- package/dist/utils/environment.d.ts.map +1 -0
- package/dist/utils/environment.js +207 -0
- package/dist/utils/environment.js.map +1 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +6 -6
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/solidworks-config.d.ts +39 -0
- package/dist/utils/solidworks-config.d.ts.map +1 -0
- package/dist/utils/solidworks-config.js +156 -0
- package/dist/utils/solidworks-config.js.map +1 -0
- package/package.json +84 -84
- package/scripts/setup.js +70 -70
- package/dist/application/services/command-bus.d.ts +0 -39
- package/dist/application/services/command-bus.d.ts.map +0 -1
- package/dist/application/services/command-bus.js +0 -88
- package/dist/application/services/command-bus.js.map +0 -1
- package/dist/application/services/event-bus.d.ts +0 -31
- package/dist/application/services/event-bus.d.ts.map +0 -1
- package/dist/application/services/event-bus.js +0 -83
- package/dist/application/services/event-bus.js.map +0 -1
- package/dist/application/services/query-bus.d.ts +0 -30
- package/dist/application/services/query-bus.d.ts.map +0 -1
- package/dist/application/services/query-bus.js +0 -59
- package/dist/application/services/query-bus.js.map +0 -1
- package/dist/application/services/tool-registry.d.ts +0 -53
- package/dist/application/services/tool-registry.d.ts.map +0 -1
- package/dist/application/services/tool-registry.js +0 -81
- package/dist/application/services/tool-registry.js.map +0 -1
- package/dist/application/use-cases/analysis/index.d.ts +0 -13
- package/dist/application/use-cases/analysis/index.d.ts.map +0 -1
- package/dist/application/use-cases/analysis/index.js +0 -17
- package/dist/application/use-cases/analysis/index.js.map +0 -1
- package/dist/application/use-cases/drawing/index.d.ts +0 -13
- package/dist/application/use-cases/drawing/index.d.ts.map +0 -1
- package/dist/application/use-cases/drawing/index.js +0 -17
- package/dist/application/use-cases/drawing/index.js.map +0 -1
- package/dist/application/use-cases/export/index.d.ts +0 -13
- package/dist/application/use-cases/export/index.d.ts.map +0 -1
- package/dist/application/use-cases/export/index.js +0 -17
- package/dist/application/use-cases/export/index.js.map +0 -1
- package/dist/application/use-cases/macro/index.d.ts +0 -13
- package/dist/application/use-cases/macro/index.d.ts.map +0 -1
- package/dist/application/use-cases/macro/index.js +0 -17
- package/dist/application/use-cases/macro/index.js.map +0 -1
- package/dist/application/use-cases/modeling/index.d.ts +0 -56
- package/dist/application/use-cases/modeling/index.d.ts.map +0 -1
- package/dist/application/use-cases/modeling/index.js +0 -385
- package/dist/application/use-cases/modeling/index.js.map +0 -1
- package/dist/index.refactored.d.ts +0 -7
- package/dist/index.refactored.d.ts.map +0 -1
- package/dist/index.refactored.js +0 -254
- package/dist/index.refactored.js.map +0 -1
- package/dist/infrastructure/config/configuration-manager.d.ts +0 -381
- package/dist/infrastructure/config/configuration-manager.d.ts.map +0 -1
- package/dist/infrastructure/config/configuration-manager.js +0 -566
- package/dist/infrastructure/config/configuration-manager.js.map +0 -1
- package/dist/infrastructure/container/service-locator.d.ts +0 -14
- package/dist/infrastructure/container/service-locator.d.ts.map +0 -1
- package/dist/infrastructure/container/service-locator.js +0 -38
- package/dist/infrastructure/container/service-locator.js.map +0 -1
- package/dist/infrastructure/logging/logger.d.ts +0 -24
- package/dist/infrastructure/logging/logger.d.ts.map +0 -1
- package/dist/infrastructure/logging/logger.js +0 -65
- package/dist/infrastructure/logging/logger.js.map +0 -1
- package/dist/infrastructure/solidworks/solidworks-adapter.d.ts +0 -43
- package/dist/infrastructure/solidworks/solidworks-adapter.d.ts.map +0 -1
- package/dist/infrastructure/solidworks/solidworks-adapter.js +0 -527
- package/dist/infrastructure/solidworks/solidworks-adapter.js.map +0 -1
- package/dist/presentation/mcp/request-handler.d.ts +0 -41
- package/dist/presentation/mcp/request-handler.d.ts.map +0 -1
- package/dist/presentation/mcp/request-handler.js +0 -100
- package/dist/presentation/mcp/request-handler.js.map +0 -1
- package/dist/presentation/transformers/error-transformer.d.ts +0 -16
- package/dist/presentation/transformers/error-transformer.d.ts.map +0 -1
- package/dist/presentation/transformers/error-transformer.js +0 -44
- package/dist/presentation/transformers/error-transformer.js.map +0 -1
- package/dist/presentation/transformers/response-transformer.d.ts +0 -24
- package/dist/presentation/transformers/response-transformer.d.ts.map +0 -1
- package/dist/presentation/transformers/response-transformer.js +0 -102
- package/dist/presentation/transformers/response-transformer.js.map +0 -1
- package/dist/tools/drawing-analysis.d.ts +0 -9
- package/dist/tools/drawing-analysis.d.ts.map +0 -1
- package/dist/tools/drawing-analysis.js +0 -239
- package/dist/tools/drawing-analysis.js.map +0 -1
|
@@ -9,499 +9,546 @@ export const fileManagementVBATools = [
|
|
|
9
9
|
description: 'Generate VBA for batch file operations',
|
|
10
10
|
inputSchema: z.object({
|
|
11
11
|
operation: z.enum([
|
|
12
|
-
'open_all',
|
|
13
|
-
'
|
|
12
|
+
'open_all',
|
|
13
|
+
'save_all',
|
|
14
|
+
'export_all',
|
|
15
|
+
'convert_format',
|
|
16
|
+
'update_references',
|
|
17
|
+
'pack_and_go',
|
|
18
|
+
'rename_files',
|
|
14
19
|
]),
|
|
15
20
|
sourcePath: z.string().describe('Source folder path'),
|
|
16
21
|
destinationPath: z.string().optional().describe('Destination folder path'),
|
|
17
22
|
fileFilter: z.string().optional().describe('File filter (e.g., "*.sldprt")'),
|
|
18
23
|
exportFormat: z.enum(['step', 'iges', 'stl', 'pdf', 'dwg', 'parasolid']).optional(),
|
|
19
24
|
includeSubfolders: z.boolean().optional().default(false),
|
|
20
|
-
options: z.record(z.any()).optional()
|
|
25
|
+
options: z.record(z.any()).optional(),
|
|
21
26
|
}),
|
|
22
27
|
handler: (args) => {
|
|
23
28
|
const operations = {
|
|
24
|
-
open_all: `
|
|
25
|
-
Sub BatchOpenFiles()
|
|
26
|
-
Dim swApp As SldWorks.SldWorks
|
|
27
|
-
Dim swModel As SldWorks.ModelDoc2
|
|
28
|
-
Dim fso As Object
|
|
29
|
-
Dim folder As Object
|
|
30
|
-
Dim file As Object
|
|
31
|
-
Dim filePath As String
|
|
32
|
-
Dim errors As Long, warnings As Long
|
|
33
|
-
Dim processedCount As Integer
|
|
34
|
-
|
|
35
|
-
Set swApp = Application.SldWorks
|
|
36
|
-
Set fso = CreateObject("Scripting.FileSystemObject")
|
|
37
|
-
Set folder = fso.GetFolder("${args.sourcePath}")
|
|
38
|
-
|
|
39
|
-
processedCount = 0
|
|
40
|
-
|
|
41
|
-
' Process each file
|
|
42
|
-
For Each file In folder.Files
|
|
43
|
-
If file.Name Like "${args.fileFilter || '*.sld*'}" Then
|
|
44
|
-
filePath = file.Path
|
|
45
|
-
|
|
46
|
-
' Open file
|
|
47
|
-
Set swModel = swApp.OpenDoc6( _
|
|
48
|
-
filePath, _
|
|
49
|
-
GetDocumentType(filePath), _
|
|
50
|
-
swOpenDocOptions_e.swOpenDocOptions_Silent, _
|
|
51
|
-
"", errors, warnings)
|
|
52
|
-
|
|
53
|
-
If Not swModel Is Nothing Then
|
|
54
|
-
processedCount = processedCount + 1
|
|
55
|
-
Debug.Print "Opened: " & file.Name
|
|
56
|
-
End If
|
|
57
|
-
End If
|
|
58
|
-
Next file
|
|
59
|
-
|
|
60
|
-
${args.includeSubfolders
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
'
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
GetDocumentType = swDocumentTypes_e.
|
|
79
|
-
ElseIf InStr(ext, "
|
|
80
|
-
GetDocumentType = swDocumentTypes_e.
|
|
81
|
-
|
|
82
|
-
GetDocumentType = swDocumentTypes_e.
|
|
83
|
-
|
|
29
|
+
open_all: `
|
|
30
|
+
Sub BatchOpenFiles()
|
|
31
|
+
Dim swApp As SldWorks.SldWorks
|
|
32
|
+
Dim swModel As SldWorks.ModelDoc2
|
|
33
|
+
Dim fso As Object
|
|
34
|
+
Dim folder As Object
|
|
35
|
+
Dim file As Object
|
|
36
|
+
Dim filePath As String
|
|
37
|
+
Dim errors As Long, warnings As Long
|
|
38
|
+
Dim processedCount As Integer
|
|
39
|
+
|
|
40
|
+
Set swApp = Application.SldWorks
|
|
41
|
+
Set fso = CreateObject("Scripting.FileSystemObject")
|
|
42
|
+
Set folder = fso.GetFolder("${args.sourcePath}")
|
|
43
|
+
|
|
44
|
+
processedCount = 0
|
|
45
|
+
|
|
46
|
+
' Process each file
|
|
47
|
+
For Each file In folder.Files
|
|
48
|
+
If file.Name Like "${args.fileFilter || '*.sld*'}" Then
|
|
49
|
+
filePath = file.Path
|
|
50
|
+
|
|
51
|
+
' Open file
|
|
52
|
+
Set swModel = swApp.OpenDoc6( _
|
|
53
|
+
filePath, _
|
|
54
|
+
GetDocumentType(filePath), _
|
|
55
|
+
swOpenDocOptions_e.swOpenDocOptions_Silent, _
|
|
56
|
+
"", errors, warnings)
|
|
57
|
+
|
|
58
|
+
If Not swModel Is Nothing Then
|
|
59
|
+
processedCount = processedCount + 1
|
|
60
|
+
Debug.Print "Opened: " & file.Name
|
|
61
|
+
End If
|
|
62
|
+
End If
|
|
63
|
+
Next file
|
|
64
|
+
|
|
65
|
+
${args.includeSubfolders
|
|
66
|
+
? `
|
|
67
|
+
' Process subfolders
|
|
68
|
+
Dim subfolder As Object
|
|
69
|
+
For Each subfolder In folder.SubFolders
|
|
70
|
+
' Recursive call for subfolders
|
|
71
|
+
' Add recursive processing logic here
|
|
72
|
+
Next subfolder`
|
|
73
|
+
: ''}
|
|
74
|
+
|
|
75
|
+
MsgBox "Batch open complete. Processed " & processedCount & " files"
|
|
76
|
+
End Sub
|
|
77
|
+
|
|
78
|
+
Function GetDocumentType(filePath As String) As Integer
|
|
79
|
+
Dim ext As String
|
|
80
|
+
ext = LCase(Right(filePath, 6))
|
|
81
|
+
|
|
82
|
+
If InStr(ext, "sldprt") > 0 Then
|
|
83
|
+
GetDocumentType = swDocumentTypes_e.swDocPART
|
|
84
|
+
ElseIf InStr(ext, "sldasm") > 0 Then
|
|
85
|
+
GetDocumentType = swDocumentTypes_e.swDocASSEMBLY
|
|
86
|
+
ElseIf InStr(ext, "slddrw") > 0 Then
|
|
87
|
+
GetDocumentType = swDocumentTypes_e.swDocDRAWING
|
|
88
|
+
Else
|
|
89
|
+
GetDocumentType = swDocumentTypes_e.swDocNONE
|
|
90
|
+
End If
|
|
84
91
|
End Function`,
|
|
85
|
-
export_all: `
|
|
86
|
-
Sub BatchExportFiles()
|
|
87
|
-
Dim swApp As SldWorks.SldWorks
|
|
88
|
-
Dim swModel As SldWorks.ModelDoc2
|
|
89
|
-
Dim fso As Object
|
|
90
|
-
Dim folder As Object
|
|
91
|
-
Dim file As Object
|
|
92
|
-
Dim filePath As String
|
|
93
|
-
Dim exportPath As String
|
|
94
|
-
Dim errors As Long, warnings As Long
|
|
95
|
-
Dim exportCount As Integer
|
|
96
|
-
|
|
97
|
-
Set swApp = Application.SldWorks
|
|
98
|
-
Set fso = CreateObject("Scripting.FileSystemObject")
|
|
99
|
-
Set folder = fso.GetFolder("${args.sourcePath}")
|
|
100
|
-
|
|
101
|
-
' Create destination folder if needed
|
|
102
|
-
If Not fso.FolderExists("${args.destinationPath || args.sourcePath
|
|
103
|
-
fso.CreateFolder("${args.destinationPath || args.sourcePath
|
|
104
|
-
End If
|
|
105
|
-
|
|
106
|
-
exportCount = 0
|
|
107
|
-
|
|
108
|
-
For Each file In folder.Files
|
|
109
|
-
If file.Name Like "${args.fileFilter || '*.sld*'}" Then
|
|
110
|
-
filePath = file.Path
|
|
111
|
-
|
|
112
|
-
' Open file
|
|
113
|
-
Set swModel = swApp.OpenDoc6( _
|
|
114
|
-
filePath, GetDocumentType(filePath), _
|
|
115
|
-
swOpenDocOptions_e.swOpenDocOptions_Silent, _
|
|
116
|
-
"", errors, warnings)
|
|
117
|
-
|
|
118
|
-
If Not swModel Is Nothing Then
|
|
119
|
-
' Generate export path
|
|
120
|
-
exportPath = "${args.destinationPath || args.sourcePath
|
|
121
|
-
fso.GetBaseName(file.Name) & ".${args.exportFormat || 'step'}"
|
|
122
|
-
|
|
123
|
-
' Export based on format
|
|
124
|
-
${args.exportFormat === 'step'
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
92
|
+
export_all: `
|
|
93
|
+
Sub BatchExportFiles()
|
|
94
|
+
Dim swApp As SldWorks.SldWorks
|
|
95
|
+
Dim swModel As SldWorks.ModelDoc2
|
|
96
|
+
Dim fso As Object
|
|
97
|
+
Dim folder As Object
|
|
98
|
+
Dim file As Object
|
|
99
|
+
Dim filePath As String
|
|
100
|
+
Dim exportPath As String
|
|
101
|
+
Dim errors As Long, warnings As Long
|
|
102
|
+
Dim exportCount As Integer
|
|
103
|
+
|
|
104
|
+
Set swApp = Application.SldWorks
|
|
105
|
+
Set fso = CreateObject("Scripting.FileSystemObject")
|
|
106
|
+
Set folder = fso.GetFolder("${args.sourcePath}")
|
|
107
|
+
|
|
108
|
+
' Create destination folder if needed
|
|
109
|
+
If Not fso.FolderExists("${args.destinationPath || `${args.sourcePath}\\Exported`}") Then
|
|
110
|
+
fso.CreateFolder("${args.destinationPath || `${args.sourcePath}\\Exported`}")
|
|
111
|
+
End If
|
|
112
|
+
|
|
113
|
+
exportCount = 0
|
|
114
|
+
|
|
115
|
+
For Each file In folder.Files
|
|
116
|
+
If file.Name Like "${args.fileFilter || '*.sld*'}" Then
|
|
117
|
+
filePath = file.Path
|
|
118
|
+
|
|
119
|
+
' Open file
|
|
120
|
+
Set swModel = swApp.OpenDoc6( _
|
|
121
|
+
filePath, GetDocumentType(filePath), _
|
|
122
|
+
swOpenDocOptions_e.swOpenDocOptions_Silent, _
|
|
123
|
+
"", errors, warnings)
|
|
124
|
+
|
|
125
|
+
If Not swModel Is Nothing Then
|
|
126
|
+
' Generate export path
|
|
127
|
+
exportPath = "${args.destinationPath || `${args.sourcePath}\\Exported`}\\" & _
|
|
128
|
+
fso.GetBaseName(file.Name) & ".${args.exportFormat || 'step'}"
|
|
129
|
+
|
|
130
|
+
' Export based on format
|
|
131
|
+
${args.exportFormat === 'step'
|
|
132
|
+
? `
|
|
133
|
+
swModel.Extension.SaveAs3 exportPath, 0, _
|
|
134
|
+
swSaveAsOptions_e.swSaveAsOptions_Silent, _
|
|
135
|
+
Nothing, Nothing, errors, warnings`
|
|
136
|
+
: ''}
|
|
137
|
+
${args.exportFormat === 'stl'
|
|
138
|
+
? `
|
|
139
|
+
swModel.Extension.SaveAs3 exportPath, 0, _
|
|
140
|
+
swSaveAsOptions_e.swSaveAsOptions_Silent, _
|
|
141
|
+
Nothing, Nothing, errors, warnings`
|
|
142
|
+
: ''}
|
|
143
|
+
${args.exportFormat === 'pdf'
|
|
144
|
+
? `
|
|
145
|
+
Dim swExportPDFData As SldWorks.ExportPdfData
|
|
146
|
+
Set swExportPDFData = swApp.GetExportFileData(swExportDataFileType_e.swExportPdfData)
|
|
147
|
+
swModel.Extension.SaveAs3 exportPath, 0, _
|
|
148
|
+
swSaveAsOptions_e.swSaveAsOptions_Silent, _
|
|
149
|
+
swExportPDFData, Nothing, errors, warnings`
|
|
150
|
+
: ''}
|
|
151
|
+
|
|
152
|
+
exportCount = exportCount + 1
|
|
153
|
+
Debug.Print "Exported: " & exportPath
|
|
154
|
+
|
|
155
|
+
' Close file
|
|
156
|
+
swApp.CloseDoc swModel.GetPathName
|
|
157
|
+
End If
|
|
158
|
+
End If
|
|
159
|
+
Next file
|
|
160
|
+
|
|
161
|
+
MsgBox "Batch export complete. Exported " & exportCount & " files"
|
|
162
|
+
End Sub`,
|
|
163
|
+
pack_and_go: `
|
|
164
|
+
Sub BatchPackAndGo()
|
|
165
|
+
Dim swApp As SldWorks.SldWorks
|
|
166
|
+
Dim swModel As SldWorks.ModelDoc2
|
|
167
|
+
Dim swPackAndGo As SldWorks.PackAndGo
|
|
168
|
+
Dim fso As Object
|
|
169
|
+
Dim folder As Object
|
|
170
|
+
Dim file As Object
|
|
171
|
+
Dim filePath As String
|
|
172
|
+
Dim errors As Long, warnings As Long
|
|
173
|
+
Dim packCount As Integer
|
|
174
|
+
|
|
175
|
+
Set swApp = Application.SldWorks
|
|
176
|
+
Set fso = CreateObject("Scripting.FileSystemObject")
|
|
177
|
+
Set folder = fso.GetFolder("${args.sourcePath}")
|
|
178
|
+
|
|
179
|
+
packCount = 0
|
|
180
|
+
|
|
181
|
+
For Each file In folder.Files
|
|
182
|
+
If file.Name Like "${args.fileFilter || '*.sldasm'}" Then
|
|
183
|
+
filePath = file.Path
|
|
184
|
+
|
|
185
|
+
' Open assembly
|
|
186
|
+
Set swModel = swApp.OpenDoc6( _
|
|
187
|
+
filePath, swDocumentTypes_e.swDocASSEMBLY, _
|
|
188
|
+
swOpenDocOptions_e.swOpenDocOptions_Silent, _
|
|
189
|
+
"", errors, warnings)
|
|
190
|
+
|
|
191
|
+
If Not swModel Is Nothing Then
|
|
192
|
+
' Get Pack and Go
|
|
193
|
+
Set swPackAndGo = swModel.Extension.GetPackAndGo
|
|
194
|
+
|
|
195
|
+
' Configure Pack and Go
|
|
196
|
+
swPackAndGo.IncludeDrawings = ${args.options?.includeDrawings ? 'True' : 'False'}
|
|
197
|
+
swPackAndGo.IncludeSimulationResults = ${args.options?.includeSimulation ? 'True' : 'False'}
|
|
198
|
+
swPackAndGo.IncludeToolboxComponents = ${args.options?.includeToolbox ? 'True' : 'False'}
|
|
199
|
+
swPackAndGo.FlattenToSingleFolder = ${args.options?.flattenFolders ? 'True' : 'False'}
|
|
200
|
+
|
|
201
|
+
' Set destination
|
|
202
|
+
Dim destFolder As String
|
|
203
|
+
destFolder = "${args.destinationPath || `${args.sourcePath}\\PackAndGo`}\\" & _
|
|
204
|
+
fso.GetBaseName(file.Name)
|
|
205
|
+
|
|
206
|
+
If Not fso.FolderExists(destFolder) Then
|
|
207
|
+
fso.CreateFolder(destFolder)
|
|
208
|
+
End If
|
|
209
|
+
|
|
210
|
+
swPackAndGo.SetSaveToName True, destFolder
|
|
211
|
+
|
|
212
|
+
' Execute Pack and Go
|
|
213
|
+
Dim pgStatus As Long
|
|
214
|
+
pgStatus = swModel.Extension.SavePackAndGo(swPackAndGo)
|
|
215
|
+
|
|
216
|
+
If pgStatus = 0 Then
|
|
217
|
+
packCount = packCount + 1
|
|
218
|
+
Debug.Print "Packed: " & file.Name & " to " & destFolder
|
|
219
|
+
End If
|
|
220
|
+
|
|
221
|
+
swApp.CloseDoc swModel.GetPathName
|
|
222
|
+
End If
|
|
223
|
+
End If
|
|
224
|
+
Next file
|
|
225
|
+
|
|
226
|
+
MsgBox "Pack and Go complete. Processed " & packCount & " assemblies"
|
|
149
227
|
End Sub`,
|
|
150
|
-
pack_and_go: `
|
|
151
|
-
Sub BatchPackAndGo()
|
|
152
|
-
Dim swApp As SldWorks.SldWorks
|
|
153
|
-
Dim swModel As SldWorks.ModelDoc2
|
|
154
|
-
Dim swPackAndGo As SldWorks.PackAndGo
|
|
155
|
-
Dim fso As Object
|
|
156
|
-
Dim folder As Object
|
|
157
|
-
Dim file As Object
|
|
158
|
-
Dim filePath As String
|
|
159
|
-
Dim errors As Long, warnings As Long
|
|
160
|
-
Dim packCount As Integer
|
|
161
|
-
|
|
162
|
-
Set swApp = Application.SldWorks
|
|
163
|
-
Set fso = CreateObject("Scripting.FileSystemObject")
|
|
164
|
-
Set folder = fso.GetFolder("${args.sourcePath}")
|
|
165
|
-
|
|
166
|
-
packCount = 0
|
|
167
|
-
|
|
168
|
-
For Each file In folder.Files
|
|
169
|
-
If file.Name Like "${args.fileFilter || '*.sldasm'}" Then
|
|
170
|
-
filePath = file.Path
|
|
171
|
-
|
|
172
|
-
' Open assembly
|
|
173
|
-
Set swModel = swApp.OpenDoc6( _
|
|
174
|
-
filePath, swDocumentTypes_e.swDocASSEMBLY, _
|
|
175
|
-
swOpenDocOptions_e.swOpenDocOptions_Silent, _
|
|
176
|
-
"", errors, warnings)
|
|
177
|
-
|
|
178
|
-
If Not swModel Is Nothing Then
|
|
179
|
-
' Get Pack and Go
|
|
180
|
-
Set swPackAndGo = swModel.Extension.GetPackAndGo
|
|
181
|
-
|
|
182
|
-
' Configure Pack and Go
|
|
183
|
-
swPackAndGo.IncludeDrawings = ${args.options?.includeDrawings ? 'True' : 'False'}
|
|
184
|
-
swPackAndGo.IncludeSimulationResults = ${args.options?.includeSimulation ? 'True' : 'False'}
|
|
185
|
-
swPackAndGo.IncludeToolboxComponents = ${args.options?.includeToolbox ? 'True' : 'False'}
|
|
186
|
-
swPackAndGo.FlattenToSingleFolder = ${args.options?.flattenFolders ? 'True' : 'False'}
|
|
187
|
-
|
|
188
|
-
' Set destination
|
|
189
|
-
Dim destFolder As String
|
|
190
|
-
destFolder = "${args.destinationPath || args.sourcePath + '\\PackAndGo'}\\" & _
|
|
191
|
-
fso.GetBaseName(file.Name)
|
|
192
|
-
|
|
193
|
-
If Not fso.FolderExists(destFolder) Then
|
|
194
|
-
fso.CreateFolder(destFolder)
|
|
195
|
-
End If
|
|
196
|
-
|
|
197
|
-
swPackAndGo.SetSaveToName True, destFolder
|
|
198
|
-
|
|
199
|
-
' Execute Pack and Go
|
|
200
|
-
Dim pgStatus As Long
|
|
201
|
-
pgStatus = swModel.Extension.SavePackAndGo(swPackAndGo)
|
|
202
|
-
|
|
203
|
-
If pgStatus = 0 Then
|
|
204
|
-
packCount = packCount + 1
|
|
205
|
-
Debug.Print "Packed: " & file.Name & " to " & destFolder
|
|
206
|
-
End If
|
|
207
|
-
|
|
208
|
-
swApp.CloseDoc swModel.GetPathName
|
|
209
|
-
End If
|
|
210
|
-
End If
|
|
211
|
-
Next file
|
|
212
|
-
|
|
213
|
-
MsgBox "Pack and Go complete. Processed " & packCount & " assemblies"
|
|
214
|
-
End Sub`
|
|
215
228
|
};
|
|
216
229
|
return operations[args.operation] || operations.open_all;
|
|
217
|
-
}
|
|
230
|
+
},
|
|
218
231
|
},
|
|
219
232
|
{
|
|
220
233
|
name: 'vba_custom_properties',
|
|
221
234
|
description: 'Generate VBA for managing custom properties',
|
|
222
235
|
inputSchema: z.object({
|
|
223
236
|
operation: z.enum(['add', 'modify', 'delete', 'copy', 'export', 'import']),
|
|
224
|
-
properties: z
|
|
237
|
+
properties: z
|
|
238
|
+
.array(z.object({
|
|
225
239
|
name: z.string(),
|
|
226
240
|
value: z.string(),
|
|
227
241
|
type: z.enum(['text', 'date', 'number', 'yesno']).optional(),
|
|
228
|
-
configuration: z.string().optional()
|
|
229
|
-
}))
|
|
242
|
+
configuration: z.string().optional(),
|
|
243
|
+
}))
|
|
244
|
+
.optional(),
|
|
230
245
|
sourcePath: z.string().optional(),
|
|
231
246
|
templatePath: z.string().optional(),
|
|
232
|
-
exportFormat: z.enum(['excel', 'csv', 'xml']).optional()
|
|
247
|
+
exportFormat: z.enum(['excel', 'csv', 'xml']).optional(),
|
|
233
248
|
}),
|
|
234
249
|
handler: (args) => {
|
|
235
|
-
return `
|
|
236
|
-
Sub ManageCustomProperties_${args.operation}()
|
|
237
|
-
Dim swApp As SldWorks.SldWorks
|
|
238
|
-
Dim swModel As SldWorks.ModelDoc2
|
|
239
|
-
Dim swCustPropMgr As SldWorks.CustomPropertyManager
|
|
240
|
-
Dim propType As Long
|
|
241
|
-
Dim propValue As String
|
|
242
|
-
Dim evalValue As String
|
|
243
|
-
Dim bRet As Boolean
|
|
244
|
-
|
|
245
|
-
Set swApp = Application.SldWorks
|
|
246
|
-
Set swModel = swApp.ActiveDoc
|
|
247
|
-
|
|
248
|
-
If swModel Is Nothing Then
|
|
249
|
-
MsgBox "No active document"
|
|
250
|
-
Exit Sub
|
|
251
|
-
End If
|
|
252
|
-
|
|
253
|
-
${args.operation === 'add' || args.operation === 'modify'
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
'
|
|
260
|
-
${prop.
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
propNames
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
250
|
+
return `
|
|
251
|
+
Sub ManageCustomProperties_${args.operation}()
|
|
252
|
+
Dim swApp As SldWorks.SldWorks
|
|
253
|
+
Dim swModel As SldWorks.ModelDoc2
|
|
254
|
+
Dim swCustPropMgr As SldWorks.CustomPropertyManager
|
|
255
|
+
Dim propType As Long
|
|
256
|
+
Dim propValue As String
|
|
257
|
+
Dim evalValue As String
|
|
258
|
+
Dim bRet As Boolean
|
|
259
|
+
|
|
260
|
+
Set swApp = Application.SldWorks
|
|
261
|
+
Set swModel = swApp.ActiveDoc
|
|
262
|
+
|
|
263
|
+
If swModel Is Nothing Then
|
|
264
|
+
MsgBox "No active document"
|
|
265
|
+
Exit Sub
|
|
266
|
+
End If
|
|
267
|
+
|
|
268
|
+
${args.operation === 'add' || args.operation === 'modify'
|
|
269
|
+
? `
|
|
270
|
+
' Add/Modify properties
|
|
271
|
+
${args.properties
|
|
272
|
+
? args.properties
|
|
273
|
+
.map((prop) => `
|
|
274
|
+
' Get property manager for configuration
|
|
275
|
+
Set swCustPropMgr = swModel.Extension.CustomPropertyManager("${prop.configuration || ''}")
|
|
276
|
+
|
|
277
|
+
' Determine property type
|
|
278
|
+
${prop.type === 'date'
|
|
279
|
+
? 'propType = swCustomInfoType_e.swCustomInfoDate'
|
|
280
|
+
: prop.type === 'number'
|
|
281
|
+
? 'propType = swCustomInfoType_e.swCustomInfoNumber'
|
|
282
|
+
: prop.type === 'yesno'
|
|
283
|
+
? 'propType = swCustomInfoType_e.swCustomInfoYesOrNo'
|
|
284
|
+
: 'propType = swCustomInfoType_e.swCustomInfoText'}
|
|
285
|
+
|
|
286
|
+
' Add or modify property
|
|
287
|
+
bRet = swCustPropMgr.Add3( _
|
|
288
|
+
"${prop.name}", _
|
|
289
|
+
propType, _
|
|
290
|
+
"${prop.value}", _
|
|
291
|
+
swCustomPropertyAddOption_e.swCustomPropertyReplaceValue)
|
|
292
|
+
|
|
293
|
+
If bRet Then
|
|
294
|
+
Debug.Print "${args.operation === 'add' ? 'Added' : 'Modified'} property: ${prop.name} = ${prop.value}"
|
|
295
|
+
End If`)
|
|
296
|
+
.join('\n ')
|
|
297
|
+
: ''}
|
|
298
|
+
|
|
299
|
+
MsgBox "Properties ${args.operation === 'add' ? 'added' : 'modified'} successfully"`
|
|
300
|
+
: ''}
|
|
301
|
+
|
|
302
|
+
${args.operation === 'delete'
|
|
303
|
+
? `
|
|
304
|
+
' Delete properties
|
|
305
|
+
Set swCustPropMgr = swModel.Extension.CustomPropertyManager("")
|
|
306
|
+
|
|
307
|
+
${args.properties
|
|
308
|
+
? args.properties
|
|
309
|
+
.map((prop) => `
|
|
310
|
+
bRet = swCustPropMgr.Delete2("${prop.name}")
|
|
311
|
+
If bRet Then
|
|
312
|
+
Debug.Print "Deleted property: ${prop.name}"
|
|
313
|
+
End If`)
|
|
314
|
+
.join('\n ')
|
|
315
|
+
: ''}
|
|
316
|
+
|
|
317
|
+
MsgBox "Properties deleted"`
|
|
318
|
+
: ''}
|
|
319
|
+
|
|
320
|
+
${args.operation === 'export'
|
|
321
|
+
? `
|
|
322
|
+
' Export properties to Excel
|
|
323
|
+
Dim xlApp As Object
|
|
324
|
+
Dim xlBook As Object
|
|
325
|
+
Dim xlSheet As Object
|
|
326
|
+
Dim propNames As Variant
|
|
327
|
+
Dim i As Integer
|
|
328
|
+
|
|
329
|
+
Set xlApp = CreateObject("Excel.Application")
|
|
330
|
+
Set xlBook = xlApp.Workbooks.Add
|
|
331
|
+
Set xlSheet = xlBook.Sheets(1)
|
|
332
|
+
xlApp.Visible = True
|
|
333
|
+
|
|
334
|
+
' Headers
|
|
335
|
+
xlSheet.Cells(1, 1).Value = "Property Name"
|
|
336
|
+
xlSheet.Cells(1, 2).Value = "Value"
|
|
337
|
+
xlSheet.Cells(1, 3).Value = "Evaluated Value"
|
|
338
|
+
xlSheet.Cells(1, 4).Value = "Type"
|
|
339
|
+
|
|
340
|
+
' Get all properties
|
|
341
|
+
Set swCustPropMgr = swModel.Extension.CustomPropertyManager("")
|
|
342
|
+
propNames = swCustPropMgr.GetNames
|
|
343
|
+
|
|
344
|
+
If Not IsEmpty(propNames) Then
|
|
345
|
+
For i = 0 To UBound(propNames)
|
|
346
|
+
swCustPropMgr.Get4 propNames(i), False, propValue, evalValue
|
|
347
|
+
|
|
348
|
+
xlSheet.Cells(i + 2, 1).Value = propNames(i)
|
|
349
|
+
xlSheet.Cells(i + 2, 2).Value = propValue
|
|
350
|
+
xlSheet.Cells(i + 2, 3).Value = evalValue
|
|
351
|
+
xlSheet.Cells(i + 2, 4).Value = swCustPropMgr.GetType2(propNames(i))
|
|
352
|
+
Next i
|
|
353
|
+
End If
|
|
354
|
+
|
|
355
|
+
xlSheet.Columns.AutoFit
|
|
356
|
+
|
|
357
|
+
${args.sourcePath
|
|
358
|
+
? `
|
|
359
|
+
xlBook.SaveAs "${args.sourcePath}"
|
|
360
|
+
MsgBox "Properties exported to: ${args.sourcePath}"`
|
|
361
|
+
: ''}`
|
|
362
|
+
: ''}
|
|
363
|
+
|
|
364
|
+
${args.operation === 'copy'
|
|
365
|
+
? `
|
|
366
|
+
' Copy properties from another file
|
|
367
|
+
Dim swSourceModel As SldWorks.ModelDoc2
|
|
368
|
+
Dim swSourceCustPropMgr As SldWorks.CustomPropertyManager
|
|
369
|
+
Dim errors As Long, warnings As Long
|
|
370
|
+
|
|
371
|
+
' Open source file
|
|
372
|
+
Set swSourceModel = swApp.OpenDoc6( _
|
|
373
|
+
"${args.sourcePath}", _
|
|
374
|
+
GetDocumentType("${args.sourcePath}"), _
|
|
375
|
+
swOpenDocOptions_e.swOpenDocOptions_Silent, _
|
|
376
|
+
"", errors, warnings)
|
|
377
|
+
|
|
378
|
+
If Not swSourceModel Is Nothing Then
|
|
379
|
+
Set swSourceCustPropMgr = swSourceModel.Extension.CustomPropertyManager("")
|
|
380
|
+
Set swCustPropMgr = swModel.Extension.CustomPropertyManager("")
|
|
381
|
+
|
|
382
|
+
propNames = swSourceCustPropMgr.GetNames
|
|
383
|
+
|
|
384
|
+
If Not IsEmpty(propNames) Then
|
|
385
|
+
For i = 0 To UBound(propNames)
|
|
386
|
+
swSourceCustPropMgr.Get4 propNames(i), False, propValue, evalValue
|
|
387
|
+
propType = swSourceCustPropMgr.GetType2(propNames(i))
|
|
388
|
+
|
|
389
|
+
swCustPropMgr.Add3 propNames(i), propType, propValue, _
|
|
390
|
+
swCustomPropertyAddOption_e.swCustomPropertyReplaceValue
|
|
391
|
+
|
|
392
|
+
Debug.Print "Copied property: " & propNames(i)
|
|
393
|
+
Next i
|
|
394
|
+
End If
|
|
395
|
+
|
|
396
|
+
swApp.CloseDoc swSourceModel.GetPathName
|
|
397
|
+
MsgBox "Properties copied from source file"
|
|
398
|
+
End If`
|
|
399
|
+
: ''}
|
|
364
400
|
End Sub`;
|
|
365
|
-
}
|
|
401
|
+
},
|
|
366
402
|
},
|
|
367
403
|
{
|
|
368
404
|
name: 'vba_pdm_operations',
|
|
369
405
|
description: 'Generate VBA for PDM vault operations',
|
|
370
406
|
inputSchema: z.object({
|
|
371
|
-
operation: z.enum([
|
|
372
|
-
'check_in', 'check_out', 'get_latest', 'add_file',
|
|
373
|
-
'change_state', 'search', 'copy_tree'
|
|
374
|
-
]),
|
|
407
|
+
operation: z.enum(['check_in', 'check_out', 'get_latest', 'add_file', 'change_state', 'search', 'copy_tree']),
|
|
375
408
|
vaultName: z.string(),
|
|
376
409
|
filePath: z.string().optional(),
|
|
377
410
|
comment: z.string().optional(),
|
|
378
411
|
stateName: z.string().optional(),
|
|
379
412
|
searchCriteria: z.record(z.string()).optional(),
|
|
380
|
-
includeChildren: z.boolean().optional().default(true)
|
|
413
|
+
includeChildren: z.boolean().optional().default(true),
|
|
381
414
|
}),
|
|
382
415
|
handler: (args) => {
|
|
383
|
-
return `
|
|
384
|
-
Sub PDMOperation_${args.operation}()
|
|
385
|
-
Dim pdmVault As Object ' EdmVault5
|
|
386
|
-
Dim pdmFile As Object ' IEdmFile5
|
|
387
|
-
Dim pdmFolder As Object ' IEdmFolder5
|
|
388
|
-
Dim pdmSearch As Object ' IEdmSearch5
|
|
389
|
-
Dim pdmSearchResult As Object ' IEdmSearchResult5
|
|
390
|
-
Dim bRet As Boolean
|
|
391
|
-
|
|
392
|
-
' Create PDM vault object
|
|
393
|
-
Set pdmVault = CreateObject("ConisioLib.EdmVault")
|
|
394
|
-
|
|
395
|
-
' Login to vault
|
|
396
|
-
pdmVault.LoginAuto "${args.vaultName}", 0
|
|
397
|
-
|
|
398
|
-
If Not pdmVault.IsLoggedIn Then
|
|
399
|
-
MsgBox "Failed to login to PDM vault: ${args.vaultName}"
|
|
400
|
-
Exit Sub
|
|
401
|
-
End If
|
|
402
|
-
|
|
403
|
-
${args.operation === 'check_out'
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
Set
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
'
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
416
|
+
return `
|
|
417
|
+
Sub PDMOperation_${args.operation}()
|
|
418
|
+
Dim pdmVault As Object ' EdmVault5
|
|
419
|
+
Dim pdmFile As Object ' IEdmFile5
|
|
420
|
+
Dim pdmFolder As Object ' IEdmFolder5
|
|
421
|
+
Dim pdmSearch As Object ' IEdmSearch5
|
|
422
|
+
Dim pdmSearchResult As Object ' IEdmSearchResult5
|
|
423
|
+
Dim bRet As Boolean
|
|
424
|
+
|
|
425
|
+
' Create PDM vault object
|
|
426
|
+
Set pdmVault = CreateObject("ConisioLib.EdmVault")
|
|
427
|
+
|
|
428
|
+
' Login to vault
|
|
429
|
+
pdmVault.LoginAuto "${args.vaultName}", 0
|
|
430
|
+
|
|
431
|
+
If Not pdmVault.IsLoggedIn Then
|
|
432
|
+
MsgBox "Failed to login to PDM vault: ${args.vaultName}"
|
|
433
|
+
Exit Sub
|
|
434
|
+
End If
|
|
435
|
+
|
|
436
|
+
${args.operation === 'check_out'
|
|
437
|
+
? `
|
|
438
|
+
' Check out file
|
|
439
|
+
Set pdmFolder = pdmVault.GetFolderFromPath(Left("${args.filePath}", InStrRev("${args.filePath}", "\\")))
|
|
440
|
+
Set pdmFile = pdmFolder.GetFile(Mid("${args.filePath}", InStrRev("${args.filePath}", "\\") + 1))
|
|
441
|
+
|
|
442
|
+
If Not pdmFile Is Nothing Then
|
|
443
|
+
' Check if already checked out
|
|
444
|
+
If Not pdmFile.IsLocked Then
|
|
445
|
+
pdmFile.LockFile pdmFolder.ID, 0
|
|
446
|
+
MsgBox "File checked out: " & pdmFile.Name
|
|
447
|
+
Else
|
|
448
|
+
MsgBox "File is already checked out"
|
|
449
|
+
End If
|
|
450
|
+
Else
|
|
451
|
+
MsgBox "File not found in vault"
|
|
452
|
+
End If`
|
|
453
|
+
: ''}
|
|
454
|
+
|
|
455
|
+
${args.operation === 'check_in'
|
|
456
|
+
? `
|
|
457
|
+
' Check in file
|
|
458
|
+
Set pdmFolder = pdmVault.GetFolderFromPath(Left("${args.filePath}", InStrRev("${args.filePath}", "\\")))
|
|
459
|
+
Set pdmFile = pdmFolder.GetFile(Mid("${args.filePath}", InStrRev("${args.filePath}", "\\") + 1))
|
|
460
|
+
|
|
461
|
+
If Not pdmFile Is Nothing Then
|
|
462
|
+
If pdmFile.IsLocked Then
|
|
463
|
+
' Check in with comment
|
|
464
|
+
pdmFile.UnlockFile 0, "${args.comment || 'Checked in via VBA'}", _
|
|
465
|
+
${args.includeChildren ? '1' : '0'}
|
|
466
|
+
MsgBox "File checked in: " & pdmFile.Name
|
|
467
|
+
Else
|
|
468
|
+
MsgBox "File is not checked out"
|
|
469
|
+
End If
|
|
470
|
+
End If`
|
|
471
|
+
: ''}
|
|
472
|
+
|
|
473
|
+
${args.operation === 'get_latest'
|
|
474
|
+
? `
|
|
475
|
+
' Get latest version
|
|
476
|
+
Set pdmFolder = pdmVault.GetFolderFromPath(Left("${args.filePath}", InStrRev("${args.filePath}", "\\")))
|
|
477
|
+
Set pdmFile = pdmFolder.GetFile(Mid("${args.filePath}", InStrRev("${args.filePath}", "\\") + 1))
|
|
478
|
+
|
|
479
|
+
If Not pdmFile Is Nothing Then
|
|
480
|
+
pdmFile.GetFileCopy 0
|
|
481
|
+
MsgBox "Got latest version of: " & pdmFile.Name
|
|
482
|
+
End If`
|
|
483
|
+
: ''}
|
|
484
|
+
|
|
485
|
+
${args.operation === 'change_state'
|
|
486
|
+
? `
|
|
487
|
+
' Change workflow state
|
|
488
|
+
Set pdmFolder = pdmVault.GetFolderFromPath(Left("${args.filePath}", InStrRev("${args.filePath}", "\\")))
|
|
489
|
+
Set pdmFile = pdmFolder.GetFile(Mid("${args.filePath}", InStrRev("${args.filePath}", "\\") + 1))
|
|
490
|
+
|
|
491
|
+
If Not pdmFile Is Nothing Then
|
|
492
|
+
Dim pdmStateMgr As Object
|
|
493
|
+
Set pdmStateMgr = pdmFile.GetNextState("${args.stateName}")
|
|
494
|
+
|
|
495
|
+
If Not pdmStateMgr Is Nothing Then
|
|
496
|
+
pdmFile.ChangeState pdmStateMgr.ID, pdmFolder.ID, _
|
|
497
|
+
"${args.comment || 'State changed via VBA'}", 0, 0
|
|
498
|
+
MsgBox "State changed to: ${args.stateName}"
|
|
499
|
+
Else
|
|
500
|
+
MsgBox "State not found: ${args.stateName}"
|
|
501
|
+
End If
|
|
502
|
+
End If`
|
|
503
|
+
: ''}
|
|
504
|
+
|
|
505
|
+
${args.operation === 'search'
|
|
506
|
+
? `
|
|
507
|
+
' Search vault
|
|
508
|
+
Set pdmSearch = pdmVault.CreateSearch
|
|
509
|
+
|
|
510
|
+
' Set search criteria
|
|
511
|
+
${args.searchCriteria
|
|
512
|
+
? Object.entries(args.searchCriteria)
|
|
513
|
+
.map(([key, value]) => `
|
|
514
|
+
pdmSearch.SetToken EdmSearchToken_e.${key}, "${value}"`)
|
|
515
|
+
.join('\n ')
|
|
516
|
+
: ''}
|
|
517
|
+
|
|
518
|
+
' Execute search
|
|
519
|
+
Set pdmSearchResult = pdmSearch.GetFirstResult
|
|
520
|
+
|
|
521
|
+
Dim results As String
|
|
522
|
+
results = "Search Results:" & vbCrLf
|
|
523
|
+
|
|
524
|
+
While Not pdmSearchResult Is Nothing
|
|
525
|
+
results = results & pdmSearchResult.Path & vbCrLf
|
|
526
|
+
Set pdmSearchResult = pdmSearch.GetNextResult
|
|
527
|
+
Wend
|
|
528
|
+
|
|
529
|
+
MsgBox results`
|
|
530
|
+
: ''}
|
|
531
|
+
|
|
532
|
+
' Logout
|
|
533
|
+
pdmVault.Logout
|
|
534
|
+
End Sub
|
|
535
|
+
|
|
536
|
+
' Helper function for file type
|
|
537
|
+
Private Function GetDocumentType(filePath As String) As Integer
|
|
538
|
+
Dim ext As String
|
|
539
|
+
ext = LCase(Right(filePath, 6))
|
|
540
|
+
|
|
541
|
+
If InStr(ext, "sldprt") > 0 Then
|
|
542
|
+
GetDocumentType = 1 ' Part
|
|
543
|
+
ElseIf InStr(ext, "sldasm") > 0 Then
|
|
544
|
+
GetDocumentType = 2 ' Assembly
|
|
545
|
+
ElseIf InStr(ext, "slddrw") > 0 Then
|
|
546
|
+
GetDocumentType = 3 ' Drawing
|
|
547
|
+
Else
|
|
548
|
+
GetDocumentType = 0 ' Unknown
|
|
549
|
+
End If
|
|
503
550
|
End Function`;
|
|
504
|
-
}
|
|
551
|
+
},
|
|
505
552
|
},
|
|
506
553
|
{
|
|
507
554
|
name: 'vba_design_table',
|
|
@@ -509,147 +556,173 @@ End Function`;
|
|
|
509
556
|
inputSchema: z.object({
|
|
510
557
|
operation: z.enum(['create', 'update', 'export', 'import', 'link_excel']),
|
|
511
558
|
tableName: z.string(),
|
|
512
|
-
parameters: z
|
|
559
|
+
parameters: z
|
|
560
|
+
.array(z.object({
|
|
513
561
|
name: z.string(),
|
|
514
562
|
type: z.enum(['dimension', 'feature', 'component', 'custom_property']),
|
|
515
|
-
configurations: z.record(z.any()).optional()
|
|
516
|
-
}))
|
|
563
|
+
configurations: z.record(z.any()).optional(),
|
|
564
|
+
}))
|
|
565
|
+
.optional(),
|
|
517
566
|
excelPath: z.string().optional(),
|
|
518
|
-
linkToExternal: z.boolean().optional()
|
|
567
|
+
linkToExternal: z.boolean().optional(),
|
|
519
568
|
}),
|
|
520
569
|
handler: (args) => {
|
|
521
|
-
return `
|
|
522
|
-
Sub ManageDesignTable_${args.operation}()
|
|
523
|
-
Dim swApp As SldWorks.SldWorks
|
|
524
|
-
Dim swModel As SldWorks.ModelDoc2
|
|
525
|
-
Dim swDesignTable As SldWorks.DesignTable
|
|
526
|
-
Dim swFeature As SldWorks.Feature
|
|
527
|
-
Dim xlApp As Object
|
|
528
|
-
Dim xlBook As Object
|
|
529
|
-
Dim xlSheet As Object
|
|
530
|
-
Dim i As Integer, j As Integer
|
|
531
|
-
|
|
532
|
-
Set swApp = Application.SldWorks
|
|
533
|
-
Set swModel = swApp.ActiveDoc
|
|
534
|
-
|
|
535
|
-
If swModel Is Nothing Then
|
|
536
|
-
MsgBox "No active document"
|
|
537
|
-
Exit Sub
|
|
538
|
-
End If
|
|
539
|
-
|
|
540
|
-
${args.operation === 'create'
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
Set
|
|
544
|
-
Set
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
' Add
|
|
554
|
-
${param.
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
'
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
'
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
'
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
${args.operation === '
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
570
|
+
return `
|
|
571
|
+
Sub ManageDesignTable_${args.operation}()
|
|
572
|
+
Dim swApp As SldWorks.SldWorks
|
|
573
|
+
Dim swModel As SldWorks.ModelDoc2
|
|
574
|
+
Dim swDesignTable As SldWorks.DesignTable
|
|
575
|
+
Dim swFeature As SldWorks.Feature
|
|
576
|
+
Dim xlApp As Object
|
|
577
|
+
Dim xlBook As Object
|
|
578
|
+
Dim xlSheet As Object
|
|
579
|
+
Dim i As Integer, j As Integer
|
|
580
|
+
|
|
581
|
+
Set swApp = Application.SldWorks
|
|
582
|
+
Set swModel = swApp.ActiveDoc
|
|
583
|
+
|
|
584
|
+
If swModel Is Nothing Then
|
|
585
|
+
MsgBox "No active document"
|
|
586
|
+
Exit Sub
|
|
587
|
+
End If
|
|
588
|
+
|
|
589
|
+
${args.operation === 'create'
|
|
590
|
+
? `
|
|
591
|
+
' Create design table
|
|
592
|
+
Set xlApp = CreateObject("Excel.Application")
|
|
593
|
+
Set xlBook = xlApp.Workbooks.Add
|
|
594
|
+
Set xlSheet = xlBook.Sheets(1)
|
|
595
|
+
|
|
596
|
+
' Set up headers
|
|
597
|
+
xlSheet.Cells(1, 1).Value = "Configuration"
|
|
598
|
+
|
|
599
|
+
${args.parameters
|
|
600
|
+
? args.parameters
|
|
601
|
+
.map((param, i) => `
|
|
602
|
+
' Add parameter header
|
|
603
|
+
xlSheet.Cells(1, ${i + 2}).Value = "${param.name}@${param.type === 'dimension' ? 'Sketch1' : param.type === 'feature' ? 'Feature' : 'CustomProperty'}"
|
|
604
|
+
|
|
605
|
+
' Add configuration values
|
|
606
|
+
${param.configurations
|
|
607
|
+
? Object.entries(param.configurations)
|
|
608
|
+
.map(([config, value], j) => `
|
|
609
|
+
xlSheet.Cells(${j + 2}, 1).Value = "${config}"
|
|
610
|
+
xlSheet.Cells(${j + 2}, ${i + 2}).Value = "${value}"`)
|
|
611
|
+
.join('\n ')
|
|
612
|
+
: ''}`)
|
|
613
|
+
.join('\n ')
|
|
614
|
+
: ''}
|
|
615
|
+
|
|
616
|
+
' Save Excel file
|
|
617
|
+
Dim tempPath As String
|
|
618
|
+
tempPath = Environ("TEMP") & "\\DesignTable_${args.tableName}.xlsx"
|
|
619
|
+
xlBook.SaveAs tempPath
|
|
620
|
+
xlApp.Quit
|
|
621
|
+
|
|
622
|
+
' Insert design table
|
|
623
|
+
Set swDesignTable = swModel.InsertDesignTable( _
|
|
624
|
+
${args.linkToExternal ? 'True' : 'False'}, _
|
|
625
|
+
${args.linkToExternal ? 'True' : 'False'}, _
|
|
626
|
+
${args.linkToExternal ? '2' : '1'}, _
|
|
627
|
+
tempPath)
|
|
628
|
+
|
|
629
|
+
If Not swDesignTable Is Nothing Then
|
|
630
|
+
MsgBox "Design table created: ${args.tableName}"
|
|
631
|
+
End If`
|
|
632
|
+
: ''}
|
|
633
|
+
|
|
634
|
+
${args.operation === 'update'
|
|
635
|
+
? `
|
|
636
|
+
' Update existing design table
|
|
637
|
+
Set swDesignTable = swModel.GetDesignTable
|
|
638
|
+
|
|
639
|
+
If Not swDesignTable Is Nothing Then
|
|
640
|
+
' Edit design table
|
|
641
|
+
swDesignTable.Edit
|
|
642
|
+
|
|
643
|
+
' Get Excel object
|
|
644
|
+
Set xlApp = GetObject(, "Excel.Application")
|
|
645
|
+
Set xlBook = xlApp.ActiveWorkbook
|
|
646
|
+
Set xlSheet = xlBook.ActiveSheet
|
|
647
|
+
|
|
648
|
+
' Update values
|
|
649
|
+
${args.parameters
|
|
650
|
+
? args.parameters
|
|
651
|
+
.map((param) => `
|
|
652
|
+
' Find and update parameter column
|
|
653
|
+
For j = 1 To xlSheet.UsedRange.Columns.Count
|
|
654
|
+
If xlSheet.Cells(1, j).Value = "${param.name}@Sketch1" Then
|
|
655
|
+
${param.configurations
|
|
656
|
+
? Object.entries(param.configurations)
|
|
657
|
+
.map(([config, value], _i) => `
|
|
658
|
+
' Update configuration value
|
|
659
|
+
For i = 2 To xlSheet.UsedRange.Rows.Count
|
|
660
|
+
If xlSheet.Cells(i, 1).Value = "${config}" Then
|
|
661
|
+
xlSheet.Cells(i, j).Value = "${value}"
|
|
662
|
+
End If
|
|
663
|
+
Next i`)
|
|
664
|
+
.join('\n ')
|
|
665
|
+
: ''}
|
|
666
|
+
End If
|
|
667
|
+
Next j`)
|
|
668
|
+
.join('\n ')
|
|
669
|
+
: ''}
|
|
670
|
+
|
|
671
|
+
' Close design table
|
|
672
|
+
swDesignTable.UpdateModel swDesignTableUpdateOptions_e.swUpdateDesignTableAll
|
|
673
|
+
|
|
674
|
+
MsgBox "Design table updated"
|
|
675
|
+
Else
|
|
676
|
+
MsgBox "No design table found"
|
|
677
|
+
End If`
|
|
678
|
+
: ''}
|
|
679
|
+
|
|
680
|
+
${args.operation === 'export'
|
|
681
|
+
? `
|
|
682
|
+
' Export design table
|
|
683
|
+
Set swDesignTable = swModel.GetDesignTable
|
|
684
|
+
|
|
685
|
+
If Not swDesignTable Is Nothing Then
|
|
686
|
+
' Edit to access Excel
|
|
687
|
+
swDesignTable.Edit
|
|
688
|
+
|
|
689
|
+
Set xlApp = GetObject(, "Excel.Application")
|
|
690
|
+
Set xlBook = xlApp.ActiveWorkbook
|
|
691
|
+
|
|
692
|
+
' Save to new location
|
|
693
|
+
xlBook.SaveAs "${args.excelPath || 'C:\\Temp\\ExportedDesignTable.xlsx'}"
|
|
694
|
+
|
|
695
|
+
' Close design table
|
|
696
|
+
swDesignTable.UpdateModel swDesignTableUpdateOptions_e.swUpdateDesignTableAll
|
|
697
|
+
|
|
698
|
+
MsgBox "Design table exported to: ${args.excelPath || 'C:\\Temp\\ExportedDesignTable.xlsx'}"
|
|
699
|
+
End If`
|
|
700
|
+
: ''}
|
|
701
|
+
|
|
702
|
+
${args.operation === 'link_excel'
|
|
703
|
+
? `
|
|
704
|
+
' Link to external Excel file
|
|
705
|
+
Set swDesignTable = swModel.GetDesignTable
|
|
706
|
+
|
|
707
|
+
If Not swDesignTable Is Nothing Then
|
|
708
|
+
' Delete existing table
|
|
709
|
+
Set swFeature = swDesignTable
|
|
710
|
+
swFeature.Select2 False, 0
|
|
711
|
+
swModel.EditDelete
|
|
712
|
+
End If
|
|
713
|
+
|
|
714
|
+
' Insert linked design table
|
|
715
|
+
Set swDesignTable = swModel.InsertDesignTable( _
|
|
716
|
+
True, True, 2, "${args.excelPath}")
|
|
717
|
+
|
|
718
|
+
If Not swDesignTable Is Nothing Then
|
|
719
|
+
MsgBox "Design table linked to: ${args.excelPath}"
|
|
720
|
+
End If`
|
|
721
|
+
: ''}
|
|
722
|
+
|
|
723
|
+
swModel.EditRebuild3
|
|
651
724
|
End Sub`;
|
|
652
|
-
}
|
|
653
|
-
}
|
|
725
|
+
},
|
|
726
|
+
},
|
|
654
727
|
];
|
|
655
728
|
//# sourceMappingURL=vba-file-management.js.map
|