@invisra/printspec 0.1.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.
@@ -0,0 +1,201 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.invisra.ai/printspec/0.1.0/l-bracket.schema.json",
4
+ "type": "object",
5
+ "required": [
6
+ "type",
7
+ "label",
8
+ "parameters"
9
+ ],
10
+ "properties": {
11
+ "type": {
12
+ "const": "l_bracket",
13
+ "title": "Part type",
14
+ "description": "Stable printspec part family identifier."
15
+ },
16
+ "label": {
17
+ "type": "string",
18
+ "minLength": 1,
19
+ "title": "Label",
20
+ "description": "Human-readable name for this part."
21
+ },
22
+ "description": {
23
+ "type": "string",
24
+ "title": "Description",
25
+ "description": "Optional human-readable notes for this part."
26
+ },
27
+ "parameters": {
28
+ "type": "object",
29
+ "required": [
30
+ "legLengthA",
31
+ "legLengthB",
32
+ "width",
33
+ "thickness"
34
+ ],
35
+ "properties": {
36
+ "legLengthA": {
37
+ "type": "number",
38
+ "exclusiveMinimum": 0,
39
+ "maximum": 10000,
40
+ "title": "Leg A length",
41
+ "description": "Leg A length in millimeters.",
42
+ "x-printspec-control": "number",
43
+ "x-printspec-unit": "mm",
44
+ "x-printspec-step": 0.1,
45
+ "x-printspec-priority": "primary"
46
+ },
47
+ "legLengthB": {
48
+ "type": "number",
49
+ "exclusiveMinimum": 0,
50
+ "maximum": 10000,
51
+ "title": "Leg B length",
52
+ "description": "Leg B length in millimeters.",
53
+ "x-printspec-control": "number",
54
+ "x-printspec-unit": "mm",
55
+ "x-printspec-step": 0.1,
56
+ "x-printspec-priority": "primary"
57
+ },
58
+ "width": {
59
+ "type": "number",
60
+ "exclusiveMinimum": 0,
61
+ "maximum": 10000,
62
+ "title": "Width",
63
+ "description": "Width in millimeters.",
64
+ "x-printspec-control": "number",
65
+ "x-printspec-unit": "mm",
66
+ "x-printspec-step": 0.1,
67
+ "x-printspec-priority": "primary",
68
+ "examples": [
69
+ 50
70
+ ]
71
+ },
72
+ "thickness": {
73
+ "type": "number",
74
+ "exclusiveMinimum": 0,
75
+ "maximum": 10000,
76
+ "title": "Thickness",
77
+ "description": "Thickness in millimeters.",
78
+ "x-printspec-control": "number",
79
+ "x-printspec-unit": "mm",
80
+ "x-printspec-step": 0.1,
81
+ "x-printspec-priority": "primary",
82
+ "examples": [
83
+ 3
84
+ ]
85
+ },
86
+ "holes": {
87
+ "type": "array",
88
+ "items": {
89
+ "$ref": "common.schema.json#/$defs/Hole"
90
+ },
91
+ "title": "Holes",
92
+ "description": "Optional hole features to include in the generated part.",
93
+ "x-printspec-control": "hole-list",
94
+ "x-printspec-priority": "advanced",
95
+ "default": []
96
+ },
97
+ "slots": {
98
+ "type": "array",
99
+ "items": {
100
+ "$ref": "common.schema.json#/$defs/Slot"
101
+ },
102
+ "title": "Slots",
103
+ "description": "Optional slot features to include in the generated part.",
104
+ "x-printspec-control": "slot-list",
105
+ "x-printspec-priority": "advanced",
106
+ "default": []
107
+ },
108
+ "chamfer": {
109
+ "$ref": "common.schema.json#/$defs/Chamfer",
110
+ "title": "Chamfer",
111
+ "description": "Optional chamfer edge finishing request.",
112
+ "x-printspec-control": "number",
113
+ "x-printspec-priority": "advanced"
114
+ },
115
+ "fillet": {
116
+ "$ref": "common.schema.json#/$defs/Fillet",
117
+ "title": "Fillet",
118
+ "description": "Optional fillet edge finishing request.",
119
+ "x-printspec-control": "number",
120
+ "x-printspec-priority": "advanced"
121
+ },
122
+ "cornerRadius": {
123
+ "type": "number",
124
+ "exclusiveMinimum": 0,
125
+ "maximum": 10000,
126
+ "title": "Corner radius",
127
+ "description": "Corner radius in millimeters.",
128
+ "x-printspec-control": "number",
129
+ "x-printspec-unit": "mm",
130
+ "x-printspec-step": 0.1,
131
+ "x-printspec-priority": "advanced",
132
+ "examples": [
133
+ 4
134
+ ]
135
+ },
136
+ "rib": {
137
+ "type": "object",
138
+ "properties": {
139
+ "enabled": {
140
+ "type": "boolean"
141
+ },
142
+ "thickness": {
143
+ "type": "number",
144
+ "exclusiveMinimum": 0,
145
+ "maximum": 10000
146
+ }
147
+ },
148
+ "additionalProperties": false,
149
+ "title": "Rib",
150
+ "description": "Rib parameter.",
151
+ "x-printspec-control": "number",
152
+ "x-printspec-priority": "advanced"
153
+ }
154
+ },
155
+ "additionalProperties": false,
156
+ "title": "Parameters",
157
+ "description": "Editable parameters for L Bracket.",
158
+ "x-printspec-ui": {
159
+ "order": [
160
+ "legLengthA",
161
+ "legLengthB",
162
+ "width",
163
+ "thickness",
164
+ "holes",
165
+ "slots",
166
+ "chamfer",
167
+ "fillet",
168
+ "cornerRadius",
169
+ "rib"
170
+ ],
171
+ "groups": [
172
+ {
173
+ "id": "parameters",
174
+ "title": "Parameters",
175
+ "fields": [
176
+ "legLengthA",
177
+ "legLengthB",
178
+ "width",
179
+ "thickness",
180
+ "holes",
181
+ "slots",
182
+ "chamfer",
183
+ "fillet",
184
+ "cornerRadius",
185
+ "rib"
186
+ ]
187
+ }
188
+ ]
189
+ }
190
+ },
191
+ "hardware": {
192
+ "type": "array",
193
+ "items": {
194
+ "$ref": "common.schema.json#/$defs/HardwareItem"
195
+ }
196
+ }
197
+ },
198
+ "additionalProperties": false,
199
+ "title": "L Bracket",
200
+ "description": "Two-leg right-angle bracket with optional mounting features."
201
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "oneOf": [
4
+ {
5
+ "$ref": "rounded-rectangular-plate.schema.json"
6
+ },
7
+ {
8
+ "$ref": "spacer-block.schema.json"
9
+ },
10
+ {
11
+ "$ref": "round-spacer.schema.json"
12
+ },
13
+ {
14
+ "$ref": "electronics-standoff.schema.json"
15
+ },
16
+ {
17
+ "$ref": "l-bracket.schema.json"
18
+ },
19
+ {
20
+ "$ref": "cable-comb.schema.json"
21
+ },
22
+ {
23
+ "$ref": "cable-clip.schema.json"
24
+ },
25
+ {
26
+ "$ref": "drill-guide.schema.json"
27
+ },
28
+ {
29
+ "$ref": "simple-box.schema.json"
30
+ },
31
+ {
32
+ "$ref": "simple-lid.schema.json"
33
+ }
34
+ ],
35
+ "$id": "https://schemas.invisra.ai/printspec/0.1.0/part-family.schema.json",
36
+ "title": "Part Family",
37
+ "description": "Part Family schema for printspec documents."
38
+ }
@@ -0,0 +1,73 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.invisra.ai/printspec/0.1.0/printspec.schema.json",
4
+ "type": "object",
5
+ "required": [
6
+ "printspecVersion",
7
+ "units"
8
+ ],
9
+ "properties": {
10
+ "printspecVersion": {
11
+ "const": "0.1.0"
12
+ },
13
+ "units": {
14
+ "const": "mm"
15
+ },
16
+ "part": {
17
+ "oneOf": [
18
+ {
19
+ "$ref": "part-family.schema.json"
20
+ },
21
+ {
22
+ "$ref": "composable-part.schema.json"
23
+ }
24
+ ]
25
+ },
26
+ "project": {
27
+ "$ref": "project.schema.json"
28
+ },
29
+ "print": {
30
+ "type": "object",
31
+ "properties": {
32
+ "intendedMaterial": {
33
+ "type": "string"
34
+ },
35
+ "recommendedOrientation": {
36
+ "type": "string"
37
+ },
38
+ "notes": {
39
+ "type": "array",
40
+ "items": {
41
+ "type": "string"
42
+ }
43
+ }
44
+ },
45
+ "additionalProperties": false
46
+ },
47
+ "hardware": {
48
+ "type": "array",
49
+ "items": {
50
+ "$ref": "common.schema.json#/$defs/HardwareItem"
51
+ }
52
+ },
53
+ "metadata": {
54
+ "type": "object",
55
+ "additionalProperties": true
56
+ }
57
+ },
58
+ "oneOf": [
59
+ {
60
+ "required": [
61
+ "part"
62
+ ]
63
+ },
64
+ {
65
+ "required": [
66
+ "project"
67
+ ]
68
+ }
69
+ ],
70
+ "additionalProperties": false,
71
+ "title": "Printspec",
72
+ "description": "Printspec schema for printspec documents."
73
+ }
@@ -0,0 +1,133 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "required": [
5
+ "type",
6
+ "label",
7
+ "parts"
8
+ ],
9
+ "properties": {
10
+ "type": {
11
+ "const": "project",
12
+ "title": "Part type",
13
+ "description": "Stable printspec part family identifier."
14
+ },
15
+ "label": {
16
+ "type": "string",
17
+ "title": "Label",
18
+ "description": "Human-readable name for this part."
19
+ },
20
+ "description": {
21
+ "type": "string",
22
+ "title": "Description",
23
+ "description": "Optional human-readable notes for this part."
24
+ },
25
+ "parts": {
26
+ "type": "array",
27
+ "minItems": 1,
28
+ "items": {
29
+ "type": "object",
30
+ "required": [
31
+ "id",
32
+ "label"
33
+ ],
34
+ "properties": {
35
+ "id": {
36
+ "type": "string"
37
+ },
38
+ "label": {
39
+ "type": "string"
40
+ },
41
+ "spec": {
42
+ "$ref": "printspec.schema.json"
43
+ },
44
+ "specPath": {
45
+ "type": "string"
46
+ },
47
+ "role": {
48
+ "type": "string"
49
+ },
50
+ "quantity": {
51
+ "type": "integer",
52
+ "minimum": 1,
53
+ "default": 1
54
+ }
55
+ },
56
+ "oneOf": [
57
+ {
58
+ "required": [
59
+ "spec"
60
+ ]
61
+ },
62
+ {
63
+ "required": [
64
+ "specPath"
65
+ ]
66
+ }
67
+ ],
68
+ "additionalProperties": false
69
+ }
70
+ },
71
+ "hardware": {
72
+ "type": "array",
73
+ "items": {
74
+ "$ref": "common.schema.json#/$defs/HardwareItem"
75
+ }
76
+ },
77
+ "relationships": {
78
+ "type": "array",
79
+ "items": {
80
+ "type": "object",
81
+ "required": [
82
+ "type",
83
+ "partA"
84
+ ],
85
+ "properties": {
86
+ "type": {
87
+ "enum": [
88
+ "mates_with",
89
+ "fastens",
90
+ "inserts_into",
91
+ "aligns_with"
92
+ ]
93
+ },
94
+ "partA": {
95
+ "type": "string"
96
+ },
97
+ "partB": {
98
+ "type": "string"
99
+ },
100
+ "hardware": {
101
+ "type": "string"
102
+ },
103
+ "notes": {
104
+ "type": "string"
105
+ }
106
+ },
107
+ "additionalProperties": false
108
+ }
109
+ },
110
+ "package": {
111
+ "type": "object"
112
+ },
113
+ "partcad": {
114
+ "type": "object",
115
+ "properties": {
116
+ "packageName": {
117
+ "type": "string"
118
+ },
119
+ "packageVersion": {
120
+ "type": "string"
121
+ },
122
+ "description": {
123
+ "type": "string"
124
+ }
125
+ },
126
+ "additionalProperties": false
127
+ }
128
+ },
129
+ "additionalProperties": false,
130
+ "$id": "https://schemas.invisra.ai/printspec/0.1.0/project.schema.json",
131
+ "title": "Project",
132
+ "description": "Project schema for printspec documents."
133
+ }
@@ -0,0 +1,181 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.invisra.ai/printspec/0.1.0/round-spacer.schema.json",
4
+ "type": "object",
5
+ "required": [
6
+ "type",
7
+ "label",
8
+ "parameters"
9
+ ],
10
+ "properties": {
11
+ "type": {
12
+ "const": "round_spacer",
13
+ "title": "Part type",
14
+ "description": "Stable printspec part family identifier."
15
+ },
16
+ "label": {
17
+ "type": "string",
18
+ "minLength": 1,
19
+ "title": "Label",
20
+ "description": "Human-readable name for this part."
21
+ },
22
+ "description": {
23
+ "type": "string",
24
+ "title": "Description",
25
+ "description": "Optional human-readable notes for this part."
26
+ },
27
+ "parameters": {
28
+ "type": "object",
29
+ "required": [
30
+ "outerDiameter",
31
+ "height"
32
+ ],
33
+ "properties": {
34
+ "outerDiameter": {
35
+ "type": "number",
36
+ "exclusiveMinimum": 0,
37
+ "maximum": 10000,
38
+ "title": "Outer diameter",
39
+ "description": "Outer diameter in millimeters.",
40
+ "x-printspec-control": "number",
41
+ "x-printspec-unit": "mm",
42
+ "x-printspec-step": 0.1,
43
+ "x-printspec-priority": "primary",
44
+ "examples": [
45
+ 12
46
+ ]
47
+ },
48
+ "innerDiameter": {
49
+ "type": "number",
50
+ "exclusiveMinimum": 0,
51
+ "maximum": 10000,
52
+ "title": "Inner diameter",
53
+ "description": "Inner diameter in millimeters.",
54
+ "x-printspec-control": "number",
55
+ "x-printspec-unit": "mm",
56
+ "x-printspec-step": 0.1,
57
+ "x-printspec-priority": "advanced",
58
+ "examples": [
59
+ 4
60
+ ]
61
+ },
62
+ "height": {
63
+ "type": "number",
64
+ "exclusiveMinimum": 0,
65
+ "maximum": 10000,
66
+ "title": "Height",
67
+ "description": "Height in millimeters.",
68
+ "x-printspec-control": "number",
69
+ "x-printspec-unit": "mm",
70
+ "x-printspec-step": 0.1,
71
+ "x-printspec-priority": "primary",
72
+ "examples": [
73
+ 10
74
+ ]
75
+ },
76
+ "holes": {
77
+ "type": "array",
78
+ "items": {
79
+ "$ref": "common.schema.json#/$defs/Hole"
80
+ },
81
+ "title": "Holes",
82
+ "description": "Optional hole features to include in the generated part.",
83
+ "x-printspec-control": "hole-list",
84
+ "x-printspec-priority": "advanced",
85
+ "default": []
86
+ },
87
+ "slots": {
88
+ "type": "array",
89
+ "items": {
90
+ "$ref": "common.schema.json#/$defs/Slot"
91
+ },
92
+ "title": "Slots",
93
+ "description": "Optional slot features to include in the generated part.",
94
+ "x-printspec-control": "slot-list",
95
+ "x-printspec-priority": "advanced",
96
+ "default": []
97
+ },
98
+ "chamfer": {
99
+ "$ref": "common.schema.json#/$defs/Chamfer",
100
+ "title": "Chamfer",
101
+ "description": "Optional chamfer edge finishing request.",
102
+ "x-printspec-control": "number",
103
+ "x-printspec-priority": "advanced"
104
+ },
105
+ "fillet": {
106
+ "$ref": "common.schema.json#/$defs/Fillet",
107
+ "title": "Fillet",
108
+ "description": "Optional fillet edge finishing request.",
109
+ "x-printspec-control": "number",
110
+ "x-printspec-priority": "advanced"
111
+ },
112
+ "cornerRadius": {
113
+ "type": "number",
114
+ "exclusiveMinimum": 0,
115
+ "maximum": 10000,
116
+ "title": "Corner radius",
117
+ "description": "Corner radius in millimeters.",
118
+ "x-printspec-control": "number",
119
+ "x-printspec-unit": "mm",
120
+ "x-printspec-step": 0.1,
121
+ "x-printspec-priority": "advanced",
122
+ "examples": [
123
+ 4
124
+ ]
125
+ }
126
+ },
127
+ "additionalProperties": false,
128
+ "title": "Parameters",
129
+ "description": "Editable parameters for Round Spacer.",
130
+ "x-printspec-ui": {
131
+ "order": [
132
+ "outerDiameter",
133
+ "innerDiameter",
134
+ "height",
135
+ "cornerRadius",
136
+ "holes",
137
+ "slots",
138
+ "chamfer",
139
+ "fillet"
140
+ ],
141
+ "groups": [
142
+ {
143
+ "id": "dimensions",
144
+ "title": "Dimensions",
145
+ "fields": [
146
+ "outerDiameter",
147
+ "innerDiameter",
148
+ "height",
149
+ "cornerRadius"
150
+ ]
151
+ },
152
+ {
153
+ "id": "features",
154
+ "title": "Features",
155
+ "fields": [
156
+ "holes",
157
+ "slots"
158
+ ]
159
+ },
160
+ {
161
+ "id": "finishing",
162
+ "title": "Finishing",
163
+ "fields": [
164
+ "chamfer",
165
+ "fillet"
166
+ ]
167
+ }
168
+ ]
169
+ }
170
+ },
171
+ "hardware": {
172
+ "type": "array",
173
+ "items": {
174
+ "$ref": "common.schema.json#/$defs/HardwareItem"
175
+ }
176
+ }
177
+ },
178
+ "additionalProperties": false,
179
+ "title": "Round Spacer",
180
+ "description": "Cylindrical spacer or bushing with a central clearance hole."
181
+ }