X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.plant3d%2Fscl%2FPlant3d%2FUtils%2FComponentUtils.scl;h=e88d271a545c49124666b502df50112721ffc971;hb=9497b5d9e26b3f6ea39030af6b14f8776a449591;hp=8778eed04261968743fb7a77fae5c0b8cbe38020;hpb=8d6ebee4afa4fbf205cc7e0b71596b7780a7dacd;p=simantics%2F3d.git diff --git a/org.simantics.plant3d/scl/Plant3d/Utils/ComponentUtils.scl b/org.simantics.plant3d/scl/Plant3d/Utils/ComponentUtils.scl index 8778eed0..e88d271a 100644 --- a/org.simantics.plant3d/scl/Plant3d/Utils/ComponentUtils.scl +++ b/org.simantics.plant3d/scl/Plant3d/Utils/ComponentUtils.scl @@ -2,6 +2,7 @@ import "Plant3d/Scenegraph/PipelineComponent" import "Plant3d/Scenegraph/Equipment" import "Plant3d/Scenegraph/Nozzle" import "Plant3d/Scenegraph/P3DRootNode" +import "G3D/Math/Vector3d" import "./P3DUtil" importJava "org.simantics.plant3d.utils.ComponentUtils" where @@ -17,4 +18,71 @@ importJava "org.simantics.plant3d.utils.ComponentUtils" where createBranchSplit :: P3DRootNode -> PipelineComponent createEquipment :: P3DRootNode -> Item -> Equipment createDefaultNozzle :: P3DRootNode -> Equipment -> Nozzle + + @JavaName addComponent + addComponent :: P3DRootNode -> PipelineComponent -> InsertInstruction -> PipelineComponent + + @JavaName connect + connect :: PipelineComponent -> PipelineComponent -> Boolean + + @JavaName connect + connect2 :: PipelineComponent -> PipelineComponent -> PositionType -> Vector3d -> Boolean + +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 \ No newline at end of file