NaxToPy 1.5.3__tar.gz → 1.5.4__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 (53) hide show
  1. {NaxToPy-1.5.3/src/NaxToPy.egg-info → NaxToPy-1.5.4}/PKG-INFO +7 -1
  2. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/README.md +6 -0
  3. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/pyproject.toml +1 -1
  4. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Classes/N2PLoadCase.py +2 -2
  5. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Classes/N2PModelInputData.py +1 -1
  6. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Classes/N2PResult.py +51 -0
  7. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Constants/Constants.py +1 -1
  8. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Errors/N2PLog.py +43 -0
  9. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/N2PModelContent.py +8 -0
  10. NaxToPy-1.5.4/src/NaxToPy/Modules/Fasteners/N2PUpdateFastener.py +906 -0
  11. NaxToPy-1.5.4/src/NaxToPy/Modules/Fasteners/__init__.py +1 -0
  12. NaxToPy-1.5.4/src/NaxToPy/Modules/__init__.py +1 -0
  13. {NaxToPy-1.5.3 → NaxToPy-1.5.4/src/NaxToPy.egg-info}/PKG-INFO +7 -1
  14. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy.egg-info/SOURCES.txt +2 -0
  15. NaxToPy-1.5.3/src/NaxToPy/Modules/__init__.py +0 -0
  16. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/LICENSE +0 -0
  17. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/setup.cfg +0 -0
  18. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/setup.py +0 -0
  19. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Classes/AllClasses.py +0 -0
  20. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Classes/N2PComponent.py +0 -0
  21. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Classes/N2PConnector.py +0 -0
  22. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Classes/N2PCoord.py +0 -0
  23. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Classes/N2PElement.py +0 -0
  24. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Classes/N2PFreeBody.py +0 -0
  25. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Classes/N2PIncrement.py +0 -0
  26. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Classes/N2PMaterial.py +0 -0
  27. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Classes/N2PNode.py +0 -0
  28. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Classes/N2PProperty.py +0 -0
  29. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Classes/N2PReport.py +0 -0
  30. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Classes/N2PSection.py +0 -0
  31. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Classes/N2PSet.py +0 -0
  32. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Classes/ProgresBar.py +0 -0
  33. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Classes/__init__.py +0 -0
  34. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Constants/__init__.py +0 -0
  35. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Constants/librerias.py +0 -0
  36. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Errors/N2PColors.py +0 -0
  37. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Errors/N2PFileHandler.py +0 -0
  38. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Errors/__init__.py +0 -0
  39. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Reference_Finder/__Reference_Finder.py +0 -0
  40. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/Reference_Finder/__init__.py +0 -0
  41. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/_AuxFunc/_NetToPython.py +0 -0
  42. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/_AuxFunc/__init__.py +0 -0
  43. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Core/__init__.py +0 -0
  44. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Modules/N2PEnvelope/N2PEnvelope.py +0 -0
  45. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Modules/N2PEnvelope/__init__.py +0 -0
  46. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Modules/N2PtoEXE/N2PtoEXE.py +0 -0
  47. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/Modules/N2PtoEXE/__init__.py +0 -0
  48. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/NaxToPy.ico +0 -0
  49. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/__init__.py +0 -0
  50. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy/user_functions.txt +0 -0
  51. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy.egg-info/dependency_links.txt +0 -0
  52. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy.egg-info/requires.txt +0 -0
  53. {NaxToPy-1.5.3 → NaxToPy-1.5.4}/src/NaxToPy.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: NaxToPy
3
- Version: 1.5.3
3
+ Version: 1.5.4
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
@@ -241,6 +241,12 @@ To see previous version see the pre-release versions in https://test.pypi.org/pr
241
241
  1. Bug fix for the EXE generation.
242
242
  2. Updates in the log messages.
243
243
 
244
+ ### v.1.5.4
245
+ 1. Bug Fix: After calling the method get_load_cases(), the new derived cases weren't found. Now they does.
246
+ 2. N2PLoadCase has now two properties for the ID: OriginalID, that was in the files readed and ID that is the one that is used in NaxToPy. Usually, they are the same.
247
+ 3. New method new_derived_component() in the class N2PResult that allows to create new N2PComponent based on the original components.
248
+ 4. New module N2PUpdateFastener. This module updates the stiffness of the CBUSH and CFAST acordint to their properties and shells properties.
249
+
244
250
  # Documentation
245
251
 
246
252
  **NaxToPy** is a package developed by Idaero Solutions© as a part of the **NaxTo** software.
@@ -117,6 +117,12 @@ To see previous version see the pre-release versions in https://test.pypi.org/pr
117
117
  1. Bug fix for the EXE generation.
118
118
  2. Updates in the log messages.
119
119
 
120
+ ### v.1.5.4
121
+ 1. Bug Fix: After calling the method get_load_cases(), the new derived cases weren't found. Now they does.
122
+ 2. N2PLoadCase has now two properties for the ID: OriginalID, that was in the files readed and ID that is the one that is used in NaxToPy. Usually, they are the same.
123
+ 3. New method new_derived_component() in the class N2PResult that allows to create new N2PComponent based on the original components.
124
+ 4. New module N2PUpdateFastener. This module updates the stiffness of the CBUSH and CFAST acordint to their properties and shells properties.
125
+
120
126
  # Documentation
121
127
 
122
128
  **NaxToPy** is a package developed by Idaero Solutions© as a part of the **NaxTo** software.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "NaxToPy"
7
- version = "1.5.3"
7
+ version = "1.5.4"
8
8
  license = {file = "LICENSE"}
9
9
  authors = [ { name = "Idaero Solutions", email = "manuel.sanchez@idaerosolutions.com" }, ]
10
10
  requires-python = ">=3.9"
@@ -74,13 +74,13 @@ class N2PLoadCase:
74
74
 
75
75
  # Metodo para obtener el numero de identificacion interno del caso de carga ----------------------------------------
76
76
  @property
77
- def InternalID(self) -> int:
77
+ def ID(self) -> int:
78
78
  return(int(self.__id__))
79
79
  # ------------------------------------------------------------------------------------------------------------------
80
80
 
81
81
  # Metodo oara obtener el numero de identificacion original del caso de carga ---------------------------------------
82
82
  @property
83
- def ID(self) -> int:
83
+ def OriginalID(self) -> int:
84
84
  return(int(self.__idoriginal__))
85
85
  # ------------------------------------------------------------------------------------------------------------------
86
86
 
@@ -164,7 +164,7 @@ class N2PModelInputData:
164
164
  """Method that writes the solver input file with the same file structure that was read in the folder is specified
165
165
 
166
166
  Args:
167
- folder: str -> Path of the foler where the file or files will be writen
167
+ folder: str -> Path of the folder where the file or files will be writen
168
168
  """
169
169
  self.__inputfiledata.RebuildFile(folder)
170
170
 
@@ -1,5 +1,7 @@
1
1
  from NaxToPy.Core.Classes.N2PComponent import N2PComponent
2
2
  from NaxToPy.Core.Errors.N2PLog import N2PLog
3
+ from VizzerClasses import N2Component
4
+ from System.Collections.Generic import List
3
5
 
4
6
 
5
7
  # Clase Result de Python --------------------------------------------------------------------------
@@ -124,6 +126,55 @@ class N2PResult:
124
126
  N2PLog.Error.E216()
125
127
  # ---------------------------------------------------------------------------------------------
126
128
 
129
+ def new_derived_component(self, name: str, formula: str) -> N2PComponent:
130
+ """Generate a new N2PComponent combination of n components from N2PResult.
131
+
132
+ These combinations can be obtained later with the method `get_derived_component()`.
133
+
134
+ To define the combination, pass a string with the result and component names, along with the arithmetic commands as strings.
135
+ The name of the new derived component must be set. To add a component to the formula, it must start with `CMPT_`
136
+ followed by the Result name (the result must be the same) if it is an original component, and with `CMPTD` (only that),
137
+ then `:` and finally the Component name.
138
+
139
+ The `Result|Component` must have this structure: `<CMPT_Result:Component>` or `<CMPTD:Component>`.
140
+
141
+ Examples:
142
+ - formula = "<0.5*CMPT_DISPLACEMENTS:MAGNITUDE_D>+2*<CMPT_DISPLACEMENTS:MAGNITUDE_R>"
143
+ - formula = "(<CMPTD:Example>-2*<CMPT_DISPLACEMENTS:MAGNITUDE_R>)^2"
144
+ - formula = "sqrt(<CMPT_STRESSES:XX>^2+<CMPT_STRESSES:YY>^2-<CMPT_STRESSES:XX>*<CMPT_STRESSES:YY>+3*<CMPT_STRESSES:XY>^2)"
145
+
146
+ Args:
147
+ name (str): The name of the component.
148
+ formula (str): String containing the Result:Component intended to be used and the arithmetic operations.
149
+
150
+ Returns:
151
+ N2PComponent: Derived load case.
152
+ """
153
+
154
+ # Recuperamos la instancia N2ModelModelContent
155
+ mc = self.__loadCase_father__.__modelFather__._N2PModelContent__vzmodel
156
+
157
+ # Llamada al constructor de N2Component de VizzerClasses
158
+ new_d_comp = N2Component(mc, name, formula)
159
+
160
+ # Se incluye en la lista de compornentes derivadas de vizzerclasses. Para ello tengo que comprobar que existe
161
+ # dicha lista. Si no existe la tengo que crear como lista de C#
162
+ if not mc.DerivedComponents:
163
+ mc.DerivedComponents = List[N2Component]()
164
+
165
+ # Now I add the new derived component to the list
166
+ mc.DerivedComponents.Add(new_d_comp)
167
+
168
+ # Call the method that recalculate the data.
169
+ new_d_comp.RecalculateCMPTInfo2Formule()
170
+
171
+ # The N2PComponent is instanced and added to the dictionary of derived loadcases:
172
+ self.__derived_comps__[new_d_comp.Name] = N2PComponent(new_d_comp.Name, new_d_comp.Sections, self)
173
+
174
+ return self.__derived_comps__[new_d_comp.Name]
175
+
176
+
177
+
127
178
  # # Metodo para obtener los resultados de todas las componentes del resultado como DataFrame ----
128
179
  # def get_results_dataframe(self, sections=None, aveSections=-1, cornerData=False, aveNodes=-1,
129
180
  # variation=100, realPolar=0) -> DataFrame:
@@ -1,7 +1,7 @@
1
1
  """Constants of the NaxToPy package"""
2
2
 
3
3
  # NaxToPy Version
4
- VERSION = "1.5.3"
4
+ VERSION = "1.5.4"
5
5
 
6
6
  # Supported for Naxto:
7
7
  NAXTO_VERSION = '2024R0'
@@ -152,6 +152,40 @@ class N2PLog(ABC):
152
152
  message = f"The parallel processing has been set to {parallel}"
153
153
  N2PLog._N2PLog__logger.debug(message)
154
154
 
155
+ @staticmethod
156
+ def D500(current_time,tinit) -> None:
157
+ """ Information given for the extraction time.
158
+ """
159
+ message = f"D500: Extraction time: {current_time-tinit} s"
160
+ N2PLog._N2PLog__logger.info(message)
161
+
162
+ @staticmethod
163
+ def D501(current_time,tinit) -> None:
164
+ """ Information given for computation time of elastic modulus.
165
+ """
166
+ message = f"D501: Elastic modulus calculation time: {current_time-tinit} s"
167
+ N2PLog._N2PLog__logger.info(message)
168
+
169
+ @staticmethod
170
+ def D502(current_time,tinit) -> None:
171
+ """ Information given for computation time of set intersection
172
+ """
173
+ message = f"D502: Set intersection computation time: {current_time-tinit} s"
174
+ N2PLog._N2PLog__logger.info(message)
175
+
176
+ @staticmethod
177
+ def D503(current_time,tinit) -> None:
178
+ """ Information given for computation time of fastener update
179
+ """
180
+ message = f"D503: Fastener update computation time: {current_time-tinit} s"
181
+ N2PLog._N2PLog__logger.info(message)
182
+
183
+ @staticmethod
184
+ def D504(current_time,tinit) -> None:
185
+ """ Information given for loading time of the model
186
+ """
187
+ message = f"D504: Model loading time: {current_time-tinit} s"
188
+ N2PLog._N2PLog__logger.info(message)
155
189
  # ------------------------------------------------------------------------------------------------------------------
156
190
 
157
191
  ############################################ INFO ################################################################
@@ -295,6 +329,8 @@ own information message. Use the following structure as a standard message (I +
295
329
  message = f"I203: Executing N2PEnvelope..."
296
330
  N2PLog._N2PLog__logger.info(message)
297
331
 
332
+
333
+
298
334
  # ------------------------------------------------------------------------------------------------------------------
299
335
 
300
336
  ########################################### WARNING ##############################################################
@@ -828,6 +864,13 @@ own information message. Use the following structure as a standard message (I +
828
864
  N2PLog._N2PLog__logger.error(message)
829
865
  # ------------------------------------------------------------------------------------------------------------------
830
866
 
867
+ @staticmethod
868
+ def E311(propID) -> None:
869
+ ''' Error raised when young modulus is not found.
870
+ '''
871
+ message = f"E311: YOUNG MODULUS COULD NOT BE FOUND FOR PROPERTY {propID}"
872
+ N2PLog._N2PLog__logger.error(message)
873
+
831
874
  ########################################### CRITICAL #############################################################
832
875
  class Critical:
833
876
  """Class with all the critical errors.
@@ -1108,6 +1108,10 @@ class N2PModelContent:
1108
1108
  # Se añade el case de carga de python a N2PModelContent
1109
1109
  self.__load_cases__.append(py_lc)
1110
1110
 
1111
+ # Se añade al diccionario si este ya existe
1112
+ if self.__LCs_by_ID__:
1113
+ self.__LCs_by_ID__[py_lc.ID] = py_lc
1114
+
1111
1115
  return py_lc
1112
1116
 
1113
1117
  def new_envelope_loadcase(self, name: str, formula: str, criteria: str="ExtremeMax") -> N2PLoadCase:
@@ -1175,6 +1179,10 @@ class N2PModelContent:
1175
1179
  # Se añade el case de carga de python a N2PModelContent
1176
1180
  self.__load_cases__.append(py_lc)
1177
1181
 
1182
+ # Se añade al diccionario si este ya existe
1183
+ if self.__LCs_by_ID__:
1184
+ self.__LCs_by_ID__[py_lc.ID] = py_lc
1185
+
1178
1186
  return py_lc
1179
1187
  # ------------------------------------------------------------------------------------------------------------------
1180
1188