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.
Files changed (88) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/LICENSE +21 -0
  3. package/README.md +333 -0
  4. package/dist/cache/manager.d.ts +50 -0
  5. package/dist/cache/manager.d.ts.map +1 -0
  6. package/dist/cache/manager.js +127 -0
  7. package/dist/cache/manager.js.map +1 -0
  8. package/dist/db/connection.d.ts +48 -0
  9. package/dist/db/connection.d.ts.map +1 -0
  10. package/dist/db/connection.js +132 -0
  11. package/dist/db/connection.js.map +1 -0
  12. package/dist/index.d.ts +37 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +402 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/knowledge/chromadb.d.ts +16 -0
  17. package/dist/knowledge/chromadb.d.ts.map +1 -0
  18. package/dist/knowledge/chromadb.js +80 -0
  19. package/dist/knowledge/chromadb.js.map +1 -0
  20. package/dist/macro/index.d.ts +6 -0
  21. package/dist/macro/index.d.ts.map +1 -0
  22. package/dist/macro/index.js +6 -0
  23. package/dist/macro/index.js.map +1 -0
  24. package/dist/macro/recorder.d.ts +72 -0
  25. package/dist/macro/recorder.d.ts.map +1 -0
  26. package/dist/macro/recorder.js +228 -0
  27. package/dist/macro/recorder.js.map +1 -0
  28. package/dist/macro/types.d.ts +77 -0
  29. package/dist/macro/types.d.ts.map +1 -0
  30. package/dist/macro/types.js +5 -0
  31. package/dist/macro/types.js.map +1 -0
  32. package/dist/resources/base.d.ts +116 -0
  33. package/dist/resources/base.d.ts.map +1 -0
  34. package/dist/resources/base.js +161 -0
  35. package/dist/resources/base.js.map +1 -0
  36. package/dist/resources/design-table.d.ts +384 -0
  37. package/dist/resources/design-table.d.ts.map +1 -0
  38. package/dist/resources/design-table.js +337 -0
  39. package/dist/resources/design-table.js.map +1 -0
  40. package/dist/resources/pdm.d.ts +1277 -0
  41. package/dist/resources/pdm.d.ts.map +1 -0
  42. package/dist/resources/pdm.js +358 -0
  43. package/dist/resources/pdm.js.map +1 -0
  44. package/dist/resources/registry.d.ts +59 -0
  45. package/dist/resources/registry.d.ts.map +1 -0
  46. package/dist/resources/registry.js +88 -0
  47. package/dist/resources/registry.js.map +1 -0
  48. package/dist/solidworks/api.d.ts +24 -0
  49. package/dist/solidworks/api.d.ts.map +1 -0
  50. package/dist/solidworks/api.js +226 -0
  51. package/dist/solidworks/api.js.map +1 -0
  52. package/dist/solidworks/types.d.ts +55 -0
  53. package/dist/solidworks/types.d.ts.map +1 -0
  54. package/dist/solidworks/types.js +2 -0
  55. package/dist/solidworks/types.js.map +1 -0
  56. package/dist/state/store.d.ts +101 -0
  57. package/dist/state/store.d.ts.map +1 -0
  58. package/dist/state/store.js +262 -0
  59. package/dist/state/store.js.map +1 -0
  60. package/dist/tools/analysis.d.ts +37 -0
  61. package/dist/tools/analysis.d.ts.map +1 -0
  62. package/dist/tools/analysis.js +169 -0
  63. package/dist/tools/analysis.js.map +1 -0
  64. package/dist/tools/drawing.d.ts +151 -0
  65. package/dist/tools/drawing.d.ts.map +1 -0
  66. package/dist/tools/drawing.js +171 -0
  67. package/dist/tools/drawing.js.map +1 -0
  68. package/dist/tools/export.d.ts +97 -0
  69. package/dist/tools/export.d.ts.map +1 -0
  70. package/dist/tools/export.js +128 -0
  71. package/dist/tools/export.js.map +1 -0
  72. package/dist/tools/modeling.d.ts +9 -0
  73. package/dist/tools/modeling.d.ts.map +1 -0
  74. package/dist/tools/modeling.js +120 -0
  75. package/dist/tools/modeling.js.map +1 -0
  76. package/dist/tools/vba.d.ts +123 -0
  77. package/dist/tools/vba.d.ts.map +1 -0
  78. package/dist/tools/vba.js +158 -0
  79. package/dist/tools/vba.js.map +1 -0
  80. package/dist/utils/config.d.ts +18 -0
  81. package/dist/utils/config.d.ts.map +1 -0
  82. package/dist/utils/config.js +26 -0
  83. package/dist/utils/config.js.map +1 -0
  84. package/dist/utils/logger.d.ts +14 -0
  85. package/dist/utils/logger.d.ts.map +1 -0
  86. package/dist/utils/logger.js +84 -0
  87. package/dist/utils/logger.js.map +1 -0
  88. 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":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAW,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAExD,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,6CAA6C;QAC1D,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;YACjF,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;iBACpE,QAAQ,CAAC,uDAAuD,CAAC;SACrE,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,KAAoB,EAAE,EAAE;YACjD,IAAI,CAAC;gBACH,mDAAmD;gBACnD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC9E,MAAM,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBAChD,OAAO,eAAe,MAAM,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;YACnE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,qBAAqB,KAAK,EAAE,CAAC;YACtC,CAAC;QACH,CAAC;KACF;IAED;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,qDAAqD;QAClE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAC5D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAClD,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;iBAC3C,QAAQ,CAAC,kDAAkD,CAAC;YAC/D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;SAClE,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,KAAoB,EAAE,EAAE;YACjD,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC;gBACtC,IAAI,CAAC,KAAK;oBAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;gBAE7C,MAAM,QAAQ,GAAa,EAAE,CAAC;gBAC9B,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAE9E,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1D,4BAA4B;oBAC5B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;wBACzC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;wBACjC,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,GAAG,SAAS,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;wBAC7E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;wBAClD,MAAM,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;wBAChD,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,uBAAuB;oBACvB,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,GAAG,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBACnE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;oBAClD,MAAM,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBAChD,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC5B,CAAC;gBAED,OAAO,YAAY,QAAQ,CAAC,MAAM,cAAc,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACxE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,2BAA2B,KAAK,EAAE,CAAC;YAC5C,CAAC;QACH,CAAC;KACF;IAED;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,qCAAqC;QAClD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YACnD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YACvC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;gBAChB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;gBAC3C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;gBACnE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;gBACrE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;aACxF,CAAC;SACH,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,KAAoB,EAAE,EAAE;YACjD,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC;gBACtC,IAAI,CAAC,KAAK;oBAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;gBAE7C,qCAAqC;gBACrC,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBAClD,MAAM,UAAU,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;oBACtD,KAAK,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAkC,CAAC,CAAC,CAAC;gBAC9G,CAAC;gBAED,MAAM,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrD,OAAO,6BAA6B,IAAI,CAAC,UAAU,EAAE,CAAC;YACxD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,kCAAkC,KAAK,EAAE,CAAC;YACnD,CAAC;QACH,CAAC;KACF;IAED;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,gDAAgD;QAC7D,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YACvE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YAC9D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;SACjE,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,KAAoB,EAAE,EAAE;YACjD,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC;gBACtC,IAAI,CAAC,KAAK;oBAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;gBAE7C,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC;gBACnC,IAAI,CAAC,SAAS;oBAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBAElD,8BAA8B;gBAC9B,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAC9B,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,oCAAoC;oBAC9D,wEAAwE;gBAC1E,CAAC;gBAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB;gBACtE,IAAI,CAAC,OAAO;oBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBAE3D,OAAO,wBAAwB,IAAI,CAAC,UAAU,EAAE,CAAC;YACnD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,iCAAiC,KAAK,EAAE,CAAC;YAClD,CAAC;QACH,CAAC;KACF;CACF,CAAC"}
@@ -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