modify screw diameters, new bottom thickness, new renderer
This commit is contained in:
parent
4e513f36bc
commit
25b2229ea4
|
@ -2,13 +2,13 @@ module git.jade.moe/oct2pus/arcade/hjklbox
|
||||||
|
|
||||||
go 1.18
|
go 1.18
|
||||||
|
|
||||||
|
require github.com/deadsy/sdfx v0.0.0-20220508165057-718104295925
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/ajstarks/svgo v0.0.0-20200725142600-7a3c8b57fecb // indirect
|
github.com/ajstarks/svgo v0.0.0-20200725142600-7a3c8b57fecb // indirect
|
||||||
github.com/deadsy/sdfx v0.0.0-20220508165057-718104295925 // indirect
|
|
||||||
github.com/dhconnelly/rtreego v1.1.0 // indirect
|
|
||||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
|
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
|
||||||
github.com/hschendel/stl v1.0.4 // indirect
|
|
||||||
github.com/llgcode/draw2d v0.0.0-20200930101115-bfaf5d914d1e // indirect
|
github.com/llgcode/draw2d v0.0.0-20200930101115-bfaf5d914d1e // indirect
|
||||||
github.com/yofu/dxf v0.0.0-20190710012328-5a6d1e83f16c // indirect
|
github.com/yofu/dxf v0.0.0-20190710012328-5a6d1e83f16c // indirect
|
||||||
golang.org/x/image v0.0.0-20210216034530-4410531fe030 // indirect
|
golang.org/x/image v0.0.0-20210216034530-4410531fe030 // indirect
|
||||||
|
gonum.org/v1/gonum v0.9.3 // indirect
|
||||||
)
|
)
|
||||||
|
|
|
@ -5,10 +5,10 @@ github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3
|
||||||
github.com/ajstarks/svgo v0.0.0-20200725142600-7a3c8b57fecb h1:EVl3FJLQCzSbgBezKo/1A4ADnJ4mtJZ0RvnNzDJ44nY=
|
github.com/ajstarks/svgo v0.0.0-20200725142600-7a3c8b57fecb h1:EVl3FJLQCzSbgBezKo/1A4ADnJ4mtJZ0RvnNzDJ44nY=
|
||||||
github.com/ajstarks/svgo v0.0.0-20200725142600-7a3c8b57fecb/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw=
|
github.com/ajstarks/svgo v0.0.0-20200725142600-7a3c8b57fecb/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw=
|
||||||
github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
|
github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
|
||||||
|
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/deadsy/sdfx v0.0.0-20220508165057-718104295925 h1:CvjyreOQIm7VeHt2U0mq6iP8J0ZcjiXoxpgzLcYNJwo=
|
github.com/deadsy/sdfx v0.0.0-20220508165057-718104295925 h1:CvjyreOQIm7VeHt2U0mq6iP8J0ZcjiXoxpgzLcYNJwo=
|
||||||
github.com/deadsy/sdfx v0.0.0-20220508165057-718104295925/go.mod h1:bjsFZRp7zdb9m29hIDXPN/V5H/AkjJ1AIr5iBuj7FcI=
|
github.com/deadsy/sdfx v0.0.0-20220508165057-718104295925/go.mod h1:bjsFZRp7zdb9m29hIDXPN/V5H/AkjJ1AIr5iBuj7FcI=
|
||||||
github.com/dhconnelly/rtreego v1.1.0 h1:ejMaqN03N1s6Bdg6peGkNgBnYYSBHzcK8yhSPCB+rHE=
|
|
||||||
github.com/dhconnelly/rtreego v1.1.0/go.mod h1:SDozu0Fjy17XH1svEXJgdYq8Tah6Zjfa/4Q33Z80+KM=
|
github.com/dhconnelly/rtreego v1.1.0/go.mod h1:SDozu0Fjy17XH1svEXJgdYq8Tah6Zjfa/4Q33Z80+KM=
|
||||||
github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
|
github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
|
||||||
github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
|
github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
|
||||||
|
@ -22,21 +22,23 @@ github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9
|
||||||
github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U=
|
github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U=
|
||||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=
|
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=
|
||||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
|
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
|
||||||
github.com/hschendel/stl v1.0.4 h1:DXT5rkiXMUkbKw4Ndi1OYZ/a5SLR35TzxGj46p5Qyf8=
|
|
||||||
github.com/hschendel/stl v1.0.4/go.mod h1:XQFFLKrq9YTaBpmouDui4JSaxMyAYkpD7elGSSj/y3M=
|
github.com/hschendel/stl v1.0.4/go.mod h1:XQFFLKrq9YTaBpmouDui4JSaxMyAYkpD7elGSSj/y3M=
|
||||||
github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
|
github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
|
||||||
github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
|
github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
|
||||||
github.com/llgcode/draw2d v0.0.0-20200930101115-bfaf5d914d1e h1:YRRazju3DMGuZTSWEj0nE2SCRcK3DW/qdHQ4UQx7sgs=
|
github.com/llgcode/draw2d v0.0.0-20200930101115-bfaf5d914d1e h1:YRRazju3DMGuZTSWEj0nE2SCRcK3DW/qdHQ4UQx7sgs=
|
||||||
github.com/llgcode/draw2d v0.0.0-20200930101115-bfaf5d914d1e/go.mod h1:mVa0dA29Db2S4LVqDYLlsePDzRJLDfdhVZiI15uY0FA=
|
github.com/llgcode/draw2d v0.0.0-20200930101115-bfaf5d914d1e/go.mod h1:mVa0dA29Db2S4LVqDYLlsePDzRJLDfdhVZiI15uY0FA=
|
||||||
|
github.com/llgcode/ps v0.0.0-20150911083025-f1443b32eedb h1:61ndUreYSlWFeCY44JxDDkngVoI7/1MVhEl98Nm0KOk=
|
||||||
github.com/llgcode/ps v0.0.0-20150911083025-f1443b32eedb/go.mod h1:1l8ky+Ew27CMX29uG+a2hNOKpeNYEQjjtiALiBlFQbY=
|
github.com/llgcode/ps v0.0.0-20150911083025-f1443b32eedb/go.mod h1:1l8ky+Ew27CMX29uG+a2hNOKpeNYEQjjtiALiBlFQbY=
|
||||||
github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY=
|
github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY=
|
||||||
github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI=
|
github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI=
|
||||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w=
|
github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w=
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||||
|
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
||||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/yofu/dxf v0.0.0-20190710012328-5a6d1e83f16c h1:qgsxLgTXCVH8Dxar36HI5af2ZfinVz5vF8erPpyzM+A=
|
github.com/yofu/dxf v0.0.0-20190710012328-5a6d1e83f16c h1:qgsxLgTXCVH8Dxar36HI5af2ZfinVz5vF8erPpyzM+A=
|
||||||
github.com/yofu/dxf v0.0.0-20190710012328-5a6d1e83f16c/go.mod h1:gnT4GQzgKW8+TLI0xheUgdmNV4dsAN0WJUVnztRZkfI=
|
github.com/yofu/dxf v0.0.0-20190710012328-5a6d1e83f16c/go.mod h1:gnT4GQzgKW8+TLI0xheUgdmNV4dsAN0WJUVnztRZkfI=
|
||||||
|
@ -46,6 +48,7 @@ golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL
|
||||||
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
|
golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3 h1:n9HxLrNxWWtEb1cA950nuEEj3QnKbtsCJ6KjcgisNUs=
|
||||||
golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE=
|
golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE=
|
||||||
golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
|
golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
|
||||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||||
|
@ -75,10 +78,13 @@ golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtn
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo=
|
gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo=
|
||||||
gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0=
|
gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0=
|
||||||
|
gonum.org/v1/gonum v0.9.3 h1:DnoIG+QAMaF5NvxnGe/oKsgKcAc6PcUyl8q0VetfQ8s=
|
||||||
gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0=
|
gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0=
|
||||||
|
gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc=
|
||||||
gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
|
gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
|
||||||
gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc=
|
gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc=
|
||||||
gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY=
|
gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
|
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
|
||||||
|
|
BIN
hjklbox/hjklbox
BIN
hjklbox/hjklbox
Binary file not shown.
|
@ -2,6 +2,7 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/deadsy/sdfx/render"
|
"github.com/deadsy/sdfx/render"
|
||||||
|
"github.com/deadsy/sdfx/render/dc"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
@ -11,12 +12,16 @@ func main() {
|
||||||
plate := plate()
|
plate := plate()
|
||||||
top := top()
|
top := top()
|
||||||
bottom := bottom()
|
bottom := bottom()
|
||||||
|
walls := walls()
|
||||||
// holes := usbHoleTest()
|
// holes := usbHoleTest()
|
||||||
// render.RenderSTL(holes, 1200, "holes.stl")
|
// render.RenderSTL(holes, 1200, "holes.stl")
|
||||||
// render.RenderDXF(hjkl, 300, "hjkl.dxf")
|
// render.RenderDXF(hjkl, 300, "hjkl.dxf")
|
||||||
// render.RenderDXF(sdf.Difference2D(buttons, buttonMounts), 300, "buttons.dxf")
|
// render.RenderDXF(sdf.Difference2D(buttons, buttonMounts), 300, "buttons.dxf")
|
||||||
render.RenderSTLSlow(bottom, 1200, "bottom.stl")
|
//render.RenderSTLSlow(pegholeTest(sdf.V2{X: 47, Y: 11.4}), 1200, "pegholetest.stl")
|
||||||
render.RenderSTLSlow(top, 1200, "top.stl")
|
// render.RenderSTLSlow(usbmountHeightTest(), 300, "usbmountHeightTest.stl")
|
||||||
render.RenderSTLSlow(plate, 1200, "plate.stl")
|
render.ToSTL(walls, 400, "walls.stl", dc.NewDualContouringDefault())
|
||||||
|
render.ToSTL(bottom, 400, "bottom.stl", dc.NewDualContouringDefault())
|
||||||
|
render.ToSTL(top, 400, "top.stl", dc.NewDualContouringDefault())
|
||||||
|
render.ToSTL(plate, 400, "plate.stl", dc.NewDualContouringDefault())
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
130
hjklbox/plate.go
130
hjklbox/plate.go
|
@ -5,7 +5,7 @@ import "github.com/deadsy/sdfx/sdf"
|
||||||
const (
|
const (
|
||||||
PLATE_THICKNESS = 2.825
|
PLATE_THICKNESS = 2.825
|
||||||
TOP_THICKNESS = 3.175 // 1/8th inch for possible thin acrylic top
|
TOP_THICKNESS = 3.175 // 1/8th inch for possible thin acrylic top
|
||||||
BOTTOM_THICKNESS = 16 - PLATE_THICKNESS - TOP_THICKNESS
|
BOTTOM_THICKNESS = 20 - PLATE_THICKNESS - TOP_THICKNESS
|
||||||
PLATE_WIDTH = 218
|
PLATE_WIDTH = 218
|
||||||
PLATE_HEIGHT = 130
|
PLATE_HEIGHT = 130
|
||||||
TOLERANCE = 8
|
TOLERANCE = 8
|
||||||
|
@ -17,6 +17,7 @@ const (
|
||||||
USB_CONNECTOR_LENGTH = 8.8 // 1.1mm sticks out from daughterboard
|
USB_CONNECTOR_LENGTH = 8.8 // 1.1mm sticks out from daughterboard
|
||||||
USB_CONNECTOR_HEIGHT = 7.2
|
USB_CONNECTOR_HEIGHT = 7.2
|
||||||
USB_CONNECTOR_THICKNESS = 3.2
|
USB_CONNECTOR_THICKNESS = 3.2
|
||||||
|
PICO_PEG_HEIGHT = 4.0
|
||||||
)
|
)
|
||||||
|
|
||||||
func plate() sdf.SDF3 {
|
func plate() sdf.SDF3 {
|
||||||
|
@ -71,7 +72,7 @@ func top() sdf.SDF3 {
|
||||||
return sdf.Extrude3D(top2D, TOP_THICKNESS)
|
return sdf.Extrude3D(top2D, TOP_THICKNESS)
|
||||||
}
|
}
|
||||||
|
|
||||||
func bottom() sdf.SDF3 {
|
func walls() sdf.SDF3 {
|
||||||
cavity2D := sdf.Box2D(sdf.V2{X: PLATE_WIDTH - TOLERANCE, Y: PLATE_HEIGHT - TOLERANCE}, 5)
|
cavity2D := sdf.Box2D(sdf.V2{X: PLATE_WIDTH - TOLERANCE, Y: PLATE_HEIGHT - TOLERANCE}, 5)
|
||||||
walls2D := sdf.Box2D(sdf.V2{X: PLATE_WIDTH, Y: PLATE_HEIGHT}, 5)
|
walls2D := sdf.Box2D(sdf.V2{X: PLATE_WIDTH, Y: PLATE_HEIGHT}, 5)
|
||||||
bottom2D := sdf.Difference2D(walls2D, cavity2D)
|
bottom2D := sdf.Difference2D(walls2D, cavity2D)
|
||||||
|
@ -82,9 +83,9 @@ func bottom() sdf.SDF3 {
|
||||||
bottom2D = sdf.Union2D(bottom2D, cornerScrewHolders)
|
bottom2D = sdf.Union2D(bottom2D, cornerScrewHolders)
|
||||||
bottom2D = sdf.Difference2D(bottom2D, cornerScrews)
|
bottom2D = sdf.Difference2D(bottom2D, cornerScrews)
|
||||||
cavity2D = sdf.Difference2D(cavity2D, cornerScrewHolders)
|
cavity2D = sdf.Difference2D(cavity2D, cornerScrewHolders)
|
||||||
|
/*
|
||||||
pegHole, _ := sdf.Circle2D(M2_SCREW_HOLE_DIAMETER / 2)
|
pegHole, _ := sdf.Circle2D(M2_SCREW_HOLE_DIAMETER / 2)
|
||||||
pegHoles := make([]sdf.SDF2, 4)
|
pegHoles := make([]sdf.SDF2, PICO_PEG_HEIGHT)
|
||||||
for i := range pegHoles {
|
for i := range pegHoles {
|
||||||
pegHoles[i] = pegHole
|
pegHoles[i] = pegHole
|
||||||
}
|
}
|
||||||
|
@ -118,33 +119,88 @@ func bottom() sdf.SDF3 {
|
||||||
floor := sdf.Extrude3D(cavity2D, PLATE_THICKNESS)
|
floor := sdf.Extrude3D(cavity2D, PLATE_THICKNESS)
|
||||||
floor = sdf.Transform3D(floor, sdf.Translate3d(sdf.V3{X: 0, Y: 0, Z: -(bottom.BoundingBox().Max.Z*2+floor.BoundingBox().Max.Z*2)/4 - 0.50}))
|
floor = sdf.Transform3D(floor, sdf.Translate3d(sdf.V3{X: 0, Y: 0, Z: -(bottom.BoundingBox().Max.Z*2+floor.BoundingBox().Max.Z*2)/4 - 0.50}))
|
||||||
bottom = sdf.Union3D(bottom, floor)
|
bottom = sdf.Union3D(bottom, floor)
|
||||||
|
*/
|
||||||
/*cableHole2D := sdf.Box2D(sdf.V2{X: CABLE_HEAD_WIDTH, Y: CABLE_HEAD_HEIGHT}, 0)
|
/*cableHole2D := sdf.Box2D(sdf.V2{X: CABLE_HEAD_WIDTH, Y: CABLE_HEAD_HEIGHT}, 0)
|
||||||
cableHole := sdf.Extrude3D(cableHole2D, TOLERANCE)
|
cableHole := sdf.Extrude3D(cableHole2D, TOLERANCE)
|
||||||
cableHole = sdf.Transform3D(cableHole, sdf.RotateX(sdf.DtoR(90)))
|
cableHole = sdf.Transform3D(cableHole, sdf.RotateX(sdf.DtoR(90)))
|
||||||
cableHole = sdf.Transform3D(cableHole, sdf.Translate3d(sdf.V3{X: 0, Y: (bottom.BoundingBox().Max.Y + cableHole.BoundingBox().Max.Y) - cableHole.BoundingBox().Max.Y*2, Z: cableHole.BoundingBox().Max.Z / 3}))
|
cableHole = sdf.Transform3D(cableHole, sdf.Translate3d(sdf.V3{X: 0, Y: (bottom.BoundingBox().Max.Y + cableHole.BoundingBox().Max.Y) - cableHole.BoundingBox().Max.Y*2, Z: cableHole.BoundingBox().Max.Z / 3}))
|
||||||
bottom = sdf.Difference3D(bottom, cableHole)*/
|
bottom = sdf.Difference3D(bottom, cableHole)*/
|
||||||
|
|
||||||
usbCutout, _ := sdf.Box3D(sdf.V3{X: USB_DAUGHTERBOARD_LENGTH + 0.4, Y: USB_DAUGHTERBOARD_HEIGHT + 0.4, Z: USB_DAUGHTERBOARD_THICKNESS + 3.8}, 0)
|
bottom := sdf.Extrude3D(bottom2D, BOTTOM_THICKNESS-PLATE_THICKNESS)
|
||||||
usbCutout = sdf.Transform3D(usbCutout, sdf.Translate3d(sdf.V3{X: 0, Y: (floor.BoundingBox().Max.Y + usbCutout.BoundingBox().Max.Y) - usbCutout.BoundingBox().Max.Y*2 + 2.6, Z: 2})) // 5 for m3x5 screw
|
|
||||||
|
usbCutout, _ := sdf.Box3D(sdf.V3{X: USB_DAUGHTERBOARD_LENGTH + 0.4, Y: USB_DAUGHTERBOARD_HEIGHT + 0.4, Z: USB_DAUGHTERBOARD_THICKNESS + 10}, 0)
|
||||||
|
usbCutout = sdf.Transform3D(usbCutout, sdf.Translate3d(sdf.V3{X: 0, Y: (cavity2D.BoundingBox().Max.Y + usbCutout.BoundingBox().Max.Y) - usbCutout.BoundingBox().Max.Y*2 + 2.6, Z: 2})) // 5 for m3x5 screw
|
||||||
bottom = sdf.Difference3D(bottom, usbCutout)
|
bottom = sdf.Difference3D(bottom, usbCutout)
|
||||||
|
|
||||||
usbCutoutPeg2D := M3ScrewHole() // m2 hole
|
/*usbCutoutPeg2D := M3ScrewHole() // m2 hole
|
||||||
usbCutoutPeg := sdf.Extrude3D(usbCutoutPeg2D, BOTTOM_THICKNESS) // thickness of daughtboard pcb
|
usbCutoutPeg := sdf.Extrude3D(usbCutoutPeg2D, BOTTOM_THICKNESS) // thickness of daughtboard pcb
|
||||||
usbCutoutPeg = sdf.Transform3D(usbCutoutPeg, sdf.Translate3d(sdf.V3{X: 7.8, Y: (floor.BoundingBox().Max.Y + usbCutoutPeg.BoundingBox().Max.Y + 2) - usbCutoutPeg.BoundingBox().Max.Y*2, Z: -BOTTOM_THICKNESS / 2}))
|
usbCutoutPeg = sdf.Transform3D(usbCutoutPeg, sdf.Translate3d(sdf.V3{X: 7.8, Y: (cavity2D.BoundingBox().Max.Y + usbCutoutPeg.BoundingBox().Max.Y + 2) - usbCutoutPeg.BoundingBox().Max.Y*2, Z: -BOTTOM_THICKNESS / 2}))
|
||||||
usbCutoutPeg2 := sdf.Transform3D(usbCutoutPeg, sdf.Translate3d(sdf.V3{X: -15.6, Y: 0, Z: 0}))
|
usbCutoutPeg2 := sdf.Transform3D(usbCutoutPeg, sdf.Translate3d(sdf.V3{X: -15.6, Y: 0, Z: 0}))
|
||||||
|
|
||||||
usbCutoutPeg = sdf.Union3D(usbCutoutPeg, usbCutoutPeg2)
|
usbCutoutPeg = sdf.Union3D(usbCutoutPeg, usbCutoutPeg2)
|
||||||
bottom = sdf.Difference3D(bottom, usbCutoutPeg)
|
bottom = sdf.Difference3D(bottom, usbCutoutPeg)*/
|
||||||
|
|
||||||
usbPortHole, _ := sdf.Box3D(sdf.V3{X: USB_CONNECTOR_LENGTH, Y: USB_CONNECTOR_HEIGHT, Z: USB_CONNECTOR_THICKNESS}, 0)
|
usbPortHole, _ := sdf.Box3D(sdf.V3{X: USB_CONNECTOR_LENGTH + 0.5, Y: USB_CONNECTOR_HEIGHT + 0.5, Z: USB_CONNECTOR_THICKNESS + 0.5}, 0)
|
||||||
usbPortHole = sdf.Transform3D(usbPortHole, sdf.Translate3d(sdf.V3{X: 0, Y: PLATE_HEIGHT / 2, Z: 1.5 / 2})) // Z is thickness of board
|
// usbPortHole = sdf.Transform3D(usbPortHole, sdf.RotateZ(sdf.DtoR(90)))
|
||||||
|
usbPortHole = sdf.Transform3D(usbPortHole, sdf.Translate3d(sdf.V3{X: 0, Y: PLATE_HEIGHT / 2, Z: 0})) // Z is thickness of board
|
||||||
|
|
||||||
bottom = sdf.Difference3D(bottom, usbPortHole)
|
bottom = sdf.Difference3D(bottom, usbPortHole)
|
||||||
|
|
||||||
return bottom
|
return bottom
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func bottom() sdf.SDF3 {
|
||||||
|
bottom2D := sdf.Box2D(sdf.V2{X: PLATE_WIDTH, Y: PLATE_HEIGHT}, 5)
|
||||||
|
cornerScrewHolder, _ := sdf.Circle2D((M4_SCREW_HOLE_DIAMETER + 8) / 2)
|
||||||
|
cornerScrewHolders := cornerHoles(bottom2D, cornerScrewHolder)
|
||||||
|
cornerScrews := cornerHoles(bottom2D, M4screwHole())
|
||||||
|
|
||||||
|
bottom2D = sdf.Union2D(bottom2D, cornerScrewHolders)
|
||||||
|
bottom2D = sdf.Difference2D(bottom2D, cornerScrews)
|
||||||
|
|
||||||
|
usbCutoutPeg2D := M3ScrewHole()
|
||||||
|
usbCutoutPeg2D = sdf.Transform2D(usbCutoutPeg2D, sdf.Translate2d(sdf.V2{X: 7.8, Y: (bottom2D.BoundingBox().Max.Y + usbCutoutPeg2D.BoundingBox().Max.Y - 2) - usbCutoutPeg2D.BoundingBox().Max.Y*2}))
|
||||||
|
usbCutoutPeg2D = sdf.Union2D(usbCutoutPeg2D, sdf.Transform2D(usbCutoutPeg2D, sdf.Translate2d(sdf.V2{X: -15.6, Y: 0})))
|
||||||
|
|
||||||
|
bottom2D = sdf.Difference2D(bottom2D, usbCutoutPeg2D)
|
||||||
|
|
||||||
|
// usbCutoutPeg := sdf.Extrude3D(usbCutoutPeg2D, BOTTOM_THICKNESS) // thickness of daughtboard pcb
|
||||||
|
// usbCutoutPeg = sdf.Transform3D(usbCutoutPeg, sdf.Translate3d(sdf.V3{X: 7.8, Y: (cavity2D.BoundingBox().Max.Y + usbCutoutPeg.BoundingBox().Max.Y + 2) - usbCutoutPeg.BoundingBox().Max.Y*2, Z: -BOTTOM_THICKNESS / 2}))
|
||||||
|
// usbCutoutPeg2 := sdf.Transform3D(usbCutoutPeg, sdf.Translate3d(sdf.V3{X: -15.6, Y: 0, Z: 0}))
|
||||||
|
bottom := sdf.Extrude3D(bottom2D, PLATE_THICKNESS)
|
||||||
|
|
||||||
|
pegHole, _ := sdf.Circle2D(M2_SCREW_HOLE_DIAMETER / 2)
|
||||||
|
pegHoles := make([]sdf.SDF2, PICO_PEG_HEIGHT)
|
||||||
|
for i := range pegHoles {
|
||||||
|
pegHoles[i] = pegHole
|
||||||
|
}
|
||||||
|
pegHoles[0] = sdf.Transform2D(pegHoles[0], sdf.Translate2d(sdf.V2{X: 47 / 2, Y: 11.4 / 2})) //pico mounting hole spacing
|
||||||
|
pegHoles[1] = sdf.Transform2D(pegHoles[1], sdf.Translate2d(sdf.V2{X: 47 / 2, Y: -11.4 / 2})) //pico mounting hole spacing
|
||||||
|
pegHoles[2] = sdf.Transform2D(pegHoles[2], sdf.Translate2d(sdf.V2{X: -47 / 2, Y: -11.4 / 2})) //pico mounting hole spacing
|
||||||
|
pegHoles[3] = sdf.Transform2D(pegHoles[3], sdf.Translate2d(sdf.V2{X: -47 / 2, Y: 11.4 / 2})) //pico mounting hole spacing
|
||||||
|
|
||||||
|
peg, _ := sdf.Circle2D(M2_SCREW_HOLE_DIAMETER)
|
||||||
|
pegs := make([]sdf.SDF2, 4)
|
||||||
|
for i := range pegs {
|
||||||
|
pegs[i] = peg
|
||||||
|
}
|
||||||
|
pegs[0] = sdf.Transform2D(pegs[0], sdf.Translate2d(sdf.V2{X: 47 / 2, Y: 11.4 / 2})) //pico mounting hole spacing
|
||||||
|
pegs[1] = sdf.Transform2D(pegs[1], sdf.Translate2d(sdf.V2{X: 47 / 2, Y: -11.4 / 2})) //pico mounting hole spacing
|
||||||
|
pegs[2] = sdf.Transform2D(pegs[2], sdf.Translate2d(sdf.V2{X: -47 / 2, Y: -11.4 / 2})) //pico mounting hole spacing
|
||||||
|
pegs[3] = sdf.Transform2D(pegs[3], sdf.Translate2d(sdf.V2{X: -47 / 2, Y: 11.4 / 2})) //pico mounting hole spacing
|
||||||
|
|
||||||
|
mount2D := sdf.Union2D(pegs...)
|
||||||
|
mountingHoles2D := sdf.Union2D(pegHoles...)
|
||||||
|
mount2D = sdf.Difference2D(mount2D, mountingHoles2D)
|
||||||
|
mount2D = sdf.Transform2D(mount2D, sdf.Translate2d(sdf.V2{X: bottom2D.BoundingBox().Max.X / 2, Y: -bottom2D.BoundingBox().Max.X / 3}))
|
||||||
|
mount := sdf.Extrude3D(mount2D, 4) // M2x4mm screw holes
|
||||||
|
mount = sdf.Transform3D(mount, sdf.Translate3d(sdf.V3{X: 0, Y: 0, Z: PLATE_THICKNESS}))
|
||||||
|
|
||||||
|
bottom = sdf.Union3D(bottom, mount)
|
||||||
|
|
||||||
|
return bottom
|
||||||
|
}
|
||||||
|
|
||||||
func cornerHoles(input, hole sdf.SDF2) sdf.SDF2 {
|
func cornerHoles(input, hole sdf.SDF2) sdf.SDF2 {
|
||||||
cornerHoles := make([]sdf.SDF2, 4)
|
cornerHoles := make([]sdf.SDF2, 4)
|
||||||
for i := range cornerHoles {
|
for i := range cornerHoles {
|
||||||
|
@ -198,13 +254,53 @@ func lengthHoles(input, hole sdf.SDF2) sdf.SDF2 {
|
||||||
} */
|
} */
|
||||||
|
|
||||||
// i measured 45.6 between holes instead of 47mm, lets try some sizes I guess?
|
// i measured 45.6 between holes instead of 47mm, lets try some sizes I guess?
|
||||||
func pegholeTest() sdf.SDF3 {
|
func pegholeTest(pegDistances sdf.V2) sdf.SDF3 {
|
||||||
|
plane2D := sdf.Box2D(sdf.V2{X: 50, Y: 30}, 0)
|
||||||
|
pegHole, _ := sdf.Circle2D(M2_SCREW_HOLE_DIAMETER / 2)
|
||||||
|
pegHoles := make([]sdf.SDF2, 4)
|
||||||
|
for i := range pegHoles {
|
||||||
|
pegHoles[i] = pegHole
|
||||||
|
}
|
||||||
|
pegHoles[0] = sdf.Transform2D(pegHoles[0], sdf.Translate2d(sdf.V2{X: pegDistances.X / 2, Y: pegDistances.Y / 2})) //pico mounting hole spacing
|
||||||
|
pegHoles[1] = sdf.Transform2D(pegHoles[1], sdf.Translate2d(sdf.V2{X: pegDistances.X / 2, Y: -pegDistances.Y / 2})) //pico mounting hole spacing
|
||||||
|
pegHoles[2] = sdf.Transform2D(pegHoles[2], sdf.Translate2d(sdf.V2{X: -pegDistances.X / 2, Y: -pegDistances.Y / 2})) //pico mounting hole spacing
|
||||||
|
pegHoles[3] = sdf.Transform2D(pegHoles[3], sdf.Translate2d(sdf.V2{X: -pegDistances.X / 2, Y: pegDistances.Y / 2})) //pico mounting hole spacing
|
||||||
|
|
||||||
return nil
|
peg, _ := sdf.Circle2D(M2_SCREW_HOLE_DIAMETER)
|
||||||
|
pegs := make([]sdf.SDF2, 4)
|
||||||
|
for i := range pegs {
|
||||||
|
pegs[i] = peg
|
||||||
|
}
|
||||||
|
pegs[0] = sdf.Transform2D(pegs[0], sdf.Translate2d(sdf.V2{X: pegDistances.X / 2, Y: pegDistances.Y / 2})) //pico mounting hole spacing
|
||||||
|
pegs[1] = sdf.Transform2D(pegs[1], sdf.Translate2d(sdf.V2{X: pegDistances.X / 2, Y: -pegDistances.Y / 2})) //pico mounting hole spacing
|
||||||
|
pegs[2] = sdf.Transform2D(pegs[2], sdf.Translate2d(sdf.V2{X: -pegDistances.X / 2, Y: -pegDistances.Y / 2})) //pico mounting hole spacing
|
||||||
|
pegs[3] = sdf.Transform2D(pegs[3], sdf.Translate2d(sdf.V2{X: -pegDistances.X / 2, Y: pegDistances.Y / 2})) //pico mounting hole spacing
|
||||||
|
|
||||||
|
mountingHoles2D := sdf.Union2D(pegHoles...)
|
||||||
|
mounts2D := sdf.Union2D(pegs...)
|
||||||
|
mounts2D = sdf.Difference2D(mounts2D, mountingHoles2D)
|
||||||
|
|
||||||
|
mounts := sdf.Extrude3D(mounts2D, PICO_PEG_HEIGHT)
|
||||||
|
plane := sdf.Extrude3D(plane2D, PICO_PEG_HEIGHT/2)
|
||||||
|
|
||||||
|
mounts = sdf.Transform3D(mounts, sdf.Translate3d(sdf.V3{X: 0, Y: 0, Z: PICO_PEG_HEIGHT / 4}))
|
||||||
|
|
||||||
|
return sdf.Union3D(mounts, plane)
|
||||||
}
|
}
|
||||||
|
|
||||||
usb hole is too low, needs to be a bit higher
|
// usb hole is too low, needs to be a bit higher
|
||||||
func usbmountheighttest() sdf.SDF3 {
|
func usbmountHeightTest() sdf.SDF3 {
|
||||||
|
box, _ := sdf.Box3D(sdf.V3{X: 2, Y: 15, Z: BOTTOM_THICKNESS}, 0)
|
||||||
|
floor, _ := sdf.Box3D(sdf.V3{X: 12, Y: 15, Z: 1}, 0)
|
||||||
|
|
||||||
return nil
|
floor = sdf.Transform3D(floor, sdf.Translate3d(sdf.V3{X: 5, Y: 0, Z: (-BOTTOM_THICKNESS / 2) - (-floor.BoundingBox().Max.Z)}))
|
||||||
|
|
||||||
|
usbPortHole, _ := sdf.Box3D(sdf.V3{X: USB_CONNECTOR_LENGTH + 0.5, Y: USB_CONNECTOR_HEIGHT + 0.5, Z: USB_CONNECTOR_THICKNESS + 0.5}, 0)
|
||||||
|
usbPortHole = sdf.Transform3D(usbPortHole, sdf.Translate3d(sdf.V3{X: 0, Y: 0, Z: 0})) // Z is thickness of board
|
||||||
|
usbPortHole = sdf.Transform3D(usbPortHole, sdf.RotateZ(sdf.DtoR(90)))
|
||||||
|
|
||||||
|
box = sdf.Difference3D(box, usbPortHole)
|
||||||
|
box = sdf.Union3D(box, floor)
|
||||||
|
|
||||||
|
return box
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,9 +3,9 @@ package main
|
||||||
import "github.com/deadsy/sdfx/sdf"
|
import "github.com/deadsy/sdfx/sdf"
|
||||||
|
|
||||||
const (
|
const (
|
||||||
M4_SCREW_HOLE_DIAMETER = 4.5 //m4 screw
|
M4_SCREW_HOLE_DIAMETER = 4 //m4 screw
|
||||||
M3_SCREW_HOLE_DIAMETER = 3.4 //m3 screw
|
M3_SCREW_HOLE_DIAMETER = 3.1 //m3 screw
|
||||||
M2_SCREW_HOLE_DIAMETER = 2.4
|
M2_SCREW_HOLE_DIAMETER = 2 //m2 screw
|
||||||
)
|
)
|
||||||
|
|
||||||
func M4screwHole() sdf.SDF2 {
|
func M4screwHole() sdf.SDF2 {
|
||||||
|
|
Loading…
Reference in New Issue