RS3Scripting 4.42.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rs3/ApplicationManager.py +77 -0
- rs3/ColorPicker.py +123 -0
- rs3/CommonEnums.py +16 -0
- rs3/Compute.py +105 -0
- rs3/ExternalVolume.py +48 -0
- rs3/Geometry.py +74 -0
- rs3/Model.py +795 -0
- rs3/ModelEnums.py +9 -0
- rs3/RS3Modeler.py +109 -0
- rs3/Restraints.py +91 -0
- rs3/Selection.py +123 -0
- rs3/__init__.py +18 -0
- rs3/_client.py +57 -0
- rs3/_proxyObject.py +5 -0
- rs3/generatedFiles/BFPCommonMessage_pb2.py +38 -0
- rs3/generatedFiles/BFPCommonMessage_pb2.pyi +47 -0
- rs3/generatedFiles/BFPCommonMessage_pb2_grpc.py +24 -0
- rs3/generatedFiles/BeamDataService_pb2.py +37 -0
- rs3/generatedFiles/BeamDataService_pb2.pyi +5 -0
- rs3/generatedFiles/BeamDataService_pb2_grpc.py +226 -0
- rs3/generatedFiles/BeamService_pb2.py +37 -0
- rs3/generatedFiles/BeamService_pb2.pyi +5 -0
- rs3/generatedFiles/BeamService_pb2_grpc.py +140 -0
- rs3/generatedFiles/BeamStageFactorService_pb2.py +37 -0
- rs3/generatedFiles/BeamStageFactorService_pb2.pyi +5 -0
- rs3/generatedFiles/BeamStageFactorService_pb2_grpc.py +140 -0
- rs3/generatedFiles/BeamsResultsQueryService_pb2.py +50 -0
- rs3/generatedFiles/BeamsResultsQueryService_pb2.pyi +48 -0
- rs3/generatedFiles/BeamsResultsQueryService_pb2_grpc.py +141 -0
- rs3/generatedFiles/BoltDataService_pb2.py +37 -0
- rs3/generatedFiles/BoltDataService_pb2.pyi +5 -0
- rs3/generatedFiles/BoltDataService_pb2_grpc.py +226 -0
- rs3/generatedFiles/BoltService_pb2.py +37 -0
- rs3/generatedFiles/BoltService_pb2.pyi +5 -0
- rs3/generatedFiles/BoltService_pb2_grpc.py +140 -0
- rs3/generatedFiles/BoltsResultsQueryService_pb2.py +51 -0
- rs3/generatedFiles/BoltsResultsQueryService_pb2.pyi +75 -0
- rs3/generatedFiles/BoltsResultsQueryService_pb2_grpc.py +141 -0
- rs3/generatedFiles/ClientService_pb2.py +40 -0
- rs3/generatedFiles/ClientService_pb2.pyi +15 -0
- rs3/generatedFiles/ClientService_pb2_grpc.py +97 -0
- rs3/generatedFiles/CommonGeometryMessages_pb2.py +52 -0
- rs3/generatedFiles/CommonGeometryMessages_pb2.pyi +92 -0
- rs3/generatedFiles/CommonGeometryMessages_pb2_grpc.py +24 -0
- rs3/generatedFiles/CommonMessages_pb2.py +66 -0
- rs3/generatedFiles/CommonMessages_pb2.pyi +145 -0
- rs3/generatedFiles/CommonMessages_pb2_grpc.py +24 -0
- rs3/generatedFiles/CompositeLinerDataService_pb2.py +47 -0
- rs3/generatedFiles/CompositeLinerDataService_pb2.pyi +51 -0
- rs3/generatedFiles/CompositeLinerDataService_pb2_grpc.py +227 -0
- rs3/generatedFiles/CompositeLinerResultsQueryService_pb2.py +63 -0
- rs3/generatedFiles/CompositeLinerResultsQueryService_pb2.pyi +139 -0
- rs3/generatedFiles/CompositeLinerResultsQueryService_pb2_grpc.py +314 -0
- rs3/generatedFiles/CompositeLinerService_pb2.py +37 -0
- rs3/generatedFiles/CompositeLinerService_pb2.pyi +5 -0
- rs3/generatedFiles/CompositeLinerService_pb2_grpc.py +140 -0
- rs3/generatedFiles/ComputeService_pb2.py +48 -0
- rs3/generatedFiles/ComputeService_pb2.pyi +56 -0
- rs3/generatedFiles/ComputeService_pb2_grpc.py +147 -0
- rs3/generatedFiles/ExternalVolumesService_pb2.py +45 -0
- rs3/generatedFiles/ExternalVolumesService_pb2.pyi +34 -0
- rs3/generatedFiles/ExternalVolumesService_pb2_grpc.py +270 -0
- rs3/generatedFiles/FieldStressService_pb2.py +37 -0
- rs3/generatedFiles/FieldStressService_pb2.pyi +5 -0
- rs3/generatedFiles/FieldStressService_pb2_grpc.py +140 -0
- rs3/generatedFiles/FieldStressSourceService_pb2.py +85 -0
- rs3/generatedFiles/FieldStressSourceService_pb2.pyi +182 -0
- rs3/generatedFiles/FieldStressSourceService_pb2_grpc.py +657 -0
- rs3/generatedFiles/GaussPointFailureMessage_pb2.py +37 -0
- rs3/generatedFiles/GaussPointFailureMessage_pb2.pyi +14 -0
- rs3/generatedFiles/GaussPointFailureMessage_pb2_grpc.py +24 -0
- rs3/generatedFiles/HydraulicStageFactorService_pb2.py +45 -0
- rs3/generatedFiles/HydraulicStageFactorService_pb2.pyi +36 -0
- rs3/generatedFiles/HydraulicStageFactorService_pb2_grpc.py +227 -0
- rs3/generatedFiles/JointDataService_pb2.py +45 -0
- rs3/generatedFiles/JointDataService_pb2.pyi +30 -0
- rs3/generatedFiles/JointDataService_pb2_grpc.py +313 -0
- rs3/generatedFiles/JointResultsQueryService_pb2.py +54 -0
- rs3/generatedFiles/JointResultsQueryService_pb2.pyi +92 -0
- rs3/generatedFiles/JointResultsQueryService_pb2_grpc.py +141 -0
- rs3/generatedFiles/JointService_pb2.py +45 -0
- rs3/generatedFiles/JointService_pb2.pyi +30 -0
- rs3/generatedFiles/JointService_pb2_grpc.py +227 -0
- rs3/generatedFiles/JointStageFactorService_pb2.py +37 -0
- rs3/generatedFiles/JointStageFactorService_pb2.pyi +5 -0
- rs3/generatedFiles/JointStageFactorService_pb2_grpc.py +140 -0
- rs3/generatedFiles/LinerDataService_pb2.py +37 -0
- rs3/generatedFiles/LinerDataService_pb2.pyi +5 -0
- rs3/generatedFiles/LinerDataService_pb2_grpc.py +226 -0
- rs3/generatedFiles/LinerService_pb2.py +37 -0
- rs3/generatedFiles/LinerService_pb2.pyi +5 -0
- rs3/generatedFiles/LinerService_pb2_grpc.py +140 -0
- rs3/generatedFiles/LinerStageFactorService_pb2.py +37 -0
- rs3/generatedFiles/LinerStageFactorService_pb2.pyi +5 -0
- rs3/generatedFiles/LinerStageFactorService_pb2_grpc.py +140 -0
- rs3/generatedFiles/MaterialDataService_pb2.py +37 -0
- rs3/generatedFiles/MaterialDataService_pb2.pyi +5 -0
- rs3/generatedFiles/MaterialDataService_pb2_grpc.py +226 -0
- rs3/generatedFiles/MaterialDatumService_pb2.py +45 -0
- rs3/generatedFiles/MaterialDatumService_pb2.pyi +38 -0
- rs3/generatedFiles/MaterialDatumService_pb2_grpc.py +140 -0
- rs3/generatedFiles/MaterialHydraulicDataService_pb2.py +93 -0
- rs3/generatedFiles/MaterialHydraulicDataService_pb2.pyi +193 -0
- rs3/generatedFiles/MaterialHydraulicDataService_pb2_grpc.py +829 -0
- rs3/generatedFiles/MaterialHydraulicModelService_pb2.py +55 -0
- rs3/generatedFiles/MaterialHydraulicModelService_pb2.pyi +79 -0
- rs3/generatedFiles/MaterialHydraulicModelService_pb2_grpc.py +313 -0
- rs3/generatedFiles/MaterialInitialConditionsService_pb2.py +37 -0
- rs3/generatedFiles/MaterialInitialConditionsService_pb2.pyi +5 -0
- rs3/generatedFiles/MaterialInitialConditionsService_pb2_grpc.py +140 -0
- rs3/generatedFiles/MaterialJointService_pb2.py +49 -0
- rs3/generatedFiles/MaterialJointService_pb2.pyi +52 -0
- rs3/generatedFiles/MaterialJointService_pb2_grpc.py +183 -0
- rs3/generatedFiles/MaterialJointSetSlipCriterionService_pb2.py +69 -0
- rs3/generatedFiles/MaterialJointSetSlipCriterionService_pb2.pyi +130 -0
- rs3/generatedFiles/MaterialJointSetSlipCriterionService_pb2_grpc.py +398 -0
- rs3/generatedFiles/MaterialJointStageFactorService_pb2.py +45 -0
- rs3/generatedFiles/MaterialJointStageFactorService_pb2.pyi +42 -0
- rs3/generatedFiles/MaterialJointStageFactorService_pb2_grpc.py +140 -0
- rs3/generatedFiles/MaterialStageFactorsService_pb2.py +37 -0
- rs3/generatedFiles/MaterialStageFactorsService_pb2.pyi +5 -0
- rs3/generatedFiles/MaterialStageFactorsService_pb2_grpc.py +140 -0
- rs3/generatedFiles/MaterialStiffnessFormulaService_pb2.py +47 -0
- rs3/generatedFiles/MaterialStiffnessFormulaService_pb2.pyi +54 -0
- rs3/generatedFiles/MaterialStiffnessFormulaService_pb2_grpc.py +140 -0
- rs3/generatedFiles/MaterialStiffnessService_pb2.py +53 -0
- rs3/generatedFiles/MaterialStiffnessService_pb2.pyi +66 -0
- rs3/generatedFiles/MaterialStiffnessService_pb2_grpc.py +313 -0
- rs3/generatedFiles/MaterialStrengthService_pb2.py +105 -0
- rs3/generatedFiles/MaterialStrengthService_pb2.pyi +243 -0
- rs3/generatedFiles/MaterialStrengthService_pb2_grpc.py +833 -0
- rs3/generatedFiles/MaterialUnsaturatedSoilDataService_pb2.py +47 -0
- rs3/generatedFiles/MaterialUnsaturatedSoilDataService_pb2.pyi +43 -0
- rs3/generatedFiles/MaterialUnsaturatedSoilDataService_pb2_grpc.py +228 -0
- rs3/generatedFiles/MeshSettingsService_pb2.py +41 -0
- rs3/generatedFiles/MeshSettingsService_pb2.pyi +16 -0
- rs3/generatedFiles/MeshSettingsService_pb2_grpc.py +184 -0
- rs3/generatedFiles/ModelFunctionService_pb2.py +119 -0
- rs3/generatedFiles/ModelFunctionService_pb2.pyi +331 -0
- rs3/generatedFiles/ModelFunctionService_pb2_grpc.py +871 -0
- rs3/generatedFiles/ModelService_pb2.py +342 -0
- rs3/generatedFiles/ModelService_pb2.pyi +962 -0
- rs3/generatedFiles/ModelService_pb2_grpc.py +3322 -0
- rs3/generatedFiles/PileDataService_pb2.py +55 -0
- rs3/generatedFiles/PileDataService_pb2.pyi +63 -0
- rs3/generatedFiles/PileDataService_pb2_grpc.py +399 -0
- rs3/generatedFiles/PileForepoleResultsQueryService_pb2.py +51 -0
- rs3/generatedFiles/PileForepoleResultsQueryService_pb2.pyi +63 -0
- rs3/generatedFiles/PileForepoleResultsQueryService_pb2_grpc.py +141 -0
- rs3/generatedFiles/PileStageFactorService_pb2.py +37 -0
- rs3/generatedFiles/PileStageFactorService_pb2.pyi +5 -0
- rs3/generatedFiles/PileStageFactorService_pb2_grpc.py +140 -0
- rs3/generatedFiles/PlainStrandCableBoltService_pb2.py +44 -0
- rs3/generatedFiles/PlainStrandCableBoltService_pb2.pyi +30 -0
- rs3/generatedFiles/PlainStrandCableBoltService_pb2_grpc.py +140 -0
- rs3/generatedFiles/ProjectSettingsDataService_pb2.py +69 -0
- rs3/generatedFiles/ProjectSettingsDataService_pb2.pyi +119 -0
- rs3/generatedFiles/ProjectSettingsDataService_pb2_grpc.py +786 -0
- rs3/generatedFiles/RFCApplicationService_pb2.py +34 -0
- rs3/generatedFiles/RFCApplicationService_pb2.pyi +27 -0
- rs3/generatedFiles/RFCApplicationService_pb2_grpc.py +145 -0
- rs3/generatedFiles/RS3ModelerService_pb2.py +50 -0
- rs3/generatedFiles/RS3ModelerService_pb2.pyi +45 -0
- rs3/generatedFiles/RS3ModelerService_pb2_grpc.py +183 -0
- rs3/generatedFiles/RelativeStageFactorService_pb2.py +40 -0
- rs3/generatedFiles/RelativeStageFactorService_pb2.pyi +17 -0
- rs3/generatedFiles/RelativeStageFactorService_pb2_grpc.py +97 -0
- rs3/generatedFiles/RestraintsService_pb2.py +62 -0
- rs3/generatedFiles/RestraintsService_pb2.pyi +84 -0
- rs3/generatedFiles/RestraintsService_pb2_grpc.py +312 -0
- rs3/generatedFiles/ResultsQueryCommonMessage_pb2.py +56 -0
- rs3/generatedFiles/ResultsQueryCommonMessage_pb2.pyi +85 -0
- rs3/generatedFiles/ResultsQueryCommonMessage_pb2_grpc.py +24 -0
- rs3/generatedFiles/ResultsQueryService_pb2.py +87 -0
- rs3/generatedFiles/ResultsQueryService_pb2.pyi +185 -0
- rs3/generatedFiles/ResultsQueryService_pb2_grpc.py +745 -0
- rs3/generatedFiles/SelectionService_pb2.py +49 -0
- rs3/generatedFiles/SelectionService_pb2.pyi +51 -0
- rs3/generatedFiles/SelectionService_pb2_grpc.py +269 -0
- rs3/generatedFiles/SolidsResultsQueryService_pb2.py +93 -0
- rs3/generatedFiles/SolidsResultsQueryService_pb2.pyi +213 -0
- rs3/generatedFiles/SolidsResultsQueryService_pb2_grpc.py +195 -0
- rs3/generatedFiles/StageFactorService_pb2.py +58 -0
- rs3/generatedFiles/StageFactorService_pb2.pyi +79 -0
- rs3/generatedFiles/StageFactorService_pb2_grpc.py +226 -0
- rs3/generatedFiles/StiffnessStageFactorService_pb2.py +37 -0
- rs3/generatedFiles/StiffnessStageFactorService_pb2.pyi +5 -0
- rs3/generatedFiles/StiffnessStageFactorService_pb2_grpc.py +140 -0
- rs3/generatedFiles/StrengthStageFactorService_pb2.py +37 -0
- rs3/generatedFiles/StrengthStageFactorService_pb2.pyi +5 -0
- rs3/generatedFiles/StrengthStageFactorService_pb2_grpc.py +140 -0
- rs3/generatedFiles/WaterByLocationDataService_pb2.py +61 -0
- rs3/generatedFiles/WaterByLocationDataService_pb2.pyi +95 -0
- rs3/generatedFiles/WaterByLocationDataService_pb2_grpc.py +312 -0
- rs3/generatedFiles/WaterPressureGridDataService_pb2.py +63 -0
- rs3/generatedFiles/WaterPressureGridDataService_pb2.pyi +107 -0
- rs3/generatedFiles/WaterPressureGridDataService_pb2_grpc.py +312 -0
- rs3/generatedFiles/__init__.py +3 -0
- rs3/loadings/LoadingEnums.py +6 -0
- rs3/loadings/Loadings.py +15 -0
- rs3/loadings/__init__.py +0 -0
- rs3/loadings/fieldStress/AdvancedConstant.py +115 -0
- rs3/loadings/fieldStress/AdvancedGravity.py +176 -0
- rs3/loadings/fieldStress/Constant.py +119 -0
- rs3/loadings/fieldStress/FieldStress.py +38 -0
- rs3/loadings/fieldStress/Gravity.py +206 -0
- rs3/loadings/fieldStress/_PropertyAccessor.py +41 -0
- rs3/loadings/fieldStress/__init__.py +0 -0
- rs3/mesh/Graded.py +59 -0
- rs3/mesh/Mesh.py +50 -0
- rs3/mesh/MeshEnums.py +16 -0
- rs3/mesh/Uniform.py +35 -0
- rs3/mesh/_PropertyAccessor.py +10 -0
- rs3/mesh/__init__.py +0 -0
- rs3/projectSettings/Dynamic.py +110 -0
- rs3/projectSettings/Groundwater.py +118 -0
- rs3/projectSettings/ProjectSettingEnums.py +108 -0
- rs3/projectSettings/ProjectSettings.py +43 -0
- rs3/projectSettings/ShearStrengthReduction.py +130 -0
- rs3/projectSettings/SolverOptions.py +88 -0
- rs3/projectSettings/Stages.py +162 -0
- rs3/projectSettings/StressAnalysis.py +183 -0
- rs3/projectSettings/Units.py +82 -0
- rs3/projectSettings/_PropertyAccessor.py +133 -0
- rs3/projectSettings/__init__.py +0 -0
- rs3/properties/CustomHydraulicModel.py +129 -0
- rs3/properties/DiscreteFunction.py +147 -0
- rs3/properties/GeneralizedAnisotropicFunction.py +98 -0
- rs3/properties/IPropertyGroupAccessors.py +12 -0
- rs3/properties/PropertyEnums.py +387 -0
- rs3/properties/ShearNormalFunction.py +94 -0
- rs3/properties/SnowdenStrengthFunction.py +115 -0
- rs3/properties/_PropertyAccessor.py +111 -0
- rs3/properties/__init__.py +0 -0
- rs3/properties/beam/Beam.py +86 -0
- rs3/properties/beam/BeamCommon.py +175 -0
- rs3/properties/beam/Standard.py +97 -0
- rs3/properties/beam/Truss.py +23 -0
- rs3/properties/beam/_PropertyAccessor.py +9 -0
- rs3/properties/beam/__init__.py +0 -0
- rs3/properties/bolt/Bolt.py +81 -0
- rs3/properties/bolt/EndAnchored.py +77 -0
- rs3/properties/bolt/FullyBonded.py +78 -0
- rs3/properties/bolt/PlainStrandCable.py +151 -0
- rs3/properties/bolt/Swellex.py +106 -0
- rs3/properties/bolt/Tieback.py +176 -0
- rs3/properties/bolt/_PropertyAccessor.py +7 -0
- rs3/properties/bolt/__init__.py +0 -0
- rs3/properties/groundwater/WaterByLocation.py +83 -0
- rs3/properties/groundwater/WaterGrid.py +120 -0
- rs3/properties/groundwater/_PropertyAccessor.py +36 -0
- rs3/properties/groundwater/__init__.py +0 -0
- rs3/properties/joint/BartonBandis.py +118 -0
- rs3/properties/joint/GeosyntheticHyperbolic.py +158 -0
- rs3/properties/joint/Joint.py +176 -0
- rs3/properties/joint/MaterialDependent.py +107 -0
- rs3/properties/joint/MohrCoulomb.py +169 -0
- rs3/properties/joint/NoneSlip.py +68 -0
- rs3/properties/joint/_PropertyAccessor.py +9 -0
- rs3/properties/joint/__init__.py +0 -0
- rs3/properties/liner/Geosynthetic.py +85 -0
- rs3/properties/liner/Liner.py +83 -0
- rs3/properties/liner/ReinforcedConcrete.py +216 -0
- rs3/properties/liner/Standard.py +183 -0
- rs3/properties/liner/_PropertyAccessor.py +7 -0
- rs3/properties/liner/__init__.py +0 -0
- rs3/properties/liningComposition/LiningComposition.py +244 -0
- rs3/properties/liningComposition/_PropertyAccessor.py +7 -0
- rs3/properties/liningComposition/__init__.py +0 -0
- rs3/properties/material/Material.py +74 -0
- rs3/properties/material/__init__.py +0 -0
- rs3/properties/material/constitutiveModel/AnisotropicLinear.py +149 -0
- rs3/properties/material/constitutiveModel/AnisotropicLinearPlanarBase.py +72 -0
- rs3/properties/material/constitutiveModel/BarcelonaBasic.py +158 -0
- rs3/properties/material/constitutiveModel/BartonBandis.py +77 -0
- rs3/properties/material/constitutiveModel/BaseConstitutiveModel.py +11 -0
- rs3/properties/material/constitutiveModel/BoundingSurfacePlasticity.py +88 -0
- rs3/properties/material/constitutiveModel/CamClay.py +144 -0
- rs3/properties/material/constitutiveModel/ChSoil.py +111 -0
- rs3/properties/material/constitutiveModel/ConstitutiveModel.py +87 -0
- rs3/properties/material/constitutiveModel/CySoil.py +137 -0
- rs3/properties/material/constitutiveModel/DiscreteFunction.py +39 -0
- rs3/properties/material/constitutiveModel/DoubleYield.py +130 -0
- rs3/properties/material/constitutiveModel/DruckerPrager.py +136 -0
- rs3/properties/material/constitutiveModel/GeneralizedAnisotropic.py +39 -0
- rs3/properties/material/constitutiveModel/GeneralizedHoekBrown.py +226 -0
- rs3/properties/material/constitutiveModel/HardeningSoil.py +156 -0
- rs3/properties/material/constitutiveModel/HardeningSoilWithSmallStrain.py +170 -0
- rs3/properties/material/constitutiveModel/HoekBrown.py +125 -0
- rs3/properties/material/constitutiveModel/Hyperbolic.py +77 -0
- rs3/properties/material/constitutiveModel/JointedGeneralizedHoekBrown.py +184 -0
- rs3/properties/material/constitutiveModel/JointedMohrCoulomb.py +173 -0
- rs3/properties/material/constitutiveModel/ManzariAndDafalias.py +148 -0
- rs3/properties/material/constitutiveModel/ModifiedCamClay.py +11 -0
- rs3/properties/material/constitutiveModel/MohrCoulomb.py +147 -0
- rs3/properties/material/constitutiveModel/MohrCoulombUnsaturatedZoneCalculations.py +80 -0
- rs3/properties/material/constitutiveModel/MohrCoulombWithCap.py +154 -0
- rs3/properties/material/constitutiveModel/Norsand.py +146 -0
- rs3/properties/material/constitutiveModel/PowerCurve.py +119 -0
- rs3/properties/material/constitutiveModel/Shansep.py +214 -0
- rs3/properties/material/constitutiveModel/ShearNormalFunction.py +34 -0
- rs3/properties/material/constitutiveModel/SnowdenAnisotropicLinear.py +108 -0
- rs3/properties/material/constitutiveModel/SoftSoil.py +104 -0
- rs3/properties/material/constitutiveModel/SoftSoilCreep.py +111 -0
- rs3/properties/material/constitutiveModel/SofteningHardening.py +214 -0
- rs3/properties/material/constitutiveModel/SwellingRock.py +202 -0
- rs3/properties/material/constitutiveModel/UnsaturatedZoneCalculations.py +138 -0
- rs3/properties/material/constitutiveModel/VerticalStressRatio.py +113 -0
- rs3/properties/material/constitutiveModel/_PropertyAccessor.py +96 -0
- rs3/properties/material/constitutiveModel/__init__.py +0 -0
- rs3/properties/material/constitutiveModel/jointOption/BartonBandis.py +109 -0
- rs3/properties/material/constitutiveModel/jointOption/MaterialJoint.py +48 -0
- rs3/properties/material/constitutiveModel/jointOption/MaterialJointOptions.py +32 -0
- rs3/properties/material/constitutiveModel/jointOption/MohrCoulomb.py +142 -0
- rs3/properties/material/constitutiveModel/jointOption/PlaneOrientationBase.py +92 -0
- rs3/properties/material/constitutiveModel/jointOption/SimpleHyperbolic.py +112 -0
- rs3/properties/material/constitutiveModel/jointOption/_PropertyAccessor.py +61 -0
- rs3/properties/material/constitutiveModel/jointOption/__init__.py +0 -0
- rs3/properties/material/constitutiveModel/stiffness/BaseStiffness.py +11 -0
- rs3/properties/material/constitutiveModel/stiffness/DuncanChangHyperbolic.py +128 -0
- rs3/properties/material/constitutiveModel/stiffness/GeneralizedHoekBrownEstimation.py +50 -0
- rs3/properties/material/constitutiveModel/stiffness/LinearIsotropic.py +106 -0
- rs3/properties/material/constitutiveModel/stiffness/NonlinearIsotropic.py +104 -0
- rs3/properties/material/constitutiveModel/stiffness/Orthotropic.py +296 -0
- rs3/properties/material/constitutiveModel/stiffness/TransverselyIsotropic.py +186 -0
- rs3/properties/material/constitutiveModel/stiffness/_PropertyAccessor.py +33 -0
- rs3/properties/material/constitutiveModel/stiffness/__init__.py +0 -0
- rs3/properties/material/constitutiveModel/stiffness/formula/Formula1.py +96 -0
- rs3/properties/material/constitutiveModel/stiffness/formula/Formula2.py +136 -0
- rs3/properties/material/constitutiveModel/stiffness/formula/Formula3.py +113 -0
- rs3/properties/material/constitutiveModel/stiffness/formula/_PropertyAccessor.py +37 -0
- rs3/properties/material/constitutiveModel/stiffness/formula/__init__.py +0 -0
- rs3/properties/material/datum/CohesionDatumDependency.py +99 -0
- rs3/properties/material/datum/Datum.py +23 -0
- rs3/properties/material/datum/FrictionAngleDatumDependency.py +99 -0
- rs3/properties/material/datum/YoungsModulusDatumDependency.py +78 -0
- rs3/properties/material/datum/_PropertyAccessor.py +26 -0
- rs3/properties/material/datum/__init__.py +0 -0
- rs3/properties/material/hydraulic/FEAGroundwater/Brooks.py +71 -0
- rs3/properties/material/hydraulic/FEAGroundwater/Custom.py +79 -0
- rs3/properties/material/hydraulic/FEAGroundwater/FEAGroundwater.py +85 -0
- rs3/properties/material/hydraulic/FEAGroundwater/Fredlund.py +82 -0
- rs3/properties/material/hydraulic/FEAGroundwater/Gardner.py +72 -0
- rs3/properties/material/hydraulic/FEAGroundwater/HydraulicMethodVectors.py +97 -0
- rs3/properties/material/hydraulic/FEAGroundwater/HydraulicParametersCommon.py +157 -0
- rs3/properties/material/hydraulic/FEAGroundwater/Simple.py +37 -0
- rs3/properties/material/hydraulic/FEAGroundwater/VanGenuchten.py +94 -0
- rs3/properties/material/hydraulic/FEAGroundwater/_PropertyAccessor.py +16 -0
- rs3/properties/material/hydraulic/FEAGroundwater/__init__.py +0 -0
- rs3/properties/material/hydraulic/Hydraulic.py +111 -0
- rs3/properties/material/hydraulic/PhreaticConditions.py +37 -0
- rs3/properties/material/hydraulic/StaticGroundwater.py +100 -0
- rs3/properties/material/hydraulic/WaterConditions.py +110 -0
- rs3/properties/material/hydraulic/_PropertyAccessor.py +31 -0
- rs3/properties/material/hydraulic/__init__.py +0 -0
- rs3/properties/material/initialConditions/InitialConditions.py +108 -0
- rs3/properties/material/initialConditions/_PropertyAccessor.py +11 -0
- rs3/properties/material/initialConditions/__init__.py +0 -0
- rs3/properties/material/stageFactors/StageFactors.py +77 -0
- rs3/properties/material/stageFactors/_PropertyAccessor.py +7 -0
- rs3/properties/material/stageFactors/__init__.py +0 -0
- rs3/properties/pile/EndCondition.py +109 -0
- rs3/properties/pile/Linear.py +69 -0
- rs3/properties/pile/MohrCoulomb.py +123 -0
- rs3/properties/pile/MultiLinear.py +70 -0
- rs3/properties/pile/Pile.py +108 -0
- rs3/properties/pile/PileCommon.py +99 -0
- rs3/properties/pile/_PropertyAccessor.py +9 -0
- rs3/properties/pile/__init__.py +0 -0
- rs3/properties/stageFactors/IStageFactorBase.py +10 -0
- rs3/properties/stageFactors/StageFactorBaseInterfaces.py +24 -0
- rs3/properties/stageFactors/StageFactorInterfaces.py +70 -0
- rs3/properties/stageFactors/_StageFactorInterface.py +48 -0
- rs3/properties/stageFactors/_StageFactorPropertyAccessor.py +18 -0
- rs3/properties/stageFactors/__init__.py +0 -0
- rs3/results/BeamResults.py +181 -0
- rs3/results/BoltResults.py +214 -0
- rs3/results/CompositeLinerResults.py +374 -0
- rs3/results/JointResults.py +160 -0
- rs3/results/PileForepoleResults.py +219 -0
- rs3/results/ResultEnums.py +146 -0
- rs3/results/Results.py +661 -0
- rs3/results/ResultsCommon.py +66 -0
- rs3/results/SolidElementResults.py +175 -0
- rs3/results/SolidNodalResults.py +248 -0
- rs3/results/SolidResults.py +206 -0
- rs3/results/YieldedElement.py +33 -0
- rs3/results/__init__.py +0 -0
- rs3scripting-4.42.0.dist-info/METADATA +70 -0
- rs3scripting-4.42.0.dist-info/RECORD +393 -0
- rs3scripting-4.42.0.dist-info/WHEEL +5 -0
- rs3scripting-4.42.0.dist-info/licenses/License.txt +20 -0
- rs3scripting-4.42.0.dist-info/top_level.txt +1 -0
rs3/ModelEnums.py
ADDED
rs3/RS3Modeler.py
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Generated by RPCBinder in RFC_Common.
|
|
2
|
+
import rs3.generatedFiles.RS3ModelerService_pb2_grpc as RS3ModelerServiceGrpc
|
|
3
|
+
import rs3.generatedFiles.RS3ModelerService_pb2 as RS3ModelerService
|
|
4
|
+
from rs3._client import Client
|
|
5
|
+
|
|
6
|
+
class RS3ModelerBase:
|
|
7
|
+
def __init__(self, client: Client):
|
|
8
|
+
self._client = client
|
|
9
|
+
self._RS3ModelerService = RS3ModelerServiceGrpc.RS3ModelerServiceStub(self._client.channel)
|
|
10
|
+
def openFile(self, path: str) -> str:
|
|
11
|
+
path_ = path
|
|
12
|
+
request = RS3ModelerService.openFileRequest(path=path_)
|
|
13
|
+
result_ = self._client.callFunction(self._RS3ModelerService.openFile, request)
|
|
14
|
+
result = result_.result
|
|
15
|
+
return result
|
|
16
|
+
|
|
17
|
+
def closeProgram(self, saveModels: bool) -> int:
|
|
18
|
+
saveModels_ = saveModels
|
|
19
|
+
request = RS3ModelerService.closeProgramRequest(saveModels=saveModels_)
|
|
20
|
+
result_ = self._client.callFunction(self._RS3ModelerService.closeProgram, request)
|
|
21
|
+
result = result_.result
|
|
22
|
+
return result
|
|
23
|
+
|
|
24
|
+
def _isViewLoaded(self, path: str) -> bool:
|
|
25
|
+
path_ = path
|
|
26
|
+
request = RS3ModelerService._isViewLoadedRequest(path=path_)
|
|
27
|
+
result_ = self._client.callFunction(self._RS3ModelerService._isViewLoaded, request)
|
|
28
|
+
result = result_.result
|
|
29
|
+
return result
|
|
30
|
+
|
|
31
|
+
def RS3ModelerBase2RS3ModelerRS3ModelerBase(a: RS3ModelerBase) -> RS3ModelerService.RS3ModelerBase:
|
|
32
|
+
result = RS3ModelerService.RS3ModelerBase()
|
|
33
|
+
return result
|
|
34
|
+
|
|
35
|
+
def RS3ModelerRS3ModelerBase2RS3ModelerBase(client: Client, a: RS3ModelerService.RS3ModelerBase) -> RS3ModelerBase:
|
|
36
|
+
result = RS3ModelerBase(client)
|
|
37
|
+
return result
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
################ Code below this line will not be overridden ################
|
|
41
|
+
import rs3.generatedFiles.RFCApplicationService_pb2 as RFCApplicationService_pb2
|
|
42
|
+
import rs3.generatedFiles.RFCApplicationService_pb2_grpc as RFCApplicationService_pb2_grpc
|
|
43
|
+
from rs3.ApplicationManager import ApplicationManager
|
|
44
|
+
from rs3.Model import Model
|
|
45
|
+
from rs3.ColorPicker import *
|
|
46
|
+
import winreg
|
|
47
|
+
import logging
|
|
48
|
+
import time
|
|
49
|
+
|
|
50
|
+
class RS3Modeler(RS3ModelerBase):
|
|
51
|
+
def __init__(self, port=60064):
|
|
52
|
+
super().__init__(Client(port))
|
|
53
|
+
|
|
54
|
+
def openFile(self, path: str) -> Model:
|
|
55
|
+
projectId = super().openFile(path)
|
|
56
|
+
while(not self._isViewLoaded(path)):
|
|
57
|
+
time.sleep(0.5)
|
|
58
|
+
return Model(self._client, projectId)
|
|
59
|
+
|
|
60
|
+
@classmethod
|
|
61
|
+
def startApplication(cls, port : int, overridePathToExecutable : str = None, timeout : float = 120) -> None:
|
|
62
|
+
"""Opens the most recently installed RS3 application. Starts the python server and binds it to the given port.
|
|
63
|
+
|
|
64
|
+
Args:
|
|
65
|
+
port (int): the port to bind the python server to. Use this same port when initializing RS3Modeler
|
|
66
|
+
overridePathToExecutable (str, optional): full path to the desired executable to be opened. If not provided, the latest installation of rs3 is used
|
|
67
|
+
timeout (float, optional): the maximum amount of time to wait for the application and server to start.
|
|
68
|
+
|
|
69
|
+
Raises:
|
|
70
|
+
ValueError: Port range must be between 49152 and 65535, otherwise ValueError is raised
|
|
71
|
+
TimeoutError: if timeout is provided, raises TimeoutError if not able to connect to the server within that time.
|
|
72
|
+
"""
|
|
73
|
+
appManager = ApplicationManager()
|
|
74
|
+
executablePath = overridePathToExecutable if overridePathToExecutable else cls._getApplicationPath()
|
|
75
|
+
|
|
76
|
+
logger = logging.getLogger('Rocscience.RS3')
|
|
77
|
+
appManager.startApplication(executablePath, port, cls._isServerRunning, logger, timeout)
|
|
78
|
+
|
|
79
|
+
def closeProgram(self, saveModels = True, timeout : float = 120) -> None:
|
|
80
|
+
portUsed = super().closeProgram(saveModels)
|
|
81
|
+
self._client.closeConnection()
|
|
82
|
+
appManager = ApplicationManager()
|
|
83
|
+
portIsAvailable = False
|
|
84
|
+
startTime = time.time()
|
|
85
|
+
while not portIsAvailable:
|
|
86
|
+
if (time.time() - startTime) > timeout:
|
|
87
|
+
raise TimeoutError("The application did not close within the given timeout time.")
|
|
88
|
+
portIsAvailable = appManager._isPortAvailable(portUsed)
|
|
89
|
+
|
|
90
|
+
@staticmethod
|
|
91
|
+
def _getApplicationPath() -> str:
|
|
92
|
+
|
|
93
|
+
registry = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE)
|
|
94
|
+
key = winreg.OpenKey(registry, r'SOFTWARE\Rocscience\RS3 4.0')
|
|
95
|
+
installationLocation, type = winreg.QueryValueEx(key, "Install")
|
|
96
|
+
|
|
97
|
+
rs3ModelerInstallLocation = rf"{installationLocation}\RS3"
|
|
98
|
+
|
|
99
|
+
return rs3ModelerInstallLocation
|
|
100
|
+
|
|
101
|
+
@staticmethod
|
|
102
|
+
def _isServerRunning(port) -> bool:
|
|
103
|
+
client = Client(port)
|
|
104
|
+
stub = RFCApplicationService_pb2_grpc.RFCApplicationServiceStub(client.channel)
|
|
105
|
+
pingRequest = RFCApplicationService_pb2.PingRequest()
|
|
106
|
+
client.callFunction(stub.Ping, pingRequest)
|
|
107
|
+
|
|
108
|
+
client.closeConnection()
|
|
109
|
+
return True
|
rs3/Restraints.py
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Generated by RPCBinder in RFC_Common.
|
|
2
|
+
import rs3.generatedFiles.RestraintsService_pb2_grpc as RestraintsServiceGrpc
|
|
3
|
+
import rs3.generatedFiles.RestraintsService_pb2 as RestraintsService
|
|
4
|
+
from rs3._client import Client
|
|
5
|
+
|
|
6
|
+
class RestraintsBase:
|
|
7
|
+
def __init__(self, client: Client, _projectId: str):
|
|
8
|
+
self._client = client
|
|
9
|
+
self._projectId = _projectId
|
|
10
|
+
self._RestraintsService = RestraintsServiceGrpc.RestraintsServiceStub(self._client.channel)
|
|
11
|
+
def setAutoRestraints(self, autoRestraintTypeValue: int) -> None:
|
|
12
|
+
_projectId_ = self._projectId
|
|
13
|
+
autoRestraintTypeValue_ = autoRestraintTypeValue
|
|
14
|
+
request = RestraintsService.setAutoRestraintsRequest(_projectId=_projectId_, autoRestraintTypeValue=autoRestraintTypeValue_)
|
|
15
|
+
self._client.callFunction(self._RestraintsService.setAutoRestraints, request)
|
|
16
|
+
|
|
17
|
+
def deleteAllRestraints(self) -> None:
|
|
18
|
+
_projectId_ = self._projectId
|
|
19
|
+
request = RestraintsService.deleteAllRestraintsRequest(_projectId=_projectId_)
|
|
20
|
+
self._client.callFunction(self._RestraintsService.deleteAllRestraints, request)
|
|
21
|
+
|
|
22
|
+
def getIsRestraintsSet(self) -> bool:
|
|
23
|
+
_projectId_ = self._projectId
|
|
24
|
+
request = RestraintsService.getIsRestraintsSetRequest(_projectId=_projectId_)
|
|
25
|
+
result_ = self._client.callFunction(self._RestraintsService.getIsRestraintsSet, request)
|
|
26
|
+
result = result_.result
|
|
27
|
+
return result
|
|
28
|
+
|
|
29
|
+
def setResetAllDisplacements(self, resetDisplacementsAfterStages: bool, stageNames: list[str]) -> None:
|
|
30
|
+
_projectId_ = self._projectId
|
|
31
|
+
resetDisplacementsAfterStages_ = resetDisplacementsAfterStages
|
|
32
|
+
stageNames_ = stageNames
|
|
33
|
+
request = RestraintsService.setResetAllDisplacementsRequest(_projectId=_projectId_, resetDisplacementsAfterStages=resetDisplacementsAfterStages_, stageNames=stageNames_)
|
|
34
|
+
self._client.callFunction(self._RestraintsService.setResetAllDisplacements, request)
|
|
35
|
+
|
|
36
|
+
def getIsResetAllDisplacementsAfterStages(self) -> bool:
|
|
37
|
+
_projectId_ = self._projectId
|
|
38
|
+
request = RestraintsService.getIsResetAllDisplacementsAfterStagesRequest(_projectId=_projectId_)
|
|
39
|
+
result_ = self._client.callFunction(self._RestraintsService.getIsResetAllDisplacementsAfterStages, request)
|
|
40
|
+
result = result_.result
|
|
41
|
+
return result
|
|
42
|
+
|
|
43
|
+
def getResetAllDisplacementsStages(self) -> list[str]:
|
|
44
|
+
_projectId_ = self._projectId
|
|
45
|
+
request = RestraintsService.getResetAllDisplacementsStagesRequest(_projectId=_projectId_)
|
|
46
|
+
result_ = self._client.callFunction(self._RestraintsService.getResetAllDisplacementsStages, request)
|
|
47
|
+
result = [obj for obj in result_.result]
|
|
48
|
+
return result
|
|
49
|
+
|
|
50
|
+
def RestraintsBase2RestraintsRestraintsBase(a: RestraintsBase) -> RestraintsService.RestraintsBase:
|
|
51
|
+
result = RestraintsService.RestraintsBase(_projectId=a._projectId)
|
|
52
|
+
return result
|
|
53
|
+
|
|
54
|
+
def RestraintsRestraintsBase2RestraintsBase(client: Client, a: RestraintsService.RestraintsBase) -> RestraintsBase:
|
|
55
|
+
result = RestraintsBase(client, a._projectId)
|
|
56
|
+
return result
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
################ Code below this line will not be overridden ################
|
|
60
|
+
from rs3.CommonEnums import *
|
|
61
|
+
class Restraints(RestraintsBase):
|
|
62
|
+
"""
|
|
63
|
+
Examples:
|
|
64
|
+
See :ref:`restraints_example`.
|
|
65
|
+
"""
|
|
66
|
+
def __init__(self, client: Client, projectId: str):
|
|
67
|
+
super().__init__(client, projectId)
|
|
68
|
+
|
|
69
|
+
def setAutoRestraints(self, autoRestraintType : AutoRestraintsType):
|
|
70
|
+
"""
|
|
71
|
+
Automatically restrain the external surfaces in the chosen type.
|
|
72
|
+
"""
|
|
73
|
+
super().setAutoRestraints(autoRestraintType.value)
|
|
74
|
+
|
|
75
|
+
def setResetAllDisplacements(self, resetDisplacementsAfterStages: bool, stageNames: list[str] = None):
|
|
76
|
+
"""
|
|
77
|
+
Reset all calculated displacements to zero after any stage.
|
|
78
|
+
|
|
79
|
+
Parameters:
|
|
80
|
+
- resetDisplacementsAfterStages (bool): allow to reset displacement after stages.
|
|
81
|
+
- stageNames (str): the name of stages that will be reset.
|
|
82
|
+
|
|
83
|
+
Example:
|
|
84
|
+
>>> model.Restraints.setResetAllDisplacements(True, ["Stage 1", "Stage 5", "Stage 2"])
|
|
85
|
+
>>> model.Restraints.setResetAllDisplacements(False)
|
|
86
|
+
|
|
87
|
+
"""
|
|
88
|
+
super().setResetAllDisplacements(resetDisplacementsAfterStages, stageNames)
|
|
89
|
+
|
|
90
|
+
def getResetAllDisplacements(self) -> tuple[bool, list[str]]:
|
|
91
|
+
return (super().getIsResetAllDisplacementsAfterStages(), super().getResetAllDisplacementsStages())
|
rs3/Selection.py
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import rs3.generatedFiles.SelectionService_pb2_grpc as SelectionServiceGrpc
|
|
2
|
+
import rs3.generatedFiles.SelectionService_pb2 as SelectionService
|
|
3
|
+
from rs3._client import Client
|
|
4
|
+
from rs3.ExternalVolume import ExternalVolume
|
|
5
|
+
from rs3.Geometry import *
|
|
6
|
+
from typing import Union
|
|
7
|
+
|
|
8
|
+
class Selection:
|
|
9
|
+
def __init__(self, client: Client, projectId: str):
|
|
10
|
+
self._client = client
|
|
11
|
+
self._projectId = projectId
|
|
12
|
+
self._SelectionService = SelectionServiceGrpc.SelectionServiceStub(self._client.channel)
|
|
13
|
+
|
|
14
|
+
def _getExternalVolumesByPoint(self, point: Point) -> list[str]:
|
|
15
|
+
_projectId_ = self._projectId
|
|
16
|
+
geometry_ = point.toCommonGeometryObject()
|
|
17
|
+
request = SelectionService._getExternalVolumesByGeometryRequest(_projectId=_projectId_, geometry=geometry_, includeIntersecting=False)
|
|
18
|
+
result_ = self._client.callFunction(self._SelectionService._getExternalVolumesByPoint, request)
|
|
19
|
+
result = [obj for obj in result_.result]
|
|
20
|
+
return result
|
|
21
|
+
|
|
22
|
+
def _getExternalVolumesByPolyline(self, polyline: Polyline) -> list[str]:
|
|
23
|
+
_projectId_ = self._projectId
|
|
24
|
+
geometry_ = polyline.toCommonGeometryObject()
|
|
25
|
+
request = SelectionService._getExternalVolumesByGeometryRequest(_projectId=_projectId_, geometry=geometry_, includeIntersecting=False)
|
|
26
|
+
result_ = self._client.callFunction(self._SelectionService._getExternalVolumesByPolyline, request)
|
|
27
|
+
result = [obj for obj in result_.result]
|
|
28
|
+
return result
|
|
29
|
+
|
|
30
|
+
def _getExternalVolumesByBoundingVolume(self, volume: Union[Cube, Cylinder, Sphere], includeIntersecting: bool) -> list[str]:
|
|
31
|
+
_projectId_ = self._projectId
|
|
32
|
+
includeIntersecting_ = includeIntersecting
|
|
33
|
+
geometry_ = volume.toCommonGeometryObject()
|
|
34
|
+
request = SelectionService._getExternalVolumesByGeometryRequest(_projectId=_projectId_, geometry=geometry_, includeIntersecting=includeIntersecting_)
|
|
35
|
+
result_ = self._client.callFunction(self._SelectionService._getExternalVolumesByBoundingVolume, request)
|
|
36
|
+
result = [obj for obj in result_.result]
|
|
37
|
+
return result
|
|
38
|
+
|
|
39
|
+
def getExternalVolumes(self, sampleRegion : Geometry, includeIntersecting : bool = True) -> list[ExternalVolume]:
|
|
40
|
+
"""
|
|
41
|
+
Retrieve external volumes that intersect with or are contained within a specified geometric region.
|
|
42
|
+
|
|
43
|
+
This method performs spatial queries to find external volumes based on different geometric
|
|
44
|
+
sample regions. The function supports various geometric shapes and can optionally include
|
|
45
|
+
or exclude volumes that only partially intersect with the sample region.
|
|
46
|
+
|
|
47
|
+
Args:
|
|
48
|
+
sampleRegion (Geometry): The geometric region to use for volume selection. Supported types:
|
|
49
|
+
- Point: Selects volumes containing the specified point
|
|
50
|
+
- Polyline: Selects volumes intersecting with the polyline path
|
|
51
|
+
- Cube: Selects volumes within or intersecting the bounding box defined by two corner points
|
|
52
|
+
- Cylinder: Selects volumes within or intersecting the cylindrical region
|
|
53
|
+
- Sphere: Selects volumes within or intersecting the spherical region
|
|
54
|
+
includeIntersecting (bool, optional): Whether to include volumes that only partially
|
|
55
|
+
intersect with the sample region. Defaults to True.
|
|
56
|
+
- True: Returns volumes that are fully contained within OR partially intersect the region
|
|
57
|
+
- False: Returns only volumes that are fully contained within the region
|
|
58
|
+
|
|
59
|
+
Note: This parameter only applies to Cube, Cylinder, and Sphere geometry types.
|
|
60
|
+
For Point and Polyline, this parameter is ignored as the selection behavior
|
|
61
|
+
is inherently based on intersection/containment.
|
|
62
|
+
|
|
63
|
+
Returns:
|
|
64
|
+
list[ExternalVolume]: A list of ExternalVolume objects that match the selection criteria.
|
|
65
|
+
Returns an empty list if no volumes are found.
|
|
66
|
+
|
|
67
|
+
Raises:
|
|
68
|
+
TypeError: If sampleRegion is not one of the supported Geometry types.
|
|
69
|
+
|
|
70
|
+
Examples:
|
|
71
|
+
See :ref:`external_volume_and_selection_example`.
|
|
72
|
+
|
|
73
|
+
>>> # Select volumes containing a specific point
|
|
74
|
+
>>> point = Point(20.0, 0.0, -50.0)
|
|
75
|
+
>>> volumes = selection.getExternalVolumes(point)
|
|
76
|
+
|
|
77
|
+
>>> # Select volumes intersecting with a polyline
|
|
78
|
+
>>> polyline = Polyline([Point(5.5, -40, -50), Point(25, 5.2, -48), Point(20.5, 50.2, -45)])
|
|
79
|
+
>>> volumes = selection.getExternalVolumes(polyline)
|
|
80
|
+
|
|
81
|
+
>>> # Select volumes within a bounding box (including intersecting)
|
|
82
|
+
>>> cube = Cube(Point(18.0, 1.5, -49.2), Point(23.5, 2.5, -47.3))
|
|
83
|
+
>>> volumes = selection.getExternalVolumes(cube, includeIntersecting=True)
|
|
84
|
+
|
|
85
|
+
>>> # Select only volumes fully contained within a bounding box
|
|
86
|
+
>>> volumes = selection.getExternalVolumes(cube, includeIntersecting=False)
|
|
87
|
+
|
|
88
|
+
>>> # Select volumes within a cylindrical region
|
|
89
|
+
>>> cylinder = Cylinder(Point(22.12, 45.3, -52.2), Point(25.2, 30.3, -48.4), radius=1.0)
|
|
90
|
+
>>> volumes = selection.getExternalVolumes(cylinder)
|
|
91
|
+
|
|
92
|
+
>>> # Select volumes within a spherical region
|
|
93
|
+
>>> sphere = Sphere(Point(18.94, 47.05, -53.83), radius=5.0)
|
|
94
|
+
>>> volumes = selection.getExternalVolumes(sphere)
|
|
95
|
+
"""
|
|
96
|
+
if isinstance(sampleRegion, Point):
|
|
97
|
+
externalVolumes = self._getExternalVolumesByPoint(point=sampleRegion)
|
|
98
|
+
elif isinstance(sampleRegion, Polyline):
|
|
99
|
+
externalVolumes = self._getExternalVolumesByPolyline(polyline=sampleRegion)
|
|
100
|
+
elif isinstance(sampleRegion, Cube) or isinstance(sampleRegion, Cylinder) or isinstance(sampleRegion, Sphere):
|
|
101
|
+
externalVolumes = self._getExternalVolumesByBoundingVolume(volume=sampleRegion, includeIntersecting=includeIntersecting)
|
|
102
|
+
else:
|
|
103
|
+
raise TypeError(f"Unsupported SampleRegion type: {type(sampleRegion)}")
|
|
104
|
+
|
|
105
|
+
return [ExternalVolume(self._client, obj) for obj in externalVolumes]
|
|
106
|
+
|
|
107
|
+
def getAttachedExternalVolumes(self, externalVolume : ExternalVolume) -> list[ExternalVolume]:
|
|
108
|
+
"""
|
|
109
|
+
Examples:
|
|
110
|
+
See :ref:`external_volume_and_selection_example`.
|
|
111
|
+
"""
|
|
112
|
+
request = SelectionService.getAttachedExternalVolumesRequest(_projectId=self._projectId, _externalVolumeID=externalVolume._objectId)
|
|
113
|
+
result_ = self._client.callFunction(self._SelectionService.getAttachedExternalVolumes, request)
|
|
114
|
+
return [ExternalVolume(self._client, obj) for obj in result_.result]
|
|
115
|
+
|
|
116
|
+
def getAttachedExternalVolumesByVolumeName(self, externalVolumeName : str) -> list[ExternalVolume]:
|
|
117
|
+
"""
|
|
118
|
+
Examples:
|
|
119
|
+
See :ref:`external_volume_and_selection_example`.
|
|
120
|
+
"""
|
|
121
|
+
request = SelectionService.getAttachedExternalVolumesByVolumeNameRequest(_projectId=self._projectId, externalVolumeName=externalVolumeName)
|
|
122
|
+
result_ = self._client.callFunction(self._SelectionService.getAttachedExternalVolumesByVolumeName, request)
|
|
123
|
+
return [ExternalVolume(self._client, obj) for obj in result_.result]
|
rs3/__init__.py
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
|
|
3
|
+
# create logger
|
|
4
|
+
logger = logging.getLogger('Rocscience.RS3')
|
|
5
|
+
logger.setLevel(logging.INFO)
|
|
6
|
+
|
|
7
|
+
# create console handler and set level to debug
|
|
8
|
+
ch = logging.StreamHandler()
|
|
9
|
+
ch.setLevel(logging.INFO)
|
|
10
|
+
|
|
11
|
+
# create formatter
|
|
12
|
+
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
|
13
|
+
|
|
14
|
+
# add formatter to ch
|
|
15
|
+
ch.setFormatter(formatter)
|
|
16
|
+
|
|
17
|
+
# add ch to logger
|
|
18
|
+
logger.addHandler(ch)
|
rs3/_client.py
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import grpc
|
|
2
|
+
import logging
|
|
3
|
+
import atexit
|
|
4
|
+
import rs3.generatedFiles.ClientService_pb2_grpc as ClientService_pb2_grpc
|
|
5
|
+
import rs3.generatedFiles.ClientService_pb2 as ClientService_pb2
|
|
6
|
+
|
|
7
|
+
class Client:
|
|
8
|
+
def __init__(self, port):
|
|
9
|
+
self.compatibleProgramVersion = "4.042"
|
|
10
|
+
self.connection = self._establishConnection(port)
|
|
11
|
+
self.logger = logging.getLogger('Rocscience.RS3')
|
|
12
|
+
atexit.register(self.closeConnection)
|
|
13
|
+
|
|
14
|
+
clientService = ClientService_pb2_grpc.ClientServiceStub(self.channel)
|
|
15
|
+
request = ClientService_pb2._GetProgramVersionRequest()
|
|
16
|
+
versionCompatible = self.callFunction(clientService._GetProgramVersion, request).result
|
|
17
|
+
if self.compatibleProgramVersion != versionCompatible:
|
|
18
|
+
self.closeConnection()
|
|
19
|
+
raise RuntimeError(f"""
|
|
20
|
+
Library version is not compatible with the program version.
|
|
21
|
+
Please ensure the versions match by installing the correct version of the library or program.
|
|
22
|
+
Library version: {self.compatibleProgramVersion} Program version: find in help->about.
|
|
23
|
+
"""
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
def _establishConnection(self, port):
|
|
27
|
+
self.channel = grpc.insecure_channel(f"localhost:{port}")
|
|
28
|
+
|
|
29
|
+
def closeConnection(self):
|
|
30
|
+
if self.channel:
|
|
31
|
+
self.channel.close()
|
|
32
|
+
self.channel = None
|
|
33
|
+
|
|
34
|
+
def callFunction(self, function, request):
|
|
35
|
+
try:
|
|
36
|
+
response, call = function.with_call(request)
|
|
37
|
+
self._logMessages(call)
|
|
38
|
+
return response
|
|
39
|
+
except grpc.RpcError as e:
|
|
40
|
+
self.logger.exception("An exception was raised from the application.")
|
|
41
|
+
raise
|
|
42
|
+
|
|
43
|
+
def _logMessages(self, call):
|
|
44
|
+
if not call:
|
|
45
|
+
return
|
|
46
|
+
|
|
47
|
+
for key, value in call.trailing_metadata():
|
|
48
|
+
# Decode bytes to string if needed
|
|
49
|
+
if isinstance(value, bytes):
|
|
50
|
+
value = value.decode('utf-8')
|
|
51
|
+
|
|
52
|
+
if key == "warning-bin":
|
|
53
|
+
self.logger.warning(value)
|
|
54
|
+
if key == "info-bin":
|
|
55
|
+
self.logger.info(value)
|
|
56
|
+
if key == "debug-bin":
|
|
57
|
+
self.logger.debug(value)
|
rs3/_proxyObject.py
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# NO CHECKED-IN PROTOBUF GENCODE
|
|
4
|
+
# source: BFPCommonMessage.proto
|
|
5
|
+
# Protobuf Python Version: 5.29.0
|
|
6
|
+
"""Generated protocol buffer code."""
|
|
7
|
+
from google.protobuf import descriptor as _descriptor
|
|
8
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
9
|
+
from google.protobuf import runtime_version as _runtime_version
|
|
10
|
+
from google.protobuf import symbol_database as _symbol_database
|
|
11
|
+
from google.protobuf.internal import builder as _builder
|
|
12
|
+
_runtime_version.ValidateProtobufRuntimeVersion(
|
|
13
|
+
_runtime_version.Domain.PUBLIC,
|
|
14
|
+
5,
|
|
15
|
+
29,
|
|
16
|
+
0,
|
|
17
|
+
'',
|
|
18
|
+
'BFPCommonMessage.proto'
|
|
19
|
+
)
|
|
20
|
+
# @@protoc_insertion_point(imports)
|
|
21
|
+
|
|
22
|
+
_sym_db = _symbol_database.Default()
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16\x42\x46PCommonMessage.proto\x12\x10\x42\x46PCommonMessage\"\xeb\x01\n\x12\x45lementNodalValues\x12\x11\n\taxisForce\x18\x01 \x01(\x01\x12\x19\n\x11shearForceMinAxis\x18\x02 \x01(\x01\x12\x19\n\x11shearForceMaxAxis\x18\x03 \x01(\x01\x12\x15\n\rmomentMinAxis\x18\x04 \x01(\x01\x12\x15\n\rmomentMaxAxis\x18\x05 \x01(\x01\x12\x15\n\rdisplacementX\x18\x06 \x01(\x01\x12\x15\n\rdisplacementY\x18\x07 \x01(\x01\x12\x15\n\rdisplacementZ\x18\x08 \x01(\x01\x12\x19\n\x11totalDisplacement\x18\t \x01(\x01\"\xeb\x01\n\x14InterfaceNodalValues\x12\x12\n\nshearForce\x18\x01 \x01(\x01\x12\x1a\n\x12normalForceMinAxis\x18\x02 \x01(\x01\x12\x1a\n\x12normalForceMaxAxis\x18\x03 \x01(\x01\x12\x17\n\x0f\x63onfiningStress\x18\x04 \x01(\x01\x12\x19\n\x11rockDisplacementX\x18\x05 \x01(\x01\x12\x19\n\x11rockDisplacementY\x18\x06 \x01(\x01\x12\x19\n\x11rockDisplacementZ\x18\x07 \x01(\x01\x12\x1d\n\x15rockTotalDisplacement\x18\x08 \x01(\x01\x62\x06proto3')
|
|
28
|
+
|
|
29
|
+
_globals = globals()
|
|
30
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
31
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'BFPCommonMessage_pb2', _globals)
|
|
32
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
|
33
|
+
DESCRIPTOR._loaded_options = None
|
|
34
|
+
_globals['_ELEMENTNODALVALUES']._serialized_start=45
|
|
35
|
+
_globals['_ELEMENTNODALVALUES']._serialized_end=280
|
|
36
|
+
_globals['_INTERFACENODALVALUES']._serialized_start=283
|
|
37
|
+
_globals['_INTERFACENODALVALUES']._serialized_end=518
|
|
38
|
+
# @@protoc_insertion_point(module_scope)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
from google.protobuf import descriptor as _descriptor
|
|
2
|
+
from google.protobuf import message as _message
|
|
3
|
+
from typing import ClassVar as _ClassVar, Optional as _Optional
|
|
4
|
+
|
|
5
|
+
DESCRIPTOR: _descriptor.FileDescriptor
|
|
6
|
+
|
|
7
|
+
class ElementNodalValues(_message.Message):
|
|
8
|
+
__slots__ = ("axisForce", "shearForceMinAxis", "shearForceMaxAxis", "momentMinAxis", "momentMaxAxis", "displacementX", "displacementY", "displacementZ", "totalDisplacement")
|
|
9
|
+
AXISFORCE_FIELD_NUMBER: _ClassVar[int]
|
|
10
|
+
SHEARFORCEMINAXIS_FIELD_NUMBER: _ClassVar[int]
|
|
11
|
+
SHEARFORCEMAXAXIS_FIELD_NUMBER: _ClassVar[int]
|
|
12
|
+
MOMENTMINAXIS_FIELD_NUMBER: _ClassVar[int]
|
|
13
|
+
MOMENTMAXAXIS_FIELD_NUMBER: _ClassVar[int]
|
|
14
|
+
DISPLACEMENTX_FIELD_NUMBER: _ClassVar[int]
|
|
15
|
+
DISPLACEMENTY_FIELD_NUMBER: _ClassVar[int]
|
|
16
|
+
DISPLACEMENTZ_FIELD_NUMBER: _ClassVar[int]
|
|
17
|
+
TOTALDISPLACEMENT_FIELD_NUMBER: _ClassVar[int]
|
|
18
|
+
axisForce: float
|
|
19
|
+
shearForceMinAxis: float
|
|
20
|
+
shearForceMaxAxis: float
|
|
21
|
+
momentMinAxis: float
|
|
22
|
+
momentMaxAxis: float
|
|
23
|
+
displacementX: float
|
|
24
|
+
displacementY: float
|
|
25
|
+
displacementZ: float
|
|
26
|
+
totalDisplacement: float
|
|
27
|
+
def __init__(self, axisForce: _Optional[float] = ..., shearForceMinAxis: _Optional[float] = ..., shearForceMaxAxis: _Optional[float] = ..., momentMinAxis: _Optional[float] = ..., momentMaxAxis: _Optional[float] = ..., displacementX: _Optional[float] = ..., displacementY: _Optional[float] = ..., displacementZ: _Optional[float] = ..., totalDisplacement: _Optional[float] = ...) -> None: ...
|
|
28
|
+
|
|
29
|
+
class InterfaceNodalValues(_message.Message):
|
|
30
|
+
__slots__ = ("shearForce", "normalForceMinAxis", "normalForceMaxAxis", "confiningStress", "rockDisplacementX", "rockDisplacementY", "rockDisplacementZ", "rockTotalDisplacement")
|
|
31
|
+
SHEARFORCE_FIELD_NUMBER: _ClassVar[int]
|
|
32
|
+
NORMALFORCEMINAXIS_FIELD_NUMBER: _ClassVar[int]
|
|
33
|
+
NORMALFORCEMAXAXIS_FIELD_NUMBER: _ClassVar[int]
|
|
34
|
+
CONFININGSTRESS_FIELD_NUMBER: _ClassVar[int]
|
|
35
|
+
ROCKDISPLACEMENTX_FIELD_NUMBER: _ClassVar[int]
|
|
36
|
+
ROCKDISPLACEMENTY_FIELD_NUMBER: _ClassVar[int]
|
|
37
|
+
ROCKDISPLACEMENTZ_FIELD_NUMBER: _ClassVar[int]
|
|
38
|
+
ROCKTOTALDISPLACEMENT_FIELD_NUMBER: _ClassVar[int]
|
|
39
|
+
shearForce: float
|
|
40
|
+
normalForceMinAxis: float
|
|
41
|
+
normalForceMaxAxis: float
|
|
42
|
+
confiningStress: float
|
|
43
|
+
rockDisplacementX: float
|
|
44
|
+
rockDisplacementY: float
|
|
45
|
+
rockDisplacementZ: float
|
|
46
|
+
rockTotalDisplacement: float
|
|
47
|
+
def __init__(self, shearForce: _Optional[float] = ..., normalForceMinAxis: _Optional[float] = ..., normalForceMaxAxis: _Optional[float] = ..., confiningStress: _Optional[float] = ..., rockDisplacementX: _Optional[float] = ..., rockDisplacementY: _Optional[float] = ..., rockDisplacementZ: _Optional[float] = ..., rockTotalDisplacement: _Optional[float] = ...) -> None: ...
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
|
|
2
|
+
"""Client and server classes corresponding to protobuf-defined services."""
|
|
3
|
+
import grpc
|
|
4
|
+
import warnings
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
GRPC_GENERATED_VERSION = '1.70.0'
|
|
8
|
+
GRPC_VERSION = grpc.__version__
|
|
9
|
+
_version_not_supported = False
|
|
10
|
+
|
|
11
|
+
try:
|
|
12
|
+
from grpc._utilities import first_version_is_lower
|
|
13
|
+
_version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
|
|
14
|
+
except ImportError:
|
|
15
|
+
_version_not_supported = True
|
|
16
|
+
|
|
17
|
+
if _version_not_supported:
|
|
18
|
+
raise RuntimeError(
|
|
19
|
+
f'The grpc package installed is at version {GRPC_VERSION},'
|
|
20
|
+
+ f' but the generated code in BFPCommonMessage_pb2_grpc.py depends on'
|
|
21
|
+
+ f' grpcio>={GRPC_GENERATED_VERSION}.'
|
|
22
|
+
+ f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
|
|
23
|
+
+ f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
|
|
24
|
+
)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# NO CHECKED-IN PROTOBUF GENCODE
|
|
4
|
+
# source: BeamDataService.proto
|
|
5
|
+
# Protobuf Python Version: 5.29.0
|
|
6
|
+
"""Generated protocol buffer code."""
|
|
7
|
+
from google.protobuf import descriptor as _descriptor
|
|
8
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
9
|
+
from google.protobuf import runtime_version as _runtime_version
|
|
10
|
+
from google.protobuf import symbol_database as _symbol_database
|
|
11
|
+
from google.protobuf.internal import builder as _builder
|
|
12
|
+
_runtime_version.ValidateProtobufRuntimeVersion(
|
|
13
|
+
_runtime_version.Domain.PUBLIC,
|
|
14
|
+
5,
|
|
15
|
+
29,
|
|
16
|
+
0,
|
|
17
|
+
'',
|
|
18
|
+
'BeamDataService.proto'
|
|
19
|
+
)
|
|
20
|
+
# @@protoc_insertion_point(imports)
|
|
21
|
+
|
|
22
|
+
_sym_db = _symbol_database.Default()
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
import CommonMessages_pb2 as CommonMessages__pb2
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x42\x65\x61mDataService.proto\x12\x19\x42\x65\x61mDataServiceDefinition\x1a\x14\x43ommonMessages.proto2\xef\x02\n\x0f\x42\x65\x61mDataService\x12V\n\x0bSetProperty\x12\".CommonMessages.SetPropertyRequest\x1a#.CommonMessages.SetPropertyResponse\x12V\n\x0bGetProperty\x12\".CommonMessages.GetPropertyRequest\x1a#.CommonMessages.GetPropertyResponse\x12U\n\x10SetColorProperty\x12\x1f.CommonMessages.SetColorRequest\x1a .CommonMessages.SetColorResponse\x12U\n\x10GetColorProperty\x12\x1f.CommonMessages.GetColorRequest\x1a .CommonMessages.GetColorResponseb\x06proto3')
|
|
29
|
+
|
|
30
|
+
_globals = globals()
|
|
31
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
32
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'BeamDataService_pb2', _globals)
|
|
33
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
|
34
|
+
DESCRIPTOR._loaded_options = None
|
|
35
|
+
_globals['_BEAMDATASERVICE']._serialized_start=75
|
|
36
|
+
_globals['_BEAMDATASERVICE']._serialized_end=442
|
|
37
|
+
# @@protoc_insertion_point(module_scope)
|