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,430 +9,492 @@ export const drawingVBATools = [
|
|
|
9
9
|
description: 'Generate VBA for creating drawing views',
|
|
10
10
|
inputSchema: z.object({
|
|
11
11
|
viewType: z.enum([
|
|
12
|
-
'standard',
|
|
13
|
-
'
|
|
12
|
+
'standard',
|
|
13
|
+
'projected',
|
|
14
|
+
'auxiliary',
|
|
15
|
+
'section',
|
|
16
|
+
'detail',
|
|
17
|
+
'broken',
|
|
18
|
+
'break_out_section',
|
|
19
|
+
'isometric',
|
|
20
|
+
'named',
|
|
14
21
|
]),
|
|
15
22
|
modelPath: z.string().describe('Path to model file'),
|
|
16
|
-
viewOrientation: z
|
|
17
|
-
'front', 'back', 'left', 'right', 'top', 'bottom',
|
|
18
|
-
|
|
19
|
-
]).optional(),
|
|
23
|
+
viewOrientation: z
|
|
24
|
+
.enum(['front', 'back', 'left', 'right', 'top', 'bottom', 'isometric', 'dimetric', 'trimetric', 'current'])
|
|
25
|
+
.optional(),
|
|
20
26
|
position: z.object({
|
|
21
27
|
x: z.number().describe('X position in mm'),
|
|
22
|
-
y: z.number().describe('Y position in mm')
|
|
28
|
+
y: z.number().describe('Y position in mm'),
|
|
23
29
|
}),
|
|
24
30
|
scale: z.number().optional().describe('View scale (e.g., 0.5 for 1:2)'),
|
|
25
|
-
sectionLine: z
|
|
31
|
+
sectionLine: z
|
|
32
|
+
.object({
|
|
26
33
|
startX: z.number(),
|
|
27
34
|
startY: z.number(),
|
|
28
35
|
endX: z.number(),
|
|
29
|
-
endY: z.number()
|
|
30
|
-
})
|
|
31
|
-
|
|
36
|
+
endY: z.number(),
|
|
37
|
+
})
|
|
38
|
+
.optional(),
|
|
39
|
+
detailCircle: z
|
|
40
|
+
.object({
|
|
32
41
|
centerX: z.number(),
|
|
33
42
|
centerY: z.number(),
|
|
34
|
-
radius: z.number()
|
|
35
|
-
})
|
|
43
|
+
radius: z.number(),
|
|
44
|
+
})
|
|
45
|
+
.optional(),
|
|
36
46
|
}),
|
|
37
47
|
handler: (args) => {
|
|
38
|
-
const
|
|
48
|
+
const _viewOrientations = {
|
|
39
49
|
front: 'swDrawingViewOrientations_e.swDrawingFrontView',
|
|
40
50
|
back: 'swDrawingViewOrientations_e.swDrawingBackView',
|
|
41
51
|
left: 'swDrawingViewOrientations_e.swDrawingLeftView',
|
|
42
52
|
right: 'swDrawingViewOrientations_e.swDrawingRightView',
|
|
43
53
|
top: 'swDrawingViewOrientations_e.swDrawingTopView',
|
|
44
54
|
bottom: 'swDrawingViewOrientations_e.swDrawingBottomView',
|
|
45
|
-
isometric: 'swDrawingViewOrientations_e.swDrawingIsometricView'
|
|
55
|
+
isometric: 'swDrawingViewOrientations_e.swDrawingIsometricView',
|
|
46
56
|
};
|
|
47
57
|
const viewTypes = {
|
|
48
|
-
standard: `
|
|
49
|
-
' Create standard view
|
|
50
|
-
Set swView = swDraw.CreateDrawViewFromModelView3( _
|
|
51
|
-
"${args.modelPath}", _
|
|
52
|
-
"*${args.viewOrientation || 'Front'}", _
|
|
53
|
-
${args.position.x / 1000}, ${args.position.y / 1000}, 0)
|
|
54
|
-
|
|
55
|
-
If Not swView Is Nothing Then
|
|
56
|
-
swView.ScaleDecimal = ${args.scale || 1}
|
|
57
|
-
MsgBox "Standard view created"
|
|
58
|
+
standard: `
|
|
59
|
+
' Create standard view
|
|
60
|
+
Set swView = swDraw.CreateDrawViewFromModelView3( _
|
|
61
|
+
"${args.modelPath}", _
|
|
62
|
+
"*${args.viewOrientation || 'Front'}", _
|
|
63
|
+
${args.position.x / 1000}, ${args.position.y / 1000}, 0)
|
|
64
|
+
|
|
65
|
+
If Not swView Is Nothing Then
|
|
66
|
+
swView.ScaleDecimal = ${args.scale || 1}
|
|
67
|
+
MsgBox "Standard view created"
|
|
58
68
|
End If`,
|
|
59
|
-
projected: `
|
|
60
|
-
' Create projected view from parent
|
|
61
|
-
Set swParentView = swDraw.GetFirstView ' Get sheet
|
|
62
|
-
Set swParentView = swParentView.GetNextView ' Get first view
|
|
63
|
-
|
|
64
|
-
If Not swParentView Is Nothing Then
|
|
65
|
-
Set swView = swDraw.CreateUnfoldedViewAt3( _
|
|
66
|
-
${args.position.x / 1000}, ${args.position.y / 1000}, 0, False)
|
|
67
|
-
|
|
68
|
-
If Not swView Is Nothing Then
|
|
69
|
-
MsgBox "Projected view created"
|
|
70
|
-
End If
|
|
69
|
+
projected: `
|
|
70
|
+
' Create projected view from parent
|
|
71
|
+
Set swParentView = swDraw.GetFirstView ' Get sheet
|
|
72
|
+
Set swParentView = swParentView.GetNextView ' Get first view
|
|
73
|
+
|
|
74
|
+
If Not swParentView Is Nothing Then
|
|
75
|
+
Set swView = swDraw.CreateUnfoldedViewAt3( _
|
|
76
|
+
${args.position.x / 1000}, ${args.position.y / 1000}, 0, False)
|
|
77
|
+
|
|
78
|
+
If Not swView Is Nothing Then
|
|
79
|
+
MsgBox "Projected view created"
|
|
80
|
+
End If
|
|
71
81
|
End If`,
|
|
72
|
-
section: `
|
|
73
|
-
' Create section view
|
|
74
|
-
Set swParentView = swDraw.GetFirstView.GetNextView
|
|
75
|
-
|
|
76
|
-
If Not swParentView Is Nothing Then
|
|
77
|
-
' Create section line
|
|
78
|
-
Set swSketchMgr = swDraw.SketchManager
|
|
79
|
-
swSketchMgr.InsertSketch False
|
|
80
|
-
swSketchMgr.CreateLine _
|
|
81
|
-
${(args.sectionLine?.startX || 0) / 1000}, _
|
|
82
|
-
${(args.sectionLine?.startY || 0) / 1000}, 0, _
|
|
83
|
-
${(args.sectionLine?.endX || 100) / 1000}, _
|
|
84
|
-
${(args.sectionLine?.endY || 0) / 1000}, 0
|
|
85
|
-
swSketchMgr.InsertSketch True
|
|
86
|
-
|
|
87
|
-
' Create section view
|
|
88
|
-
Set swView = swDraw.CreateSectionViewAt5( _
|
|
89
|
-
${args.position.x / 1000}, ${args.position.y / 1000}, 0, _
|
|
90
|
-
"Section A-A", _
|
|
91
|
-
swCreateSectionViewOptions_e.swCreateSectionView_DisplaySurfaceCut, _
|
|
92
|
-
"", 0)
|
|
93
|
-
|
|
94
|
-
If Not swView Is Nothing Then
|
|
95
|
-
MsgBox "Section view created"
|
|
96
|
-
End If
|
|
82
|
+
section: `
|
|
83
|
+
' Create section view
|
|
84
|
+
Set swParentView = swDraw.GetFirstView.GetNextView
|
|
85
|
+
|
|
86
|
+
If Not swParentView Is Nothing Then
|
|
87
|
+
' Create section line
|
|
88
|
+
Set swSketchMgr = swDraw.SketchManager
|
|
89
|
+
swSketchMgr.InsertSketch False
|
|
90
|
+
swSketchMgr.CreateLine _
|
|
91
|
+
${(args.sectionLine?.startX || 0) / 1000}, _
|
|
92
|
+
${(args.sectionLine?.startY || 0) / 1000}, 0, _
|
|
93
|
+
${(args.sectionLine?.endX || 100) / 1000}, _
|
|
94
|
+
${(args.sectionLine?.endY || 0) / 1000}, 0
|
|
95
|
+
swSketchMgr.InsertSketch True
|
|
96
|
+
|
|
97
|
+
' Create section view
|
|
98
|
+
Set swView = swDraw.CreateSectionViewAt5( _
|
|
99
|
+
${args.position.x / 1000}, ${args.position.y / 1000}, 0, _
|
|
100
|
+
"Section A-A", _
|
|
101
|
+
swCreateSectionViewOptions_e.swCreateSectionView_DisplaySurfaceCut, _
|
|
102
|
+
"", 0)
|
|
103
|
+
|
|
104
|
+
If Not swView Is Nothing Then
|
|
105
|
+
MsgBox "Section view created"
|
|
106
|
+
End If
|
|
107
|
+
End If`,
|
|
108
|
+
detail: `
|
|
109
|
+
' Create detail view
|
|
110
|
+
Set swParentView = swDraw.GetFirstView.GetNextView
|
|
111
|
+
|
|
112
|
+
If Not swParentView Is Nothing Then
|
|
113
|
+
' Create detail circle
|
|
114
|
+
Set swSketchMgr = swDraw.SketchManager
|
|
115
|
+
swSketchMgr.InsertSketch False
|
|
116
|
+
swSketchMgr.CreateCircle _
|
|
117
|
+
${(args.detailCircle?.centerX || 0) / 1000}, _
|
|
118
|
+
${(args.detailCircle?.centerY || 0) / 1000}, 0, _
|
|
119
|
+
${(args.detailCircle?.radius || 10) / 1000}
|
|
120
|
+
swSketchMgr.InsertSketch True
|
|
121
|
+
|
|
122
|
+
' Create detail view
|
|
123
|
+
Set swView = swDraw.CreateDetailViewAt4( _
|
|
124
|
+
${args.position.x / 1000}, ${args.position.y / 1000}, 0, _
|
|
125
|
+
swDetViewStyle_e.swDetViewSTANDARD, _
|
|
126
|
+
${args.scale || 2}, _
|
|
127
|
+
True, "Detail A", _
|
|
128
|
+
swDetCircleShowType_e.swDetCircleCIRCLE, _
|
|
129
|
+
True, False, False)
|
|
130
|
+
|
|
131
|
+
If Not swView Is Nothing Then
|
|
132
|
+
MsgBox "Detail view created"
|
|
133
|
+
End If
|
|
97
134
|
End If`,
|
|
98
|
-
detail: `
|
|
99
|
-
' Create detail view
|
|
100
|
-
Set swParentView = swDraw.GetFirstView.GetNextView
|
|
101
|
-
|
|
102
|
-
If Not swParentView Is Nothing Then
|
|
103
|
-
' Create detail circle
|
|
104
|
-
Set swSketchMgr = swDraw.SketchManager
|
|
105
|
-
swSketchMgr.InsertSketch False
|
|
106
|
-
swSketchMgr.CreateCircle _
|
|
107
|
-
${(args.detailCircle?.centerX || 0) / 1000}, _
|
|
108
|
-
${(args.detailCircle?.centerY || 0) / 1000}, 0, _
|
|
109
|
-
${(args.detailCircle?.radius || 10) / 1000}
|
|
110
|
-
swSketchMgr.InsertSketch True
|
|
111
|
-
|
|
112
|
-
' Create detail view
|
|
113
|
-
Set swView = swDraw.CreateDetailViewAt4( _
|
|
114
|
-
${args.position.x / 1000}, ${args.position.y / 1000}, 0, _
|
|
115
|
-
swDetViewStyle_e.swDetViewSTANDARD, _
|
|
116
|
-
${args.scale || 2}, _
|
|
117
|
-
True, "Detail A", _
|
|
118
|
-
swDetCircleShowType_e.swDetCircleCIRCLE, _
|
|
119
|
-
True, False, False)
|
|
120
|
-
|
|
121
|
-
If Not swView Is Nothing Then
|
|
122
|
-
MsgBox "Detail view created"
|
|
123
|
-
End If
|
|
124
|
-
End If`
|
|
125
135
|
};
|
|
126
|
-
return `
|
|
127
|
-
Sub CreateDrawingView_${args.viewType}()
|
|
128
|
-
Dim swApp As SldWorks.SldWorks
|
|
129
|
-
Dim swModel As SldWorks.ModelDoc2
|
|
130
|
-
Dim swDraw As SldWorks.DrawingDoc
|
|
131
|
-
Dim swView As SldWorks.View
|
|
132
|
-
Dim swParentView As SldWorks.View
|
|
133
|
-
Dim swSketchMgr As SldWorks.SketchManager
|
|
134
|
-
|
|
135
|
-
Set swApp = Application.SldWorks
|
|
136
|
-
Set swModel = swApp.ActiveDoc
|
|
137
|
-
|
|
138
|
-
If swModel Is Nothing Then
|
|
139
|
-
MsgBox "No active document"
|
|
140
|
-
Exit Sub
|
|
141
|
-
End If
|
|
142
|
-
|
|
143
|
-
If swModel.GetType <> swDocumentTypes_e.swDocDRAWING Then
|
|
144
|
-
MsgBox "Please open a drawing document"
|
|
145
|
-
Exit Sub
|
|
146
|
-
End If
|
|
147
|
-
|
|
148
|
-
Set swDraw = swModel
|
|
149
|
-
|
|
150
|
-
${viewTypes[args.viewType] || viewTypes.standard}
|
|
151
|
-
|
|
152
|
-
swModel.ViewZoomtofit2
|
|
153
|
-
swModel.EditRebuild3
|
|
136
|
+
return `
|
|
137
|
+
Sub CreateDrawingView_${args.viewType}()
|
|
138
|
+
Dim swApp As SldWorks.SldWorks
|
|
139
|
+
Dim swModel As SldWorks.ModelDoc2
|
|
140
|
+
Dim swDraw As SldWorks.DrawingDoc
|
|
141
|
+
Dim swView As SldWorks.View
|
|
142
|
+
Dim swParentView As SldWorks.View
|
|
143
|
+
Dim swSketchMgr As SldWorks.SketchManager
|
|
144
|
+
|
|
145
|
+
Set swApp = Application.SldWorks
|
|
146
|
+
Set swModel = swApp.ActiveDoc
|
|
147
|
+
|
|
148
|
+
If swModel Is Nothing Then
|
|
149
|
+
MsgBox "No active document"
|
|
150
|
+
Exit Sub
|
|
151
|
+
End If
|
|
152
|
+
|
|
153
|
+
If swModel.GetType <> swDocumentTypes_e.swDocDRAWING Then
|
|
154
|
+
MsgBox "Please open a drawing document"
|
|
155
|
+
Exit Sub
|
|
156
|
+
End If
|
|
157
|
+
|
|
158
|
+
Set swDraw = swModel
|
|
159
|
+
|
|
160
|
+
${viewTypes[args.viewType] || viewTypes.standard}
|
|
161
|
+
|
|
162
|
+
swModel.ViewZoomtofit2
|
|
163
|
+
swModel.EditRebuild3
|
|
154
164
|
End Sub`;
|
|
155
|
-
}
|
|
165
|
+
},
|
|
156
166
|
},
|
|
157
167
|
{
|
|
158
168
|
name: 'vba_drawing_dimensions',
|
|
159
169
|
description: 'Generate VBA for adding dimensions to drawings',
|
|
160
170
|
inputSchema: z.object({
|
|
161
171
|
dimensionType: z.enum([
|
|
162
|
-
'linear',
|
|
163
|
-
'
|
|
172
|
+
'linear',
|
|
173
|
+
'angular',
|
|
174
|
+
'radial',
|
|
175
|
+
'diameter',
|
|
176
|
+
'ordinate',
|
|
177
|
+
'chamfer',
|
|
178
|
+
'arc_length',
|
|
179
|
+
'coordinate',
|
|
164
180
|
]),
|
|
165
181
|
viewName: z.string().optional().describe('Name of the view'),
|
|
166
|
-
entities: z
|
|
182
|
+
entities: z
|
|
183
|
+
.array(z.object({
|
|
167
184
|
type: z.enum(['edge', 'vertex', 'face']),
|
|
168
|
-
name: z.string()
|
|
169
|
-
}))
|
|
185
|
+
name: z.string(),
|
|
186
|
+
}))
|
|
187
|
+
.optional(),
|
|
170
188
|
position: z.object({
|
|
171
189
|
x: z.number(),
|
|
172
|
-
y: z.number()
|
|
190
|
+
y: z.number(),
|
|
173
191
|
}),
|
|
174
|
-
tolerance: z
|
|
192
|
+
tolerance: z
|
|
193
|
+
.object({
|
|
175
194
|
type: z.enum(['bilateral', 'limit', 'symmetric', 'basic', 'min', 'max']).optional(),
|
|
176
195
|
upper: z.number().optional(),
|
|
177
|
-
lower: z.number().optional()
|
|
178
|
-
})
|
|
196
|
+
lower: z.number().optional(),
|
|
197
|
+
})
|
|
198
|
+
.optional(),
|
|
179
199
|
prefix: z.string().optional(),
|
|
180
|
-
suffix: z.string().optional()
|
|
200
|
+
suffix: z.string().optional(),
|
|
181
201
|
}),
|
|
182
202
|
handler: (args) => {
|
|
183
|
-
return `
|
|
184
|
-
Sub AddDimension_${args.dimensionType}()
|
|
185
|
-
Dim swApp As SldWorks.SldWorks
|
|
186
|
-
Dim swModel As SldWorks.ModelDoc2
|
|
187
|
-
Dim swDraw As SldWorks.DrawingDoc
|
|
188
|
-
Dim swView As SldWorks.View
|
|
189
|
-
Dim swDispDim As SldWorks.DisplayDimension
|
|
190
|
-
Dim swDim As SldWorks.Dimension
|
|
191
|
-
Dim swTol As SldWorks.DimensionTolerance
|
|
192
|
-
|
|
193
|
-
Set swApp = Application.SldWorks
|
|
194
|
-
Set swModel = swApp.ActiveDoc
|
|
195
|
-
|
|
196
|
-
If swModel Is Nothing Or swModel.GetType <> swDocumentTypes_e.swDocDRAWING Then
|
|
197
|
-
MsgBox "Please open a drawing document"
|
|
198
|
-
Exit Sub
|
|
199
|
-
End If
|
|
200
|
-
|
|
201
|
-
Set swDraw = swModel
|
|
202
|
-
|
|
203
|
-
' Get the view
|
|
204
|
-
Set swView = swDraw.GetFirstView ' Sheet
|
|
205
|
-
Set swView = swView.GetNextView ' First view
|
|
206
|
-
${args.viewName
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
${args.entities.
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
${
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
${args.dimensionType === '
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
203
|
+
return `
|
|
204
|
+
Sub AddDimension_${args.dimensionType}()
|
|
205
|
+
Dim swApp As SldWorks.SldWorks
|
|
206
|
+
Dim swModel As SldWorks.ModelDoc2
|
|
207
|
+
Dim swDraw As SldWorks.DrawingDoc
|
|
208
|
+
Dim swView As SldWorks.View
|
|
209
|
+
Dim swDispDim As SldWorks.DisplayDimension
|
|
210
|
+
Dim swDim As SldWorks.Dimension
|
|
211
|
+
Dim swTol As SldWorks.DimensionTolerance
|
|
212
|
+
|
|
213
|
+
Set swApp = Application.SldWorks
|
|
214
|
+
Set swModel = swApp.ActiveDoc
|
|
215
|
+
|
|
216
|
+
If swModel Is Nothing Or swModel.GetType <> swDocumentTypes_e.swDocDRAWING Then
|
|
217
|
+
MsgBox "Please open a drawing document"
|
|
218
|
+
Exit Sub
|
|
219
|
+
End If
|
|
220
|
+
|
|
221
|
+
Set swDraw = swModel
|
|
222
|
+
|
|
223
|
+
' Get the view
|
|
224
|
+
Set swView = swDraw.GetFirstView ' Sheet
|
|
225
|
+
Set swView = swView.GetNextView ' First view
|
|
226
|
+
${args.viewName
|
|
227
|
+
? `
|
|
228
|
+
' Find specific view
|
|
229
|
+
Do While Not swView Is Nothing
|
|
230
|
+
If swView.Name = "${args.viewName}" Then Exit Do
|
|
231
|
+
Set swView = swView.GetNextView
|
|
232
|
+
Loop`
|
|
233
|
+
: ''}
|
|
234
|
+
|
|
235
|
+
If swView Is Nothing Then
|
|
236
|
+
MsgBox "View not found"
|
|
237
|
+
Exit Sub
|
|
238
|
+
End If
|
|
239
|
+
|
|
240
|
+
' Activate view
|
|
241
|
+
swDraw.ActivateView swView.Name
|
|
242
|
+
|
|
243
|
+
${args.entities && args.entities.length > 0
|
|
244
|
+
? `
|
|
245
|
+
' Select entities
|
|
246
|
+
${args.entities
|
|
247
|
+
.map((entity, i) => `
|
|
248
|
+
swModel.Extension.SelectByID2 "${entity.name}", "${entity.type.toUpperCase()}", _
|
|
249
|
+
0, 0, 0, ${i > 0 ? 'True' : 'False'}, 0, Nothing, 0`)
|
|
250
|
+
.join('')}`
|
|
251
|
+
: ''}
|
|
252
|
+
|
|
253
|
+
' Add dimension based on type
|
|
254
|
+
${args.dimensionType === 'linear'
|
|
255
|
+
? `
|
|
256
|
+
Set swDispDim = swModel.AddDimension2( _
|
|
257
|
+
${args.position.x / 1000}, ${args.position.y / 1000}, 0)`
|
|
258
|
+
: ''}
|
|
259
|
+
|
|
260
|
+
${args.dimensionType === 'angular'
|
|
261
|
+
? `
|
|
262
|
+
Set swDispDim = swModel.AddAngularDimension2( _
|
|
263
|
+
${args.position.x / 1000}, ${args.position.y / 1000}, 0)`
|
|
264
|
+
: ''}
|
|
265
|
+
|
|
266
|
+
${args.dimensionType === 'radial'
|
|
267
|
+
? `
|
|
268
|
+
Set swDispDim = swModel.AddRadialDimension2( _
|
|
269
|
+
${args.position.x / 1000}, ${args.position.y / 1000}, 0)`
|
|
270
|
+
: ''}
|
|
271
|
+
|
|
272
|
+
${args.dimensionType === 'diameter'
|
|
273
|
+
? `
|
|
274
|
+
Set swDispDim = swModel.AddDiameterDimension2( _
|
|
275
|
+
${args.position.x / 1000}, ${args.position.y / 1000}, 0)`
|
|
276
|
+
: ''}
|
|
277
|
+
|
|
278
|
+
${args.dimensionType === 'ordinate'
|
|
279
|
+
? `
|
|
280
|
+
Set swDispDim = swModel.AddOrdinateDimension2( _
|
|
281
|
+
0, ${args.position.x / 1000}, ${args.position.y / 1000}, 0)`
|
|
282
|
+
: ''}
|
|
283
|
+
|
|
284
|
+
If Not swDispDim Is Nothing Then
|
|
285
|
+
Set swDim = swDispDim.GetDimension2(0)
|
|
286
|
+
|
|
287
|
+
${args.prefix ? `swDim.SetText swTextPrefix, "${args.prefix}"` : ''}
|
|
288
|
+
${args.suffix ? `swDim.SetText swTextSuffix, "${args.suffix}"` : ''}
|
|
289
|
+
|
|
290
|
+
${args.tolerance
|
|
291
|
+
? `
|
|
292
|
+
' Set tolerance
|
|
293
|
+
Set swTol = swDim.Tolerance
|
|
294
|
+
swTol.Type = ${args.tolerance.type === 'bilateral'
|
|
295
|
+
? 'swTolBILATERAL'
|
|
296
|
+
: args.tolerance.type === 'limit'
|
|
297
|
+
? 'swTolLIMIT'
|
|
298
|
+
: args.tolerance.type === 'symmetric'
|
|
299
|
+
? 'swTolSYMMETRIC'
|
|
300
|
+
: args.tolerance.type === 'basic'
|
|
301
|
+
? 'swTolBASIC'
|
|
302
|
+
: 'swTolNONE'}
|
|
303
|
+
${args.tolerance.upper ? `swTol.SetValues 0, ${args.tolerance.upper / 1000}, ${args.tolerance.lower ? args.tolerance.lower / 1000 : 0}` : ''}`
|
|
304
|
+
: ''}
|
|
305
|
+
|
|
306
|
+
MsgBox "${args.dimensionType} dimension added"
|
|
307
|
+
Else
|
|
308
|
+
MsgBox "Failed to add dimension"
|
|
309
|
+
End If
|
|
310
|
+
|
|
311
|
+
swModel.ClearSelection2 True
|
|
270
312
|
End Sub`;
|
|
271
|
-
}
|
|
313
|
+
},
|
|
272
314
|
},
|
|
273
315
|
{
|
|
274
316
|
name: 'vba_drawing_annotations',
|
|
275
317
|
description: 'Generate VBA for adding annotations to drawings',
|
|
276
318
|
inputSchema: z.object({
|
|
277
319
|
annotationType: z.enum([
|
|
278
|
-
'note',
|
|
279
|
-
'
|
|
320
|
+
'note',
|
|
321
|
+
'balloon',
|
|
322
|
+
'datum',
|
|
323
|
+
'geometric_tolerance',
|
|
324
|
+
'surface_finish',
|
|
325
|
+
'weld_symbol',
|
|
326
|
+
'center_mark',
|
|
327
|
+
'centerline',
|
|
280
328
|
]),
|
|
281
329
|
text: z.string().optional().describe('Annotation text'),
|
|
282
330
|
position: z.object({
|
|
283
331
|
x: z.number(),
|
|
284
|
-
y: z.number()
|
|
332
|
+
y: z.number(),
|
|
285
333
|
}),
|
|
286
|
-
leaderPoints: z
|
|
334
|
+
leaderPoints: z
|
|
335
|
+
.array(z.object({
|
|
287
336
|
x: z.number(),
|
|
288
|
-
y: z.number()
|
|
289
|
-
}))
|
|
290
|
-
|
|
337
|
+
y: z.number(),
|
|
338
|
+
}))
|
|
339
|
+
.optional(),
|
|
340
|
+
style: z
|
|
341
|
+
.object({
|
|
291
342
|
fontSize: z.number().optional(),
|
|
292
343
|
bold: z.boolean().optional(),
|
|
293
344
|
italic: z.boolean().optional(),
|
|
294
|
-
underline: z.boolean().optional()
|
|
295
|
-
})
|
|
345
|
+
underline: z.boolean().optional(),
|
|
346
|
+
})
|
|
347
|
+
.optional(),
|
|
296
348
|
balloonStyle: z.enum(['circular', 'triangle', 'hexagon', 'box', 'diamond']).optional(),
|
|
297
|
-
itemNumber: z.number().optional()
|
|
349
|
+
itemNumber: z.number().optional(),
|
|
298
350
|
}),
|
|
299
351
|
handler: (args) => {
|
|
300
352
|
const annotations = {
|
|
301
|
-
note: `
|
|
302
|
-
' Create note
|
|
303
|
-
Set swNote = swModel.InsertNote("${args.text || 'Note Text'}")
|
|
304
|
-
|
|
305
|
-
If Not swNote Is Nothing Then
|
|
306
|
-
Set swAnn = swNote.GetAnnotation
|
|
307
|
-
swAnn.SetPosition ${args.position.x / 1000}, ${args.position.y / 1000}, 0
|
|
308
|
-
|
|
309
|
-
${args.style
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
${args.style.
|
|
315
|
-
${args.style.
|
|
316
|
-
${args.style.
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
353
|
+
note: `
|
|
354
|
+
' Create note
|
|
355
|
+
Set swNote = swModel.InsertNote("${args.text || 'Note Text'}")
|
|
356
|
+
|
|
357
|
+
If Not swNote Is Nothing Then
|
|
358
|
+
Set swAnn = swNote.GetAnnotation
|
|
359
|
+
swAnn.SetPosition ${args.position.x / 1000}, ${args.position.y / 1000}, 0
|
|
360
|
+
|
|
361
|
+
${args.style
|
|
362
|
+
? `
|
|
363
|
+
' Set text format
|
|
364
|
+
Dim swTextFormat As SldWorks.TextFormat
|
|
365
|
+
Set swTextFormat = swAnn.GetTextFormat(0)
|
|
366
|
+
${args.style.fontSize ? `swTextFormat.CharHeight = ${args.style.fontSize / 1000}` : ''}
|
|
367
|
+
${args.style.bold ? `swTextFormat.Bold = True` : ''}
|
|
368
|
+
${args.style.italic ? `swTextFormat.Italic = True` : ''}
|
|
369
|
+
${args.style.underline ? `swTextFormat.Underline = True` : ''}
|
|
370
|
+
swNote.SetTextFormat 0, False, swTextFormat`
|
|
371
|
+
: ''}
|
|
372
|
+
|
|
373
|
+
${args.leaderPoints && args.leaderPoints.length > 0
|
|
374
|
+
? `
|
|
375
|
+
' Add leader
|
|
376
|
+
swNote.SetBalloon swBalloonStyle_e.swBS_None, swBalloonFit_e.swBF_Tightest
|
|
377
|
+
Dim leaderInfo As SldWorks.Leader
|
|
378
|
+
Set leaderInfo = swNote.GetLeader
|
|
379
|
+
leaderInfo.SetLeader2 True, swLeaderSide_e.swLS_SMART, True, False, False, False`
|
|
380
|
+
: ''}
|
|
381
|
+
|
|
382
|
+
MsgBox "Note added"
|
|
327
383
|
End If`,
|
|
328
|
-
balloon: `
|
|
329
|
-
' Create balloon
|
|
330
|
-
Set swNote = swModel.InsertNote("${args.itemNumber || '1'}")
|
|
331
|
-
|
|
332
|
-
If Not swNote Is Nothing Then
|
|
333
|
-
Set swAnn = swNote.GetAnnotation
|
|
334
|
-
swAnn.SetPosition ${args.position.x / 1000}, ${args.position.y / 1000}, 0
|
|
335
|
-
|
|
336
|
-
' Set balloon style
|
|
337
|
-
swNote.SetBalloon _
|
|
338
|
-
${args.balloonStyle === 'circular'
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
384
|
+
balloon: `
|
|
385
|
+
' Create balloon
|
|
386
|
+
Set swNote = swModel.InsertNote("${args.itemNumber || '1'}")
|
|
387
|
+
|
|
388
|
+
If Not swNote Is Nothing Then
|
|
389
|
+
Set swAnn = swNote.GetAnnotation
|
|
390
|
+
swAnn.SetPosition ${args.position.x / 1000}, ${args.position.y / 1000}, 0
|
|
391
|
+
|
|
392
|
+
' Set balloon style
|
|
393
|
+
swNote.SetBalloon _
|
|
394
|
+
${args.balloonStyle === 'circular'
|
|
395
|
+
? 'swBS_Circular'
|
|
396
|
+
: args.balloonStyle === 'triangle'
|
|
397
|
+
? 'swBS_Triangle'
|
|
398
|
+
: args.balloonStyle === 'hexagon'
|
|
399
|
+
? 'swBS_Hexagon'
|
|
400
|
+
: args.balloonStyle === 'box'
|
|
401
|
+
? 'swBS_Box'
|
|
402
|
+
: 'swBS_Circular'}, _
|
|
403
|
+
swBF_Tightest
|
|
404
|
+
|
|
405
|
+
${args.leaderPoints && args.leaderPoints.length > 0
|
|
406
|
+
? `
|
|
407
|
+
' Attach leader to component
|
|
408
|
+
swModel.Extension.SelectByID2 "", "EDGE", _
|
|
409
|
+
${args.leaderPoints[0].x / 1000}, _
|
|
410
|
+
${args.leaderPoints[0].y / 1000}, 0, _
|
|
411
|
+
False, 0, Nothing, 0
|
|
412
|
+
|
|
413
|
+
Dim leaderInfo As SldWorks.Leader
|
|
414
|
+
Set leaderInfo = swNote.GetLeader
|
|
415
|
+
leaderInfo.SetLeader2 True, swLS_SMART, True, False, False, False`
|
|
416
|
+
: ''}
|
|
417
|
+
|
|
418
|
+
MsgBox "Balloon added"
|
|
357
419
|
End If`,
|
|
358
|
-
geometric_tolerance: `
|
|
359
|
-
' Create geometric tolerance
|
|
360
|
-
Set swGtol = swModel.InsertGtol
|
|
361
|
-
|
|
362
|
-
If Not swGtol Is Nothing Then
|
|
363
|
-
swGtol.SetFrameValues 1, "${args.text || '⟂0.01 A'}", "", "", "", ""
|
|
364
|
-
Set swAnn = swGtol.GetAnnotation
|
|
365
|
-
swAnn.SetPosition ${args.position.x / 1000}, ${args.position.y / 1000}, 0
|
|
366
|
-
|
|
367
|
-
MsgBox "Geometric tolerance added"
|
|
420
|
+
geometric_tolerance: `
|
|
421
|
+
' Create geometric tolerance
|
|
422
|
+
Set swGtol = swModel.InsertGtol
|
|
423
|
+
|
|
424
|
+
If Not swGtol Is Nothing Then
|
|
425
|
+
swGtol.SetFrameValues 1, "${args.text || '⟂0.01 A'}", "", "", "", ""
|
|
426
|
+
Set swAnn = swGtol.GetAnnotation
|
|
427
|
+
swAnn.SetPosition ${args.position.x / 1000}, ${args.position.y / 1000}, 0
|
|
428
|
+
|
|
429
|
+
MsgBox "Geometric tolerance added"
|
|
368
430
|
End If`,
|
|
369
|
-
surface_finish: `
|
|
370
|
-
' Create surface finish symbol
|
|
371
|
-
Set swSFSymbol = swModel.InsertSurfaceFinishSymbol3( _
|
|
372
|
-
swSurfaceFinishStandard_e.swSurfaceFinishStandard_ISO, _
|
|
373
|
-
swSFLaySymType_e.swSFLaySym_None, _
|
|
374
|
-
swSurfaceFinishSymbol_e.swSFMachiningRequired, _
|
|
375
|
-
"${args.text || '1.6'}", "", "", "", "", "")
|
|
376
|
-
|
|
377
|
-
If Not swSFSymbol Is Nothing Then
|
|
378
|
-
Set swAnn = swSFSymbol.GetAnnotation
|
|
379
|
-
swAnn.SetPosition ${args.position.x / 1000}, ${args.position.y / 1000}, 0
|
|
380
|
-
|
|
381
|
-
MsgBox "Surface finish symbol added"
|
|
431
|
+
surface_finish: `
|
|
432
|
+
' Create surface finish symbol
|
|
433
|
+
Set swSFSymbol = swModel.InsertSurfaceFinishSymbol3( _
|
|
434
|
+
swSurfaceFinishStandard_e.swSurfaceFinishStandard_ISO, _
|
|
435
|
+
swSFLaySymType_e.swSFLaySym_None, _
|
|
436
|
+
swSurfaceFinishSymbol_e.swSFMachiningRequired, _
|
|
437
|
+
"${args.text || '1.6'}", "", "", "", "", "")
|
|
438
|
+
|
|
439
|
+
If Not swSFSymbol Is Nothing Then
|
|
440
|
+
Set swAnn = swSFSymbol.GetAnnotation
|
|
441
|
+
swAnn.SetPosition ${args.position.x / 1000}, ${args.position.y / 1000}, 0
|
|
442
|
+
|
|
443
|
+
MsgBox "Surface finish symbol added"
|
|
382
444
|
End If`,
|
|
383
|
-
weld_symbol: `
|
|
384
|
-
' Create weld symbol
|
|
385
|
-
Set swWeldSymbol = swModel.InsertWeldSymbol3
|
|
386
|
-
|
|
387
|
-
If Not swWeldSymbol Is Nothing Then
|
|
388
|
-
' Configure weld symbol
|
|
389
|
-
swWeldSymbol.SetWeldSymbol True, "Fillet", "${args.text || '5'}", "", "", ""
|
|
390
|
-
Set swAnn = swWeldSymbol.GetAnnotation
|
|
391
|
-
swAnn.SetPosition ${args.position.x / 1000}, ${args.position.y / 1000}, 0
|
|
392
|
-
|
|
393
|
-
MsgBox "Weld symbol added"
|
|
445
|
+
weld_symbol: `
|
|
446
|
+
' Create weld symbol
|
|
447
|
+
Set swWeldSymbol = swModel.InsertWeldSymbol3
|
|
448
|
+
|
|
449
|
+
If Not swWeldSymbol Is Nothing Then
|
|
450
|
+
' Configure weld symbol
|
|
451
|
+
swWeldSymbol.SetWeldSymbol True, "Fillet", "${args.text || '5'}", "", "", ""
|
|
452
|
+
Set swAnn = swWeldSymbol.GetAnnotation
|
|
453
|
+
swAnn.SetPosition ${args.position.x / 1000}, ${args.position.y / 1000}, 0
|
|
454
|
+
|
|
455
|
+
MsgBox "Weld symbol added"
|
|
456
|
+
End If`,
|
|
457
|
+
center_mark: `
|
|
458
|
+
' Create center mark
|
|
459
|
+
swModel.Extension.SelectByID2 "", "EDGE", _
|
|
460
|
+
${args.position.x / 1000}, ${args.position.y / 1000}, 0, _
|
|
461
|
+
False, 0, Nothing, 0
|
|
462
|
+
|
|
463
|
+
Set swCenterMark = swModel.AddCenterMark( _
|
|
464
|
+
swCenterMarkConnectionLine_e.swCenterMark_ConnectionLines, _
|
|
465
|
+
swCenterMarkGapDistance_e.swCenterMark_GapDistance)
|
|
466
|
+
|
|
467
|
+
If Not swCenterMark Is Nothing Then
|
|
468
|
+
MsgBox "Center mark added"
|
|
394
469
|
End If`,
|
|
395
|
-
center_mark: `
|
|
396
|
-
' Create center mark
|
|
397
|
-
swModel.Extension.SelectByID2 "", "EDGE", _
|
|
398
|
-
${args.position.x / 1000}, ${args.position.y / 1000}, 0, _
|
|
399
|
-
False, 0, Nothing, 0
|
|
400
|
-
|
|
401
|
-
Set swCenterMark = swModel.AddCenterMark( _
|
|
402
|
-
swCenterMarkConnectionLine_e.swCenterMark_ConnectionLines, _
|
|
403
|
-
swCenterMarkGapDistance_e.swCenterMark_GapDistance)
|
|
404
|
-
|
|
405
|
-
If Not swCenterMark Is Nothing Then
|
|
406
|
-
MsgBox "Center mark added"
|
|
407
|
-
End If`
|
|
408
470
|
};
|
|
409
|
-
return `
|
|
410
|
-
Sub AddAnnotation_${args.annotationType}()
|
|
411
|
-
Dim swApp As SldWorks.SldWorks
|
|
412
|
-
Dim swModel As SldWorks.ModelDoc2
|
|
413
|
-
Dim swDraw As SldWorks.DrawingDoc
|
|
414
|
-
Dim swNote As SldWorks.Note
|
|
415
|
-
Dim swAnn As SldWorks.Annotation
|
|
416
|
-
Dim swGtol As SldWorks.Gtol
|
|
417
|
-
Dim swSFSymbol As SldWorks.SurfaceFinishSymbol
|
|
418
|
-
Dim swWeldSymbol As SldWorks.WeldSymbol
|
|
419
|
-
Dim swCenterMark As SldWorks.CenterMark
|
|
420
|
-
|
|
421
|
-
Set swApp = Application.SldWorks
|
|
422
|
-
Set swModel = swApp.ActiveDoc
|
|
423
|
-
|
|
424
|
-
If swModel Is Nothing Or swModel.GetType <> swDocumentTypes_e.swDocDRAWING Then
|
|
425
|
-
MsgBox "Please open a drawing document"
|
|
426
|
-
Exit Sub
|
|
427
|
-
End If
|
|
428
|
-
|
|
429
|
-
Set swDraw = swModel
|
|
430
|
-
|
|
431
|
-
${annotations[args.annotationType] || annotations.note}
|
|
432
|
-
|
|
433
|
-
swModel.EditRebuild3
|
|
471
|
+
return `
|
|
472
|
+
Sub AddAnnotation_${args.annotationType}()
|
|
473
|
+
Dim swApp As SldWorks.SldWorks
|
|
474
|
+
Dim swModel As SldWorks.ModelDoc2
|
|
475
|
+
Dim swDraw As SldWorks.DrawingDoc
|
|
476
|
+
Dim swNote As SldWorks.Note
|
|
477
|
+
Dim swAnn As SldWorks.Annotation
|
|
478
|
+
Dim swGtol As SldWorks.Gtol
|
|
479
|
+
Dim swSFSymbol As SldWorks.SurfaceFinishSymbol
|
|
480
|
+
Dim swWeldSymbol As SldWorks.WeldSymbol
|
|
481
|
+
Dim swCenterMark As SldWorks.CenterMark
|
|
482
|
+
|
|
483
|
+
Set swApp = Application.SldWorks
|
|
484
|
+
Set swModel = swApp.ActiveDoc
|
|
485
|
+
|
|
486
|
+
If swModel Is Nothing Or swModel.GetType <> swDocumentTypes_e.swDocDRAWING Then
|
|
487
|
+
MsgBox "Please open a drawing document"
|
|
488
|
+
Exit Sub
|
|
489
|
+
End If
|
|
490
|
+
|
|
491
|
+
Set swDraw = swModel
|
|
492
|
+
|
|
493
|
+
${annotations[args.annotationType] || annotations.note}
|
|
494
|
+
|
|
495
|
+
swModel.EditRebuild3
|
|
434
496
|
End Sub`;
|
|
435
|
-
}
|
|
497
|
+
},
|
|
436
498
|
},
|
|
437
499
|
{
|
|
438
500
|
name: 'vba_drawing_tables',
|
|
@@ -441,132 +503,159 @@ End Sub`;
|
|
|
441
503
|
tableType: z.enum(['general', 'hole', 'revision', 'bom', 'weldment_cutlist']),
|
|
442
504
|
position: z.object({
|
|
443
505
|
x: z.number(),
|
|
444
|
-
y: z.number()
|
|
506
|
+
y: z.number(),
|
|
445
507
|
}),
|
|
446
508
|
rows: z.number().optional(),
|
|
447
509
|
columns: z.number().optional(),
|
|
448
510
|
headers: z.array(z.string()).optional(),
|
|
449
511
|
data: z.array(z.array(z.string())).optional(),
|
|
450
512
|
template: z.string().optional().describe('Path to table template'),
|
|
451
|
-
anchorType: z.enum(['top_left', 'top_right', 'bottom_left', 'bottom_right']).optional()
|
|
513
|
+
anchorType: z.enum(['top_left', 'top_right', 'bottom_left', 'bottom_right']).optional(),
|
|
452
514
|
}),
|
|
453
515
|
handler: (args) => {
|
|
454
|
-
return `
|
|
455
|
-
Sub CreateTable_${args.tableType}()
|
|
456
|
-
Dim swApp As SldWorks.SldWorks
|
|
457
|
-
Dim swModel As SldWorks.ModelDoc2
|
|
458
|
-
Dim swDraw As SldWorks.DrawingDoc
|
|
459
|
-
Dim swTable As SldWorks.TableAnnotation
|
|
460
|
-
Dim swBOMTable As SldWorks.BomTableAnnotation
|
|
461
|
-
Dim i As Integer, j As Integer
|
|
462
|
-
|
|
463
|
-
Set swApp = Application.SldWorks
|
|
464
|
-
Set swModel = swApp.ActiveDoc
|
|
465
|
-
|
|
466
|
-
If swModel Is Nothing Or swModel.GetType <> swDocumentTypes_e.swDocDRAWING Then
|
|
467
|
-
MsgBox "Please open a drawing document"
|
|
468
|
-
Exit Sub
|
|
469
|
-
End If
|
|
470
|
-
|
|
471
|
-
Set swDraw = swModel
|
|
472
|
-
|
|
473
|
-
${args.tableType === 'general'
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
${args.
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
'
|
|
486
|
-
${args.
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
' Set
|
|
490
|
-
${args.
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
'
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
${args.tableType === '
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
${args.
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
' Create
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
swTable.
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
516
|
+
return `
|
|
517
|
+
Sub CreateTable_${args.tableType}()
|
|
518
|
+
Dim swApp As SldWorks.SldWorks
|
|
519
|
+
Dim swModel As SldWorks.ModelDoc2
|
|
520
|
+
Dim swDraw As SldWorks.DrawingDoc
|
|
521
|
+
Dim swTable As SldWorks.TableAnnotation
|
|
522
|
+
Dim swBOMTable As SldWorks.BomTableAnnotation
|
|
523
|
+
Dim i As Integer, j As Integer
|
|
524
|
+
|
|
525
|
+
Set swApp = Application.SldWorks
|
|
526
|
+
Set swModel = swApp.ActiveDoc
|
|
527
|
+
|
|
528
|
+
If swModel Is Nothing Or swModel.GetType <> swDocumentTypes_e.swDocDRAWING Then
|
|
529
|
+
MsgBox "Please open a drawing document"
|
|
530
|
+
Exit Sub
|
|
531
|
+
End If
|
|
532
|
+
|
|
533
|
+
Set swDraw = swModel
|
|
534
|
+
|
|
535
|
+
${args.tableType === 'general'
|
|
536
|
+
? `
|
|
537
|
+
' Create general table
|
|
538
|
+
Set swTable = swDraw.InsertTableAnnotation2( _
|
|
539
|
+
False, ${args.position.x / 1000}, ${args.position.y / 1000}, _
|
|
540
|
+
${args.anchorType === 'top_right'
|
|
541
|
+
? 'swBOMConfigurationAnchor_TopRight'
|
|
542
|
+
: args.anchorType === 'bottom_left'
|
|
543
|
+
? 'swBOMConfigurationAnchor_BottomLeft'
|
|
544
|
+
: args.anchorType === 'bottom_right'
|
|
545
|
+
? 'swBOMConfigurationAnchor_BottomRight'
|
|
546
|
+
: 'swBOMConfigurationAnchor_TopLeft'}, _
|
|
547
|
+
"${args.template || ''}", _
|
|
548
|
+
${args.rows || 5}, ${args.columns || 3})
|
|
549
|
+
|
|
550
|
+
If Not swTable Is Nothing Then
|
|
551
|
+
' Set headers
|
|
552
|
+
${args.headers
|
|
553
|
+
? args.headers
|
|
554
|
+
.map((header, i) => `
|
|
555
|
+
swTable.Text(0, ${i}) = "${header}"`)
|
|
556
|
+
.join('\n ')
|
|
557
|
+
: ''}
|
|
558
|
+
|
|
559
|
+
' Set data
|
|
560
|
+
${args.data
|
|
561
|
+
? args.data
|
|
562
|
+
.map((row, i) => row
|
|
563
|
+
.map((cell, j) => `
|
|
564
|
+
swTable.Text(${i + 1}, ${j}) = "${cell}"`)
|
|
565
|
+
.join(''))
|
|
566
|
+
.join('')
|
|
567
|
+
: ''}
|
|
568
|
+
|
|
569
|
+
MsgBox "General table created"
|
|
570
|
+
End If`
|
|
571
|
+
: ''}
|
|
572
|
+
|
|
573
|
+
${args.tableType === 'hole'
|
|
574
|
+
? `
|
|
575
|
+
' Create hole table
|
|
576
|
+
Set swTable = swDraw.InsertHoleTable2( _
|
|
577
|
+
"${args.template || ''}", _
|
|
578
|
+
${args.position.x / 1000}, ${args.position.y / 1000}, _
|
|
579
|
+
${args.anchorType === 'top_right'
|
|
580
|
+
? 'swBOMConfigurationAnchor_TopRight'
|
|
581
|
+
: args.anchorType === 'bottom_left'
|
|
582
|
+
? 'swBOMConfigurationAnchor_BottomLeft'
|
|
583
|
+
: args.anchorType === 'bottom_right'
|
|
584
|
+
? 'swBOMConfigurationAnchor_BottomRight'
|
|
585
|
+
: 'swBOMConfigurationAnchor_TopLeft'}, _
|
|
586
|
+
"A", True)
|
|
587
|
+
|
|
588
|
+
If Not swTable Is Nothing Then
|
|
589
|
+
MsgBox "Hole table created"
|
|
590
|
+
End If`
|
|
591
|
+
: ''}
|
|
592
|
+
|
|
593
|
+
${args.tableType === 'revision'
|
|
594
|
+
? `
|
|
595
|
+
' Create revision table
|
|
596
|
+
Set swTable = swDraw.InsertRevisionTable2( _
|
|
597
|
+
True, ${args.position.x / 1000}, ${args.position.y / 1000}, _
|
|
598
|
+
${args.anchorType === 'top_right'
|
|
599
|
+
? 'swBOMConfigurationAnchor_TopRight'
|
|
600
|
+
: args.anchorType === 'bottom_left'
|
|
601
|
+
? 'swBOMConfigurationAnchor_BottomLeft'
|
|
602
|
+
: args.anchorType === 'bottom_right'
|
|
603
|
+
? 'swBOMConfigurationAnchor_BottomRight'
|
|
604
|
+
: 'swBOMConfigurationAnchor_TopLeft'}, _
|
|
605
|
+
"${args.template || ''}")
|
|
606
|
+
|
|
607
|
+
If Not swTable Is Nothing Then
|
|
608
|
+
' Add revision
|
|
609
|
+
swTable.AddRevision "A"
|
|
610
|
+
swTable.Text(1, 0) = "A"
|
|
611
|
+
swTable.Text(1, 1) = Format(Date, "mm/dd/yyyy")
|
|
612
|
+
swTable.Text(1, 2) = "Initial Release"
|
|
613
|
+
swTable.Text(1, 3) = Application.UserName
|
|
614
|
+
|
|
615
|
+
MsgBox "Revision table created"
|
|
616
|
+
End If`
|
|
617
|
+
: ''}
|
|
618
|
+
|
|
619
|
+
${args.tableType === 'bom'
|
|
620
|
+
? `
|
|
621
|
+
' Create BOM table
|
|
622
|
+
Dim swBOMFeature As SldWorks.BomFeature
|
|
623
|
+
Set swBOMFeature = swDraw.FeatureManager.InsertBomTable3( _
|
|
624
|
+
"${args.template || ''}", _
|
|
625
|
+
${args.position.x / 1000}, ${args.position.y / 1000}, _
|
|
626
|
+
swBomType_e.swBomType_PartsOnly, _
|
|
627
|
+
"", _
|
|
628
|
+
swBOMConfigurationAnchorType_e.swBOMConfigurationAnchor_TopLeft, _
|
|
629
|
+
swBomStandard_e.swBomStandard_BomTable, _
|
|
630
|
+
False)
|
|
631
|
+
|
|
632
|
+
If Not swBOMFeature Is Nothing Then
|
|
633
|
+
Set swBOMTable = swBOMFeature.GetTableAnnotations(0)
|
|
634
|
+
Set swTable = swBOMTable
|
|
635
|
+
|
|
636
|
+
' Configure BOM
|
|
637
|
+
swTable.Title = "BILL OF MATERIALS"
|
|
638
|
+
|
|
639
|
+
MsgBox "BOM table created"
|
|
640
|
+
End If`
|
|
641
|
+
: ''}
|
|
642
|
+
|
|
643
|
+
' Format table
|
|
644
|
+
If Not swTable Is Nothing Then
|
|
645
|
+
' Auto-fit columns
|
|
646
|
+
For j = 0 To swTable.ColumnCount - 1
|
|
647
|
+
swTable.SetColumnWidth j, -1, swTableRowColSizeType_e.swAutoSizeFitText
|
|
648
|
+
Next j
|
|
649
|
+
|
|
650
|
+
' Set row height
|
|
651
|
+
For i = 0 To swTable.RowCount - 1
|
|
652
|
+
swTable.SetRowHeight i, 10 / 1000, swTableRowColSizeType_e.swManualSizing
|
|
653
|
+
Next i
|
|
654
|
+
End If
|
|
655
|
+
|
|
656
|
+
swModel.EditRebuild3
|
|
568
657
|
End Sub`;
|
|
569
|
-
}
|
|
658
|
+
},
|
|
570
659
|
},
|
|
571
660
|
{
|
|
572
661
|
name: 'vba_drawing_sheet_format',
|
|
@@ -575,13 +664,15 @@ End Sub`;
|
|
|
575
664
|
operation: z.enum(['create_sheet', 'modify_format', 'title_block', 'border']),
|
|
576
665
|
sheetName: z.string().optional(),
|
|
577
666
|
sheetSize: z.enum(['A4', 'A3', 'A2', 'A1', 'A0', 'Letter', 'Legal', 'Tabloid', 'Custom']).optional(),
|
|
578
|
-
customSize: z
|
|
667
|
+
customSize: z
|
|
668
|
+
.object({
|
|
579
669
|
width: z.number(),
|
|
580
|
-
height: z.number()
|
|
581
|
-
})
|
|
670
|
+
height: z.number(),
|
|
671
|
+
})
|
|
672
|
+
.optional(),
|
|
582
673
|
scale: z.string().optional().describe('Sheet scale (e.g., "1:2")'),
|
|
583
674
|
templatePath: z.string().optional(),
|
|
584
|
-
titleBlockData: z.record(z.string()).optional()
|
|
675
|
+
titleBlockData: z.record(z.string()).optional(),
|
|
585
676
|
}),
|
|
586
677
|
handler: (args) => {
|
|
587
678
|
const sheetSizes = {
|
|
@@ -592,104 +683,122 @@ End Sub`;
|
|
|
592
683
|
A0: [841, 1189],
|
|
593
684
|
Letter: [215.9, 279.4],
|
|
594
685
|
Legal: [215.9, 355.6],
|
|
595
|
-
Tabloid: [279.4, 431.8]
|
|
686
|
+
Tabloid: [279.4, 431.8],
|
|
596
687
|
};
|
|
597
|
-
return `
|
|
598
|
-
Sub ManageDrawingSheet_${args.operation}()
|
|
599
|
-
Dim swApp As SldWorks.SldWorks
|
|
600
|
-
Dim swModel As SldWorks.ModelDoc2
|
|
601
|
-
Dim swDraw As SldWorks.DrawingDoc
|
|
602
|
-
Dim swSheet As SldWorks.Sheet
|
|
603
|
-
Dim vSheetProps As Variant
|
|
604
|
-
Dim bRet As Boolean
|
|
605
|
-
|
|
606
|
-
Set swApp = Application.SldWorks
|
|
607
|
-
Set swModel = swApp.ActiveDoc
|
|
608
|
-
|
|
609
|
-
If swModel Is Nothing Or swModel.GetType <> swDocumentTypes_e.swDocDRAWING Then
|
|
610
|
-
MsgBox "Please open a drawing document"
|
|
611
|
-
Exit Sub
|
|
612
|
-
End If
|
|
613
|
-
|
|
614
|
-
Set swDraw = swModel
|
|
615
|
-
|
|
616
|
-
${args.operation === 'create_sheet'
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
${args.
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
${args.
|
|
625
|
-
${args.scale ? args.scale.split(':')[
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
${args.customSize ? args.customSize.
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
'
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
${args.
|
|
654
|
-
swSheet.
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
'
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
${
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
688
|
+
return `
|
|
689
|
+
Sub ManageDrawingSheet_${args.operation}()
|
|
690
|
+
Dim swApp As SldWorks.SldWorks
|
|
691
|
+
Dim swModel As SldWorks.ModelDoc2
|
|
692
|
+
Dim swDraw As SldWorks.DrawingDoc
|
|
693
|
+
Dim swSheet As SldWorks.Sheet
|
|
694
|
+
Dim vSheetProps As Variant
|
|
695
|
+
Dim bRet As Boolean
|
|
696
|
+
|
|
697
|
+
Set swApp = Application.SldWorks
|
|
698
|
+
Set swModel = swApp.ActiveDoc
|
|
699
|
+
|
|
700
|
+
If swModel Is Nothing Or swModel.GetType <> swDocumentTypes_e.swDocDRAWING Then
|
|
701
|
+
MsgBox "Please open a drawing document"
|
|
702
|
+
Exit Sub
|
|
703
|
+
End If
|
|
704
|
+
|
|
705
|
+
Set swDraw = swModel
|
|
706
|
+
|
|
707
|
+
${args.operation === 'create_sheet'
|
|
708
|
+
? `
|
|
709
|
+
' Create new sheet
|
|
710
|
+
bRet = swDraw.NewSheet4( _
|
|
711
|
+
"${args.sheetName || 'NewSheet'}", _
|
|
712
|
+
${args.sheetSize && args.sheetSize !== 'Custom'
|
|
713
|
+
? `swDwgPaperSizes_e.swDwgPaper${args.sheetSize}size`
|
|
714
|
+
: 'swDwgPaperSizes_e.swDwgPapersUserDefined'}, _
|
|
715
|
+
${args.templatePath ? `"${args.templatePath}"` : 'swDwgTemplates_e.swDwgTemplateNone'}, _
|
|
716
|
+
${args.scale ? args.scale.split(':')[0] : '1'}, _
|
|
717
|
+
${args.scale ? args.scale.split(':')[1] : '1'}, _
|
|
718
|
+
True, "", _
|
|
719
|
+
${args.customSize ? args.customSize.width / 1000 : sheetSizes[args.sheetSize || 'A4'][0] / 1000}, _
|
|
720
|
+
${args.customSize ? args.customSize.height / 1000 : sheetSizes[args.sheetSize || 'A4'][1] / 1000}, _
|
|
721
|
+
"Default", True)
|
|
722
|
+
|
|
723
|
+
If bRet Then
|
|
724
|
+
MsgBox "New sheet created: ${args.sheetName || 'New Sheet'}"
|
|
725
|
+
Else
|
|
726
|
+
MsgBox "Failed to create sheet"
|
|
727
|
+
End If`
|
|
728
|
+
: ''}
|
|
729
|
+
|
|
730
|
+
${args.operation === 'modify_format'
|
|
731
|
+
? `
|
|
732
|
+
' Modify sheet format
|
|
733
|
+
Set swSheet = swDraw.GetCurrentSheet
|
|
734
|
+
|
|
735
|
+
If Not swSheet Is Nothing Then
|
|
736
|
+
' Set sheet properties
|
|
737
|
+
vSheetProps = swSheet.GetProperties2
|
|
738
|
+
|
|
739
|
+
' Update scale
|
|
740
|
+
${args.scale
|
|
741
|
+
? `
|
|
742
|
+
Dim scaleNum As Double, scaleDenom As Double
|
|
743
|
+
scaleNum = ${args.scale.split(':')[0]}
|
|
744
|
+
scaleDenom = ${args.scale.split(':')[1]}
|
|
745
|
+
swSheet.SetScale scaleNum, scaleDenom, True, True`
|
|
746
|
+
: ''}
|
|
747
|
+
|
|
748
|
+
' Update size
|
|
749
|
+
${args.sheetSize
|
|
750
|
+
? `
|
|
751
|
+
swSheet.SetSize _
|
|
752
|
+
${sheetSizes[args.sheetSize][0] / 1000}, _
|
|
753
|
+
${sheetSizes[args.sheetSize][1] / 1000}`
|
|
754
|
+
: ''}
|
|
755
|
+
|
|
756
|
+
MsgBox "Sheet format updated"
|
|
757
|
+
End If`
|
|
758
|
+
: ''}
|
|
759
|
+
|
|
760
|
+
${args.operation === 'title_block'
|
|
761
|
+
? `
|
|
762
|
+
' Update title block
|
|
763
|
+
Set swSheet = swDraw.GetCurrentSheet
|
|
764
|
+
|
|
765
|
+
If Not swSheet Is Nothing Then
|
|
766
|
+
' Get title block
|
|
767
|
+
Dim swView As SldWorks.View
|
|
768
|
+
Set swView = swDraw.GetFirstView ' This is the sheet itself
|
|
769
|
+
|
|
770
|
+
' Find and update title block notes
|
|
771
|
+
${args.titleBlockData
|
|
772
|
+
? Object.entries(args.titleBlockData)
|
|
773
|
+
.map(([key, value]) => `
|
|
774
|
+
swModel.Extension.SelectByID2 "$PRPSHEET:\\"${key}\\"", "NOTE", 0, 0, 0, False, 0, Nothing, 0
|
|
775
|
+
Dim swNote As SldWorks.Note
|
|
776
|
+
Set swNote = swModel.SelectionManager.GetSelectedObject6(1, -1)
|
|
777
|
+
If Not swNote Is Nothing Then
|
|
778
|
+
swNote.SetText "${value}"
|
|
779
|
+
End If`)
|
|
780
|
+
.join('\n ')
|
|
781
|
+
: ''}
|
|
782
|
+
|
|
783
|
+
' Update custom properties
|
|
784
|
+
Dim swCustProp As SldWorks.CustomPropertyManager
|
|
785
|
+
Set swCustProp = swModel.Extension.CustomPropertyManager("")
|
|
786
|
+
|
|
787
|
+
${args.titleBlockData
|
|
788
|
+
? Object.entries(args.titleBlockData)
|
|
789
|
+
.map(([key, value]) => `
|
|
790
|
+
swCustProp.Add3 "${key}", swCustomInfoType_e.swCustomInfoText, "${value}", _
|
|
791
|
+
swCustomPropertyAddOption_e.swCustomPropertyReplaceValue`)
|
|
792
|
+
.join('\n ')
|
|
793
|
+
: ''}
|
|
794
|
+
|
|
795
|
+
MsgBox "Title block updated"
|
|
796
|
+
End If`
|
|
797
|
+
: ''}
|
|
798
|
+
|
|
799
|
+
swModel.EditRebuild3
|
|
691
800
|
End Sub`;
|
|
692
|
-
}
|
|
693
|
-
}
|
|
801
|
+
},
|
|
802
|
+
},
|
|
694
803
|
];
|
|
695
804
|
//# sourceMappingURL=vba-drawing.js.map
|