mcp-3d-printer-server 0.2.1 → 0.2.2
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/README.md +22 -0
- package/package.json +2 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js +0 -800
- package/dist/index.js.map +0 -1
- package/dist/printers/bambu.d.ts +0 -25
- package/dist/printers/bambu.js +0 -111
- package/dist/printers/creality.d.ts +0 -10
- package/dist/printers/creality.js +0 -90
- package/dist/printers/duet.d.ts +0 -10
- package/dist/printers/duet.js +0 -66
- package/dist/printers/klipper.d.ts +0 -10
- package/dist/printers/klipper.js +0 -62
- package/dist/printers/octoprint.d.ts +0 -10
- package/dist/printers/octoprint.js +0 -97
- package/dist/printers/printer-factory.d.ts +0 -9
- package/dist/printers/printer-factory.js +0 -33
- package/dist/printers/prusa.d.ts +0 -10
- package/dist/printers/prusa.js +0 -93
- package/dist/printers/repetier.d.ts +0 -10
- package/dist/printers/repetier.js +0 -59
- package/dist/stl/stl-manipulator.d.ts +0 -127
- package/dist/stl/stl-manipulator.js +0 -870
- package/dist/test/stl-manipulator-test.d.ts +0 -2
- package/dist/test/stl-manipulator-test.js +0 -91
- package/dist/types.d.ts +0 -23
- package/dist/types.js +0 -26
- package/src/test/stl-manipulator-test.js +0 -114
- package/src/test/stl-manipulator-test.ts +0 -124
- package/src/test/tsconfig.json +0 -13
- package/test/sample_cube.stl +0 -86
- package/test/sample_cube_extended.stl +0 -172
- package/test/sample_cube_modified.stl +0 -86
- package/test/sample_cube_rotated.stl +0 -86
- package/test/sample_cube_scaled.stl +0 -86
- package/test/sample_cube_translated.stl +0 -86
- package/test/sample_cube_visualization.svg +0 -52
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { STLManipulator } from '../stl/stl-manipulator.js';
|
|
3
|
-
import fs from 'fs';
|
|
4
|
-
import path from 'path';
|
|
5
|
-
import * as THREE from 'three';
|
|
6
|
-
// Create a test directory
|
|
7
|
-
const TEST_DIR = path.join(process.cwd(), 'test');
|
|
8
|
-
if (!fs.existsSync(TEST_DIR)) {
|
|
9
|
-
fs.mkdirSync(TEST_DIR, { recursive: true });
|
|
10
|
-
}
|
|
11
|
-
// Path for a sample STL file
|
|
12
|
-
const sampleStlPath = path.join(TEST_DIR, 'sample_cube.stl');
|
|
13
|
-
// Create a simple cube STL for testing if it doesn't exist
|
|
14
|
-
async function createSampleCube() {
|
|
15
|
-
if (fs.existsSync(sampleStlPath)) {
|
|
16
|
-
console.log('Sample STL already exists, skipping creation');
|
|
17
|
-
return sampleStlPath;
|
|
18
|
-
}
|
|
19
|
-
console.log('Creating sample cube STL...');
|
|
20
|
-
// Create a simple cube geometry
|
|
21
|
-
const geometry = new THREE.BoxGeometry(10, 10, 10);
|
|
22
|
-
const material = new THREE.MeshStandardMaterial();
|
|
23
|
-
const mesh = new THREE.Mesh(geometry, material);
|
|
24
|
-
// Import STLExporter
|
|
25
|
-
const { STLExporter } = await import('three/examples/jsm/exporters/STLExporter.js');
|
|
26
|
-
const exporter = new STLExporter();
|
|
27
|
-
// Export as STL
|
|
28
|
-
const stlString = exporter.parse(mesh);
|
|
29
|
-
// Write to file
|
|
30
|
-
fs.writeFileSync(sampleStlPath, stlString);
|
|
31
|
-
console.log(`Sample cube saved to ${sampleStlPath}`);
|
|
32
|
-
return sampleStlPath;
|
|
33
|
-
}
|
|
34
|
-
// Test the STL manipulator
|
|
35
|
-
async function testSTLManipulator() {
|
|
36
|
-
try {
|
|
37
|
-
// Create a sample STL for testing
|
|
38
|
-
const stlPath = await createSampleCube();
|
|
39
|
-
// Create an instance of the STL manipulator with the test directory
|
|
40
|
-
const manipulator = new STLManipulator(TEST_DIR);
|
|
41
|
-
// Listen for events from the manipulator
|
|
42
|
-
manipulator.on('operationComplete', (data) => {
|
|
43
|
-
console.log('Operation complete:', data);
|
|
44
|
-
});
|
|
45
|
-
manipulator.on('operationError', (data) => {
|
|
46
|
-
console.error('Operation error:', data);
|
|
47
|
-
});
|
|
48
|
-
// Test progress callback
|
|
49
|
-
const progressCallback = (progress, message) => {
|
|
50
|
-
console.log(`Progress: ${progress}% - ${message || ''}`);
|
|
51
|
-
};
|
|
52
|
-
// Test 1: Get information about the STL file
|
|
53
|
-
console.log('\n=== Test 1: Get STL Info ===');
|
|
54
|
-
const stlInfo = await manipulator.getSTLInfo(stlPath);
|
|
55
|
-
console.log('STL Info:', stlInfo);
|
|
56
|
-
// Test 2: Scale the STL file
|
|
57
|
-
console.log('\n=== Test 2: Scale STL ===');
|
|
58
|
-
const scaledStlPath = await manipulator.scaleSTL(stlPath, 2.0, progressCallback);
|
|
59
|
-
console.log(`Scaled STL saved to: ${scaledStlPath}`);
|
|
60
|
-
// Test 3: Rotate the STL file
|
|
61
|
-
console.log('\n=== Test 3: Rotate STL ===');
|
|
62
|
-
const rotatedStlPath = await manipulator.rotateSTL(stlPath, [45, 0, 0], progressCallback);
|
|
63
|
-
console.log(`Rotated STL saved to: ${rotatedStlPath}`);
|
|
64
|
-
// Test 4: Translate the STL file
|
|
65
|
-
console.log('\n=== Test 4: Translate STL ===');
|
|
66
|
-
const translatedStlPath = await manipulator.translateSTL(stlPath, [5, 10, 0], progressCallback);
|
|
67
|
-
console.log(`Translated STL saved to: ${translatedStlPath}`);
|
|
68
|
-
// Test 5: Extend the base of the STL file
|
|
69
|
-
console.log('\n=== Test 5: Extend Base ===');
|
|
70
|
-
const extendedStlPath = await manipulator.extendBase(stlPath, 0.5, progressCallback);
|
|
71
|
-
console.log(`Extended STL saved to: ${extendedStlPath}`);
|
|
72
|
-
// Test 6: Modify a section of the STL file
|
|
73
|
-
console.log('\n=== Test 6: Modify Section (Top) ===');
|
|
74
|
-
const modifiedStlPath = await manipulator.modifySection(stlPath, 'top', {
|
|
75
|
-
type: 'scale',
|
|
76
|
-
value: [1.5, 1.5, 1.5]
|
|
77
|
-
}, progressCallback);
|
|
78
|
-
console.log(`Modified STL saved to: ${modifiedStlPath}`);
|
|
79
|
-
// Test 7: Generate visualization of the STL file
|
|
80
|
-
console.log('\n=== Test 7: Generate Visualization ===');
|
|
81
|
-
const visualizationPath = await manipulator.generateVisualization(stlPath, 400, 400, progressCallback);
|
|
82
|
-
console.log(`Visualization saved to: ${visualizationPath}`);
|
|
83
|
-
console.log('\nAll tests completed successfully!');
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
console.error('An error occurred during testing:', error);
|
|
87
|
-
process.exit(1);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
// Run the tests
|
|
91
|
-
testSTLManipulator().catch(console.error);
|
package/dist/types.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { AxiosInstance } from "axios";
|
|
2
|
-
import { BambuPrinter } from "bambu-js";
|
|
3
|
-
export type BambuFTP = {
|
|
4
|
-
readDir: (path: string) => Promise<string[]>;
|
|
5
|
-
sendFile: (sourcePath: string, destinationPath: string, progressCallback?: (progress: number) => void) => Promise<void>;
|
|
6
|
-
removeFile: (path: string) => Promise<void>;
|
|
7
|
-
};
|
|
8
|
-
export declare abstract class PrinterImplementation {
|
|
9
|
-
protected apiClient: AxiosInstance;
|
|
10
|
-
constructor(apiClient: AxiosInstance);
|
|
11
|
-
abstract getStatus(host: string, port: string, apiKey: string): Promise<any>;
|
|
12
|
-
abstract getFiles(host: string, port: string, apiKey: string): Promise<any>;
|
|
13
|
-
abstract getFile(host: string, port: string, apiKey: string, filename: string): Promise<any>;
|
|
14
|
-
abstract uploadFile(host: string, port: string, apiKey: string, filePath: string, filename: string, print: boolean): Promise<any>;
|
|
15
|
-
abstract startJob(host: string, port: string, apiKey: string, filename: string): Promise<any>;
|
|
16
|
-
abstract cancelJob(host: string, port: string, apiKey: string): Promise<any>;
|
|
17
|
-
abstract setTemperature(host: string, port: string, apiKey: string, component: string, temperature: number): Promise<any>;
|
|
18
|
-
}
|
|
19
|
-
export declare class BambuPrinterStore {
|
|
20
|
-
private printers;
|
|
21
|
-
get(host: string, serial: string, token: string): InstanceType<typeof BambuPrinter>;
|
|
22
|
-
disconnectAll(): Promise<void>;
|
|
23
|
-
}
|
package/dist/types.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { BambuPrinter } from "bambu-js";
|
|
2
|
-
// Base class for printer implementations
|
|
3
|
-
export class PrinterImplementation {
|
|
4
|
-
constructor(apiClient) {
|
|
5
|
-
this.apiClient = apiClient;
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
// Store for Bambu printers
|
|
9
|
-
export class BambuPrinterStore {
|
|
10
|
-
constructor() {
|
|
11
|
-
this.printers = new Map();
|
|
12
|
-
}
|
|
13
|
-
get(host, serial, token) {
|
|
14
|
-
const key = `${host}-${serial}`;
|
|
15
|
-
if (!this.printers.has(key)) {
|
|
16
|
-
const printer = new BambuPrinter(host, serial, token);
|
|
17
|
-
this.printers.set(key, printer);
|
|
18
|
-
}
|
|
19
|
-
return this.printers.get(key);
|
|
20
|
-
}
|
|
21
|
-
async disconnectAll() {
|
|
22
|
-
for (const printer of this.printers.values()) {
|
|
23
|
-
await printer.disconnect();
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import { STLManipulator } from '../stl/stl-manipulator.ts';
|
|
4
|
-
import fs from 'fs';
|
|
5
|
-
import path from 'path';
|
|
6
|
-
import * as THREE from 'three';
|
|
7
|
-
|
|
8
|
-
// Create a test directory
|
|
9
|
-
const TEST_DIR = path.join(process.cwd(), 'test');
|
|
10
|
-
if (!fs.existsSync(TEST_DIR)) {
|
|
11
|
-
fs.mkdirSync(TEST_DIR, { recursive: true });
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
// Path for a sample STL file
|
|
15
|
-
const sampleStlPath = path.join(TEST_DIR, 'sample_cube.stl');
|
|
16
|
-
|
|
17
|
-
// Create a simple cube STL for testing if it doesn't exist
|
|
18
|
-
async function createSampleCube() {
|
|
19
|
-
if (fs.existsSync(sampleStlPath)) {
|
|
20
|
-
console.log('Sample STL already exists, skipping creation');
|
|
21
|
-
return sampleStlPath;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
console.log('Creating sample cube STL...');
|
|
25
|
-
|
|
26
|
-
// Create a simple cube geometry
|
|
27
|
-
const geometry = new THREE.BoxGeometry(10, 10, 10);
|
|
28
|
-
const material = new THREE.MeshStandardMaterial();
|
|
29
|
-
const mesh = new THREE.Mesh(geometry, material);
|
|
30
|
-
|
|
31
|
-
// Import STLExporter
|
|
32
|
-
const { STLExporter } = await import('three/examples/jsm/exporters/STLExporter.js');
|
|
33
|
-
const exporter = new STLExporter();
|
|
34
|
-
|
|
35
|
-
// Export as STL
|
|
36
|
-
const stlString = exporter.parse(mesh);
|
|
37
|
-
|
|
38
|
-
// Write to file
|
|
39
|
-
fs.writeFileSync(sampleStlPath, stlString);
|
|
40
|
-
console.log(`Sample cube saved to ${sampleStlPath}`);
|
|
41
|
-
|
|
42
|
-
return sampleStlPath;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// Test the STL manipulator
|
|
46
|
-
async function testSTLManipulator() {
|
|
47
|
-
try {
|
|
48
|
-
// Create a sample STL for testing
|
|
49
|
-
const stlPath = await createSampleCube();
|
|
50
|
-
|
|
51
|
-
// Create an instance of the STL manipulator with the test directory
|
|
52
|
-
const manipulator = new STLManipulator(TEST_DIR);
|
|
53
|
-
|
|
54
|
-
// Listen for events from the manipulator
|
|
55
|
-
manipulator.on('operationComplete', (data) => {
|
|
56
|
-
console.log('Operation complete:', data);
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
manipulator.on('operationError', (data) => {
|
|
60
|
-
console.error('Operation error:', data);
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
// Test progress callback
|
|
64
|
-
const progressCallback = (progress, message) => {
|
|
65
|
-
console.log(`Progress: ${progress}% - ${message || ''}`);
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
// Test 1: Get information about the STL file
|
|
69
|
-
console.log('\n=== Test 1: Get STL Info ===');
|
|
70
|
-
const stlInfo = await manipulator.getSTLInfo(stlPath);
|
|
71
|
-
console.log('STL Info:', stlInfo);
|
|
72
|
-
|
|
73
|
-
// Test 2: Scale the STL file
|
|
74
|
-
console.log('\n=== Test 2: Scale STL ===');
|
|
75
|
-
const scaledStlPath = await manipulator.scaleSTL(stlPath, 2.0, progressCallback);
|
|
76
|
-
console.log(`Scaled STL saved to: ${scaledStlPath}`);
|
|
77
|
-
|
|
78
|
-
// Test 3: Rotate the STL file
|
|
79
|
-
console.log('\n=== Test 3: Rotate STL ===');
|
|
80
|
-
const rotatedStlPath = await manipulator.rotateSTL(stlPath, [45, 0, 0], progressCallback);
|
|
81
|
-
console.log(`Rotated STL saved to: ${rotatedStlPath}`);
|
|
82
|
-
|
|
83
|
-
// Test 4: Translate the STL file
|
|
84
|
-
console.log('\n=== Test 4: Translate STL ===');
|
|
85
|
-
const translatedStlPath = await manipulator.translateSTL(stlPath, [5, 10, 0], progressCallback);
|
|
86
|
-
console.log(`Translated STL saved to: ${translatedStlPath}`);
|
|
87
|
-
|
|
88
|
-
// Test 5: Extend the base of the STL file
|
|
89
|
-
console.log('\n=== Test 5: Extend Base ===');
|
|
90
|
-
const extendedStlPath = await manipulator.extendBase(stlPath, 0.5, progressCallback);
|
|
91
|
-
console.log(`Extended STL saved to: ${extendedStlPath}`);
|
|
92
|
-
|
|
93
|
-
// Test 6: Modify a section of the STL file
|
|
94
|
-
console.log('\n=== Test 6: Modify Section (Top) ===');
|
|
95
|
-
const modifiedStlPath = await manipulator.modifySection(
|
|
96
|
-
stlPath,
|
|
97
|
-
'top',
|
|
98
|
-
{
|
|
99
|
-
type: 'scale',
|
|
100
|
-
value: [1.5, 1.5, 1.5]
|
|
101
|
-
},
|
|
102
|
-
progressCallback
|
|
103
|
-
);
|
|
104
|
-
console.log(`Modified STL saved to: ${modifiedStlPath}`);
|
|
105
|
-
|
|
106
|
-
console.log('\nAll tests completed successfully!');
|
|
107
|
-
} catch (error) {
|
|
108
|
-
console.error('An error occurred during testing:', error);
|
|
109
|
-
process.exit(1);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
// Run the tests
|
|
114
|
-
testSTLManipulator().catch(console.error);
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import { STLManipulator, ProgressCallback } from '../stl/stl-manipulator.js';
|
|
4
|
-
import fs from 'fs';
|
|
5
|
-
import path from 'path';
|
|
6
|
-
import * as THREE from 'three';
|
|
7
|
-
|
|
8
|
-
// Create a test directory
|
|
9
|
-
const TEST_DIR = path.join(process.cwd(), 'test');
|
|
10
|
-
if (!fs.existsSync(TEST_DIR)) {
|
|
11
|
-
fs.mkdirSync(TEST_DIR, { recursive: true });
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
// Path for a sample STL file
|
|
15
|
-
const sampleStlPath = path.join(TEST_DIR, 'sample_cube.stl');
|
|
16
|
-
|
|
17
|
-
// Create a simple cube STL for testing if it doesn't exist
|
|
18
|
-
async function createSampleCube() {
|
|
19
|
-
if (fs.existsSync(sampleStlPath)) {
|
|
20
|
-
console.log('Sample STL already exists, skipping creation');
|
|
21
|
-
return sampleStlPath;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
console.log('Creating sample cube STL...');
|
|
25
|
-
|
|
26
|
-
// Create a simple cube geometry
|
|
27
|
-
const geometry = new THREE.BoxGeometry(10, 10, 10);
|
|
28
|
-
const material = new THREE.MeshStandardMaterial();
|
|
29
|
-
const mesh = new THREE.Mesh(geometry, material);
|
|
30
|
-
|
|
31
|
-
// Import STLExporter
|
|
32
|
-
const { STLExporter } = await import('three/examples/jsm/exporters/STLExporter.js');
|
|
33
|
-
const exporter = new STLExporter();
|
|
34
|
-
|
|
35
|
-
// Export as STL
|
|
36
|
-
const stlString = exporter.parse(mesh);
|
|
37
|
-
|
|
38
|
-
// Write to file
|
|
39
|
-
fs.writeFileSync(sampleStlPath, stlString);
|
|
40
|
-
console.log(`Sample cube saved to ${sampleStlPath}`);
|
|
41
|
-
|
|
42
|
-
return sampleStlPath;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// Test the STL manipulator
|
|
46
|
-
async function testSTLManipulator() {
|
|
47
|
-
try {
|
|
48
|
-
// Create a sample STL for testing
|
|
49
|
-
const stlPath = await createSampleCube();
|
|
50
|
-
|
|
51
|
-
// Create an instance of the STL manipulator with the test directory
|
|
52
|
-
const manipulator = new STLManipulator(TEST_DIR);
|
|
53
|
-
|
|
54
|
-
// Listen for events from the manipulator
|
|
55
|
-
manipulator.on('operationComplete', (data) => {
|
|
56
|
-
console.log('Operation complete:', data);
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
manipulator.on('operationError', (data) => {
|
|
60
|
-
console.error('Operation error:', data);
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
// Test progress callback
|
|
64
|
-
const progressCallback: ProgressCallback = (progress, message) => {
|
|
65
|
-
console.log(`Progress: ${progress}% - ${message || ''}`);
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
// Test 1: Get information about the STL file
|
|
69
|
-
console.log('\n=== Test 1: Get STL Info ===');
|
|
70
|
-
const stlInfo = await manipulator.getSTLInfo(stlPath);
|
|
71
|
-
console.log('STL Info:', stlInfo);
|
|
72
|
-
|
|
73
|
-
// Test 2: Scale the STL file
|
|
74
|
-
console.log('\n=== Test 2: Scale STL ===');
|
|
75
|
-
const scaledStlPath = await manipulator.scaleSTL(stlPath, 2.0, progressCallback);
|
|
76
|
-
console.log(`Scaled STL saved to: ${scaledStlPath}`);
|
|
77
|
-
|
|
78
|
-
// Test 3: Rotate the STL file
|
|
79
|
-
console.log('\n=== Test 3: Rotate STL ===');
|
|
80
|
-
const rotatedStlPath = await manipulator.rotateSTL(stlPath, [45, 0, 0], progressCallback);
|
|
81
|
-
console.log(`Rotated STL saved to: ${rotatedStlPath}`);
|
|
82
|
-
|
|
83
|
-
// Test 4: Translate the STL file
|
|
84
|
-
console.log('\n=== Test 4: Translate STL ===');
|
|
85
|
-
const translatedStlPath = await manipulator.translateSTL(stlPath, [5, 10, 0], progressCallback);
|
|
86
|
-
console.log(`Translated STL saved to: ${translatedStlPath}`);
|
|
87
|
-
|
|
88
|
-
// Test 5: Extend the base of the STL file
|
|
89
|
-
console.log('\n=== Test 5: Extend Base ===');
|
|
90
|
-
const extendedStlPath = await manipulator.extendBase(stlPath, 0.5, progressCallback);
|
|
91
|
-
console.log(`Extended STL saved to: ${extendedStlPath}`);
|
|
92
|
-
|
|
93
|
-
// Test 6: Modify a section of the STL file
|
|
94
|
-
console.log('\n=== Test 6: Modify Section (Top) ===');
|
|
95
|
-
const modifiedStlPath = await manipulator.modifySection(
|
|
96
|
-
stlPath,
|
|
97
|
-
'top',
|
|
98
|
-
{
|
|
99
|
-
type: 'scale',
|
|
100
|
-
value: [1.5, 1.5, 1.5]
|
|
101
|
-
},
|
|
102
|
-
progressCallback
|
|
103
|
-
);
|
|
104
|
-
console.log(`Modified STL saved to: ${modifiedStlPath}`);
|
|
105
|
-
|
|
106
|
-
// Test 7: Generate visualization of the STL file
|
|
107
|
-
console.log('\n=== Test 7: Generate Visualization ===');
|
|
108
|
-
const visualizationPath = await manipulator.generateVisualization(
|
|
109
|
-
stlPath,
|
|
110
|
-
400,
|
|
111
|
-
400,
|
|
112
|
-
progressCallback
|
|
113
|
-
);
|
|
114
|
-
console.log(`Visualization saved to: ${visualizationPath}`);
|
|
115
|
-
|
|
116
|
-
console.log('\nAll tests completed successfully!');
|
|
117
|
-
} catch (error) {
|
|
118
|
-
console.error('An error occurred during testing:', error);
|
|
119
|
-
process.exit(1);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
// Run the tests
|
|
124
|
-
testSTLManipulator().catch(console.error);
|
package/src/test/tsconfig.json
DELETED
package/test/sample_cube.stl
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
solid exported
|
|
2
|
-
facet normal 1 0 0
|
|
3
|
-
outer loop
|
|
4
|
-
vertex 5 5 5
|
|
5
|
-
vertex 5 -5 5
|
|
6
|
-
vertex 5 5 -5
|
|
7
|
-
endloop
|
|
8
|
-
endfacet
|
|
9
|
-
facet normal 1 0 0
|
|
10
|
-
outer loop
|
|
11
|
-
vertex 5 -5 5
|
|
12
|
-
vertex 5 -5 -5
|
|
13
|
-
vertex 5 5 -5
|
|
14
|
-
endloop
|
|
15
|
-
endfacet
|
|
16
|
-
facet normal -1 0 0
|
|
17
|
-
outer loop
|
|
18
|
-
vertex -5 5 -5
|
|
19
|
-
vertex -5 -5 -5
|
|
20
|
-
vertex -5 5 5
|
|
21
|
-
endloop
|
|
22
|
-
endfacet
|
|
23
|
-
facet normal -1 0 0
|
|
24
|
-
outer loop
|
|
25
|
-
vertex -5 -5 -5
|
|
26
|
-
vertex -5 -5 5
|
|
27
|
-
vertex -5 5 5
|
|
28
|
-
endloop
|
|
29
|
-
endfacet
|
|
30
|
-
facet normal 0 1 0
|
|
31
|
-
outer loop
|
|
32
|
-
vertex -5 5 -5
|
|
33
|
-
vertex -5 5 5
|
|
34
|
-
vertex 5 5 -5
|
|
35
|
-
endloop
|
|
36
|
-
endfacet
|
|
37
|
-
facet normal 0 1 0
|
|
38
|
-
outer loop
|
|
39
|
-
vertex -5 5 5
|
|
40
|
-
vertex 5 5 5
|
|
41
|
-
vertex 5 5 -5
|
|
42
|
-
endloop
|
|
43
|
-
endfacet
|
|
44
|
-
facet normal 0 -1 0
|
|
45
|
-
outer loop
|
|
46
|
-
vertex -5 -5 5
|
|
47
|
-
vertex -5 -5 -5
|
|
48
|
-
vertex 5 -5 5
|
|
49
|
-
endloop
|
|
50
|
-
endfacet
|
|
51
|
-
facet normal 0 -1 0
|
|
52
|
-
outer loop
|
|
53
|
-
vertex -5 -5 -5
|
|
54
|
-
vertex 5 -5 -5
|
|
55
|
-
vertex 5 -5 5
|
|
56
|
-
endloop
|
|
57
|
-
endfacet
|
|
58
|
-
facet normal 0 0 1
|
|
59
|
-
outer loop
|
|
60
|
-
vertex -5 5 5
|
|
61
|
-
vertex -5 -5 5
|
|
62
|
-
vertex 5 5 5
|
|
63
|
-
endloop
|
|
64
|
-
endfacet
|
|
65
|
-
facet normal 0 0 1
|
|
66
|
-
outer loop
|
|
67
|
-
vertex -5 -5 5
|
|
68
|
-
vertex 5 -5 5
|
|
69
|
-
vertex 5 5 5
|
|
70
|
-
endloop
|
|
71
|
-
endfacet
|
|
72
|
-
facet normal 0 0 -1
|
|
73
|
-
outer loop
|
|
74
|
-
vertex 5 5 -5
|
|
75
|
-
vertex 5 -5 -5
|
|
76
|
-
vertex -5 5 -5
|
|
77
|
-
endloop
|
|
78
|
-
endfacet
|
|
79
|
-
facet normal 0 0 -1
|
|
80
|
-
outer loop
|
|
81
|
-
vertex 5 -5 -5
|
|
82
|
-
vertex -5 -5 -5
|
|
83
|
-
vertex -5 5 -5
|
|
84
|
-
endloop
|
|
85
|
-
endfacet
|
|
86
|
-
endsolid exported
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
solid exported
|
|
2
|
-
facet normal 1 0 0
|
|
3
|
-
outer loop
|
|
4
|
-
vertex 5 17.700000762939453 5
|
|
5
|
-
vertex 5 7.699999809265137 5
|
|
6
|
-
vertex 5 17.700000762939453 -5
|
|
7
|
-
endloop
|
|
8
|
-
endfacet
|
|
9
|
-
facet normal 1 0 0
|
|
10
|
-
outer loop
|
|
11
|
-
vertex 5 7.699999809265137 5
|
|
12
|
-
vertex 5 7.699999809265137 -5
|
|
13
|
-
vertex 5 17.700000762939453 -5
|
|
14
|
-
endloop
|
|
15
|
-
endfacet
|
|
16
|
-
facet normal -1 0 0
|
|
17
|
-
outer loop
|
|
18
|
-
vertex -5 17.700000762939453 -5
|
|
19
|
-
vertex -5 7.699999809265137 -5
|
|
20
|
-
vertex -5 17.700000762939453 5
|
|
21
|
-
endloop
|
|
22
|
-
endfacet
|
|
23
|
-
facet normal -1 0 0
|
|
24
|
-
outer loop
|
|
25
|
-
vertex -5 7.699999809265137 -5
|
|
26
|
-
vertex -5 7.699999809265137 5
|
|
27
|
-
vertex -5 17.700000762939453 5
|
|
28
|
-
endloop
|
|
29
|
-
endfacet
|
|
30
|
-
facet normal 0 1 0
|
|
31
|
-
outer loop
|
|
32
|
-
vertex -5 17.700000762939453 -5
|
|
33
|
-
vertex -5 17.700000762939453 5
|
|
34
|
-
vertex 5 17.700000762939453 -5
|
|
35
|
-
endloop
|
|
36
|
-
endfacet
|
|
37
|
-
facet normal 0 1 0
|
|
38
|
-
outer loop
|
|
39
|
-
vertex -5 17.700000762939453 5
|
|
40
|
-
vertex 5 17.700000762939453 5
|
|
41
|
-
vertex 5 17.700000762939453 -5
|
|
42
|
-
endloop
|
|
43
|
-
endfacet
|
|
44
|
-
facet normal 0 -1 0
|
|
45
|
-
outer loop
|
|
46
|
-
vertex -5 7.699999809265137 5
|
|
47
|
-
vertex -5 7.699999809265137 -5
|
|
48
|
-
vertex 5 7.699999809265137 5
|
|
49
|
-
endloop
|
|
50
|
-
endfacet
|
|
51
|
-
facet normal 0 -1 0
|
|
52
|
-
outer loop
|
|
53
|
-
vertex -5 7.699999809265137 -5
|
|
54
|
-
vertex 5 7.699999809265137 -5
|
|
55
|
-
vertex 5 7.699999809265137 5
|
|
56
|
-
endloop
|
|
57
|
-
endfacet
|
|
58
|
-
facet normal 0 0 1
|
|
59
|
-
outer loop
|
|
60
|
-
vertex -5 17.700000762939453 5
|
|
61
|
-
vertex -5 7.699999809265137 5
|
|
62
|
-
vertex 5 17.700000762939453 5
|
|
63
|
-
endloop
|
|
64
|
-
endfacet
|
|
65
|
-
facet normal 0 0 1
|
|
66
|
-
outer loop
|
|
67
|
-
vertex -5 7.699999809265137 5
|
|
68
|
-
vertex 5 7.699999809265137 5
|
|
69
|
-
vertex 5 17.700000762939453 5
|
|
70
|
-
endloop
|
|
71
|
-
endfacet
|
|
72
|
-
facet normal 0 0 -1
|
|
73
|
-
outer loop
|
|
74
|
-
vertex 5 17.700000762939453 -5
|
|
75
|
-
vertex 5 7.699999809265137 -5
|
|
76
|
-
vertex -5 17.700000762939453 -5
|
|
77
|
-
endloop
|
|
78
|
-
endfacet
|
|
79
|
-
facet normal 0 0 -1
|
|
80
|
-
outer loop
|
|
81
|
-
vertex 5 7.699999809265137 -5
|
|
82
|
-
vertex -5 7.699999809265137 -5
|
|
83
|
-
vertex -5 17.700000762939453 -5
|
|
84
|
-
endloop
|
|
85
|
-
endfacet
|
|
86
|
-
endsolid exported
|
|
87
|
-
solid exported
|
|
88
|
-
facet normal 1 0 0
|
|
89
|
-
outer loop
|
|
90
|
-
vertex 5 7.699999809265137 5
|
|
91
|
-
vertex 5 -5 5
|
|
92
|
-
vertex 5 7.699999809265137 -5
|
|
93
|
-
endloop
|
|
94
|
-
endfacet
|
|
95
|
-
facet normal 1 0 0
|
|
96
|
-
outer loop
|
|
97
|
-
vertex 5 -5 5
|
|
98
|
-
vertex 5 -5 -5
|
|
99
|
-
vertex 5 7.699999809265137 -5
|
|
100
|
-
endloop
|
|
101
|
-
endfacet
|
|
102
|
-
facet normal -1 0 0
|
|
103
|
-
outer loop
|
|
104
|
-
vertex -5 7.699999809265137 -5
|
|
105
|
-
vertex -5 -5 -5
|
|
106
|
-
vertex -5 7.699999809265137 5
|
|
107
|
-
endloop
|
|
108
|
-
endfacet
|
|
109
|
-
facet normal -1 0 0
|
|
110
|
-
outer loop
|
|
111
|
-
vertex -5 -5 -5
|
|
112
|
-
vertex -5 -5 5
|
|
113
|
-
vertex -5 7.699999809265137 5
|
|
114
|
-
endloop
|
|
115
|
-
endfacet
|
|
116
|
-
facet normal 0 1 0
|
|
117
|
-
outer loop
|
|
118
|
-
vertex -5 7.699999809265137 -5
|
|
119
|
-
vertex -5 7.699999809265137 5
|
|
120
|
-
vertex 5 7.699999809265137 -5
|
|
121
|
-
endloop
|
|
122
|
-
endfacet
|
|
123
|
-
facet normal 0 1 0
|
|
124
|
-
outer loop
|
|
125
|
-
vertex -5 7.699999809265137 5
|
|
126
|
-
vertex 5 7.699999809265137 5
|
|
127
|
-
vertex 5 7.699999809265137 -5
|
|
128
|
-
endloop
|
|
129
|
-
endfacet
|
|
130
|
-
facet normal 0 -1 0
|
|
131
|
-
outer loop
|
|
132
|
-
vertex -5 -5 5
|
|
133
|
-
vertex -5 -5 -5
|
|
134
|
-
vertex 5 -5 5
|
|
135
|
-
endloop
|
|
136
|
-
endfacet
|
|
137
|
-
facet normal 0 -1 0
|
|
138
|
-
outer loop
|
|
139
|
-
vertex -5 -5 -5
|
|
140
|
-
vertex 5 -5 -5
|
|
141
|
-
vertex 5 -5 5
|
|
142
|
-
endloop
|
|
143
|
-
endfacet
|
|
144
|
-
facet normal 0 0 1
|
|
145
|
-
outer loop
|
|
146
|
-
vertex -5 7.699999809265137 5
|
|
147
|
-
vertex -5 -5 5
|
|
148
|
-
vertex 5 7.699999809265137 5
|
|
149
|
-
endloop
|
|
150
|
-
endfacet
|
|
151
|
-
facet normal 0 0 1
|
|
152
|
-
outer loop
|
|
153
|
-
vertex -5 -5 5
|
|
154
|
-
vertex 5 -5 5
|
|
155
|
-
vertex 5 7.699999809265137 5
|
|
156
|
-
endloop
|
|
157
|
-
endfacet
|
|
158
|
-
facet normal 0 0 -1
|
|
159
|
-
outer loop
|
|
160
|
-
vertex 5 7.699999809265137 -5
|
|
161
|
-
vertex 5 -5 -5
|
|
162
|
-
vertex -5 7.699999809265137 -5
|
|
163
|
-
endloop
|
|
164
|
-
endfacet
|
|
165
|
-
facet normal 0 0 -1
|
|
166
|
-
outer loop
|
|
167
|
-
vertex 5 -5 -5
|
|
168
|
-
vertex -5 -5 -5
|
|
169
|
-
vertex -5 7.699999809265137 -5
|
|
170
|
-
endloop
|
|
171
|
-
endfacet
|
|
172
|
-
endsolid exported
|