midas-civil 0.2.1__py3-none-any.whl → 0.2.3__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.

Potentially problematic release.


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

midas_civil/_group.py CHANGED
@@ -44,7 +44,8 @@ def _add_node_2_stGroup(nodeID,groupName):
44
44
  if groupName in Group.Structure._names:
45
45
  for i in Group.Structure.Groups:
46
46
  if i.NAME == groupName:
47
- i.NLIST = list(i.NLIST + [nodeID])
47
+ if nodeID not in i.NLIST:
48
+ i.NLIST = list(i.NLIST + [nodeID])
48
49
  else:
49
50
  Group.Structure(groupName)
50
51
  _add_node_2_stGroup(nodeID,groupName)
midas_civil/_load.py CHANGED
@@ -420,45 +420,52 @@ class Load:
420
420
 
421
421
  #20 Class to add Load to Mass:
422
422
  class LoadToMass:
423
- """Creates load to mass conversion and converts to JSON format.
424
- Example: LoadToMass("Z", ["DL", "LL"], [1.0, 0.5])
423
+ """
424
+ Creates load-to-mass conversion entries and converts them to JSON format.
425
+
426
+ Example:
427
+ Load.LoadToMass("Z", ["DL", "LL"], [1.0, 0.5])
428
+
429
+ Args:
430
+ dir (str):
431
+ Mass Direction - "X", "Y", "Z", "XY", "YZ", "XZ", "XYZ".
432
+ If invalid, defaults to "XYZ".
433
+ load_case (list | str):
434
+ List of load case names or a single case name as string.
435
+ load_factor (list | float, optional):
436
+ List of scale factors corresponding to `load_case`.
437
+ If None or shorter than `load_case`, remaining factors default to 1.0.
438
+ nodal_load (bool, optional):
439
+ Include nodal loads. Defaults to True.
440
+ beam_load (bool, optional):
441
+ Include beam loads. Defaults to True.
442
+ floor_load (bool, optional):
443
+ Include floor loads. Defaults to True.
444
+ pressure (bool, optional):
445
+ Include pressure loads. Defaults to True.
446
+ gravity (float, optional):
447
+ Gravity acceleration. Defaults to 9.806.
425
448
  """
426
449
  data = []
427
450
 
428
451
  def __init__(self, dir, load_case, load_factor=None, nodal_load=True, beam_load=True,
429
452
  floor_load=True, pressure=True, gravity=9.806):
430
- """
431
- dir (str): Mass Direction - "X", "Y", "Z", "XY", "YZ", "XZ", "XYZ"
432
- load_case (list): List of load case names
433
- load_factor (list, optional): List of scale factors corresponding to load cases.
434
- If None or shorter than load_case, remaining factors default to 1.0
435
- nodal_load (bool): Include nodal loads. Defaults to True
436
- beam_load (bool): Include beam loads. Defaults to True
437
- floor_load (bool): Include floor loads. Defaults to True
438
- pressure (bool): Include pressure loads. Defaults to True
439
- gravity (float): Gravity acceleration. Defaults to 9.806
440
- """
441
-
442
- # Validate direction
453
+
443
454
  valid_directions = ["X", "Y", "Z", "XY", "YZ", "XZ", "XYZ"]
444
455
  if dir not in valid_directions:
445
- dir = "XYZ" # Default to XYZ if invalid
456
+ dir = "XYZ"
446
457
 
447
- # Ensure load_case is a list
448
458
  if not isinstance(load_case, list):
449
459
  load_case = [load_case]
450
460
 
451
- # Handle load_factor - ensure it matches load_case length
452
461
  if load_factor is None:
453
462
  load_factor = [1.0] * len(load_case)
454
463
  elif not isinstance(load_factor, list):
455
464
  load_factor = [load_factor]
456
465
 
457
- # Pad load_factor with 1.0 if shorter than load_case
458
466
  while len(load_factor) < len(load_case):
459
467
  load_factor.append(1.0)
460
468
 
461
- # Check if load cases exist - give warning if not
462
469
  for case in load_case:
463
470
  chk = 0
464
471
  for i in Load_Case.cases:
@@ -482,8 +489,7 @@ class Load:
482
489
  def json(cls):
483
490
  json_data = {"Assign": {}}
484
491
 
485
- for load_obj in enumerate(cls.data):
486
- # Create vLC array with load case names and factors
492
+ for idx, load_obj in enumerate(cls.data, start=1):
487
493
  vlc_array = []
488
494
  for i, case_name in enumerate(load_obj.LOAD_CASE):
489
495
  vlc_array.append({
@@ -491,7 +497,7 @@ class Load:
491
497
  "FACTOR": load_obj.LOAD_FACTOR[i]
492
498
  })
493
499
 
494
- json_data["Assign"]["1"] = {
500
+ json_data["Assign"][str(idx)] = {
495
501
  "DIR": load_obj.DIR,
496
502
  "bNODAL": load_obj.NODAL,
497
503
  "bBEAM": load_obj.BEAM,
@@ -500,7 +506,7 @@ class Load:
500
506
  "GRAV": load_obj.GRAVITY,
501
507
  "vLC": vlc_array
502
508
  }
503
-
509
+
504
510
  return json_data
505
511
 
506
512
  @classmethod
@@ -523,15 +529,13 @@ class Load:
523
529
 
524
530
  if response != {'message': ''}:
525
531
  for key, item_data in response.get('LTOM', {}).items():
526
- # Extract load cases and factors from vLC array
527
532
  load_cases = []
528
533
  load_factors = []
529
534
 
530
- for lc_item in item_data.get('vLC'):
535
+ for lc_item in item_data.get('vLC', []):
531
536
  load_cases.append(lc_item.get('LCNAME'))
532
537
  load_factors.append(lc_item.get('FACTOR'))
533
538
 
534
- # Create LoadToMass object
535
539
  Load.LoadToMass(
536
540
  dir=item_data.get('DIR'),
537
541
  load_case=load_cases,
@@ -543,6 +547,7 @@ class Load:
543
547
  gravity=item_data.get('GRAV')
544
548
  )
545
549
 
550
+
546
551
  #-----------------------------------------------------------NodalMass-----------------
547
552
  #21NodalMass
548
553
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: midas_civil
3
- Version: 0.2.1
3
+ Version: 0.2.3
4
4
  Summary: Python library for MIDAS Civil NX
5
5
  Author: Sumit Shekhar
6
6
  Author-email: sumit.midasit@gmail.com
@@ -3,8 +3,8 @@ midas_civil/_boundary.py,sha256=s5mgZIc1b0-P7AdWuaPAQ5cIbHL5CR1YRKJA7KE4W_U,3295
3
3
  midas_civil/_construction.py,sha256=q9C3gGdvky5t7jCDzd6lBRv6pm8cMycI91xfkgDV37Y,40673
4
4
  midas_civil/_construction_backup.py,sha256=Pj7V-NYCkkT-aMjKXfs1jKa9klsGh48UXDLwn3BLYTY,18225
5
5
  midas_civil/_element.py,sha256=hlH6NZfSBOrKQO7R22wZYbmLA20MB8rX7g_Td6G4mgo,27544
6
- midas_civil/_group.py,sha256=9EsPGW8lWpzJBW25Gfd-G5S_9oP8ER3zNzeqknDsfmw,11480
7
- midas_civil/_load.py,sha256=kPDcgyd-D_HD59ABQuYmry92ruCovdYos65g06wMq84,30360
6
+ midas_civil/_group.py,sha256=BPZcsuIVKr2vR1SezfCXS0sUn1W7aJfOJGc8ZvTAXvo,11526
7
+ midas_civil/_load.py,sha256=TltWAjDaeC5MNW8IIPKgpLahDQgJR3J6SzinkCrJS7A,30171
8
8
  midas_civil/_mapi.py,sha256=Fabn3QX6OHJeV_s_01KMvOwkSye0kfgpiUUgPplAzxA,4597
9
9
  midas_civil/_material.py,sha256=uJEIHJM9OhwTRWUI2mtd_0BQSxdlYhATYJu9P7tNNBA,69511
10
10
  midas_civil/_model.py,sha256=G5Kh7u2DSodvKGQ0fOzAUx4Ilj8-rn-nGDTFeI6AkUU,16442
@@ -20,8 +20,8 @@ midas_civil/_tendon.py,sha256=mXNJeLikFsBpgn8u9fED2qx9oqnKh3XtIpYwp3moEfk,33395
20
20
  midas_civil/_thickness.py,sha256=4xQsLA3Q_gIGCwLc_glFmiErdWdQUSwhlEhJ_IPJseA,3248
21
21
  midas_civil/_utils.py,sha256=eymiqO8KaTKdhVY3saebqNS0BbUUmGmgw3-ELKqew0A,2611
22
22
  midas_civil/_view.py,sha256=o7rkfoQzmgAb3dT0ujPIQLVwVlveo3rMRIbZU1UosZo,849
23
- midas_civil-0.2.1.dist-info/licenses/LICENSE,sha256=zrL4RwZC4rb-by_ZHKXwKdIwcs6ATy59TPZ9HxPHCrs,1071
24
- midas_civil-0.2.1.dist-info/METADATA,sha256=8-47-vWOP5-EPDzO4K4r9Am0nEFhZLSPbH5XlXntSgQ,1709
25
- midas_civil-0.2.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
26
- midas_civil-0.2.1.dist-info/top_level.txt,sha256=_NFmrlN5V9OxJ-PAO4s_om8OA8uupXho3QqZcSsnbuI,12
27
- midas_civil-0.2.1.dist-info/RECORD,,
23
+ midas_civil-0.2.3.dist-info/licenses/LICENSE,sha256=zrL4RwZC4rb-by_ZHKXwKdIwcs6ATy59TPZ9HxPHCrs,1071
24
+ midas_civil-0.2.3.dist-info/METADATA,sha256=Sukg6zP_15NzSNprGc-KwNNkal-8NBL3n3MqLcGbzRA,1709
25
+ midas_civil-0.2.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
26
+ midas_civil-0.2.3.dist-info/top_level.txt,sha256=_NFmrlN5V9OxJ-PAO4s_om8OA8uupXho3QqZcSsnbuI,12
27
+ midas_civil-0.2.3.dist-info/RECORD,,