]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/scl/Plant3d/Utils/ComponentUtils.scl
Very crude API for creating pipeline components
[simantics/3d.git] / org.simantics.plant3d / scl / Plant3d / Utils / ComponentUtils.scl
index 8778eed04261968743fb7a77fae5c0b8cbe38020..c3ef6365677dcd22fd347564c7f63edc47cd97b6 100644 (file)
@@ -17,4 +17,65 @@ importJava "org.simantics.plant3d.utils.ComponentUtils" where
    createBranchSplit :: P3DRootNode -> <Proc> PipelineComponent
    createEquipment :: P3DRootNode -> Item -> <Proc> Equipment
    createDefaultNozzle :: P3DRootNode -> Equipment -> <Proc> Nozzle
+   
+   @JavaName addComponent
+   addComponent :: P3DRootNode -> PipelineComponent -> InsertInstruction -> <Proc> PipelineComponent
+   
+importJava "org.simantics.plant3d.utils.ComponentUtils$InsertInstruction" where
+   data InsertInstruction
+   
+   @JavaName "<init>"
+   createInsertInstruction :: () -> InsertInstruction
+   
+   setTypeUri :: InsertInstruction -> String -> <Proc> ()
+   setPosition :: InsertInstruction -> PositionType -> <Proc> ()
+   setInsertPosition :: InsertInstruction -> PositionType -> <Proc> ()
+   setLength :: InsertInstruction -> Maybe Double -> <Proc> ()
+   setAngle :: InsertInstruction -> Maybe Double -> <Proc> ()
+   setDiameter :: InsertInstruction -> Maybe Double -> <Proc> ()
+   setTurnRadius :: InsertInstruction -> Maybe Double -> <Proc> ()
+   
+createFixedLength :: String -> PositionType -> PositionType -> <Proc> InsertInstruction 
+createFixedLength typeUri position insertPosition = do
+  instruction = createInsertInstruction ()
+  setTypeUri instruction typeUri
+  setPosition instruction position
+  setInsertPosition instruction insertPosition
+  instruction
+  
+createVariableLength :: String -> PositionType -> PositionType -> Double -> <Proc> 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 -> <Proc> InsertInstruction 
+createFixedTurn typeUri position insertPosition = do
+  instruction = createInsertInstruction ()
+  setTypeUri instruction typeUri
+  setPosition instruction position
+  setInsertPosition instruction insertPosition
+  instruction
+  
+createVariableTurn :: String -> PositionType -> PositionType -> Double -> <Proc> 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 -> <Proc> 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   
    
\ No newline at end of file