planes -> parts, expand parts
This commit is contained in:
parent
48786d7de6
commit
2811267c86
|
@ -3,23 +3,22 @@ package main
|
||||||
import (
|
import (
|
||||||
"github.com/deadsy/sdfx/render"
|
"github.com/deadsy/sdfx/render"
|
||||||
"github.com/deadsy/sdfx/render/dc"
|
"github.com/deadsy/sdfx/render/dc"
|
||||||
"github.com/deadsy/sdfx/sdf"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
top := topPlane()
|
top := topPlane()
|
||||||
walls := wallsPlane()
|
walls := wallsPlane()
|
||||||
planes := make(planes)
|
parts := make(Parts)
|
||||||
planes.add(splitPlane("top", top))
|
parts.add(split2DPlane("top", top, 2))
|
||||||
planes.add(splitPlane("walls", walls))
|
parts.add(split2DPlane("walls", walls, 45))
|
||||||
|
|
||||||
render.RenderDXF(top, 400, "top.dxf")
|
render.RenderDXF(top, 400, "top.dxf")
|
||||||
render.RenderDXF(wallsPlane(), 400, "walls.dxf")
|
render.RenderDXF(wallsPlane(), 400, "walls.dxf")
|
||||||
// render.ToSTL(sdf.Extrude3D(walls, 2), 400, "walls.stl", dc.NewDualContouringDefault())
|
// render.ToSTL(sdf.Extrude3D(walls, 2), 400, "walls.stl", dc.NewDualContouringDefault())
|
||||||
|
|
||||||
for k, v := range planes {
|
for k, v := range parts {
|
||||||
render.RenderDXF(v, 400, k+".dxf")
|
render.RenderDXF(v.SDF2, 400, k+".dxf")
|
||||||
render.ToSTL(sdf.Extrude3D(v, 2), 400, k+".stl", dc.NewDualContouringDefault())
|
render.ToSTL(v.SDF3, 400, k+".stl", dc.NewDualContouringDefault())
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/deadsy/sdfx/sdf"
|
||||||
|
v2 "github.com/deadsy/sdfx/vec/v2"
|
||||||
|
v3 "github.com/deadsy/sdfx/vec/v3"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Part struct {
|
||||||
|
SDF2 sdf.SDF2
|
||||||
|
SDF3 sdf.SDF3
|
||||||
|
}
|
||||||
|
|
||||||
|
type Parts map[string]Part
|
||||||
|
|
||||||
|
func (p Parts) add(p2 Parts) {
|
||||||
|
for k, v := range p2 {
|
||||||
|
p[k] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func add2DPlane(name string, plane sdf.SDF2, height float64) map[string]Part {
|
||||||
|
p := make(map[string]Part)
|
||||||
|
p[name] = Part{SDF2: plane, SDF3: sdf.Extrude3D(plane, height)}
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
|
||||||
|
func add3DModel(name string, model sdf.SDF3) map[string]Part {
|
||||||
|
p := make(map[string]Part)
|
||||||
|
p[name] = Part{SDF2: sdf.Slice2D(model, v3.Vec{X: 0, Y: 0, Z: 0}, v3.Vec{X: 0, Y: 0, Z: 0}), SDF3: model}
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
|
||||||
|
func split2DPlane(name string, plane sdf.SDF2, height float64) map[string]Part {
|
||||||
|
planes := make(map[string]Part)
|
||||||
|
|
||||||
|
rPlane := sdf.Cut2D(plane, v2.Vec{X: 0, Y: 0}, v2.Vec{X: 0, Y: 1})
|
||||||
|
planes[name+" "+"right"] = Part{SDF2: rPlane, SDF3: sdf.Extrude3D(rPlane, height)}
|
||||||
|
|
||||||
|
lPlane := sdf.Transform2D(sdf.Cut2D(sdf.Transform2D(plane, sdf.MirrorY()), v2.Vec{X: 0, Y: 0}, v2.Vec{X: 0, Y: 1}), sdf.MirrorY())
|
||||||
|
planes[name+" "+"left"] = Part{SDF2: lPlane, SDF3: sdf.Extrude3D(lPlane, height)}
|
||||||
|
|
||||||
|
return planes
|
||||||
|
}
|
||||||
|
|
||||||
|
func split3DModel(name string, model sdf.SDF3) map[string]Part {
|
||||||
|
models := make(map[string]Part)
|
||||||
|
plane := sdf.Slice2D(model, v3.Vec{X: 0, Y: 0, Z: 0}, v3.Vec{X: 0, Y: 0, Z: 0})
|
||||||
|
|
||||||
|
rPlane := sdf.Cut2D(plane, v2.Vec{X: 0, Y: 0}, v2.Vec{X: 0, Y: 1})
|
||||||
|
rModel := sdf.Cut3D(model, v3.Vec{X: 0, Y: 0, Z: 0}, v3.Vec{X: 0, Y: 1, Z: 0})
|
||||||
|
models[name+" "+"right"] = Part{SDF2: rPlane, SDF3: rModel}
|
||||||
|
|
||||||
|
lPlane := sdf.Transform2D(sdf.Cut2D(sdf.Transform2D(plane, sdf.MirrorY()), v2.Vec{X: 0, Y: 0}, v2.Vec{X: 0, Y: 1}), sdf.MirrorY())
|
||||||
|
lModel := sdf.Transform3D(sdf.Cut3D(sdf.Transform3D(model, sdf.MirrorXY()), v3.Vec{X: 0, Y: 0, Z: 0}, v3.Vec{X: 0, Y: 1, Z: 0}), sdf.MirrorXY())
|
||||||
|
models[name+" "+"left"] = Part{SDF2: lPlane, SDF3: lModel}
|
||||||
|
|
||||||
|
return models
|
||||||
|
}
|
|
@ -1,28 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/deadsy/sdfx/sdf"
|
|
||||||
v2 "github.com/deadsy/sdfx/vec/v2"
|
|
||||||
)
|
|
||||||
|
|
||||||
type planes map[string]sdf.SDF2
|
|
||||||
|
|
||||||
func (p planes) add(p2 planes) {
|
|
||||||
for k, v := range p2 {
|
|
||||||
p[k] = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func splitPlane(name string, plane sdf.SDF2) map[string]sdf.SDF2 {
|
|
||||||
planes := make(map[string]sdf.SDF2)
|
|
||||||
/* original := topPlane()
|
|
||||||
x, y := original.BoundingBox().Max.X*2, original.BoundingBox().Max.Y*2
|
|
||||||
cutout := sdf.Box2D(sdf.V2{X: x, Y: y}, 0)
|
|
||||||
cOLeft := sdf.Transform2D(cutout, sdf.Translate2d(sdf.V2{X: x / 2, Y: 0}))
|
|
||||||
cORight := sdf.Transform2D(cutout, sdf.Translate2d(sdf.V2{X: -x / 2, Y: 0}))
|
|
||||||
planes["left"] = sdf.Difference2D(original, cOLeft)
|
|
||||||
planes["right"] = sdf.Difference2D(original, cORight)*/
|
|
||||||
planes[name+" "+"right"] = sdf.Cut2D(plane, v2.Vec{X: 0, Y: 0}, v2.Vec{X: 0, Y: 1})
|
|
||||||
planes[name+" "+"left"] = sdf.Transform2D(sdf.Cut2D(sdf.Transform2D(plane, sdf.MirrorY()), v2.Vec{X: 0, Y: 0}, v2.Vec{X: 0, Y: 1}), sdf.MirrorY())
|
|
||||||
return planes
|
|
||||||
}
|
|
Loading…
Reference in New Issue