waterfall-cad-0.5.0.0: src/Waterfall/Internal/ToOpenCascade.hs
module Waterfall.Internal.ToOpenCascade
( v3ToVertex
, v3ToPnt
, v3ToDir
) where
import Linear (V3 (..))
import Data.Acquire (Acquire)
import Foreign.Ptr (Ptr)
import qualified OpenCascade.TopoDS as TopoDS
import qualified OpenCascade.GP as GP
import qualified OpenCascade.GP.Pnt as GP.Pnt
import qualified OpenCascade.GP.Dir as GP.Dir
import qualified OpenCascade.BRepBuilderAPI.MakeVertex as MakeVertex
v3ToPnt :: V3 Double -> Acquire (Ptr GP.Pnt)
v3ToPnt (V3 x y z) = GP.Pnt.new x y z
v3ToDir :: V3 Double -> Acquire (Ptr GP.Dir)
v3ToDir (V3 x y z) = GP.Dir.new x y z
v3ToVertex :: V3 Double -> Acquire (Ptr TopoDS.Vertex)
v3ToVertex v = do
pnt <- v3ToPnt v
builder <- MakeVertex.fromPnt pnt
MakeVertex.vertex builder