Place rectangles by their centers
This commit is contained in:
parent
73045e4754
commit
0ed29e7e1d
5 changed files with 105 additions and 106 deletions
|
@ -265,14 +265,13 @@ exports.parse = (config = {}, points = {}, units = {}) => {
|
||||||
const corner = a.sane(part.corner || 0, `${name}.corner`, 'number')(rec_units)
|
const corner = a.sane(part.corner || 0, `${name}.corner`, 'number')(rec_units)
|
||||||
const bevel = a.sane(part.bevel || 0, `${name}.bevel`, 'number')(rec_units)
|
const bevel = a.sane(part.bevel || 0, `${name}.bevel`, 'number')(rec_units)
|
||||||
const rect_mirror = a.sane(part.mirror || false, `${name}.mirror`, 'boolean')()
|
const rect_mirror = a.sane(part.mirror || false, `${name}.mirror`, 'boolean')()
|
||||||
const rect = rectangle(size[0], size[1], corner, bevel, name)
|
const rect = m.model.moveRelative(rectangle(size[0], size[1], corner, bevel, name), [-size[0]/2, -size[1]/2])
|
||||||
arg = anchor.position(u.deepcopy(rect))
|
arg = anchor.position(u.deepcopy(rect))
|
||||||
if (rect_mirror) {
|
if (rect_mirror) {
|
||||||
const mirror_anchor = u.deepcopy(anchor_def)
|
const mirror_anchor = u.deepcopy(anchor_def)
|
||||||
a.assert(mirror_anchor.ref, `Field "${name}.anchor.ref" must be speficied if mirroring is required!`)
|
a.assert(mirror_anchor.ref, `Field "${name}.anchor.ref" must be speficied if mirroring is required!`)
|
||||||
anchor = anchor_lib.parse(mirror_anchor, `${name}.anchor --> mirror`, points, undefined, undefined, true)(rec_units)
|
anchor = anchor_lib.parse(mirror_anchor, `${name}.anchor --> mirror`, points, undefined, undefined, true)(rec_units)
|
||||||
const mirror_rect = m.model.moveRelative(u.deepcopy(rect), [-size[0], 0])
|
arg = u.union(arg, anchor.position(u.deepcopy(rect)))
|
||||||
arg = u.union(arg, anchor.position(mirror_rect))
|
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
case 'circle':
|
case 'circle':
|
||||||
|
|
|
@ -59,7 +59,7 @@ module.exports = class Point {
|
||||||
}
|
}
|
||||||
|
|
||||||
rect(size=14) {
|
rect(size=14) {
|
||||||
let rect = u.rect(size, size, [-size/2, -size/2], this.meta.mirrored)
|
let rect = u.rect(size, size, [-size/2, -size/2])
|
||||||
return this.position(rect)
|
return this.position(rect)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,86 +1,86 @@
|
||||||
solid csg.js
|
solid csg.js
|
||||||
facet normal 0 0 -1
|
facet normal 0 0 -1
|
||||||
outer loop
|
outer loop
|
||||||
vertex 0 5 0
|
vertex -2.5 2.5 0
|
||||||
vertex 5 5 0
|
vertex 2.5 2.5 0
|
||||||
vertex 5 0 0
|
vertex 2.5 -2.5 0
|
||||||
endloop
|
endloop
|
||||||
endfacet
|
endfacet
|
||||||
facet normal 0 0 -1
|
facet normal 0 0 -1
|
||||||
outer loop
|
outer loop
|
||||||
vertex 0 5 0
|
vertex -2.5 2.5 0
|
||||||
vertex 5 0 0
|
vertex 2.5 -2.5 0
|
||||||
vertex 0 0 0
|
vertex -2.5 -2.5 0
|
||||||
endloop
|
endloop
|
||||||
endfacet
|
endfacet
|
||||||
facet normal 0 0 1
|
facet normal 0 0 1
|
||||||
outer loop
|
outer loop
|
||||||
vertex 0 5 5
|
vertex -2.5 2.5 5
|
||||||
vertex 0 0 5
|
vertex -2.5 -2.5 5
|
||||||
vertex 5 0 5
|
vertex 2.5 -2.5 5
|
||||||
endloop
|
endloop
|
||||||
endfacet
|
endfacet
|
||||||
facet normal 0 0 1
|
facet normal 0 0 1
|
||||||
outer loop
|
outer loop
|
||||||
vertex 0 5 5
|
vertex -2.5 2.5 5
|
||||||
vertex 5 0 5
|
vertex 2.5 -2.5 5
|
||||||
vertex 5 5 5
|
vertex 2.5 2.5 5
|
||||||
endloop
|
endloop
|
||||||
endfacet
|
endfacet
|
||||||
facet normal 0 -1 0
|
facet normal 0 -1 0
|
||||||
outer loop
|
outer loop
|
||||||
vertex 5 0 0
|
vertex 2.5 -2.5 0
|
||||||
vertex 5 0 5
|
vertex 2.5 -2.5 5
|
||||||
vertex 0 0 5
|
vertex -2.5 -2.5 5
|
||||||
endloop
|
endloop
|
||||||
endfacet
|
endfacet
|
||||||
facet normal 0 -1 0
|
facet normal 0 -1 0
|
||||||
outer loop
|
outer loop
|
||||||
vertex 5 0 0
|
vertex 2.5 -2.5 0
|
||||||
vertex 0 0 5
|
vertex -2.5 -2.5 5
|
||||||
vertex 0 0 0
|
vertex -2.5 -2.5 0
|
||||||
endloop
|
endloop
|
||||||
endfacet
|
endfacet
|
||||||
facet normal 1 0 0
|
facet normal 1 0 0
|
||||||
outer loop
|
outer loop
|
||||||
vertex 5 5 0
|
vertex 2.5 2.5 0
|
||||||
vertex 5 5 5
|
vertex 2.5 2.5 5
|
||||||
vertex 5 0 5
|
vertex 2.5 -2.5 5
|
||||||
endloop
|
endloop
|
||||||
endfacet
|
endfacet
|
||||||
facet normal 1 0 0
|
facet normal 1 0 0
|
||||||
outer loop
|
outer loop
|
||||||
vertex 5 5 0
|
vertex 2.5 2.5 0
|
||||||
vertex 5 0 5
|
vertex 2.5 -2.5 5
|
||||||
vertex 5 0 0
|
vertex 2.5 -2.5 0
|
||||||
endloop
|
endloop
|
||||||
endfacet
|
endfacet
|
||||||
facet normal 0 1 0
|
facet normal 0 1 0
|
||||||
outer loop
|
outer loop
|
||||||
vertex 5 5 5
|
vertex 2.5 2.5 5
|
||||||
vertex 5 5 0
|
vertex 2.5 2.5 0
|
||||||
vertex 0 5 0
|
vertex -2.5 2.5 0
|
||||||
endloop
|
endloop
|
||||||
endfacet
|
endfacet
|
||||||
facet normal 0 1 0
|
facet normal 0 1 0
|
||||||
outer loop
|
outer loop
|
||||||
vertex 5 5 5
|
vertex 2.5 2.5 5
|
||||||
vertex 0 5 0
|
vertex -2.5 2.5 0
|
||||||
vertex 0 5 5
|
vertex -2.5 2.5 5
|
||||||
endloop
|
endloop
|
||||||
endfacet
|
endfacet
|
||||||
facet normal -1 0 0
|
facet normal -1 0 0
|
||||||
outer loop
|
outer loop
|
||||||
vertex 0 5 5
|
vertex -2.5 2.5 5
|
||||||
vertex 0 5 0
|
vertex -2.5 2.5 0
|
||||||
vertex 0 0 0
|
vertex -2.5 -2.5 0
|
||||||
endloop
|
endloop
|
||||||
endfacet
|
endfacet
|
||||||
facet normal -1 0 0
|
facet normal -1 0 0
|
||||||
outer loop
|
outer loop
|
||||||
vertex 0 5 5
|
vertex -2.5 2.5 5
|
||||||
vertex 0 0 0
|
vertex -2.5 -2.5 0
|
||||||
vertex 0 0 5
|
vertex -2.5 -2.5 5
|
||||||
endloop
|
endloop
|
||||||
endfacet
|
endfacet
|
||||||
endsolid csg.js
|
endsolid csg.js
|
||||||
|
|
|
@ -241,193 +241,193 @@ LINE
|
||||||
8
|
8
|
||||||
0
|
0
|
||||||
10
|
10
|
||||||
31.0980762
|
27
|
||||||
20
|
20
|
||||||
-4.0980762
|
-5.1961524
|
||||||
11
|
11
|
||||||
36.2942286
|
32.1961524
|
||||||
21
|
21
|
||||||
-7.0980762
|
-8.1961524
|
||||||
0
|
0
|
||||||
LINE
|
LINE
|
||||||
8
|
8
|
||||||
0
|
0
|
||||||
10
|
10
|
||||||
36.2942286
|
32.1961524
|
||||||
20
|
20
|
||||||
-7.0980762
|
-8.1961524
|
||||||
11
|
11
|
||||||
39.2942286
|
35.1961524
|
||||||
21
|
21
|
||||||
-1.9019238
|
-3
|
||||||
0
|
0
|
||||||
LINE
|
LINE
|
||||||
8
|
8
|
||||||
0
|
0
|
||||||
10
|
10
|
||||||
39.2942286
|
35.1961524
|
||||||
20
|
20
|
||||||
-1.9019238
|
-3
|
||||||
11
|
11
|
||||||
34.0980762
|
30
|
||||||
21
|
21
|
||||||
1.0980762
|
0
|
||||||
0
|
0
|
||||||
LINE
|
LINE
|
||||||
8
|
8
|
||||||
0
|
0
|
||||||
10
|
10
|
||||||
34.0980762
|
30
|
||||||
20
|
20
|
||||||
1.0980762
|
0
|
||||||
11
|
11
|
||||||
31.0980762
|
27
|
||||||
21
|
21
|
||||||
-4.0980762
|
-5.1961524
|
||||||
0
|
0
|
||||||
LINE
|
LINE
|
||||||
8
|
8
|
||||||
0
|
0
|
||||||
10
|
10
|
||||||
31.0980762
|
27
|
||||||
20
|
20
|
||||||
14.9019238
|
13.8038476
|
||||||
11
|
11
|
||||||
36.2942286
|
32.1961524
|
||||||
21
|
21
|
||||||
11.9019238
|
10.8038476
|
||||||
0
|
0
|
||||||
LINE
|
LINE
|
||||||
8
|
8
|
||||||
0
|
0
|
||||||
10
|
10
|
||||||
36.2942286
|
32.1961524
|
||||||
20
|
20
|
||||||
11.9019238
|
10.8038476
|
||||||
11
|
11
|
||||||
39.2942286
|
35.1961524
|
||||||
21
|
21
|
||||||
17.0980762
|
16
|
||||||
0
|
0
|
||||||
LINE
|
LINE
|
||||||
8
|
8
|
||||||
0
|
0
|
||||||
10
|
10
|
||||||
39.2942286
|
35.1961524
|
||||||
20
|
20
|
||||||
17.0980762
|
16
|
||||||
11
|
11
|
||||||
34.0980762
|
30
|
||||||
21
|
21
|
||||||
20.0980762
|
19
|
||||||
0
|
0
|
||||||
LINE
|
LINE
|
||||||
8
|
8
|
||||||
0
|
0
|
||||||
10
|
10
|
||||||
34.0980762
|
30
|
||||||
20
|
20
|
||||||
20.0980762
|
19
|
||||||
11
|
11
|
||||||
31.0980762
|
27
|
||||||
21
|
21
|
||||||
14.9019238
|
13.8038476
|
||||||
0
|
0
|
||||||
LINE
|
LINE
|
||||||
8
|
8
|
||||||
0
|
0
|
||||||
10
|
10
|
||||||
-1.0980762
|
-2.1961524
|
||||||
20
|
20
|
||||||
-4.0980762
|
-8.1961524
|
||||||
11
|
11
|
||||||
4.0980762
|
3
|
||||||
21
|
21
|
||||||
-1.0980762
|
-5.1961524
|
||||||
0
|
0
|
||||||
LINE
|
LINE
|
||||||
8
|
8
|
||||||
0
|
0
|
||||||
10
|
10
|
||||||
4.0980762
|
3
|
||||||
20
|
20
|
||||||
-1.0980762
|
-5.1961524
|
||||||
11
|
11
|
||||||
1.0980762
|
0
|
||||||
21
|
21
|
||||||
4.0980762
|
0
|
||||||
0
|
0
|
||||||
LINE
|
LINE
|
||||||
8
|
8
|
||||||
0
|
0
|
||||||
10
|
10
|
||||||
1.0980762
|
0
|
||||||
20
|
20
|
||||||
4.0980762
|
0
|
||||||
11
|
11
|
||||||
-4.0980762
|
-5.1961524
|
||||||
21
|
21
|
||||||
1.0980762
|
-3
|
||||||
0
|
0
|
||||||
LINE
|
LINE
|
||||||
8
|
8
|
||||||
0
|
0
|
||||||
10
|
10
|
||||||
-4.0980762
|
-5.1961524
|
||||||
20
|
20
|
||||||
1.0980762
|
-3
|
||||||
11
|
11
|
||||||
-1.0980762
|
-2.1961524
|
||||||
21
|
21
|
||||||
-4.0980762
|
-8.1961524
|
||||||
0
|
0
|
||||||
LINE
|
LINE
|
||||||
8
|
8
|
||||||
0
|
0
|
||||||
10
|
10
|
||||||
-1.0980762
|
-2.1961524
|
||||||
20
|
20
|
||||||
14.9019238
|
10.8038476
|
||||||
11
|
11
|
||||||
4.0980762
|
3
|
||||||
21
|
21
|
||||||
17.9019238
|
13.8038476
|
||||||
0
|
0
|
||||||
LINE
|
LINE
|
||||||
8
|
8
|
||||||
0
|
0
|
||||||
10
|
10
|
||||||
4.0980762
|
3
|
||||||
20
|
20
|
||||||
17.9019238
|
13.8038476
|
||||||
11
|
11
|
||||||
1.0980762
|
0
|
||||||
21
|
21
|
||||||
23.0980762
|
19
|
||||||
0
|
0
|
||||||
LINE
|
LINE
|
||||||
8
|
8
|
||||||
0
|
0
|
||||||
10
|
10
|
||||||
1.0980762
|
0
|
||||||
20
|
20
|
||||||
23.0980762
|
19
|
||||||
11
|
11
|
||||||
-4.0980762
|
-5.1961524
|
||||||
21
|
21
|
||||||
20.0980762
|
16
|
||||||
0
|
0
|
||||||
LINE
|
LINE
|
||||||
8
|
8
|
||||||
0
|
0
|
||||||
10
|
10
|
||||||
-4.0980762
|
-5.1961524
|
||||||
20
|
20
|
||||||
20.0980762
|
16
|
||||||
11
|
11
|
||||||
-1.0980762
|
-2.1961524
|
||||||
21
|
21
|
||||||
14.9019238
|
10.8038476
|
||||||
0
|
0
|
||||||
ENDSEC
|
ENDSEC
|
||||||
0
|
0
|
||||||
|
|
|
@ -16,12 +16,12 @@ outlines:
|
||||||
ref:
|
ref:
|
||||||
- matrix_default_default
|
- matrix_default_default
|
||||||
- mirror_matrix_default_default
|
- mirror_matrix_default_default
|
||||||
shift: [-sx/2, 0]
|
shift: [0, sy/2]
|
||||||
size: [20, 40]
|
size: [20, 40]
|
||||||
outside_rects:
|
outside_rects:
|
||||||
type: rectangle
|
type: rectangle
|
||||||
anchor:
|
anchor:
|
||||||
ref: matrix_default_default
|
ref: matrix_default_default
|
||||||
shift: [-15, 5]
|
shift: [-10, 10]
|
||||||
size: 10
|
size: 10
|
||||||
mirror: true
|
mirror: true
|
Loading…
Add table
Add a link
Reference in a new issue