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.
Files changed (393) hide show
  1. rs3/ApplicationManager.py +77 -0
  2. rs3/ColorPicker.py +123 -0
  3. rs3/CommonEnums.py +16 -0
  4. rs3/Compute.py +105 -0
  5. rs3/ExternalVolume.py +48 -0
  6. rs3/Geometry.py +74 -0
  7. rs3/Model.py +795 -0
  8. rs3/ModelEnums.py +9 -0
  9. rs3/RS3Modeler.py +109 -0
  10. rs3/Restraints.py +91 -0
  11. rs3/Selection.py +123 -0
  12. rs3/__init__.py +18 -0
  13. rs3/_client.py +57 -0
  14. rs3/_proxyObject.py +5 -0
  15. rs3/generatedFiles/BFPCommonMessage_pb2.py +38 -0
  16. rs3/generatedFiles/BFPCommonMessage_pb2.pyi +47 -0
  17. rs3/generatedFiles/BFPCommonMessage_pb2_grpc.py +24 -0
  18. rs3/generatedFiles/BeamDataService_pb2.py +37 -0
  19. rs3/generatedFiles/BeamDataService_pb2.pyi +5 -0
  20. rs3/generatedFiles/BeamDataService_pb2_grpc.py +226 -0
  21. rs3/generatedFiles/BeamService_pb2.py +37 -0
  22. rs3/generatedFiles/BeamService_pb2.pyi +5 -0
  23. rs3/generatedFiles/BeamService_pb2_grpc.py +140 -0
  24. rs3/generatedFiles/BeamStageFactorService_pb2.py +37 -0
  25. rs3/generatedFiles/BeamStageFactorService_pb2.pyi +5 -0
  26. rs3/generatedFiles/BeamStageFactorService_pb2_grpc.py +140 -0
  27. rs3/generatedFiles/BeamsResultsQueryService_pb2.py +50 -0
  28. rs3/generatedFiles/BeamsResultsQueryService_pb2.pyi +48 -0
  29. rs3/generatedFiles/BeamsResultsQueryService_pb2_grpc.py +141 -0
  30. rs3/generatedFiles/BoltDataService_pb2.py +37 -0
  31. rs3/generatedFiles/BoltDataService_pb2.pyi +5 -0
  32. rs3/generatedFiles/BoltDataService_pb2_grpc.py +226 -0
  33. rs3/generatedFiles/BoltService_pb2.py +37 -0
  34. rs3/generatedFiles/BoltService_pb2.pyi +5 -0
  35. rs3/generatedFiles/BoltService_pb2_grpc.py +140 -0
  36. rs3/generatedFiles/BoltsResultsQueryService_pb2.py +51 -0
  37. rs3/generatedFiles/BoltsResultsQueryService_pb2.pyi +75 -0
  38. rs3/generatedFiles/BoltsResultsQueryService_pb2_grpc.py +141 -0
  39. rs3/generatedFiles/ClientService_pb2.py +40 -0
  40. rs3/generatedFiles/ClientService_pb2.pyi +15 -0
  41. rs3/generatedFiles/ClientService_pb2_grpc.py +97 -0
  42. rs3/generatedFiles/CommonGeometryMessages_pb2.py +52 -0
  43. rs3/generatedFiles/CommonGeometryMessages_pb2.pyi +92 -0
  44. rs3/generatedFiles/CommonGeometryMessages_pb2_grpc.py +24 -0
  45. rs3/generatedFiles/CommonMessages_pb2.py +66 -0
  46. rs3/generatedFiles/CommonMessages_pb2.pyi +145 -0
  47. rs3/generatedFiles/CommonMessages_pb2_grpc.py +24 -0
  48. rs3/generatedFiles/CompositeLinerDataService_pb2.py +47 -0
  49. rs3/generatedFiles/CompositeLinerDataService_pb2.pyi +51 -0
  50. rs3/generatedFiles/CompositeLinerDataService_pb2_grpc.py +227 -0
  51. rs3/generatedFiles/CompositeLinerResultsQueryService_pb2.py +63 -0
  52. rs3/generatedFiles/CompositeLinerResultsQueryService_pb2.pyi +139 -0
  53. rs3/generatedFiles/CompositeLinerResultsQueryService_pb2_grpc.py +314 -0
  54. rs3/generatedFiles/CompositeLinerService_pb2.py +37 -0
  55. rs3/generatedFiles/CompositeLinerService_pb2.pyi +5 -0
  56. rs3/generatedFiles/CompositeLinerService_pb2_grpc.py +140 -0
  57. rs3/generatedFiles/ComputeService_pb2.py +48 -0
  58. rs3/generatedFiles/ComputeService_pb2.pyi +56 -0
  59. rs3/generatedFiles/ComputeService_pb2_grpc.py +147 -0
  60. rs3/generatedFiles/ExternalVolumesService_pb2.py +45 -0
  61. rs3/generatedFiles/ExternalVolumesService_pb2.pyi +34 -0
  62. rs3/generatedFiles/ExternalVolumesService_pb2_grpc.py +270 -0
  63. rs3/generatedFiles/FieldStressService_pb2.py +37 -0
  64. rs3/generatedFiles/FieldStressService_pb2.pyi +5 -0
  65. rs3/generatedFiles/FieldStressService_pb2_grpc.py +140 -0
  66. rs3/generatedFiles/FieldStressSourceService_pb2.py +85 -0
  67. rs3/generatedFiles/FieldStressSourceService_pb2.pyi +182 -0
  68. rs3/generatedFiles/FieldStressSourceService_pb2_grpc.py +657 -0
  69. rs3/generatedFiles/GaussPointFailureMessage_pb2.py +37 -0
  70. rs3/generatedFiles/GaussPointFailureMessage_pb2.pyi +14 -0
  71. rs3/generatedFiles/GaussPointFailureMessage_pb2_grpc.py +24 -0
  72. rs3/generatedFiles/HydraulicStageFactorService_pb2.py +45 -0
  73. rs3/generatedFiles/HydraulicStageFactorService_pb2.pyi +36 -0
  74. rs3/generatedFiles/HydraulicStageFactorService_pb2_grpc.py +227 -0
  75. rs3/generatedFiles/JointDataService_pb2.py +45 -0
  76. rs3/generatedFiles/JointDataService_pb2.pyi +30 -0
  77. rs3/generatedFiles/JointDataService_pb2_grpc.py +313 -0
  78. rs3/generatedFiles/JointResultsQueryService_pb2.py +54 -0
  79. rs3/generatedFiles/JointResultsQueryService_pb2.pyi +92 -0
  80. rs3/generatedFiles/JointResultsQueryService_pb2_grpc.py +141 -0
  81. rs3/generatedFiles/JointService_pb2.py +45 -0
  82. rs3/generatedFiles/JointService_pb2.pyi +30 -0
  83. rs3/generatedFiles/JointService_pb2_grpc.py +227 -0
  84. rs3/generatedFiles/JointStageFactorService_pb2.py +37 -0
  85. rs3/generatedFiles/JointStageFactorService_pb2.pyi +5 -0
  86. rs3/generatedFiles/JointStageFactorService_pb2_grpc.py +140 -0
  87. rs3/generatedFiles/LinerDataService_pb2.py +37 -0
  88. rs3/generatedFiles/LinerDataService_pb2.pyi +5 -0
  89. rs3/generatedFiles/LinerDataService_pb2_grpc.py +226 -0
  90. rs3/generatedFiles/LinerService_pb2.py +37 -0
  91. rs3/generatedFiles/LinerService_pb2.pyi +5 -0
  92. rs3/generatedFiles/LinerService_pb2_grpc.py +140 -0
  93. rs3/generatedFiles/LinerStageFactorService_pb2.py +37 -0
  94. rs3/generatedFiles/LinerStageFactorService_pb2.pyi +5 -0
  95. rs3/generatedFiles/LinerStageFactorService_pb2_grpc.py +140 -0
  96. rs3/generatedFiles/MaterialDataService_pb2.py +37 -0
  97. rs3/generatedFiles/MaterialDataService_pb2.pyi +5 -0
  98. rs3/generatedFiles/MaterialDataService_pb2_grpc.py +226 -0
  99. rs3/generatedFiles/MaterialDatumService_pb2.py +45 -0
  100. rs3/generatedFiles/MaterialDatumService_pb2.pyi +38 -0
  101. rs3/generatedFiles/MaterialDatumService_pb2_grpc.py +140 -0
  102. rs3/generatedFiles/MaterialHydraulicDataService_pb2.py +93 -0
  103. rs3/generatedFiles/MaterialHydraulicDataService_pb2.pyi +193 -0
  104. rs3/generatedFiles/MaterialHydraulicDataService_pb2_grpc.py +829 -0
  105. rs3/generatedFiles/MaterialHydraulicModelService_pb2.py +55 -0
  106. rs3/generatedFiles/MaterialHydraulicModelService_pb2.pyi +79 -0
  107. rs3/generatedFiles/MaterialHydraulicModelService_pb2_grpc.py +313 -0
  108. rs3/generatedFiles/MaterialInitialConditionsService_pb2.py +37 -0
  109. rs3/generatedFiles/MaterialInitialConditionsService_pb2.pyi +5 -0
  110. rs3/generatedFiles/MaterialInitialConditionsService_pb2_grpc.py +140 -0
  111. rs3/generatedFiles/MaterialJointService_pb2.py +49 -0
  112. rs3/generatedFiles/MaterialJointService_pb2.pyi +52 -0
  113. rs3/generatedFiles/MaterialJointService_pb2_grpc.py +183 -0
  114. rs3/generatedFiles/MaterialJointSetSlipCriterionService_pb2.py +69 -0
  115. rs3/generatedFiles/MaterialJointSetSlipCriterionService_pb2.pyi +130 -0
  116. rs3/generatedFiles/MaterialJointSetSlipCriterionService_pb2_grpc.py +398 -0
  117. rs3/generatedFiles/MaterialJointStageFactorService_pb2.py +45 -0
  118. rs3/generatedFiles/MaterialJointStageFactorService_pb2.pyi +42 -0
  119. rs3/generatedFiles/MaterialJointStageFactorService_pb2_grpc.py +140 -0
  120. rs3/generatedFiles/MaterialStageFactorsService_pb2.py +37 -0
  121. rs3/generatedFiles/MaterialStageFactorsService_pb2.pyi +5 -0
  122. rs3/generatedFiles/MaterialStageFactorsService_pb2_grpc.py +140 -0
  123. rs3/generatedFiles/MaterialStiffnessFormulaService_pb2.py +47 -0
  124. rs3/generatedFiles/MaterialStiffnessFormulaService_pb2.pyi +54 -0
  125. rs3/generatedFiles/MaterialStiffnessFormulaService_pb2_grpc.py +140 -0
  126. rs3/generatedFiles/MaterialStiffnessService_pb2.py +53 -0
  127. rs3/generatedFiles/MaterialStiffnessService_pb2.pyi +66 -0
  128. rs3/generatedFiles/MaterialStiffnessService_pb2_grpc.py +313 -0
  129. rs3/generatedFiles/MaterialStrengthService_pb2.py +105 -0
  130. rs3/generatedFiles/MaterialStrengthService_pb2.pyi +243 -0
  131. rs3/generatedFiles/MaterialStrengthService_pb2_grpc.py +833 -0
  132. rs3/generatedFiles/MaterialUnsaturatedSoilDataService_pb2.py +47 -0
  133. rs3/generatedFiles/MaterialUnsaturatedSoilDataService_pb2.pyi +43 -0
  134. rs3/generatedFiles/MaterialUnsaturatedSoilDataService_pb2_grpc.py +228 -0
  135. rs3/generatedFiles/MeshSettingsService_pb2.py +41 -0
  136. rs3/generatedFiles/MeshSettingsService_pb2.pyi +16 -0
  137. rs3/generatedFiles/MeshSettingsService_pb2_grpc.py +184 -0
  138. rs3/generatedFiles/ModelFunctionService_pb2.py +119 -0
  139. rs3/generatedFiles/ModelFunctionService_pb2.pyi +331 -0
  140. rs3/generatedFiles/ModelFunctionService_pb2_grpc.py +871 -0
  141. rs3/generatedFiles/ModelService_pb2.py +342 -0
  142. rs3/generatedFiles/ModelService_pb2.pyi +962 -0
  143. rs3/generatedFiles/ModelService_pb2_grpc.py +3322 -0
  144. rs3/generatedFiles/PileDataService_pb2.py +55 -0
  145. rs3/generatedFiles/PileDataService_pb2.pyi +63 -0
  146. rs3/generatedFiles/PileDataService_pb2_grpc.py +399 -0
  147. rs3/generatedFiles/PileForepoleResultsQueryService_pb2.py +51 -0
  148. rs3/generatedFiles/PileForepoleResultsQueryService_pb2.pyi +63 -0
  149. rs3/generatedFiles/PileForepoleResultsQueryService_pb2_grpc.py +141 -0
  150. rs3/generatedFiles/PileStageFactorService_pb2.py +37 -0
  151. rs3/generatedFiles/PileStageFactorService_pb2.pyi +5 -0
  152. rs3/generatedFiles/PileStageFactorService_pb2_grpc.py +140 -0
  153. rs3/generatedFiles/PlainStrandCableBoltService_pb2.py +44 -0
  154. rs3/generatedFiles/PlainStrandCableBoltService_pb2.pyi +30 -0
  155. rs3/generatedFiles/PlainStrandCableBoltService_pb2_grpc.py +140 -0
  156. rs3/generatedFiles/ProjectSettingsDataService_pb2.py +69 -0
  157. rs3/generatedFiles/ProjectSettingsDataService_pb2.pyi +119 -0
  158. rs3/generatedFiles/ProjectSettingsDataService_pb2_grpc.py +786 -0
  159. rs3/generatedFiles/RFCApplicationService_pb2.py +34 -0
  160. rs3/generatedFiles/RFCApplicationService_pb2.pyi +27 -0
  161. rs3/generatedFiles/RFCApplicationService_pb2_grpc.py +145 -0
  162. rs3/generatedFiles/RS3ModelerService_pb2.py +50 -0
  163. rs3/generatedFiles/RS3ModelerService_pb2.pyi +45 -0
  164. rs3/generatedFiles/RS3ModelerService_pb2_grpc.py +183 -0
  165. rs3/generatedFiles/RelativeStageFactorService_pb2.py +40 -0
  166. rs3/generatedFiles/RelativeStageFactorService_pb2.pyi +17 -0
  167. rs3/generatedFiles/RelativeStageFactorService_pb2_grpc.py +97 -0
  168. rs3/generatedFiles/RestraintsService_pb2.py +62 -0
  169. rs3/generatedFiles/RestraintsService_pb2.pyi +84 -0
  170. rs3/generatedFiles/RestraintsService_pb2_grpc.py +312 -0
  171. rs3/generatedFiles/ResultsQueryCommonMessage_pb2.py +56 -0
  172. rs3/generatedFiles/ResultsQueryCommonMessage_pb2.pyi +85 -0
  173. rs3/generatedFiles/ResultsQueryCommonMessage_pb2_grpc.py +24 -0
  174. rs3/generatedFiles/ResultsQueryService_pb2.py +87 -0
  175. rs3/generatedFiles/ResultsQueryService_pb2.pyi +185 -0
  176. rs3/generatedFiles/ResultsQueryService_pb2_grpc.py +745 -0
  177. rs3/generatedFiles/SelectionService_pb2.py +49 -0
  178. rs3/generatedFiles/SelectionService_pb2.pyi +51 -0
  179. rs3/generatedFiles/SelectionService_pb2_grpc.py +269 -0
  180. rs3/generatedFiles/SolidsResultsQueryService_pb2.py +93 -0
  181. rs3/generatedFiles/SolidsResultsQueryService_pb2.pyi +213 -0
  182. rs3/generatedFiles/SolidsResultsQueryService_pb2_grpc.py +195 -0
  183. rs3/generatedFiles/StageFactorService_pb2.py +58 -0
  184. rs3/generatedFiles/StageFactorService_pb2.pyi +79 -0
  185. rs3/generatedFiles/StageFactorService_pb2_grpc.py +226 -0
  186. rs3/generatedFiles/StiffnessStageFactorService_pb2.py +37 -0
  187. rs3/generatedFiles/StiffnessStageFactorService_pb2.pyi +5 -0
  188. rs3/generatedFiles/StiffnessStageFactorService_pb2_grpc.py +140 -0
  189. rs3/generatedFiles/StrengthStageFactorService_pb2.py +37 -0
  190. rs3/generatedFiles/StrengthStageFactorService_pb2.pyi +5 -0
  191. rs3/generatedFiles/StrengthStageFactorService_pb2_grpc.py +140 -0
  192. rs3/generatedFiles/WaterByLocationDataService_pb2.py +61 -0
  193. rs3/generatedFiles/WaterByLocationDataService_pb2.pyi +95 -0
  194. rs3/generatedFiles/WaterByLocationDataService_pb2_grpc.py +312 -0
  195. rs3/generatedFiles/WaterPressureGridDataService_pb2.py +63 -0
  196. rs3/generatedFiles/WaterPressureGridDataService_pb2.pyi +107 -0
  197. rs3/generatedFiles/WaterPressureGridDataService_pb2_grpc.py +312 -0
  198. rs3/generatedFiles/__init__.py +3 -0
  199. rs3/loadings/LoadingEnums.py +6 -0
  200. rs3/loadings/Loadings.py +15 -0
  201. rs3/loadings/__init__.py +0 -0
  202. rs3/loadings/fieldStress/AdvancedConstant.py +115 -0
  203. rs3/loadings/fieldStress/AdvancedGravity.py +176 -0
  204. rs3/loadings/fieldStress/Constant.py +119 -0
  205. rs3/loadings/fieldStress/FieldStress.py +38 -0
  206. rs3/loadings/fieldStress/Gravity.py +206 -0
  207. rs3/loadings/fieldStress/_PropertyAccessor.py +41 -0
  208. rs3/loadings/fieldStress/__init__.py +0 -0
  209. rs3/mesh/Graded.py +59 -0
  210. rs3/mesh/Mesh.py +50 -0
  211. rs3/mesh/MeshEnums.py +16 -0
  212. rs3/mesh/Uniform.py +35 -0
  213. rs3/mesh/_PropertyAccessor.py +10 -0
  214. rs3/mesh/__init__.py +0 -0
  215. rs3/projectSettings/Dynamic.py +110 -0
  216. rs3/projectSettings/Groundwater.py +118 -0
  217. rs3/projectSettings/ProjectSettingEnums.py +108 -0
  218. rs3/projectSettings/ProjectSettings.py +43 -0
  219. rs3/projectSettings/ShearStrengthReduction.py +130 -0
  220. rs3/projectSettings/SolverOptions.py +88 -0
  221. rs3/projectSettings/Stages.py +162 -0
  222. rs3/projectSettings/StressAnalysis.py +183 -0
  223. rs3/projectSettings/Units.py +82 -0
  224. rs3/projectSettings/_PropertyAccessor.py +133 -0
  225. rs3/projectSettings/__init__.py +0 -0
  226. rs3/properties/CustomHydraulicModel.py +129 -0
  227. rs3/properties/DiscreteFunction.py +147 -0
  228. rs3/properties/GeneralizedAnisotropicFunction.py +98 -0
  229. rs3/properties/IPropertyGroupAccessors.py +12 -0
  230. rs3/properties/PropertyEnums.py +387 -0
  231. rs3/properties/ShearNormalFunction.py +94 -0
  232. rs3/properties/SnowdenStrengthFunction.py +115 -0
  233. rs3/properties/_PropertyAccessor.py +111 -0
  234. rs3/properties/__init__.py +0 -0
  235. rs3/properties/beam/Beam.py +86 -0
  236. rs3/properties/beam/BeamCommon.py +175 -0
  237. rs3/properties/beam/Standard.py +97 -0
  238. rs3/properties/beam/Truss.py +23 -0
  239. rs3/properties/beam/_PropertyAccessor.py +9 -0
  240. rs3/properties/beam/__init__.py +0 -0
  241. rs3/properties/bolt/Bolt.py +81 -0
  242. rs3/properties/bolt/EndAnchored.py +77 -0
  243. rs3/properties/bolt/FullyBonded.py +78 -0
  244. rs3/properties/bolt/PlainStrandCable.py +151 -0
  245. rs3/properties/bolt/Swellex.py +106 -0
  246. rs3/properties/bolt/Tieback.py +176 -0
  247. rs3/properties/bolt/_PropertyAccessor.py +7 -0
  248. rs3/properties/bolt/__init__.py +0 -0
  249. rs3/properties/groundwater/WaterByLocation.py +83 -0
  250. rs3/properties/groundwater/WaterGrid.py +120 -0
  251. rs3/properties/groundwater/_PropertyAccessor.py +36 -0
  252. rs3/properties/groundwater/__init__.py +0 -0
  253. rs3/properties/joint/BartonBandis.py +118 -0
  254. rs3/properties/joint/GeosyntheticHyperbolic.py +158 -0
  255. rs3/properties/joint/Joint.py +176 -0
  256. rs3/properties/joint/MaterialDependent.py +107 -0
  257. rs3/properties/joint/MohrCoulomb.py +169 -0
  258. rs3/properties/joint/NoneSlip.py +68 -0
  259. rs3/properties/joint/_PropertyAccessor.py +9 -0
  260. rs3/properties/joint/__init__.py +0 -0
  261. rs3/properties/liner/Geosynthetic.py +85 -0
  262. rs3/properties/liner/Liner.py +83 -0
  263. rs3/properties/liner/ReinforcedConcrete.py +216 -0
  264. rs3/properties/liner/Standard.py +183 -0
  265. rs3/properties/liner/_PropertyAccessor.py +7 -0
  266. rs3/properties/liner/__init__.py +0 -0
  267. rs3/properties/liningComposition/LiningComposition.py +244 -0
  268. rs3/properties/liningComposition/_PropertyAccessor.py +7 -0
  269. rs3/properties/liningComposition/__init__.py +0 -0
  270. rs3/properties/material/Material.py +74 -0
  271. rs3/properties/material/__init__.py +0 -0
  272. rs3/properties/material/constitutiveModel/AnisotropicLinear.py +149 -0
  273. rs3/properties/material/constitutiveModel/AnisotropicLinearPlanarBase.py +72 -0
  274. rs3/properties/material/constitutiveModel/BarcelonaBasic.py +158 -0
  275. rs3/properties/material/constitutiveModel/BartonBandis.py +77 -0
  276. rs3/properties/material/constitutiveModel/BaseConstitutiveModel.py +11 -0
  277. rs3/properties/material/constitutiveModel/BoundingSurfacePlasticity.py +88 -0
  278. rs3/properties/material/constitutiveModel/CamClay.py +144 -0
  279. rs3/properties/material/constitutiveModel/ChSoil.py +111 -0
  280. rs3/properties/material/constitutiveModel/ConstitutiveModel.py +87 -0
  281. rs3/properties/material/constitutiveModel/CySoil.py +137 -0
  282. rs3/properties/material/constitutiveModel/DiscreteFunction.py +39 -0
  283. rs3/properties/material/constitutiveModel/DoubleYield.py +130 -0
  284. rs3/properties/material/constitutiveModel/DruckerPrager.py +136 -0
  285. rs3/properties/material/constitutiveModel/GeneralizedAnisotropic.py +39 -0
  286. rs3/properties/material/constitutiveModel/GeneralizedHoekBrown.py +226 -0
  287. rs3/properties/material/constitutiveModel/HardeningSoil.py +156 -0
  288. rs3/properties/material/constitutiveModel/HardeningSoilWithSmallStrain.py +170 -0
  289. rs3/properties/material/constitutiveModel/HoekBrown.py +125 -0
  290. rs3/properties/material/constitutiveModel/Hyperbolic.py +77 -0
  291. rs3/properties/material/constitutiveModel/JointedGeneralizedHoekBrown.py +184 -0
  292. rs3/properties/material/constitutiveModel/JointedMohrCoulomb.py +173 -0
  293. rs3/properties/material/constitutiveModel/ManzariAndDafalias.py +148 -0
  294. rs3/properties/material/constitutiveModel/ModifiedCamClay.py +11 -0
  295. rs3/properties/material/constitutiveModel/MohrCoulomb.py +147 -0
  296. rs3/properties/material/constitutiveModel/MohrCoulombUnsaturatedZoneCalculations.py +80 -0
  297. rs3/properties/material/constitutiveModel/MohrCoulombWithCap.py +154 -0
  298. rs3/properties/material/constitutiveModel/Norsand.py +146 -0
  299. rs3/properties/material/constitutiveModel/PowerCurve.py +119 -0
  300. rs3/properties/material/constitutiveModel/Shansep.py +214 -0
  301. rs3/properties/material/constitutiveModel/ShearNormalFunction.py +34 -0
  302. rs3/properties/material/constitutiveModel/SnowdenAnisotropicLinear.py +108 -0
  303. rs3/properties/material/constitutiveModel/SoftSoil.py +104 -0
  304. rs3/properties/material/constitutiveModel/SoftSoilCreep.py +111 -0
  305. rs3/properties/material/constitutiveModel/SofteningHardening.py +214 -0
  306. rs3/properties/material/constitutiveModel/SwellingRock.py +202 -0
  307. rs3/properties/material/constitutiveModel/UnsaturatedZoneCalculations.py +138 -0
  308. rs3/properties/material/constitutiveModel/VerticalStressRatio.py +113 -0
  309. rs3/properties/material/constitutiveModel/_PropertyAccessor.py +96 -0
  310. rs3/properties/material/constitutiveModel/__init__.py +0 -0
  311. rs3/properties/material/constitutiveModel/jointOption/BartonBandis.py +109 -0
  312. rs3/properties/material/constitutiveModel/jointOption/MaterialJoint.py +48 -0
  313. rs3/properties/material/constitutiveModel/jointOption/MaterialJointOptions.py +32 -0
  314. rs3/properties/material/constitutiveModel/jointOption/MohrCoulomb.py +142 -0
  315. rs3/properties/material/constitutiveModel/jointOption/PlaneOrientationBase.py +92 -0
  316. rs3/properties/material/constitutiveModel/jointOption/SimpleHyperbolic.py +112 -0
  317. rs3/properties/material/constitutiveModel/jointOption/_PropertyAccessor.py +61 -0
  318. rs3/properties/material/constitutiveModel/jointOption/__init__.py +0 -0
  319. rs3/properties/material/constitutiveModel/stiffness/BaseStiffness.py +11 -0
  320. rs3/properties/material/constitutiveModel/stiffness/DuncanChangHyperbolic.py +128 -0
  321. rs3/properties/material/constitutiveModel/stiffness/GeneralizedHoekBrownEstimation.py +50 -0
  322. rs3/properties/material/constitutiveModel/stiffness/LinearIsotropic.py +106 -0
  323. rs3/properties/material/constitutiveModel/stiffness/NonlinearIsotropic.py +104 -0
  324. rs3/properties/material/constitutiveModel/stiffness/Orthotropic.py +296 -0
  325. rs3/properties/material/constitutiveModel/stiffness/TransverselyIsotropic.py +186 -0
  326. rs3/properties/material/constitutiveModel/stiffness/_PropertyAccessor.py +33 -0
  327. rs3/properties/material/constitutiveModel/stiffness/__init__.py +0 -0
  328. rs3/properties/material/constitutiveModel/stiffness/formula/Formula1.py +96 -0
  329. rs3/properties/material/constitutiveModel/stiffness/formula/Formula2.py +136 -0
  330. rs3/properties/material/constitutiveModel/stiffness/formula/Formula3.py +113 -0
  331. rs3/properties/material/constitutiveModel/stiffness/formula/_PropertyAccessor.py +37 -0
  332. rs3/properties/material/constitutiveModel/stiffness/formula/__init__.py +0 -0
  333. rs3/properties/material/datum/CohesionDatumDependency.py +99 -0
  334. rs3/properties/material/datum/Datum.py +23 -0
  335. rs3/properties/material/datum/FrictionAngleDatumDependency.py +99 -0
  336. rs3/properties/material/datum/YoungsModulusDatumDependency.py +78 -0
  337. rs3/properties/material/datum/_PropertyAccessor.py +26 -0
  338. rs3/properties/material/datum/__init__.py +0 -0
  339. rs3/properties/material/hydraulic/FEAGroundwater/Brooks.py +71 -0
  340. rs3/properties/material/hydraulic/FEAGroundwater/Custom.py +79 -0
  341. rs3/properties/material/hydraulic/FEAGroundwater/FEAGroundwater.py +85 -0
  342. rs3/properties/material/hydraulic/FEAGroundwater/Fredlund.py +82 -0
  343. rs3/properties/material/hydraulic/FEAGroundwater/Gardner.py +72 -0
  344. rs3/properties/material/hydraulic/FEAGroundwater/HydraulicMethodVectors.py +97 -0
  345. rs3/properties/material/hydraulic/FEAGroundwater/HydraulicParametersCommon.py +157 -0
  346. rs3/properties/material/hydraulic/FEAGroundwater/Simple.py +37 -0
  347. rs3/properties/material/hydraulic/FEAGroundwater/VanGenuchten.py +94 -0
  348. rs3/properties/material/hydraulic/FEAGroundwater/_PropertyAccessor.py +16 -0
  349. rs3/properties/material/hydraulic/FEAGroundwater/__init__.py +0 -0
  350. rs3/properties/material/hydraulic/Hydraulic.py +111 -0
  351. rs3/properties/material/hydraulic/PhreaticConditions.py +37 -0
  352. rs3/properties/material/hydraulic/StaticGroundwater.py +100 -0
  353. rs3/properties/material/hydraulic/WaterConditions.py +110 -0
  354. rs3/properties/material/hydraulic/_PropertyAccessor.py +31 -0
  355. rs3/properties/material/hydraulic/__init__.py +0 -0
  356. rs3/properties/material/initialConditions/InitialConditions.py +108 -0
  357. rs3/properties/material/initialConditions/_PropertyAccessor.py +11 -0
  358. rs3/properties/material/initialConditions/__init__.py +0 -0
  359. rs3/properties/material/stageFactors/StageFactors.py +77 -0
  360. rs3/properties/material/stageFactors/_PropertyAccessor.py +7 -0
  361. rs3/properties/material/stageFactors/__init__.py +0 -0
  362. rs3/properties/pile/EndCondition.py +109 -0
  363. rs3/properties/pile/Linear.py +69 -0
  364. rs3/properties/pile/MohrCoulomb.py +123 -0
  365. rs3/properties/pile/MultiLinear.py +70 -0
  366. rs3/properties/pile/Pile.py +108 -0
  367. rs3/properties/pile/PileCommon.py +99 -0
  368. rs3/properties/pile/_PropertyAccessor.py +9 -0
  369. rs3/properties/pile/__init__.py +0 -0
  370. rs3/properties/stageFactors/IStageFactorBase.py +10 -0
  371. rs3/properties/stageFactors/StageFactorBaseInterfaces.py +24 -0
  372. rs3/properties/stageFactors/StageFactorInterfaces.py +70 -0
  373. rs3/properties/stageFactors/_StageFactorInterface.py +48 -0
  374. rs3/properties/stageFactors/_StageFactorPropertyAccessor.py +18 -0
  375. rs3/properties/stageFactors/__init__.py +0 -0
  376. rs3/results/BeamResults.py +181 -0
  377. rs3/results/BoltResults.py +214 -0
  378. rs3/results/CompositeLinerResults.py +374 -0
  379. rs3/results/JointResults.py +160 -0
  380. rs3/results/PileForepoleResults.py +219 -0
  381. rs3/results/ResultEnums.py +146 -0
  382. rs3/results/Results.py +661 -0
  383. rs3/results/ResultsCommon.py +66 -0
  384. rs3/results/SolidElementResults.py +175 -0
  385. rs3/results/SolidNodalResults.py +248 -0
  386. rs3/results/SolidResults.py +206 -0
  387. rs3/results/YieldedElement.py +33 -0
  388. rs3/results/__init__.py +0 -0
  389. rs3scripting-4.42.0.dist-info/METADATA +70 -0
  390. rs3scripting-4.42.0.dist-info/RECORD +393 -0
  391. rs3scripting-4.42.0.dist-info/WHEEL +5 -0
  392. rs3scripting-4.42.0.dist-info/licenses/License.txt +20 -0
  393. rs3scripting-4.42.0.dist-info/top_level.txt +1 -0
rs3/ModelEnums.py ADDED
@@ -0,0 +1,9 @@
1
+ from enum import Enum
2
+
3
+ class ComputeType(Enum):
4
+ ALL = "ALL"
5
+ GROUNDWATER_ONLY = "GW_ONLY"
6
+
7
+ class ComputeStart(Enum):
8
+ AFTER_LAST_COMPUTED_STAGE = "AFTER_LAST_COMPUTED_STAGE"
9
+ FROM_BEGINNING = "FROM_BEGINNING"
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,5 @@
1
+ from rs3._client import Client
2
+ class _ProxyObject():
3
+ def __init__(self, client: Client, objectId: str):
4
+ self._client = client
5
+ self._objectId = objectId
@@ -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)
@@ -0,0 +1,5 @@
1
+ import CommonMessages_pb2 as _CommonMessages_pb2
2
+ from google.protobuf import descriptor as _descriptor
3
+ from typing import ClassVar as _ClassVar
4
+
5
+ DESCRIPTOR: _descriptor.FileDescriptor