midas-civil 0.1.9__tar.gz → 0.2.0__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.

Potentially problematic release.


This version of midas-civil might be problematic. Click here for more details.

Files changed (32) hide show
  1. {midas_civil-0.1.9 → midas_civil-0.2.0}/PKG-INFO +1 -1
  2. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil/_movingload.py +2 -2
  3. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil/_section.py +121 -0
  4. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil.egg-info/PKG-INFO +1 -1
  5. {midas_civil-0.1.9 → midas_civil-0.2.0}/setup.py +1 -1
  6. {midas_civil-0.1.9 → midas_civil-0.2.0}/LICENSE +0 -0
  7. {midas_civil-0.1.9 → midas_civil-0.2.0}/README.md +0 -0
  8. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil/__init__.py +0 -0
  9. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil/_boundary.py +0 -0
  10. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil/_construction.py +0 -0
  11. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil/_construction_backup.py +0 -0
  12. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil/_element.py +0 -0
  13. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil/_group.py +0 -0
  14. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil/_load.py +0 -0
  15. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil/_mapi.py +0 -0
  16. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil/_material.py +0 -0
  17. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil/_model.py +0 -0
  18. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil/_node.py +0 -0
  19. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil/_result copy.py +0 -0
  20. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil/_result.py +0 -0
  21. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil/_result_extract.py +0 -0
  22. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil/_settlement.py +0 -0
  23. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil/_temperature.py +0 -0
  24. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil/_tendon.py +0 -0
  25. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil/_thickness.py +0 -0
  26. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil/_utils.py +0 -0
  27. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil/_view.py +0 -0
  28. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil.egg-info/SOURCES.txt +0 -0
  29. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil.egg-info/dependency_links.txt +0 -0
  30. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil.egg-info/requires.txt +0 -0
  31. {midas_civil-0.1.9 → midas_civil-0.2.0}/midas_civil.egg-info/top_level.txt +0 -0
  32. {midas_civil-0.1.9 → midas_civil-0.2.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: midas_civil
3
- Version: 0.1.9
3
+ Version: 0.2.0
4
4
  Summary: Python library for MIDAS Civil NX
5
5
  Author: Sumit Shekhar
6
6
  Author-email: sumit.midasit@gmail.com
@@ -4,7 +4,7 @@ from ._model import *
4
4
 
5
5
  # ----------------------------------------------------------------------------------------------------------------
6
6
 
7
- def El_list(Start_id: int, End_id: int) -> list:
7
+ def _El_list(Start_id: int, End_id: int) -> list:
8
8
 
9
9
  return list(range(Start_id, End_id + 1))
10
10
 
@@ -330,7 +330,7 @@ class MovingLoad:
330
330
 
331
331
  data = {"Assign": {}}
332
332
  for lane in lanes_list:
333
- E_list = El_list(lane.Elment_start, lane.Elemnt_end)
333
+ E_list = _El_list(lane.Elment_start, lane.Elemnt_end)
334
334
  Load_Dist = "CROSS" if lane.Group_Name else "LANE"
335
335
  opt_auto_lane = lane.width > 0 or lane.opt_width > 0
336
336
 
@@ -1,4 +1,20 @@
1
1
  from ._mapi import *
2
+ import numpy as np
3
+
4
+
5
+ def _poly_dir(poly,rot='CCW'):
6
+ outer_cg = np.mean(poly,axis=0)
7
+ outer_t = np.subtract(poly,outer_cg)
8
+ dir = 0
9
+ for i in range(len(poly)-1):
10
+ dir+=outer_t[i][0]*outer_t[i+1][1]-outer_t[i][1]*outer_t[i+1][0]
11
+ if dir < 0:
12
+ poly.reverse()
13
+
14
+ if rot == 'CW':
15
+ poly.reverse()
16
+
17
+ return poly
2
18
 
3
19
 
4
20
 
@@ -104,6 +120,66 @@ def _Obj2JS(sect):
104
120
  "JOINT": [sect.J1,sect.JL1,sect.JL2,sect.JL3,sect.JL4,sect.JR1,sect.JR2,sect.JR3,sect.JR4]
105
121
  }
106
122
  }
123
+ elif sect.SHAPE in ['VALUE']:
124
+ js = {
125
+ "SECTTYPE": "PSC",
126
+ "SECT_NAME": sect.NAME,
127
+ "CALC_OPT": True,
128
+ "SECT_BEFORE": {
129
+ "SHAPE": "VALU",
130
+ "SECT_I": {
131
+ "SECT_NAME": "",
132
+ "vSIZE": [0.1, 0.1, 0.1, 0.1],
133
+ "OUTER_POLYGON": [
134
+ {
135
+ "VERTEX": [
136
+ {"X": 5, "Y": 5},
137
+ {"X": -5, "Y": 5}
138
+ ]
139
+ }
140
+ ]
141
+ },
142
+ "SHEAR_CHK": True,
143
+ "SHEAR_CHK_POS": [[0.1, 0, 0.1], [0, 0, 0]],
144
+ "USE_AUTO_QY": [[True, True, True], [False, False, False]],
145
+ "WEB_THICK": [0, 0],
146
+ "USE_WEB_THICK_SHEAR": [[True, True, True], [False, False, False]]
147
+ }
148
+ }
149
+
150
+ v_list = []
151
+ for i in sect.OUTER_POLYGON:
152
+ v_list.append({"X":i[0],"Y":i[1]})
153
+ js["SECT_BEFORE"]["SECT_I"]["OUTER_POLYGON"][0]["VERTEX"] =v_list
154
+
155
+
156
+
157
+ if sect.N_INNER_POLYGON > 0 :
158
+
159
+ js["SECT_BEFORE"]["SECT_I"]["INNER_POLYGON"]= []
160
+
161
+ mult_ver = []
162
+ for n in range(sect.N_INNER_POLYGON):
163
+ vi_list = []
164
+
165
+ js["SECT_BEFORE"]["SECT_I"]["INNER_POLYGON"]= [
166
+ {
167
+ "VERTEX": []
168
+ }
169
+ ]
170
+ for i in sect.INNER_POLYGON[n]:
171
+ vi_list.append({"X":i[0],"Y":i[1]})
172
+
173
+ ver_json = {"VERTEX": vi_list}
174
+ mult_ver.append(ver_json)
175
+
176
+ js["SECT_BEFORE"]["SECT_I"]["INNER_POLYGON"] = mult_ver
177
+
178
+
179
+
180
+
181
+
182
+
107
183
 
108
184
  elif sect.TYPE == 'COMPOSITE':
109
185
  if sect.SHAPE in ['CI']:
@@ -573,6 +649,51 @@ class Section:
573
649
 
574
650
  _SectionADD(self)
575
651
 
652
+ class Value(_common):
653
+ def __init__(self,Name:str,
654
+ OuterPolygon:list,InnerPolygon:list=[],
655
+ Offset:Offset=Offset.CC(),useShear=True,use7Dof=False,id:int=0):
656
+
657
+ '''
658
+ Outer Polygon -> List of points ; Last input is different from first
659
+ [(0,0),(1,0),(1,1),(0,1)]
660
+ Inner Polygon -> List of points ; Last input is different from first
661
+ Only one inner polygon
662
+ '''
663
+
664
+ self.ID = id
665
+ self.NAME = Name
666
+ self.SHAPE = 'VALUE'
667
+ self.TYPE = 'PSC'
668
+
669
+ self.OFFSET = Offset
670
+ self.USESHEAR = bool(useShear)
671
+ self.USE7DOF = bool(use7Dof)
672
+
673
+
674
+ self.OUTER_POLYGON = _poly_dir(OuterPolygon)
675
+ self.INNER_POLYGON = []
676
+ self.N_INNER_POLYGON = 0
677
+
678
+ temp_arr = []
679
+
680
+ # Finding no. of internal polygons
681
+ if InnerPolygon != []:
682
+ if not isinstance(InnerPolygon[0][0],(int,float)):
683
+ self.N_INNER_POLYGON = len(InnerPolygon)
684
+ temp_arr = InnerPolygon
685
+
686
+ else:
687
+ temp_arr.append(InnerPolygon) #Convert to list
688
+ self.N_INNER_POLYGON = 1
689
+
690
+ for i in range(len(temp_arr)):
691
+ self.INNER_POLYGON.append(_poly_dir(temp_arr[i],'CW'))
692
+
693
+
694
+ _SectionADD(self)
695
+
696
+
576
697
  class Composite:
577
698
  class PSCI(_common):
578
699
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: midas_civil
3
- Version: 0.1.9
3
+ Version: 0.2.0
4
4
  Summary: Python library for MIDAS Civil NX
5
5
  Author: Sumit Shekhar
6
6
  Author-email: sumit.midasit@gmail.com
@@ -5,7 +5,7 @@ with open('README.md','r') as f:
5
5
 
6
6
 
7
7
  setup(name='midas_civil',
8
- version='0.1.9',
8
+ version='0.2.0',
9
9
  description='Python library for MIDAS Civil NX',
10
10
  author='Sumit Shekhar',
11
11
  author_email='sumit.midasit@gmail.com',
File without changes
File without changes
File without changes