]> gerrit.simantics Code Review - simantics/3d.git/blob - 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
1 import "Plant3d/Scenegraph/PipelineComponent"
2 import "Plant3d/Scenegraph/Equipment"
3 import "Plant3d/Scenegraph/Nozzle"
4 import "Plant3d/Scenegraph/P3DRootNode"
5 import "./P3DUtil"
6
7 importJava "org.simantics.plant3d.utils.ComponentUtils" where
8
9    @JavaName createComponent
10    createComponentWithURI :: P3DRootNode -> String -> <Proc> PipelineComponent
11    @JavaName createEquipment
12    createEquipmentWithURI :: P3DRootNode -> String -> <Proc> Equipment
13    
14    createStraight :: P3DRootNode -> <Proc> PipelineComponent
15    createTurn :: P3DRootNode -> <Proc> PipelineComponent
16    createReducer :: P3DRootNode -> <Proc> PipelineComponent
17    createBranchSplit :: P3DRootNode -> <Proc> PipelineComponent
18    createEquipment :: P3DRootNode -> Item -> <Proc> Equipment
19    createDefaultNozzle :: P3DRootNode -> Equipment -> <Proc> Nozzle
20    
21    @JavaName addComponent
22    addComponent :: P3DRootNode -> PipelineComponent -> InsertInstruction -> <Proc> PipelineComponent
23    
24 importJava "org.simantics.plant3d.utils.ComponentUtils$InsertInstruction" where
25    data InsertInstruction
26    
27    @JavaName "<init>"
28    createInsertInstruction :: () -> InsertInstruction
29    
30    setTypeUri :: InsertInstruction -> String -> <Proc> ()
31    setPosition :: InsertInstruction -> PositionType -> <Proc> ()
32    setInsertPosition :: InsertInstruction -> PositionType -> <Proc> ()
33    setLength :: InsertInstruction -> Maybe Double -> <Proc> ()
34    setAngle :: InsertInstruction -> Maybe Double -> <Proc> ()
35    setDiameter :: InsertInstruction -> Maybe Double -> <Proc> ()
36    setTurnRadius :: InsertInstruction -> Maybe Double -> <Proc> ()
37    
38 createFixedLength :: String -> PositionType -> PositionType -> <Proc> InsertInstruction 
39 createFixedLength typeUri position insertPosition = do
40   instruction = createInsertInstruction ()
41   setTypeUri instruction typeUri
42   setPosition instruction position
43   setInsertPosition instruction insertPosition
44   instruction
45   
46 createVariableLength :: String -> PositionType -> PositionType -> Double -> <Proc> InsertInstruction 
47 createVariableLength typeUri position insertPosition length = do
48   instruction = createInsertInstruction ()
49   setTypeUri instruction typeUri
50   setPosition instruction position
51   setInsertPosition instruction insertPosition
52   setLength instruction (Just length)
53   instruction
54   
55 createFixedTurn :: String -> PositionType -> PositionType -> <Proc> InsertInstruction 
56 createFixedTurn typeUri position insertPosition = do
57   instruction = createInsertInstruction ()
58   setTypeUri instruction typeUri
59   setPosition instruction position
60   setInsertPosition instruction insertPosition
61   instruction
62   
63 createVariableTurn :: String -> PositionType -> PositionType -> Double -> <Proc> InsertInstruction 
64 createVariableTurn typeUri position insertPosition angle = do
65   instruction = createInsertInstruction ()
66   setTypeUri instruction typeUri
67   setPosition instruction position
68   setInsertPosition instruction insertPosition
69   setAngle instruction (Just angle)
70   instruction
71    
72 createSizeChange :: String -> PositionType -> PositionType -> Double -> Double -> <Proc> InsertInstruction 
73 createSizeChange typeUri position insertPosition diameter radius = do
74   instruction = createInsertInstruction ()
75   setTypeUri instruction typeUri
76   setPosition instruction position
77   setInsertPosition instruction insertPosition
78   setDiameter instruction (Just diameter)
79   setTurnRadius instruction (Just radius)
80   instruction   
81