import "Plant3d/Scenegraph/PipelineComponent" import "Plant3d/Scenegraph/Equipment" import "Plant3d/Scenegraph/Nozzle" import "Plant3d/Scenegraph/P3DRootNode" import "./P3DUtil" importJava "org.simantics.plant3d.utils.ComponentUtils" where @JavaName createComponent createComponentWithURI :: P3DRootNode -> String -> PipelineComponent @JavaName createEquipment createEquipmentWithURI :: P3DRootNode -> String -> Equipment createStraight :: P3DRootNode -> PipelineComponent createTurn :: P3DRootNode -> PipelineComponent createReducer :: P3DRootNode -> PipelineComponent createBranchSplit :: P3DRootNode -> PipelineComponent createEquipment :: P3DRootNode -> Item -> Equipment createDefaultNozzle :: P3DRootNode -> Equipment -> Nozzle @JavaName addComponent addComponent :: P3DRootNode -> PipelineComponent -> InsertInstruction -> PipelineComponent importJava "org.simantics.plant3d.utils.ComponentUtils$InsertInstruction" where data InsertInstruction @JavaName "" createInsertInstruction :: () -> InsertInstruction setTypeUri :: InsertInstruction -> String -> () setPosition :: InsertInstruction -> PositionType -> () setInsertPosition :: InsertInstruction -> PositionType -> () setLength :: InsertInstruction -> Maybe Double -> () setAngle :: InsertInstruction -> Maybe Double -> () setDiameter :: InsertInstruction -> Maybe Double -> () setTurnRadius :: InsertInstruction -> Maybe Double -> () createFixedLength :: String -> PositionType -> PositionType -> InsertInstruction createFixedLength typeUri position insertPosition = do instruction = createInsertInstruction () setTypeUri instruction typeUri setPosition instruction position setInsertPosition instruction insertPosition instruction createVariableLength :: String -> PositionType -> PositionType -> Double -> InsertInstruction createVariableLength typeUri position insertPosition length = do instruction = createInsertInstruction () setTypeUri instruction typeUri setPosition instruction position setInsertPosition instruction insertPosition setLength instruction (Just length) instruction createFixedTurn :: String -> PositionType -> PositionType -> InsertInstruction createFixedTurn typeUri position insertPosition = do instruction = createInsertInstruction () setTypeUri instruction typeUri setPosition instruction position setInsertPosition instruction insertPosition instruction createVariableTurn :: String -> PositionType -> PositionType -> Double -> InsertInstruction createVariableTurn typeUri position insertPosition angle = do instruction = createInsertInstruction () setTypeUri instruction typeUri setPosition instruction position setInsertPosition instruction insertPosition setAngle instruction (Just angle) instruction createSizeChange :: String -> PositionType -> PositionType -> Double -> Double -> InsertInstruction createSizeChange typeUri position insertPosition diameter radius = do instruction = createInsertInstruction () setTypeUri instruction typeUri setPosition instruction position setInsertPosition instruction insertPosition setDiameter instruction (Just diameter) setTurnRadius instruction (Just radius) instruction