NaxToPy 2.2.2__tar.gz → 2.2.3__tar.gz

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 (138) hide show
  1. {naxtopy-2.2.2/src/NaxToPy.egg-info → naxtopy-2.2.3}/PKG-INFO +9 -1
  2. {naxtopy-2.2.2 → naxtopy-2.2.3}/README.md +7 -0
  3. {naxtopy-2.2.2 → naxtopy-2.2.3}/pyproject.toml +2 -2
  4. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PComponent.py +6 -1
  5. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Constants/Constants.py +3 -2
  6. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Errors/N2PLog.py +321 -12
  7. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/N2PModelContent.py +10 -11
  8. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/Joints/N2PAttachment.py +18 -19
  9. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/Joints/N2PBolt.py +12 -12
  10. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/Joints/N2PJoint.py +512 -188
  11. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/Joints/N2PPlate.py +887 -0
  12. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/N2PGetFasteners.py +68 -118
  13. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/N2PGetLoadFasteners.py +1177 -0
  14. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetAttachments.py +8 -9
  15. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetResults.py +9 -21
  16. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PInterpolation.py +4 -7
  17. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PLoadModel.py +2 -2
  18. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PRotation.py +406 -0
  19. naxtopy-2.2.3/src/NaxToPy/Modules/N2PNeuber/N2PNeuber.py +595 -0
  20. naxtopy-2.2.3/src/NaxToPy/Modules/N2PNeuber/__init__.py +0 -0
  21. naxtopy-2.2.3/src/NaxToPy/Modules/common/aux_funcitons.py +31 -0
  22. naxtopy-2.2.3/src/NaxToPy/Modules/common/aux_functions.py +155 -0
  23. naxtopy-2.2.3/src/NaxToPy/Modules/common/data_input_hdf5.py +298 -0
  24. naxtopy-2.2.3/src/NaxToPy/Modules/common/hdf5.py +259 -0
  25. naxtopy-2.2.3/src/NaxToPy/Modules/common/material.py +1029 -0
  26. {naxtopy-2.2.2 → naxtopy-2.2.3/src/NaxToPy.egg-info}/PKG-INFO +9 -1
  27. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy.egg-info/SOURCES.txt +6 -0
  28. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy.egg-info/requires.txt +1 -0
  29. naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/Joints/N2PPlate.py +0 -454
  30. naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/N2PGetLoadFasteners.py +0 -582
  31. naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PRotation.py +0 -182
  32. naxtopy-2.2.2/src/NaxToPy/Modules/common/material.py +0 -9
  33. {naxtopy-2.2.2 → naxtopy-2.2.3}/LICENSE +0 -0
  34. {naxtopy-2.2.2 → naxtopy-2.2.3}/setup.cfg +0 -0
  35. {naxtopy-2.2.2 → naxtopy-2.2.3}/setup.py +0 -0
  36. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntity.py +0 -0
  37. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityElement.py +0 -0
  38. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityNode.py +0 -0
  39. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityShell.py +0 -0
  40. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQEntities/__init__.py +0 -0
  41. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeyword.py +0 -0
  42. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordBEAMSECTION.py +0 -0
  43. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordCOUPLING.py +0 -0
  44. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDENSITY.py +0 -0
  45. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTING.py +0 -0
  46. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTINGCOUPLING.py +0 -0
  47. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELASTIC.py +0 -0
  48. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELEMENT.py +0 -0
  49. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELSET.py +0 -0
  50. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDINSTANCE.py +0 -0
  51. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDPART.py +0 -0
  52. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordINSTANCE.py +0 -0
  53. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATIC.py +0 -0
  54. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATICCOUPLING.py +0 -0
  55. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordMATERIAL.py +0 -0
  56. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNODE.py +0 -0
  57. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNSET.py +0 -0
  58. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordORIENTATION.py +0 -0
  59. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPART.py +0 -0
  60. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPLASTIC.py +0 -0
  61. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSHELLSECTION.py +0 -0
  62. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSOLIDSECTION.py +0 -0
  63. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSURFACE.py +0 -0
  64. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/__init__.py +0 -0
  65. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/AllClasses.py +0 -0
  66. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PAbaqusInputData.py +0 -0
  67. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PConnector.py +0 -0
  68. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PCoord.py +0 -0
  69. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PElement.py +0 -0
  70. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PFreeBody.py +0 -0
  71. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PIncrement.py +0 -0
  72. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PLoadCase.py +0 -0
  73. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PMaterial.py +0 -0
  74. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PNastranInputData.py +0 -0
  75. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PNode.py +0 -0
  76. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PProperty.py +0 -0
  77. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PReport.py +0 -0
  78. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PResult.py +0 -0
  79. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PSection.py +0 -0
  80. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PSet.py +0 -0
  81. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ProgresBar.py +0 -0
  82. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/__init__.py +0 -0
  83. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Constants/__init__.py +0 -0
  84. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Constants/librerias.py +0 -0
  85. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Errors/N2PColors.py +0 -0
  86. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Errors/N2PFileHandler.py +0 -0
  87. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Errors/__init__.py +0 -0
  88. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Reference_Finder/__Reference_Finder.py +0 -0
  89. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Reference_Finder/__init__.py +0 -0
  90. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/_AuxFunc/_NetToPython.py +0 -0
  91. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/_AuxFunc/__init__.py +0 -0
  92. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/__init__.py +0 -0
  93. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/Joints/__init__.py +0 -0
  94. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/N2PFastenerAnalysis.py +0 -0
  95. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/N2PUpdateFastener.py +0 -0
  96. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/__init__.py +0 -0
  97. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/__init__.py +0 -0
  98. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/__init__.py +0 -0
  99. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Check/Validation.py +0 -0
  100. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/AR1DElement.py +0 -0
  101. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARAttachment.py +0 -0
  102. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARBolt.py +0 -0
  103. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlate.py +0 -0
  104. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlateElements.py +0 -0
  105. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/__init__.py +0 -0
  106. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARAuxiliarFunctions.py +0 -0
  107. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARBilinearInterpolation.py +0 -0
  108. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARConfigurationInput.py +0 -0
  109. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARDerivedLoadCases.py +0 -0
  110. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARFileInputRivetsIDs.py +0 -0
  111. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetAttachments.py +0 -0
  112. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetBolts.py +0 -0
  113. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARReadResultsFromFile.py +0 -0
  114. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARResults.py +0 -0
  115. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARRotation.py +0 -0
  116. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARSerialize.py +0 -0
  117. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/__init__.py +0 -0
  118. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/__init__.py +0 -0
  119. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/__init__.py +0 -0
  120. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/__init__.py +0 -0
  121. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/N2PEnvelope/N2PEnvelope.py +0 -0
  122. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/N2PEnvelope/__init__.py +0 -0
  123. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/N2PtoEXE/N2PtoEXE.py +0 -0
  124. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/N2PtoEXE/__init__.py +0 -0
  125. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/__init__.py +0 -0
  126. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/common/__init__.py +0 -0
  127. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/common/property.py +0 -0
  128. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/handbooks/__init__.py +0 -0
  129. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/handbooks/bruhn/__init__.py +0 -0
  130. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/handbooks/cmh/__init__.py +0 -0
  131. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/handbooks/esdu/__init__.py +0 -0
  132. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/handbooks/hsb/__init__.py +0 -0
  133. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/handbooks/nasa/__init__.py +0 -0
  134. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/NaxToPy.ico +0 -0
  135. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/__init__.py +0 -0
  136. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/user_functions.txt +0 -0
  137. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy.egg-info/dependency_links.txt +0 -0
  138. {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: NaxToPy
3
- Version: 2.2.2
3
+ Version: 2.2.3
4
4
  Summary: Package for postprocessing FEM results in Python
5
5
  Home-page: https://www.idaerosolutions.com/Home/NaxToPy
6
6
  Download-URL: https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US
@@ -121,6 +121,7 @@ License-File: LICENSE
121
121
  Requires-Dist: pythonnet>=3.0.3
122
122
  Requires-Dist: numpy>=1.22.0
123
123
  Requires-Dist: setuptools>=67.8.0
124
+ Requires-Dist: h5py>=3.12.1
124
125
  Dynamic: download-url
125
126
  Dynamic: home-page
126
127
 
@@ -325,6 +326,12 @@ is redundant. The coordinate system will prevail.
325
326
  7. Feat: New properties supported: PBUSH, PFAST, PMASS, PELAS, PGAP, PWELD
326
327
  8. BugFix: The method get_elements_attached() is fixed so when there are MPC connectors with the same ID.
327
328
 
329
+ ### v.2.2.3
330
+ 1. Requirement: Now NaxToPy require the package [**h5py** ](https://pypi.org/project/h5py/).
331
+ 2. Feat: N2PGetLoadFastener now can use PAG method and display format.
332
+ 3. BugFix: Some bugs are solved in N2PGetFastener and N2PGetLoadFastener.
333
+ 4. Feat: N2PGetLoadFastener can export results in HDF5 format.
334
+ 5. BugFix: The filtering in the method get_result_by_LCs_Incr() in elements when results are in Corner Data is fixed.
328
335
 
329
336
  # Documentation
330
337
 
@@ -334,6 +341,7 @@ NaxToPy only use three dependeces:
334
341
  - NumPy: https://numpy.org/
335
342
  - PythonNET: https://pythonnet.github.io/
336
343
  - Setuptools: https://setuptools.pypa.io/en/latest/index.html
344
+ - HDF5: https://www.h5py.org/
337
345
 
338
346
  ## Supported Files
339
347
 
@@ -199,6 +199,12 @@ is redundant. The coordinate system will prevail.
199
199
  7. Feat: New properties supported: PBUSH, PFAST, PMASS, PELAS, PGAP, PWELD
200
200
  8. BugFix: The method get_elements_attached() is fixed so when there are MPC connectors with the same ID.
201
201
 
202
+ ### v.2.2.3
203
+ 1. Requirement: Now NaxToPy require the package [**h5py** ](https://pypi.org/project/h5py/).
204
+ 2. Feat: N2PGetLoadFastener now can use PAG method and display format.
205
+ 3. BugFix: Some bugs are solved in N2PGetFastener and N2PGetLoadFastener.
206
+ 4. Feat: N2PGetLoadFastener can export results in HDF5 format.
207
+ 5. BugFix: The filtering in the method get_result_by_LCs_Incr() in elements when results are in Corner Data is fixed.
202
208
 
203
209
  # Documentation
204
210
 
@@ -208,6 +214,7 @@ NaxToPy only use three dependeces:
208
214
  - NumPy: https://numpy.org/
209
215
  - PythonNET: https://pythonnet.github.io/
210
216
  - Setuptools: https://setuptools.pypa.io/en/latest/index.html
217
+ - HDF5: https://www.h5py.org/
211
218
 
212
219
  ## Supported Files
213
220
 
@@ -4,14 +4,14 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "NaxToPy"
7
- version = "2.2.2"
7
+ version = "2.2.3"
8
8
  license = {file = "LICENSE"}
9
9
  authors = [ { name = "Idaero Solutions", email = "manuel.sanchez@idaerosolutions.com" }, ]
10
10
  requires-python = ">=3.9"
11
11
  dependencies = ["pythonnet>=3.0.3",
12
12
  "numpy>=1.22.0",
13
13
  "setuptools>=67.8.0",
14
- ]
14
+ "h5py>=3.12.1"]
15
15
  description = "Package for postprocessing FEM results in Python"
16
16
  readme = "README.md"
17
17
  classifiers = ["Intended Audience :: Science/Research",
@@ -416,8 +416,13 @@ class N2PComponent:
416
416
  cs_dict = self._result_father._loadCase_father._modelFather._N2PModelContent__vzmodel.CalculateArrayLastResult(
417
417
  formula, resultsParameters, 0)
418
418
 
419
- if filter_list:
419
+ if filter_list and not cornerData:
420
420
  ii_map = [item.InternalID for item in filter_list]
421
+ elif filter_list and cornerData:
422
+ if isinstance(filter_list[0], N2PElement):
423
+ ii_map = list(self._result_father._loadCase_father._modelFather.elementnodal(filter_list).keys())
424
+ else:
425
+ N2PLog.Error.E234()
421
426
  else:
422
427
  ii_map = None
423
428
 
@@ -1,7 +1,7 @@
1
1
  """Constants of the NaxToPy package"""
2
2
 
3
3
  # NaxToPy Version
4
- VERSION = "2.2.2"
4
+ VERSION = "2.2.3"
5
5
 
6
6
  # Supported for Naxto:
7
7
  NAXTO_VERSION = '2024R3'
@@ -21,7 +21,8 @@ EXTERNAL_LIBS_PYTHON = ['cffi',
21
21
  'pycparser',
22
22
  'pythonnet',
23
23
  'numpy',
24
- 'setuptools']
24
+ 'setuptools',
25
+ 'h5py']
25
26
  # -------------------------------------------------------------------------------------------------
26
27
 
27
28
  # Binary extensions supported by NaxToPy ----------------------------------------------------------
@@ -769,8 +769,84 @@ own information message. Use the following structure as a standard message (I +
769
769
 
770
770
  @staticmethod
771
771
  def W525() -> None:
772
- '''Warning raised when, in N2PGetLoadFasteners, the type_export attribute is not NAXTOPY or ALTAIR'''
773
- message = f"W525: Type of export not supported. The results will be exported in NAXTOPY style. Try <<NAXTOPY>> or <<ALTAIR>>."
772
+ '''Warning raised when, in N2PGetLoadFasteners, the type_export attribute is not NAXTOPY, PAG ALTAIR'''
773
+ message = f"W525: Type of export not supported. The results will be exported in NAXTOPY style. Try <<NAXTOPY>>, <<PAGTXT>>, <<<PAGCSV>>> or <<ALTAIR>>."
774
+ N2PLog._N2PLog__logger.warning(message)
775
+
776
+ @staticmethod
777
+ def W526(parameter) -> None:
778
+ '''Warning raised when the bypass parameters dictionary is not well defined'''
779
+ message = f"W526: Bypass parameter {parameter} is not well defined. The default value will be used."
780
+ N2PLog._N2PLog__logger.error(message)
781
+
782
+ @staticmethod
783
+ def W527(input, instance) -> None:
784
+ '''Warning raised when an input is of a wrong instance.'''
785
+ message = f"W537: Attribute {input} is not a {instance} instance. The default value will be used."
786
+ N2PLog._N2PLog__logger.error(message)
787
+
788
+ @staticmethod
789
+ def W528() -> None:
790
+ '''Warning raised when, in N2PGetLoadFasteners, the export_precison attribute is not 4 or 8'''
791
+ message = f"W528: Precission not supported. The default precission will be used. Try 4 or 8."
792
+ N2PLog._N2PLog__logger.warning(message)
793
+
794
+
795
+ @staticmethod
796
+ def W650() -> None:
797
+ ''' Warning raised when specific arguments have been introduce to the plastic class.
798
+ '''
799
+ message = f"W650: For this choosen arguments the Yield Stress must be at zero plastic strain."
800
+ N2PLog._N2PLog__logger.warning(message)
801
+
802
+ @staticmethod
803
+ def W651(elemID) -> None:
804
+ ''' Warning raised when a non ISOTROPIC/MAT1 asociated to the element has been chosen.
805
+ '''
806
+ message = f"W651: For the element {elemID} the module does not work because it has not a isotropic material"
807
+ N2PLog._N2PLog__logger.warning(message)
808
+
809
+ @staticmethod
810
+ def W652(elemID) -> None:
811
+ ''' Warning raised when a non PSHELL asociated to the element has been chosen.
812
+ '''
813
+ message = f"W651: For the element {elemID} the module does not work because it has not a PSHELL asociated"
814
+ N2PLog._N2PLog__logger.warning(message)
815
+
816
+ @staticmethod
817
+ def W700() -> None:
818
+ ''' Warning raised when a data entry does not have its compulsory information
819
+ '''
820
+ message = f"W700: A DataEntry does not have all of its necessary information. Its data is not written."
821
+ N2PLog._N2PLog__logger.warning(message)
822
+
823
+ @staticmethod
824
+ def W701(elementType) -> None:
825
+ ''' Warning raised when, while writing an HDF5, the element type is not element, corner or node.
826
+ '''
827
+ message = f"W701: Element type {elementType} not accepted. Try <<ELEMENT>>, <<CORNER>> or <<NODE>>."
828
+ N2PLog._N2PLog__logger.warning(message)
829
+
830
+
831
+ @staticmethod
832
+ def W650() -> None:
833
+ ''' Warning raised when specific arguments have been introduce to the plastic class.
834
+ '''
835
+ message = f"W650: For this choosen arguments the Yield Stress must be at zero plastic strain."
836
+ N2PLog._N2PLog__logger.warning(message)
837
+
838
+ @staticmethod
839
+ def W651(elemID) -> None:
840
+ ''' Warning raised when a non ISOTROPIC/MAT1 asociated to the element has been chosen.
841
+ '''
842
+ message = f"W651: For the element {elemID} the module does not work because it does not have an isotropic material, so it will be removed"
843
+ N2PLog._N2PLog__logger.warning(message)
844
+
845
+ @staticmethod
846
+ def W652(elemID) -> None:
847
+ ''' Warning raised when a non PSHELL asociated to the element has been chosen.
848
+ '''
849
+ message = f"W651: For the element {elemID} the module does not work because it does not have a PSHELL asociated, so it will be removed"
774
850
  N2PLog._N2PLog__logger.warning(message)
775
851
  # ------------------------------------------------------------------------------------------------------------------
776
852
 
@@ -1354,17 +1430,17 @@ own information message. Use the following structure as a standard message (I +
1354
1430
  N2PLog._N2PLog__logger.error(message)
1355
1431
 
1356
1432
  @staticmethod
1357
- def E507(bolt) -> None:
1433
+ def E507(plate) -> None:
1358
1434
  ''' Error raised when iterations > max_iter.
1359
1435
  '''
1360
- message = f"E507: Unable to calculate bypass loads in fastener {bolt.ID} because iterations > Max Iterations."
1436
+ message = f"E507: Unable to calculate bypass loads in plate {plate.SolverID} because iterations > Max Iterations."
1361
1437
  N2PLog._N2PLog__logger.error(message)
1362
1438
 
1363
1439
  @staticmethod
1364
- def E508(bolt) -> None:
1365
- ''' Error raised when there is a problem with the geometry of the fastener.
1440
+ def E508(plate) -> None:
1441
+ ''' Error raised when there is a problem with the geometry of the plate.
1366
1442
  '''
1367
- message = f"E508: Fastener {bolt.ID} was not computed because there is a problem with its geometry."
1443
+ message = f"E508: Plate {plate.SolverID} was not computed because there is a problem with its geometry."
1368
1444
  N2PLog._N2PLog__logger.error(message)
1369
1445
 
1370
1446
  @staticmethod
@@ -1484,11 +1560,11 @@ own information message. Use the following structure as a standard message (I +
1484
1560
  message = f"E527: Solver not supported. Try using a model with Nastran or the new N2PGetFasteners module."
1485
1561
  N2PLog._N2PLog__logger.error(message)
1486
1562
 
1487
- @staticmethod
1488
- def E528(parameter) -> None:
1489
- '''Error raised when the bypass parameters dictionary is not well defined'''
1490
- message = f"E528: Bypass parameter {parameter} is not well defined."
1491
- N2PLog._N2PLog__logger.error(message)
1563
+ # @staticmethod
1564
+ # def E528(parameter) -> None:
1565
+ # '''Error raised when the bypass parameters dictionary is not well defined'''
1566
+ # message = f"E528: Bypass parameter {parameter} is not well defined."
1567
+ # N2PLog._N2PLog__logger.error(message)
1492
1568
 
1493
1569
  @staticmethod
1494
1570
  def E529() -> None:
@@ -1507,6 +1583,239 @@ own information message. Use the following structure as a standard message (I +
1507
1583
  '''Error raised when a loaded file does not exist or is not a file'''
1508
1584
  message = f"E531: Path {path} does not exist or is not a file."
1509
1585
  N2PLog._N2PLog__logger.error(message)
1586
+
1587
+ @staticmethod
1588
+ def E532(element) -> None:
1589
+ '''Error raised when one wants to determine if a point is in an element that is not supported.'''
1590
+ message = f"E532: Element with ID {element.ID} is not supported, as it is a {element.TypeElement}."
1591
+ N2PLog._N2PLog__logger.error(message)
1592
+
1593
+ @staticmethod
1594
+ def E533(element) -> None:
1595
+ '''Error raised when one wants to project a point into an element with not enough nodes'''
1596
+ message = f"E532: The point cannot be projected into the element with ID {element.ID} because it does not have enough nodes."
1597
+ N2PLog._N2PLog__logger.error(message)
1598
+
1599
+ @staticmethod
1600
+ def E534() -> None:
1601
+ '''Error raised when, in N2PGetLoadFasteners, no result files have been imported'''
1602
+ message = f"E534: No result files have been imported."
1603
+ N2PLog._N2PLog__logger.error(message)
1604
+
1605
+ @staticmethod
1606
+ def E535(input, instance) -> None:
1607
+ '''Error raised when an input is of a wrong instance.'''
1608
+ message = f"E535: Attribute {input} is not a {instance} instance."
1609
+ N2PLog._N2PLog__logger.error(message)
1610
+
1611
+ @staticmethod
1612
+ def E536(attribute, instance) -> None:
1613
+ '''Error raised when an input (as a list) has no valid elements inside.'''
1614
+ message = f"E536: Attribute {attribute} has no valid {instance} instances."
1615
+ N2PLog._N2PLog__logger.error(message)
1616
+
1617
+
1618
+
1619
+ @staticmethod
1620
+ def E650() -> None:
1621
+ ''' Error raised when trying to assign a non isotropic material to a isotropic one'''
1622
+ message = f"E650: Action not allowed because an attempt is being made to assign a non isotropic material to an isotropic one."
1623
+ N2PLog._N2PLog__logger.error(message)
1624
+
1625
+ @staticmethod
1626
+ def E651() -> None:
1627
+ ''' Error raised when trying to assign a non orthotropic material to a orthotropic one'''
1628
+ message = f"E651: Action not allowed because an attempt is being made to assign a non orthotropic material to an orthotropic one."
1629
+ N2PLog._N2PLog__logger.error(message)
1630
+
1631
+ @staticmethod
1632
+ def E652() -> None:
1633
+ ''' Error raised when trying to assign a wrong hardening to a plastic class'''
1634
+ message = f"E652: Action not allowed because an attempt is being made to assign wrong hardening to a plastic class."
1635
+ N2PLog._N2PLog__logger.error(message)
1636
+
1637
+ # @staticmethod
1638
+ # def E653() -> None:
1639
+ # ''' Error raised when trying to assign a wrong dataType to a plastic class'''
1640
+ # message = f"E653: Action not allowed because an attempt is being made to assign wrong dataType to a plastic class."
1641
+ # N2PLog._N2PLog__logger.error(message)
1642
+
1643
+ @staticmethod
1644
+ def E654() -> None:
1645
+ ''' Error raised when trying to assign wrong arguments to a plastic class'''
1646
+ message = f"E654: Action not allowed because an attempt is being made to assign wrong configuration to the plastic class."
1647
+ N2PLog._N2PLog__logger.error(message)
1648
+
1649
+ @staticmethod
1650
+ def E655() -> None:
1651
+ ''' Error raised when trying to assign wrong plastic class'''
1652
+ message = f"E655: Action not allowed because an attempt is being made to assign wrong plastic class."
1653
+ N2PLog._N2PLog__logger.error(message)
1654
+
1655
+ @staticmethod
1656
+ def E656() -> None:
1657
+ ''' Error raised when trying to assign a wrong N2PMaterial instance to a material subclass'''
1658
+ message = f"E656: Action not allowed because an attempt is being made to a wrong N2PMaterial instance to a material subclass."
1659
+ N2PLog._N2PLog__logger.error(message)
1660
+
1661
+ @staticmethod
1662
+ def E657() -> None:
1663
+ ''' Error raised when trying to get a Plastic instance which is not assigned'''
1664
+ message = f"E657: Action not allowed because an attempt is being made to get a Plastic instance which is not assigned."
1665
+ N2PLog._N2PLog__logger.error(message)
1666
+
1667
+ @staticmethod
1668
+ def E658() -> None:
1669
+ ''' Error raised when trying to set a non Plastic instance'''
1670
+ message = f"E658: Action not allowed because an attempt is being made to set a non Plastic instance."
1671
+ N2PLog._N2PLog__logger.error(message)
1672
+
1673
+ @staticmethod
1674
+ def E659() -> None:
1675
+ ''' Error raised when trying to get an Allowable instance which is not assigned'''
1676
+ message = f"E659: Action not allowed because an attempt is being made to get an Allowables instance which is not assigned."
1677
+ N2PLog._N2PLog__logger.error(message)
1678
+
1679
+ @staticmethod
1680
+ def E660() -> None:
1681
+ ''' Error raised when trying to set a non Plastic instance'''
1682
+ message = f"E660: Action not allowed because an attempt is being made to set a non Allowables instance."
1683
+ N2PLog._N2PLog__logger.error(message)
1684
+
1685
+ @staticmethod
1686
+ def E700() -> None:
1687
+ ''' Error raised when trying to write in a dataset that has different data types than the one in the data entry'''
1688
+ message = f"E700: The DataEntry has different data types than the ones in the data set."
1689
+ N2PLog._N2PLog__logger.error(message)
1690
+
1691
+ @staticmethod
1692
+ def E701() -> None:
1693
+ ''' Error raised when an entity ID is not of integer type'''
1694
+ message = f"E701: The entity ID is not an integer."
1695
+ N2PLog._N2PLog__logger.error(message)
1696
+
1697
+ @staticmethod
1698
+ def E702(entityID) -> None:
1699
+ ''' Error raised when, in a dataset, one tries to write a row whose entity ID is already in the dataset'''
1700
+ message = f"E702: The entity ID {entityID} is already in the dataset."
1701
+ N2PLog._N2PLog__logger.error(message)
1702
+
1703
+
1704
+ @staticmethod
1705
+ def E650() -> None:
1706
+ ''' Error raised when trying to assign a non isotropic material to a isotropic one'''
1707
+ message = f"E650: Action not allowed because an attempt is being made to assign a non isotropic material to an isotropic one."
1708
+ N2PLog._N2PLog__logger.error(message)
1709
+
1710
+ @staticmethod
1711
+ def E651() -> None:
1712
+ ''' Error raised when trying to assign a non orthotropic material to a orthotropic one'''
1713
+ message = f"E651: Action not allowed because an attempt is being made to assign a non orthotropic material to an orthotropic one."
1714
+ N2PLog._N2PLog__logger.error(message)
1715
+
1716
+ @staticmethod
1717
+ def E652() -> None:
1718
+ ''' Error raised when trying to assign a wrong hardening to a plastic class'''
1719
+ message = f"E652: Action not allowed because an attempt is being made to assign wrong hardening to a plastic class."
1720
+ N2PLog._N2PLog__logger.error(message)
1721
+
1722
+ # @staticmethod
1723
+ # def E653() -> None:
1724
+ # ''' Error raised when trying to assign a wrong dataType to a plastic class'''
1725
+ # message = f"E653: Action not allowed because an attempt is being made to assign wrong dataType to a plastic class."
1726
+ # N2PLog._N2PLog__logger.error(message)
1727
+
1728
+ @staticmethod
1729
+ def E654() -> None:
1730
+ ''' Error raised when trying to assign wrong arguments to a plastic class'''
1731
+ message = f"E654: Action not allowed because an attempt is being made to assign wrong configuration to the plastic class."
1732
+ N2PLog._N2PLog__logger.error(message)
1733
+
1734
+ @staticmethod
1735
+ def E655() -> None:
1736
+ ''' Error raised when trying to assign wrong plastic class'''
1737
+ message = f"E655: Action not allowed because an attempt is being made to assign wrong plastic class."
1738
+ N2PLog._N2PLog__logger.error(message)
1739
+
1740
+ @staticmethod
1741
+ def E656() -> None:
1742
+ ''' Error raised when trying to assign a wrong N2PMaterial instance to a material subclass'''
1743
+ message = f"E656: Action not allowed because an attempt is being made to a wrong N2PMaterial instance to a material subclass."
1744
+ N2PLog._N2PLog__logger.error(message)
1745
+
1746
+ @staticmethod
1747
+ def E657() -> None:
1748
+ ''' Error raised when trying to get a Plastic instance which is not assigned'''
1749
+ message = f"E657: Action not allowed because an attempt is being made to get a Plastic instance which is not assigned."
1750
+ N2PLog._N2PLog__logger.error(message)
1751
+
1752
+ @staticmethod
1753
+ def E658() -> None:
1754
+ ''' Error raised when trying to set a non Plastic instance'''
1755
+ message = f"E658: Action not allowed because an attempt is being made to set a non Plastic instance."
1756
+ N2PLog._N2PLog__logger.error(message)
1757
+
1758
+ @staticmethod
1759
+ def E659() -> None:
1760
+ ''' Error raised when trying to get an Allowable instance which is not assigned'''
1761
+ message = (f"E659: Action not allowed because an attempt is being made to get an Allowables instance which"
1762
+ " is not assigned.")
1763
+ N2PLog._N2PLog__logger.error(message)
1764
+
1765
+ @staticmethod
1766
+ def E660() -> None:
1767
+ ''' Error raised when trying to set a non Plastic instance'''
1768
+ message = f"E660: Action not allowed because an attempt is being made to set a non Allowables instance."
1769
+ N2PLog._N2PLog__logger.error(message)
1770
+
1771
+ @staticmethod
1772
+ def E661(materialid) -> None:
1773
+ """ Error raised when trying to use the N2PNeuber module without assign a YieldStress to a material"""
1774
+ message = (f"E661: Action not allowed because an attempt is being made to use the neuber module without assign a Yield Stress to the material ID:{materialid}")
1775
+ N2PLog._N2PLog__logger.error(message)
1776
+
1777
+ @staticmethod
1778
+ def E662(materialid) -> None:
1779
+ """ Error raised when trying to use the N2PNeuber module without assign a RO_exponent to a material"""
1780
+ message = (f"E662: Action not allowed because an attempt is being made to use the neuber module without assign a RO exponent to the material ID:{materialid}")
1781
+ N2PLog._N2PLog__logger.error(message)
1782
+
1783
+ @staticmethod
1784
+ def E663() -> None:
1785
+ """ Error raised when trying to assign a non N2PElement list"""
1786
+ message = (f"E663: Action not allowed because an attempt is being made to assign a non N2PElement list")
1787
+ N2PLog._N2PLog__logger.error(message)
1788
+
1789
+ @staticmethod
1790
+ def E664() -> None:
1791
+ """ Error raised when trying to assign a non N2PLoadCase list"""
1792
+ message = (f"E664: Action not allowed because an attempt is being made to assign a non N2PLoadCase list")
1793
+ N2PLog._N2PLog__logger.error(message)
1794
+
1795
+ @staticmethod
1796
+ def E665(ele) -> None:
1797
+ """ Error raised when is not possible to find a Neuber solution"""
1798
+ message = (f"E665: Action not allowed is not possible to find a Neuber solution for the stress of the element{ele}")
1799
+ N2PLog._N2PLog__logger.error(message)
1800
+
1801
+ @staticmethod
1802
+ def E670() -> None:
1803
+ ''' Error raised when trying to get an Allowable Isotropic instance which is not assigned'''
1804
+ message = (f"E659: Action not allowed because an attempt is being made to get an Allowables Isotropic instance which"
1805
+ " is not assigned.")
1806
+ N2PLog._N2PLog__logger.error(message)
1807
+
1808
+ @staticmethod
1809
+ def E670() -> None:
1810
+ ''' Error raised when trying to get an Allowable Orthotropic instance which is not assigned'''
1811
+ message = (f"E659: Action not allowed because an attempt is being made to get an Allowables Orthotropic instance which"
1812
+ " is not assigned.")
1813
+ N2PLog._N2PLog__logger.error(message)
1814
+
1815
+
1816
+
1817
+
1818
+
1510
1819
  ########################################### CRITICAL #############################################################
1511
1820
  class Critical:
1512
1821
  """Class with all the critical errors.
@@ -23,6 +23,7 @@ from NaxToPy.Core.Classes.N2PNastranInputData import N2PNastranInputData, CONSTR
23
23
  from NaxToPy.Core.Constants.Constants import BINARY_EXTENSIONS
24
24
  from NaxToPy.Core.Classes.N2PReport import N2PReport
25
25
  from NaxToPy.Core.Classes.N2PAbaqusInputData import N2PAbaqusInputData
26
+ from NaxToPy.Core._AuxFunc._NetToPython import _numpytonet
26
27
 
27
28
  import time
28
29
  import numpy as np
@@ -1140,14 +1141,12 @@ class N2PModelContent:
1140
1141
  if not domain:
1141
1142
  adjacent_ids = N2AdjacencyFunctions.GetAttached(self.__vzmodel.UMesh, inernal_ids)
1142
1143
  else:
1143
- n_con = sum(len(connector) if isinstance(connector, list) else 1 for connector in self.__connector_dict.values())
1144
- csharp_bool_array = System.Array.CreateInstance(System.Boolean,
1145
- len(self.__element_dict) + n_con)
1146
-
1147
- for elem in domain:
1148
- csharp_bool_array[elem.InternalID] = True
1149
-
1150
- adjacent_ids = N2AdjacencyFunctions.GetAttached(self.__vzmodel.UMesh, inernal_ids, csharp_bool_array)
1144
+
1145
+ mesh_len = self.__vzmodel.UMesh.GetNumberOfCells()
1146
+ bool_array = np.zeros((mesh_len,), bool)
1147
+ domain_id = [ele.InternalID for ele in domain]
1148
+ bool_array[domain_id] = True
1149
+ adjacent_ids = N2AdjacencyFunctions.GetAttached(self.__vzmodel.UMesh, inernal_ids, _numpytonet(bool_array))
1151
1150
 
1152
1151
  cell_list = self.__cells_list
1153
1152
 
@@ -1231,11 +1230,11 @@ class N2PModelContent:
1231
1230
  list[tuple[N2PElement, N2PNode, N2PNode], ...]
1232
1231
  """
1233
1232
 
1234
- csharp_bool_array = System.Array.CreateInstance(System.Boolean,
1235
- len(self.__element_dict) + len(self.__connector_dict))
1233
+ mesh_len = self.__vzmodel.UMesh.GetNumberOfCells()
1234
+ csharp_bool_array = System.Array.CreateInstance(System.Boolean, mesh_len)
1236
1235
 
1237
1236
  if not domain:
1238
- for i in range(len(self.__element_dict) + len(self.__connector_dict)):
1237
+ for i in range(mesh_len):
1239
1238
  csharp_bool_array[i] = True
1240
1239
  else:
1241
1240
  for elem in domain:
@@ -12,18 +12,18 @@ class N2PAttachment:
12
12
 
13
13
  Attributes:
14
14
  id: int
15
- attached_plates_ids: list[int] -> list of the attached N2PPlates' ID.
16
- attached_plates: list[N2PPlate] -> list of the attached N2PPlates.
17
- joints: list[N2PJoint] -> list of the attached N2PJoints.
15
+ attached_plates_id_list: list[int] -> list of the attached N2PPlates' ID.
16
+ attached_plates_list: list[N2PPlate] -> list of the attached N2PPlates.
17
+ joints_list: list[N2PJoint] -> list of the attached N2PJoints.
18
18
  pitch: float -> minimum distance from an N2PJoint to its neighbours.
19
19
  """
20
20
 
21
21
  # N2PAttachment constructor ----------------------------------------------------------------------------------------
22
22
  def __init__(self, id):
23
23
  self._id: int = id
24
- self._attached_plates_ids: list[int] = None
25
- self._attached_plates: list[N2PPlate] = None
26
- self._joints: list[N2PJoint] = []
24
+ self._attached_plates_id_list: list[int] = None
25
+ self._attached_plates_list: list[N2PPlate] = None
26
+ self._joints_list: list[N2PJoint] = []
27
27
  self._pitch: float = None
28
28
  # ------------------------------------------------------------------------------------------------------------------
29
29
 
@@ -39,33 +39,33 @@ class N2PAttachment:
39
39
  # ------------------------------------------------------------------------------------------------------------------
40
40
 
41
41
  @property
42
- def AttachedPlatesIDs(self) -> list[int]:
42
+ def AttachedPlatesIDList(self) -> list[int]:
43
43
 
44
44
  """
45
- Property that returns the attached_plates_ids attribute, that is, the list of the IDs of all attached N2PPlates.
45
+ Property that returns the attached_plates_id_list attribute, that is, the list of the IDs of all attached N2PPlates.
46
46
  """
47
47
 
48
- return self._attached_plates_ids
48
+ return self._attached_plates_id_list
49
49
  # ------------------------------------------------------------------------------------------------------------------
50
50
 
51
51
  @property
52
- def AttachedPlates(self) -> list[N2PPlate]:
52
+ def AttachedPlateList(self) -> list[N2PPlate]:
53
53
 
54
54
  """
55
- Property that returns the attached_plates attribute, that is, the list of all attached N2PPlates.
55
+ Property that returns the attached_plates_list attribute, that is, the list of all attached N2PPlates.
56
56
  """
57
57
 
58
- return self._attached_plates
58
+ return self._attached_plates_list
59
59
  # ------------------------------------------------------------------------------------------------------------------
60
60
 
61
61
  @property
62
- def Joints(self) -> list[N2PJoint]:
62
+ def JointsList(self) -> list[N2PJoint]:
63
63
 
64
64
  """
65
65
  Property that returns the joints attribute, that is, the list of all N2PJoints.
66
66
  """
67
67
 
68
- return self._joints
68
+ return self._joints_list
69
69
  # ------------------------------------------------------------------------------------------------------------------
70
70
 
71
71
  @property
@@ -86,14 +86,13 @@ class N2PAttachment:
86
86
  Method used to obtain the attachment's pitch, that is, the minimum distance from an N2PJoint to its neighbours.
87
87
 
88
88
  Calling example:
89
- >>> from NaxToPy.Modules.Fasteners.Joints.N2PAttachment import N2PAttachment
90
89
  >>> jointPitch = myAttachment.get_pitch()
91
90
  """
92
91
 
93
92
  intersectionPoints = []
94
- plateID = self.Joints[0].Plates[0].AttachmentID
95
- for i in self._joints:
96
- plate = [p for p in i.Plates if p.AttachmentID == plateID][0]
93
+ plateID = self.JointsList[0].PlateList[0].AttachmentID
94
+ for i in self._joints_list:
95
+ plate = [p for p in i.PlateList if p.AttachmentID == plateID][0]
97
96
  intersectionPoints.append(np.array(plate.Intersection))
98
97
 
99
98
  numPoints = len(intersectionPoints)
@@ -107,7 +106,7 @@ class N2PAttachment:
107
106
  np.fill_diagonal(distances, np.inf)
108
107
 
109
108
  distances = np.min(distances, axis = 0)
110
- for i, j in enumerate(self._joints):
109
+ for i, j in enumerate(self._joints_list):
111
110
  j._pitch = float(distances[i])
112
111
  self._pitch = float(np.min(distances))
113
112
  # -------------------------------------------------------------------------------------------------------------------