solidworks-mcp-server 2.0.0
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 +35 -0
- package/LICENSE +21 -0
- package/README.md +333 -0
- package/dist/cache/manager.d.ts +50 -0
- package/dist/cache/manager.d.ts.map +1 -0
- package/dist/cache/manager.js +127 -0
- package/dist/cache/manager.js.map +1 -0
- package/dist/db/connection.d.ts +48 -0
- package/dist/db/connection.d.ts.map +1 -0
- package/dist/db/connection.js +132 -0
- package/dist/db/connection.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +402 -0
- package/dist/index.js.map +1 -0
- package/dist/knowledge/chromadb.d.ts +16 -0
- package/dist/knowledge/chromadb.d.ts.map +1 -0
- package/dist/knowledge/chromadb.js +80 -0
- package/dist/knowledge/chromadb.js.map +1 -0
- package/dist/macro/index.d.ts +6 -0
- package/dist/macro/index.d.ts.map +1 -0
- package/dist/macro/index.js +6 -0
- package/dist/macro/index.js.map +1 -0
- package/dist/macro/recorder.d.ts +72 -0
- package/dist/macro/recorder.d.ts.map +1 -0
- package/dist/macro/recorder.js +228 -0
- package/dist/macro/recorder.js.map +1 -0
- package/dist/macro/types.d.ts +77 -0
- package/dist/macro/types.d.ts.map +1 -0
- package/dist/macro/types.js +5 -0
- package/dist/macro/types.js.map +1 -0
- package/dist/resources/base.d.ts +116 -0
- package/dist/resources/base.d.ts.map +1 -0
- package/dist/resources/base.js +161 -0
- package/dist/resources/base.js.map +1 -0
- package/dist/resources/design-table.d.ts +384 -0
- package/dist/resources/design-table.d.ts.map +1 -0
- package/dist/resources/design-table.js +337 -0
- package/dist/resources/design-table.js.map +1 -0
- package/dist/resources/pdm.d.ts +1277 -0
- package/dist/resources/pdm.d.ts.map +1 -0
- package/dist/resources/pdm.js +358 -0
- package/dist/resources/pdm.js.map +1 -0
- package/dist/resources/registry.d.ts +59 -0
- package/dist/resources/registry.d.ts.map +1 -0
- package/dist/resources/registry.js +88 -0
- package/dist/resources/registry.js.map +1 -0
- package/dist/solidworks/api.d.ts +24 -0
- package/dist/solidworks/api.d.ts.map +1 -0
- package/dist/solidworks/api.js +226 -0
- package/dist/solidworks/api.js.map +1 -0
- package/dist/solidworks/types.d.ts +55 -0
- package/dist/solidworks/types.d.ts.map +1 -0
- package/dist/solidworks/types.js +2 -0
- package/dist/solidworks/types.js.map +1 -0
- package/dist/state/store.d.ts +101 -0
- package/dist/state/store.d.ts.map +1 -0
- package/dist/state/store.js +262 -0
- package/dist/state/store.js.map +1 -0
- package/dist/tools/analysis.d.ts +37 -0
- package/dist/tools/analysis.d.ts.map +1 -0
- package/dist/tools/analysis.js +169 -0
- package/dist/tools/analysis.js.map +1 -0
- package/dist/tools/drawing.d.ts +151 -0
- package/dist/tools/drawing.d.ts.map +1 -0
- package/dist/tools/drawing.js +171 -0
- package/dist/tools/drawing.js.map +1 -0
- package/dist/tools/export.d.ts +97 -0
- package/dist/tools/export.d.ts.map +1 -0
- package/dist/tools/export.js +128 -0
- package/dist/tools/export.js.map +1 -0
- package/dist/tools/modeling.d.ts +9 -0
- package/dist/tools/modeling.d.ts.map +1 -0
- package/dist/tools/modeling.js +120 -0
- package/dist/tools/modeling.js.map +1 -0
- package/dist/tools/vba.d.ts +123 -0
- package/dist/tools/vba.d.ts.map +1 -0
- package/dist/tools/vba.js +158 -0
- package/dist/tools/vba.js.map +1 -0
- package/dist/utils/config.d.ts +18 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +26 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/logger.d.ts +14 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +84 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { SolidWorksAPI } from '../solidworks/api.js';
|
|
3
|
+
export declare const exportTools: ({
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
inputSchema: z.ZodObject<{
|
|
7
|
+
outputPath: z.ZodString;
|
|
8
|
+
format: z.ZodOptional<z.ZodEnum<["step", "iges", "stl", "pdf", "dxf", "dwg"]>>;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
outputPath: string;
|
|
11
|
+
format?: "step" | "iges" | "stl" | "pdf" | "dxf" | "dwg" | undefined;
|
|
12
|
+
}, {
|
|
13
|
+
outputPath: string;
|
|
14
|
+
format?: "step" | "iges" | "stl" | "pdf" | "dxf" | "dwg" | undefined;
|
|
15
|
+
}>;
|
|
16
|
+
handler: (args: any, swApi: SolidWorksAPI) => Promise<string>;
|
|
17
|
+
} | {
|
|
18
|
+
name: string;
|
|
19
|
+
description: string;
|
|
20
|
+
inputSchema: z.ZodObject<{
|
|
21
|
+
format: z.ZodEnum<["step", "iges", "stl", "pdf", "dxf", "dwg"]>;
|
|
22
|
+
outputDir: z.ZodString;
|
|
23
|
+
configurations: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
24
|
+
prefix: z.ZodOptional<z.ZodString>;
|
|
25
|
+
}, "strip", z.ZodTypeAny, {
|
|
26
|
+
format: "step" | "iges" | "stl" | "pdf" | "dxf" | "dwg";
|
|
27
|
+
outputDir: string;
|
|
28
|
+
configurations?: string[] | undefined;
|
|
29
|
+
prefix?: string | undefined;
|
|
30
|
+
}, {
|
|
31
|
+
format: "step" | "iges" | "stl" | "pdf" | "dxf" | "dwg";
|
|
32
|
+
outputDir: string;
|
|
33
|
+
configurations?: string[] | undefined;
|
|
34
|
+
prefix?: string | undefined;
|
|
35
|
+
}>;
|
|
36
|
+
handler: (args: any, swApi: SolidWorksAPI) => Promise<string>;
|
|
37
|
+
} | {
|
|
38
|
+
name: string;
|
|
39
|
+
description: string;
|
|
40
|
+
inputSchema: z.ZodObject<{
|
|
41
|
+
outputPath: z.ZodString;
|
|
42
|
+
format: z.ZodEnum<["stl", "step", "iges"]>;
|
|
43
|
+
options: z.ZodObject<{
|
|
44
|
+
units: z.ZodOptional<z.ZodEnum<["mm", "in", "m"]>>;
|
|
45
|
+
binary: z.ZodOptional<z.ZodBoolean>;
|
|
46
|
+
version: z.ZodOptional<z.ZodString>;
|
|
47
|
+
quality: z.ZodOptional<z.ZodEnum<["coarse", "fine", "custom"]>>;
|
|
48
|
+
}, "strip", z.ZodTypeAny, {
|
|
49
|
+
binary?: boolean | undefined;
|
|
50
|
+
units?: "mm" | "in" | "m" | undefined;
|
|
51
|
+
version?: string | undefined;
|
|
52
|
+
quality?: "custom" | "coarse" | "fine" | undefined;
|
|
53
|
+
}, {
|
|
54
|
+
binary?: boolean | undefined;
|
|
55
|
+
units?: "mm" | "in" | "m" | undefined;
|
|
56
|
+
version?: string | undefined;
|
|
57
|
+
quality?: "custom" | "coarse" | "fine" | undefined;
|
|
58
|
+
}>;
|
|
59
|
+
}, "strip", z.ZodTypeAny, {
|
|
60
|
+
format: "step" | "iges" | "stl";
|
|
61
|
+
options: {
|
|
62
|
+
binary?: boolean | undefined;
|
|
63
|
+
units?: "mm" | "in" | "m" | undefined;
|
|
64
|
+
version?: string | undefined;
|
|
65
|
+
quality?: "custom" | "coarse" | "fine" | undefined;
|
|
66
|
+
};
|
|
67
|
+
outputPath: string;
|
|
68
|
+
}, {
|
|
69
|
+
format: "step" | "iges" | "stl";
|
|
70
|
+
options: {
|
|
71
|
+
binary?: boolean | undefined;
|
|
72
|
+
units?: "mm" | "in" | "m" | undefined;
|
|
73
|
+
version?: string | undefined;
|
|
74
|
+
quality?: "custom" | "coarse" | "fine" | undefined;
|
|
75
|
+
};
|
|
76
|
+
outputPath: string;
|
|
77
|
+
}>;
|
|
78
|
+
handler: (args: any, swApi: SolidWorksAPI) => Promise<string>;
|
|
79
|
+
} | {
|
|
80
|
+
name: string;
|
|
81
|
+
description: string;
|
|
82
|
+
inputSchema: z.ZodObject<{
|
|
83
|
+
outputPath: z.ZodString;
|
|
84
|
+
width: z.ZodOptional<z.ZodNumber>;
|
|
85
|
+
height: z.ZodOptional<z.ZodNumber>;
|
|
86
|
+
}, "strip", z.ZodTypeAny, {
|
|
87
|
+
outputPath: string;
|
|
88
|
+
width?: number | undefined;
|
|
89
|
+
height?: number | undefined;
|
|
90
|
+
}, {
|
|
91
|
+
outputPath: string;
|
|
92
|
+
width?: number | undefined;
|
|
93
|
+
height?: number | undefined;
|
|
94
|
+
}>;
|
|
95
|
+
handler: (args: any, swApi: SolidWorksAPI) => Promise<string>;
|
|
96
|
+
})[];
|
|
97
|
+
//# sourceMappingURL=export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/tools/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,eAAO,MAAM,WAAW;;;;;;;;;;;;;oBASE,GAAG,SAAS,aAAa;;;;;;;;;;;;;;;;;;;;oBAsBzB,GAAG,SAAS,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA6CzB,GAAG,SAAS,aAAa;;;;;;;;;;;;;;;;;oBA2BzB,GAAG,SAAS,aAAa;IAuBlD,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { basename, extname, join } from 'path';
|
|
3
|
+
export const exportTools = [
|
|
4
|
+
{
|
|
5
|
+
name: 'export_file',
|
|
6
|
+
description: 'Export the current model to various formats',
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
outputPath: z.string().describe('Output file path (extension determines format)'),
|
|
9
|
+
format: z.enum(['step', 'iges', 'stl', 'pdf', 'dxf', 'dwg']).optional()
|
|
10
|
+
.describe('Export format (if not specified, uses file extension)'),
|
|
11
|
+
}),
|
|
12
|
+
handler: async (args, swApi) => {
|
|
13
|
+
try {
|
|
14
|
+
// Determine format from extension if not specified
|
|
15
|
+
const format = args.format || extname(args.outputPath).slice(1).toLowerCase();
|
|
16
|
+
await swApi.exportFile(args.outputPath, format);
|
|
17
|
+
return `Exported to ${format.toUpperCase()}: ${args.outputPath}`;
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
return `Failed to export: ${error}`;
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: 'batch_export',
|
|
26
|
+
description: 'Export multiple configurations or files to a format',
|
|
27
|
+
inputSchema: z.object({
|
|
28
|
+
format: z.enum(['step', 'iges', 'stl', 'pdf', 'dxf', 'dwg']),
|
|
29
|
+
outputDir: z.string().describe('Output directory'),
|
|
30
|
+
configurations: z.array(z.string()).optional()
|
|
31
|
+
.describe('List of configurations to export (if applicable)'),
|
|
32
|
+
prefix: z.string().optional().describe('Prefix for output files'),
|
|
33
|
+
}),
|
|
34
|
+
handler: async (args, swApi) => {
|
|
35
|
+
try {
|
|
36
|
+
const model = swApi.getCurrentModel();
|
|
37
|
+
if (!model)
|
|
38
|
+
throw new Error('No model open');
|
|
39
|
+
const exported = [];
|
|
40
|
+
const modelName = basename(model.GetPathName(), extname(model.GetPathName()));
|
|
41
|
+
if (args.configurations && args.configurations.length > 0) {
|
|
42
|
+
// Export each configuration
|
|
43
|
+
for (const config of args.configurations) {
|
|
44
|
+
model.ShowConfiguration2(config);
|
|
45
|
+
const filename = `${args.prefix || ''}${modelName}_${config}.${args.format}`;
|
|
46
|
+
const outputPath = join(args.outputDir, filename);
|
|
47
|
+
await swApi.exportFile(outputPath, args.format);
|
|
48
|
+
exported.push(outputPath);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
// Export current state
|
|
53
|
+
const filename = `${args.prefix || ''}${modelName}.${args.format}`;
|
|
54
|
+
const outputPath = join(args.outputDir, filename);
|
|
55
|
+
await swApi.exportFile(outputPath, args.format);
|
|
56
|
+
exported.push(outputPath);
|
|
57
|
+
}
|
|
58
|
+
return `Exported ${exported.length} file(s):\n${exported.join('\n')}`;
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
return `Failed to batch export: ${error}`;
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: 'export_with_options',
|
|
67
|
+
description: 'Export with specific format options',
|
|
68
|
+
inputSchema: z.object({
|
|
69
|
+
outputPath: z.string().describe('Output file path'),
|
|
70
|
+
format: z.enum(['stl', 'step', 'iges']),
|
|
71
|
+
options: z.object({
|
|
72
|
+
units: z.enum(['mm', 'in', 'm']).optional(),
|
|
73
|
+
binary: z.boolean().optional().describe('Binary format (STL only)'),
|
|
74
|
+
version: z.string().optional().describe('Format version (STEP/IGES)'),
|
|
75
|
+
quality: z.enum(['coarse', 'fine', 'custom']).optional().describe('Mesh quality (STL)'),
|
|
76
|
+
}),
|
|
77
|
+
}),
|
|
78
|
+
handler: async (args, swApi) => {
|
|
79
|
+
try {
|
|
80
|
+
const model = swApi.getCurrentModel();
|
|
81
|
+
if (!model)
|
|
82
|
+
throw new Error('No model open');
|
|
83
|
+
// Set export options based on format
|
|
84
|
+
if (args.format === 'stl' && args.options.quality) {
|
|
85
|
+
const qualityMap = { coarse: 1, fine: 10, custom: 5 };
|
|
86
|
+
model.Extension.SetUserPreferenceInteger(8, 0, qualityMap[args.options.quality]);
|
|
87
|
+
}
|
|
88
|
+
await swApi.exportFile(args.outputPath, args.format);
|
|
89
|
+
return `Exported with options to: ${args.outputPath}`;
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
return `Failed to export with options: ${error}`;
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
name: 'capture_screenshot',
|
|
98
|
+
description: 'Capture a screenshot of the current model view',
|
|
99
|
+
inputSchema: z.object({
|
|
100
|
+
outputPath: z.string().describe('Output image path (.png, .jpg, .bmp)'),
|
|
101
|
+
width: z.number().optional().describe('Image width in pixels'),
|
|
102
|
+
height: z.number().optional().describe('Image height in pixels'),
|
|
103
|
+
}),
|
|
104
|
+
handler: async (args, swApi) => {
|
|
105
|
+
try {
|
|
106
|
+
const model = swApi.getCurrentModel();
|
|
107
|
+
if (!model)
|
|
108
|
+
throw new Error('No model open');
|
|
109
|
+
const modelView = model.ActiveView;
|
|
110
|
+
if (!modelView)
|
|
111
|
+
throw new Error('No active view');
|
|
112
|
+
// Set image size if specified
|
|
113
|
+
if (args.width && args.height) {
|
|
114
|
+
modelView.FrameState = 1; // swWindowState_e.swWindowMaximized
|
|
115
|
+
// Note: Actual window sizing would require more complex Win32 API calls
|
|
116
|
+
}
|
|
117
|
+
const success = model.SaveAs3(args.outputPath, 0, 2); // Save as image
|
|
118
|
+
if (!success)
|
|
119
|
+
throw new Error('Failed to save screenshot');
|
|
120
|
+
return `Screenshot saved to: ${args.outputPath}`;
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
return `Failed to capture screenshot: ${error}`;
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
];
|
|
128
|
+
//# sourceMappingURL=export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/tools/export.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { SolidWorksAPI } from '../solidworks/api.js';
|
|
3
|
+
export declare const modelingTools: {
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
inputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
7
|
+
handler: (args: any, swApi: SolidWorksAPI) => Promise<string>;
|
|
8
|
+
}[];
|
|
9
|
+
//# sourceMappingURL=modeling.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modeling.d.ts","sourceRoot":"","sources":["../../src/tools/modeling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,eAAO,MAAM,aAAa;;;;oBAqBA,GAAG,SAAS,aAAa;GA+FlD,CAAC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const modelingTools = [
|
|
3
|
+
{
|
|
4
|
+
name: 'open_model',
|
|
5
|
+
description: 'Open a SolidWorks part, assembly, or drawing file',
|
|
6
|
+
inputSchema: z.object({
|
|
7
|
+
path: z.string().describe('Full path to the SolidWorks file'),
|
|
8
|
+
}),
|
|
9
|
+
handler: async (args, swApi) => {
|
|
10
|
+
try {
|
|
11
|
+
const model = await swApi.openModel(args.path);
|
|
12
|
+
return `Opened ${model.type}: ${model.name}`;
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
return `Failed to open model: ${error}`;
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: 'create_part',
|
|
21
|
+
description: 'Create a new SolidWorks part document',
|
|
22
|
+
inputSchema: z.object({}),
|
|
23
|
+
handler: async (args, swApi) => {
|
|
24
|
+
try {
|
|
25
|
+
const model = await swApi.createPart();
|
|
26
|
+
return `Created new part: ${model.name}`;
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
return `Failed to create part: ${error}`;
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'close_model',
|
|
35
|
+
description: 'Close the current model with option to save',
|
|
36
|
+
inputSchema: z.object({
|
|
37
|
+
save: z.boolean().default(false).describe('Save before closing'),
|
|
38
|
+
}),
|
|
39
|
+
handler: async (args, swApi) => {
|
|
40
|
+
try {
|
|
41
|
+
await swApi.closeModel(args.save);
|
|
42
|
+
return 'Model closed successfully';
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
return `Failed to close model: ${error}`;
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'create_extrusion',
|
|
51
|
+
description: 'Create an extrusion feature',
|
|
52
|
+
inputSchema: z.object({
|
|
53
|
+
depth: z.number().describe('Extrusion depth in mm'),
|
|
54
|
+
draft: z.number().default(0).describe('Draft angle in degrees'),
|
|
55
|
+
reverse: z.boolean().default(false).describe('Reverse direction'),
|
|
56
|
+
}),
|
|
57
|
+
handler: async (args, swApi) => {
|
|
58
|
+
try {
|
|
59
|
+
const feature = await swApi.createExtrude(args.depth, args.draft, args.reverse);
|
|
60
|
+
return `Created extrusion: ${feature.name}`;
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
return `Failed to create extrusion: ${error}`;
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: 'get_dimension',
|
|
69
|
+
description: 'Get the value of a dimension',
|
|
70
|
+
inputSchema: z.object({
|
|
71
|
+
name: z.string().describe('Dimension name (e.g., "D1@Sketch1")'),
|
|
72
|
+
}),
|
|
73
|
+
handler: async (args, swApi) => {
|
|
74
|
+
try {
|
|
75
|
+
const value = await swApi.getDimension(args.name);
|
|
76
|
+
return `Dimension ${args.name} = ${value} mm`;
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
return `Failed to get dimension: ${error}`;
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: 'set_dimension',
|
|
85
|
+
description: 'Set the value of a dimension',
|
|
86
|
+
inputSchema: z.object({
|
|
87
|
+
name: z.string().describe('Dimension name (e.g., "D1@Sketch1")'),
|
|
88
|
+
value: z.number().describe('New value in mm'),
|
|
89
|
+
}),
|
|
90
|
+
handler: async (args, swApi) => {
|
|
91
|
+
try {
|
|
92
|
+
await swApi.setDimension(args.name, args.value);
|
|
93
|
+
return `Set dimension ${args.name} = ${args.value} mm`;
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
return `Failed to set dimension: ${error}`;
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
name: 'rebuild_model',
|
|
102
|
+
description: 'Rebuild the current model',
|
|
103
|
+
inputSchema: z.object({
|
|
104
|
+
force: z.boolean().default(false).describe('Force rebuild even if not needed'),
|
|
105
|
+
}),
|
|
106
|
+
handler: async (args, swApi) => {
|
|
107
|
+
try {
|
|
108
|
+
const model = swApi.getCurrentModel();
|
|
109
|
+
if (!model)
|
|
110
|
+
throw new Error('No model open');
|
|
111
|
+
model.EditRebuild3();
|
|
112
|
+
return 'Model rebuilt successfully';
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
return `Failed to rebuild model: ${error}`;
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
];
|
|
120
|
+
//# sourceMappingURL=modeling.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modeling.js","sourceRoot":"","sources":["../../src/tools/modeling.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { SolidWorksAPI } from '../solidworks/api.js';
|
|
3
|
+
export declare const vbaTools: ({
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
inputSchema: z.ZodObject<{
|
|
7
|
+
template: z.ZodString;
|
|
8
|
+
parameters: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
9
|
+
outputPath: z.ZodOptional<z.ZodString>;
|
|
10
|
+
}, "strip", z.ZodTypeAny, {
|
|
11
|
+
parameters: Record<string, any>;
|
|
12
|
+
template: string;
|
|
13
|
+
outputPath?: string | undefined;
|
|
14
|
+
}, {
|
|
15
|
+
parameters: Record<string, any>;
|
|
16
|
+
template: string;
|
|
17
|
+
outputPath?: string | undefined;
|
|
18
|
+
}>;
|
|
19
|
+
handler: (args: any, swApi: SolidWorksAPI) => Promise<string>;
|
|
20
|
+
} | {
|
|
21
|
+
name: string;
|
|
22
|
+
description: string;
|
|
23
|
+
inputSchema: z.ZodObject<{
|
|
24
|
+
featureType: z.ZodEnum<["extrude", "revolve", "sweep", "loft", "hole", "fillet", "chamfer"]>;
|
|
25
|
+
parameters: z.ZodObject<{
|
|
26
|
+
depth: z.ZodOptional<z.ZodNumber>;
|
|
27
|
+
angle: z.ZodOptional<z.ZodNumber>;
|
|
28
|
+
radius: z.ZodOptional<z.ZodNumber>;
|
|
29
|
+
count: z.ZodOptional<z.ZodNumber>;
|
|
30
|
+
}, "strip", z.ZodTypeAny, {
|
|
31
|
+
depth?: number | undefined;
|
|
32
|
+
angle?: number | undefined;
|
|
33
|
+
radius?: number | undefined;
|
|
34
|
+
count?: number | undefined;
|
|
35
|
+
}, {
|
|
36
|
+
depth?: number | undefined;
|
|
37
|
+
angle?: number | undefined;
|
|
38
|
+
radius?: number | undefined;
|
|
39
|
+
count?: number | undefined;
|
|
40
|
+
}>;
|
|
41
|
+
}, "strip", z.ZodTypeAny, {
|
|
42
|
+
parameters: {
|
|
43
|
+
depth?: number | undefined;
|
|
44
|
+
angle?: number | undefined;
|
|
45
|
+
radius?: number | undefined;
|
|
46
|
+
count?: number | undefined;
|
|
47
|
+
};
|
|
48
|
+
featureType: "extrude" | "revolve" | "sweep" | "loft" | "hole" | "fillet" | "chamfer";
|
|
49
|
+
}, {
|
|
50
|
+
parameters: {
|
|
51
|
+
depth?: number | undefined;
|
|
52
|
+
angle?: number | undefined;
|
|
53
|
+
radius?: number | undefined;
|
|
54
|
+
count?: number | undefined;
|
|
55
|
+
};
|
|
56
|
+
featureType: "extrude" | "revolve" | "sweep" | "loft" | "hole" | "fillet" | "chamfer";
|
|
57
|
+
}>;
|
|
58
|
+
handler: (args: any, swApi: SolidWorksAPI) => Promise<string>;
|
|
59
|
+
} | {
|
|
60
|
+
name: string;
|
|
61
|
+
description: string;
|
|
62
|
+
inputSchema: z.ZodObject<{
|
|
63
|
+
operation: z.ZodEnum<["export", "update_property", "rebuild", "print"]>;
|
|
64
|
+
filePattern: z.ZodString;
|
|
65
|
+
outputFormat: z.ZodOptional<z.ZodString>;
|
|
66
|
+
propertyName: z.ZodOptional<z.ZodString>;
|
|
67
|
+
propertyValue: z.ZodOptional<z.ZodString>;
|
|
68
|
+
}, "strip", z.ZodTypeAny, {
|
|
69
|
+
operation: "print" | "export" | "update_property" | "rebuild";
|
|
70
|
+
filePattern: string;
|
|
71
|
+
outputFormat?: string | undefined;
|
|
72
|
+
propertyName?: string | undefined;
|
|
73
|
+
propertyValue?: string | undefined;
|
|
74
|
+
}, {
|
|
75
|
+
operation: "print" | "export" | "update_property" | "rebuild";
|
|
76
|
+
filePattern: string;
|
|
77
|
+
outputFormat?: string | undefined;
|
|
78
|
+
propertyName?: string | undefined;
|
|
79
|
+
propertyValue?: string | undefined;
|
|
80
|
+
}>;
|
|
81
|
+
handler: (args: any, swApi: SolidWorksAPI) => Promise<string>;
|
|
82
|
+
} | {
|
|
83
|
+
name: string;
|
|
84
|
+
description: string;
|
|
85
|
+
inputSchema: z.ZodObject<{
|
|
86
|
+
macroPath: z.ZodString;
|
|
87
|
+
moduleName: z.ZodDefault<z.ZodString>;
|
|
88
|
+
procedureName: z.ZodString;
|
|
89
|
+
arguments: z.ZodOptional<z.ZodArray<z.ZodAny, "many">>;
|
|
90
|
+
}, "strip", z.ZodTypeAny, {
|
|
91
|
+
macroPath: string;
|
|
92
|
+
moduleName: string;
|
|
93
|
+
procedureName: string;
|
|
94
|
+
arguments?: any[] | undefined;
|
|
95
|
+
}, {
|
|
96
|
+
macroPath: string;
|
|
97
|
+
procedureName: string;
|
|
98
|
+
moduleName?: string | undefined;
|
|
99
|
+
arguments?: any[] | undefined;
|
|
100
|
+
}>;
|
|
101
|
+
handler: (args: any, swApi: SolidWorksAPI) => Promise<string>;
|
|
102
|
+
} | {
|
|
103
|
+
name: string;
|
|
104
|
+
description: string;
|
|
105
|
+
inputSchema: z.ZodObject<{
|
|
106
|
+
modelPath: z.ZodString;
|
|
107
|
+
template: z.ZodString;
|
|
108
|
+
views: z.ZodArray<z.ZodEnum<["front", "top", "right", "iso", "section", "detail"]>, "many">;
|
|
109
|
+
sheet_size: z.ZodEnum<["A4", "A3", "A2", "A1", "A0", "Letter", "Tabloid"]>;
|
|
110
|
+
}, "strip", z.ZodTypeAny, {
|
|
111
|
+
template: string;
|
|
112
|
+
sheet_size: "A4" | "A3" | "A2" | "A1" | "A0" | "Letter" | "Tabloid";
|
|
113
|
+
modelPath: string;
|
|
114
|
+
views: ("front" | "top" | "right" | "iso" | "section" | "detail")[];
|
|
115
|
+
}, {
|
|
116
|
+
template: string;
|
|
117
|
+
sheet_size: "A4" | "A3" | "A2" | "A1" | "A0" | "Letter" | "Tabloid";
|
|
118
|
+
modelPath: string;
|
|
119
|
+
views: ("front" | "top" | "right" | "iso" | "section" | "detail")[];
|
|
120
|
+
}>;
|
|
121
|
+
handler: (args: any, swApi: SolidWorksAPI) => Promise<string>;
|
|
122
|
+
})[];
|
|
123
|
+
//# sourceMappingURL=vba.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vba.d.ts","sourceRoot":"","sources":["../../src/tools/vba.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAYrD,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;oBASK,GAAG,SAAS,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA8BzB,GAAG,SAAS,aAAa;;;;;;;;;;;;;;;;;;;;;;;oBA2DzB,GAAG,SAAS,aAAa;;;;;;;;;;;;;;;;;;;;oBAqBzB,GAAG,SAAS,aAAa;;;;;;;;;;;;;;;;;;;;oBAwBzB,GAAG,SAAS,aAAa;IAUlD,CAAC"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import Handlebars from 'handlebars';
|
|
3
|
+
import { readFileSync } from 'fs';
|
|
4
|
+
import { join, dirname } from 'path';
|
|
5
|
+
import { fileURLToPath } from 'url';
|
|
6
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
7
|
+
// VBA template compiler
|
|
8
|
+
const compileTemplate = (templateName) => {
|
|
9
|
+
const templatePath = join(__dirname, '../../examples/vba-templates', `${templateName}.vba`);
|
|
10
|
+
const templateContent = readFileSync(templatePath, 'utf-8');
|
|
11
|
+
return Handlebars.compile(templateContent);
|
|
12
|
+
};
|
|
13
|
+
// Tool definitions
|
|
14
|
+
export const vbaTools = [
|
|
15
|
+
{
|
|
16
|
+
name: 'generate_vba_script',
|
|
17
|
+
description: 'Generate a VBA script from a template with parameters',
|
|
18
|
+
inputSchema: z.object({
|
|
19
|
+
template: z.string().describe('Template name (e.g., "batch_export", "create_drawing", "modify_dimensions")'),
|
|
20
|
+
parameters: z.record(z.any()).describe('Parameters to pass to the template'),
|
|
21
|
+
outputPath: z.string().optional().describe('Optional path to save the generated script'),
|
|
22
|
+
}),
|
|
23
|
+
handler: async (args, swApi) => {
|
|
24
|
+
try {
|
|
25
|
+
const template = compileTemplate(args.template);
|
|
26
|
+
const vbaCode = template(args.parameters);
|
|
27
|
+
if (args.outputPath) {
|
|
28
|
+
const fs = await import('fs/promises');
|
|
29
|
+
await fs.writeFile(args.outputPath, vbaCode, 'utf-8');
|
|
30
|
+
return `VBA script generated and saved to: ${args.outputPath}`;
|
|
31
|
+
}
|
|
32
|
+
return vbaCode;
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
return `Failed to generate VBA script: ${error}`;
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: 'create_feature_vba',
|
|
41
|
+
description: 'Generate VBA code to create a specific feature',
|
|
42
|
+
inputSchema: z.object({
|
|
43
|
+
featureType: z.enum(['extrude', 'revolve', 'sweep', 'loft', 'hole', 'fillet', 'chamfer']),
|
|
44
|
+
parameters: z.object({
|
|
45
|
+
depth: z.number().optional(),
|
|
46
|
+
angle: z.number().optional(),
|
|
47
|
+
radius: z.number().optional(),
|
|
48
|
+
count: z.number().optional(),
|
|
49
|
+
}),
|
|
50
|
+
}),
|
|
51
|
+
handler: async (args, swApi) => {
|
|
52
|
+
const vbaTemplates = {
|
|
53
|
+
extrude: `
|
|
54
|
+
Sub CreateExtrusion()
|
|
55
|
+
Dim swApp As SldWorks.SldWorks
|
|
56
|
+
Dim swModel As SldWorks.ModelDoc2
|
|
57
|
+
Dim swFeature As SldWorks.Feature
|
|
58
|
+
|
|
59
|
+
Set swApp = Application.SldWorks
|
|
60
|
+
Set swModel = swApp.ActiveDoc
|
|
61
|
+
|
|
62
|
+
If Not swModel Is Nothing Then
|
|
63
|
+
Set swFeature = swModel.FeatureManager.FeatureExtrusion3( _
|
|
64
|
+
True, False, False, 0, 0, ${args.parameters.depth || 10} / 1000, 0.01, _
|
|
65
|
+
False, False, False, 0, 0, False, False, False, False, _
|
|
66
|
+
False, True, True, 0, 0, False)
|
|
67
|
+
|
|
68
|
+
If Not swFeature Is Nothing Then
|
|
69
|
+
MsgBox "Extrusion created: " & swFeature.Name
|
|
70
|
+
End If
|
|
71
|
+
End If
|
|
72
|
+
End Sub`,
|
|
73
|
+
hole: `
|
|
74
|
+
Sub CreateHole()
|
|
75
|
+
Dim swApp As SldWorks.SldWorks
|
|
76
|
+
Dim swModel As SldWorks.ModelDoc2
|
|
77
|
+
Dim swFeature As SldWorks.Feature
|
|
78
|
+
|
|
79
|
+
Set swApp = Application.SldWorks
|
|
80
|
+
Set swModel = swApp.ActiveDoc
|
|
81
|
+
|
|
82
|
+
If Not swModel Is Nothing Then
|
|
83
|
+
Set swFeature = swModel.FeatureManager.HoleWizard5( _
|
|
84
|
+
0, 1, 1, "C:\\ProgramData\\SolidWorks\\SOLIDWORKS 2024\\lang\\english\\swstandards\\ansi inch\\dowel pins.mdb", _
|
|
85
|
+
"Dowel Pin", "DIN", "All", ${args.parameters.radius || 5} / 1000, _
|
|
86
|
+
1, ${args.parameters.depth || 10} / 1000, 0, 1, 0, 0, 0, 0, 0, _
|
|
87
|
+
"", False, True, True, True, True, False)
|
|
88
|
+
|
|
89
|
+
If Not swFeature Is Nothing Then
|
|
90
|
+
MsgBox "Hole created: " & swFeature.Name
|
|
91
|
+
End If
|
|
92
|
+
End If
|
|
93
|
+
End Sub`,
|
|
94
|
+
};
|
|
95
|
+
return vbaTemplates[args.featureType] || 'Feature type not yet implemented';
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: 'create_batch_vba',
|
|
100
|
+
description: 'Generate VBA for batch processing multiple files',
|
|
101
|
+
inputSchema: z.object({
|
|
102
|
+
operation: z.enum(['export', 'update_property', 'rebuild', 'print']),
|
|
103
|
+
filePattern: z.string().describe('File pattern to match (e.g., "*.sldprt")'),
|
|
104
|
+
outputFormat: z.string().optional().describe('Output format for export operations'),
|
|
105
|
+
propertyName: z.string().optional().describe('Property name for update operations'),
|
|
106
|
+
propertyValue: z.string().optional().describe('Property value for update operations'),
|
|
107
|
+
}),
|
|
108
|
+
handler: async (args, swApi) => {
|
|
109
|
+
const template = compileTemplate('batch_process');
|
|
110
|
+
return template({
|
|
111
|
+
operation: args.operation,
|
|
112
|
+
filePattern: args.filePattern,
|
|
113
|
+
outputFormat: args.outputFormat,
|
|
114
|
+
propertyName: args.propertyName,
|
|
115
|
+
propertyValue: args.propertyValue,
|
|
116
|
+
});
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
name: 'run_vba_macro',
|
|
121
|
+
description: 'Execute a VBA macro in SolidWorks',
|
|
122
|
+
inputSchema: z.object({
|
|
123
|
+
macroPath: z.string().describe('Full path to the macro file (.swp or .swb)'),
|
|
124
|
+
moduleName: z.string().default('Module1').describe('Module name containing the procedure'),
|
|
125
|
+
procedureName: z.string().describe('Procedure name to execute'),
|
|
126
|
+
arguments: z.array(z.any()).optional().describe('Arguments to pass to the macro'),
|
|
127
|
+
}),
|
|
128
|
+
handler: async (args, swApi) => {
|
|
129
|
+
try {
|
|
130
|
+
const result = await swApi.runMacro(args.macroPath, args.moduleName, args.procedureName, args.arguments || []);
|
|
131
|
+
return `Macro executed successfully. Result: ${result}`;
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
return `Failed to execute macro: ${error}`;
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
name: 'create_drawing_vba',
|
|
140
|
+
description: 'Generate VBA to create drawings from 3D models',
|
|
141
|
+
inputSchema: z.object({
|
|
142
|
+
modelPath: z.string().describe('Path to the 3D model'),
|
|
143
|
+
template: z.string().describe('Drawing template path'),
|
|
144
|
+
views: z.array(z.enum(['front', 'top', 'right', 'iso', 'section', 'detail'])),
|
|
145
|
+
sheet_size: z.enum(['A4', 'A3', 'A2', 'A1', 'A0', 'Letter', 'Tabloid']),
|
|
146
|
+
}),
|
|
147
|
+
handler: async (args, swApi) => {
|
|
148
|
+
const template = compileTemplate('create_drawing');
|
|
149
|
+
return template({
|
|
150
|
+
modelPath: args.modelPath,
|
|
151
|
+
drawingTemplate: args.template,
|
|
152
|
+
views: args.views,
|
|
153
|
+
sheetSize: args.sheet_size,
|
|
154
|
+
});
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
];
|
|
158
|
+
//# sourceMappingURL=vba.js.map
|