osis-python 0.6.2__tar.gz → 0.6.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 (117) hide show
  1. {osis_python-0.6.2/src/osis_python.egg-info → osis_python-0.6.3}/PKG-INFO +25 -25
  2. {osis_python-0.6.2 → osis_python-0.6.3}/README.md +24 -24
  3. {osis_python-0.6.2 → osis_python-0.6.3/src/osis_python.egg-info}/PKG-INFO +25 -25
  4. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/__init__.py +1 -1
  5. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/boundary/manager.py +8 -8
  6. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/element/manager.py +51 -51
  7. {osis_python-0.6.2 → osis_python-0.6.3}/LICENSE +0 -0
  8. {osis_python-0.6.2 → osis_python-0.6.3}/pyproject.toml +0 -0
  9. {osis_python-0.6.2 → osis_python-0.6.3}/setup.cfg +0 -0
  10. {osis_python-0.6.2 → osis_python-0.6.3}/src/osis_python.egg-info/SOURCES.txt +0 -0
  11. {osis_python-0.6.2 → osis_python-0.6.3}/src/osis_python.egg-info/dependency_links.txt +0 -0
  12. {osis_python-0.6.2 → osis_python-0.6.3}/src/osis_python.egg-info/requires.txt +0 -0
  13. {osis_python-0.6.2 → osis_python-0.6.3}/src/osis_python.egg-info/top_level.txt +0 -0
  14. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/boundary/__init__.py +0 -0
  15. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/boundary/interface.py +0 -0
  16. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/control/__init__.py +0 -0
  17. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/control/control.py +0 -0
  18. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/control/io.py +0 -0
  19. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/control/manager.py +0 -0
  20. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/control/nonlinear.py +0 -0
  21. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/core/__init__.py +0 -0
  22. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/core/all_func.py +0 -0
  23. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/core/apdl_sync.py +0 -0
  24. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/core/basic_manager.py +0 -0
  25. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/core/build.py +0 -0
  26. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/core/client.py +0 -0
  27. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/core/command.py +0 -0
  28. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/core/engine.py +0 -0
  29. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/core/exceptions.py +0 -0
  30. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/core/references.py +0 -0
  31. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/core/solver.py +0 -0
  32. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/core/sync_apdl_cli.py +0 -0
  33. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/display/__init__.py +0 -0
  34. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/display/interface.py +0 -0
  35. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/display/manager.py +0 -0
  36. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/dynamic/__init__.py +0 -0
  37. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/dynamic/load_to_mass.py +0 -0
  38. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/dynamic/manager.py +0 -0
  39. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/dynamic/modal.py +0 -0
  40. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/dynamic/seismic.py +0 -0
  41. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/element/__init__.py +0 -0
  42. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/element/interface.py +0 -0
  43. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/general/__init__.py +0 -0
  44. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/general/interface.py +0 -0
  45. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/geometry/__init__.py +0 -0
  46. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/geometry/interface.py +0 -0
  47. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/geometry/manager.py +0 -0
  48. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/live/__init__.py +0 -0
  49. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/live/analysis.py +0 -0
  50. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/live/grade.py +0 -0
  51. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/live/lane.py +0 -0
  52. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/live/manager.py +0 -0
  53. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/load/__init__.py +0 -0
  54. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/load/loadcase.py +0 -0
  55. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/load/manager.py +0 -0
  56. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/load/static.py +0 -0
  57. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/load/tendon.py +0 -0
  58. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/material/__init__.py +0 -0
  59. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/material/interface.py +0 -0
  60. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/material/manager.py +0 -0
  61. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/node/__init__.py +0 -0
  62. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/node/interface.py +0 -0
  63. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/node/manager.py +0 -0
  64. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/post/__init__.py +0 -0
  65. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/post/combine.py +0 -0
  66. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/post/design_check.py +0 -0
  67. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/post/display.py +0 -0
  68. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/post/manager.py +0 -0
  69. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/project/__init__.py +0 -0
  70. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/project/interface.py +0 -0
  71. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/project/manager.py +0 -0
  72. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/property/__init__.py +0 -0
  73. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/property/component_thickness.py +0 -0
  74. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/property/coordinate.py +0 -0
  75. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/property/creep_shrink.py +0 -0
  76. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/property/damping.py +0 -0
  77. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/property/manager.py +0 -0
  78. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/property/pu_curve.py +0 -0
  79. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/quick_building/__init__.py +0 -0
  80. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/quick_building/interface.py +0 -0
  81. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/result/__init__.py +0 -0
  82. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/result/check.py +0 -0
  83. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/result/env.py +0 -0
  84. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/result/loadcase.py +0 -0
  85. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/result/manager.py +0 -0
  86. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/result/result.py +0 -0
  87. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/section/__init__.py +0 -0
  88. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/section/common.py +0 -0
  89. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/section/composite.py +0 -0
  90. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/section/manager.py +0 -0
  91. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/section/numeric.py +0 -0
  92. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/section/param.py +0 -0
  93. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/section/rebar.py +0 -0
  94. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/section/rib.py +0 -0
  95. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/section/steel.py +0 -0
  96. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/settlement/__init__.py +0 -0
  97. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/settlement/interface.py +0 -0
  98. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/settlement/manager.py +0 -0
  99. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/stability/__init__.py +0 -0
  100. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/stability/buckling.py +0 -0
  101. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/stability/manager.py +0 -0
  102. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/stage/__init__.py +0 -0
  103. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/stage/define.py +0 -0
  104. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/stage/manager.py +0 -0
  105. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/stage/overall.py +0 -0
  106. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/thickness/__init__.py +0 -0
  107. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/thickness/interface.py +0 -0
  108. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/thickness/manager.py +0 -0
  109. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/transfer/__init__.py +0 -0
  110. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/transfer/generator.py +0 -0
  111. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/transfer/matrix.py +0 -0
  112. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/transfer/out_to_python.py +0 -0
  113. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/transfer/parser.py +0 -0
  114. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/transfer/routes.py +0 -0
  115. {osis_python-0.6.2 → osis_python-0.6.3}/src/pyosis/transfer/split.py +0 -0
  116. {osis_python-0.6.2 → osis_python-0.6.3}/tests/test_delete_occupied.py +0 -0
  117. {osis_python-0.6.2 → osis_python-0.6.3}/tests/test_project_manager.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: osis-python
3
- Version: 0.6.2
3
+ Version: 0.6.3
4
4
  Summary: A Python client library for Osis APDL
5
5
  Author-email: "CCCC Highway Consultant Co. Ltd." <support@osisbim.com>
6
6
  License-Expression: MIT
@@ -88,7 +88,7 @@ n2 = engine.node.create(no=2, x=15, y=0, z=0)
88
88
 
89
89
  # Create elements
90
90
  elem = engine.element.create_beam3d(
91
- no=1, node1=n1.no, node2=n2.no, nMat=mat.no, nSec1=sec.no, nSec2=sec.no
91
+ no=1, node1=n1.no, node2=n2.no, mat=mat.no, sec1=sec.no, sec2=sec.no
92
92
  )
93
93
 
94
94
  # Create boundaries
@@ -136,7 +136,7 @@ from pyosis.material import material_manager
136
136
  from pyosis.node import node_manager
137
137
 
138
138
  mat = material_manager.create_conc(no=1, name="C30", code="JTG3362_2018", grade="C30")
139
- node = node_manager.create(0, 0, 0)
139
+ node = node_manager.create(no=None, x=0, y=0, z=0)
140
140
  ```
141
141
 
142
142
  ### 4. Using OSISSolver — Start the Solver Directly (Solver-Only Mode)
@@ -208,8 +208,8 @@ engine.boundary.group.create("AbutmentBoundaries", "a", "1to2")
208
208
 
209
209
  # Various boundary types
210
210
  engine.boundary.create_general(no=1, x=1, y=1, z=1, rx=1, ry=1, rz=1, rw=1) # General support
211
- engine.boundary.create_master_slave(no=1, node=1, dx=1, dy=1, dz=1, rx=0, ry=1, rz=1, coincident=2) # Master-slave
212
- engine.boundary.create_rigid(no=1, nNodeI=1) # Rigid link
211
+ engine.boundary.create_master_slave(no=1, node=1, dx=1, dy=1, dz=1, rx=0, ry=1, rz=1, coincident=1) # Master-slave
212
+ engine.boundary.create_rigid(no=1, node_i=1) # Rigid link
213
213
  engine.boundary.create_elstcspt(no=1, coor="", x=0, dx=1e9, y=0, dy=1e9, z=0, dz=1e9) # Elastic support
214
214
 
215
215
  # Tendons
@@ -260,12 +260,12 @@ engine.prop.creep_shrink.create(no=1, name="Creep1", avg_humidity=70.0,
260
260
  # Damping (Rayleigh 自定义系数)
261
261
  engine.prop.damping.create_rayleigh_custom(name="Damping1", alpha=0.05, beta=0.005)
262
262
 
263
- # P-U curve (no, name, curve_type, num, values)
264
- # curve_type: 1=水平位移推力 2=竖向位移推力 3=竖向力位移
265
- engine.prop.pu_curve.create(no=1, name="PU1", curve_type=1, num=3, values=[0, 0.01, 1000, 0.02, 1500])
263
+ # P-U curve (no, name, curve_type, num, *values)
264
+ # curve_type: 0 = force, 1 = moment
265
+ engine.prop.pu_curve.create(1, "PU1", 1, 3, 0, 0.01, 1000, 0.02, 1500)
266
266
 
267
267
  # Element thickness assignment (thickness, op, *elems)
268
- engine.prop.assign_component_thickness(thickness=0.3, op="a", elems=[1])
268
+ engine.prop.assign_component_thickness(0.3, "a", 1)
269
269
 
270
270
  # Shell thickness (no, in_plane, out_plane)
271
271
  engine.thickness.create(no=1, in_plane=0.3, out_plane=0.3)
@@ -277,13 +277,13 @@ The `GeometryManager` supports querying geometric entities:
277
277
 
278
278
  ```python
279
279
  # Get all splines
280
- splines = engine.geometry.all("spline")
280
+ splines = engine.geometry.all()
281
281
 
282
282
  # Get a specific spline
283
- spline = engine.geometry.get("spline", name="curve1")
283
+ spline = engine.geometry.get("curve1")
284
284
 
285
- # Filter by type
286
- arcs = engine.geometry.filter("spline", spline_type="ARC3D")
285
+ # Filter by type (General / Natural / Arc3D / Arc2D)
286
+ arcs = [s for s in engine.geometry.all() if s.spline_type.name == "Arc3D"]
287
287
  ```
288
288
 
289
289
  ### Data Class Objects
@@ -299,7 +299,7 @@ print(elem.mat) # Material ID
299
299
  # Objects support operations (operations下沉 to object)
300
300
  lc = engine.load.get("Self-weight")
301
301
  lc.create_gravity()
302
- lc.create_nforce(1, dFx=1000)
302
+ lc.create_nforce(1, fx=1000)
303
303
  ```
304
304
 
305
305
  ### Explicit Numbering
@@ -363,23 +363,23 @@ engine.control.set_inc_tendon(True)
363
363
  engine.control.set_nonlinear(geom=False, link=False)
364
364
 
365
365
  # Sections
366
- engine.section.create_circle("CircleSection1", d=0.219, tw=0.012, no=1)
367
- engine.section.create_circle("CircleSection2", d=0.180, tw=0.008, no=2)
366
+ engine.section.create_circle(no=1, name="CircleSection1", d=0.219, tw=0.012)
367
+ engine.section.create_circle(no=2, name="CircleSection2", d=0.180, tw=0.008)
368
368
 
369
369
  # Materials
370
370
  engine.material.create_steel(
371
- "Steel1", code="JTGD64_2015", grade="Q345", dmp=0.05, no=1
371
+ no=1, name="Steel1", code="JTGD64_2015", grade="Q345", dmp=0.05
372
372
  )
373
373
 
374
374
  # Nodes
375
- engine.node.create(0, 5, 0, no=1)
376
- engine.node.create(15, 5, 0, no=2)
377
- engine.node.create(7.5, 0, 0, no=3)
378
- engine.node.create(20, 0, 0, no=4)
375
+ engine.node.create(no=1, x=0, y=5, z=0)
376
+ engine.node.create(no=2, x=15, y=5, z=0)
377
+ engine.node.create(no=3, x=7.5, y=0, z=0)
378
+ engine.node.create(no=4, x=20, y=0, z=0)
379
379
 
380
380
  # Elements
381
- engine.element.create_beam3d(1, 3, nMat=1, nSec1=1, nSec2=1, no=1)
382
- engine.element.create_beam3d(2, 3, nMat=1, nSec1=2, nSec2=2, no=2)
381
+ engine.element.create_beam3d(no=1, node1=1, node2=3, mat=1, sec1=1, sec2=1)
382
+ engine.element.create_beam3d(no=2, node1=2, node2=3, mat=1, sec1=2, sec2=2)
383
383
 
384
384
  # Boundaries
385
385
  engine.boundary.create_general(no=1)
@@ -391,8 +391,8 @@ lc = engine.load.create(
391
391
  load_case_type="USER",
392
392
  prompt="Two forces applied at nodes 3 and 4"
393
393
  )
394
- lc.create_nforce(3, dFx=0, dFy=-1000000, dFz=0)
395
- lc.create_nforce(4, dFx=200000, dFy=0, dFz=0)
394
+ lc.create_nforce(3, fx=0, fy=-1000000, fz=0)
395
+ lc.create_nforce(4, fx=200000, fy=0, fz=0)
396
396
 
397
397
  # Solve
398
398
  engine.solve()
@@ -57,7 +57,7 @@ n2 = engine.node.create(no=2, x=15, y=0, z=0)
57
57
 
58
58
  # Create elements
59
59
  elem = engine.element.create_beam3d(
60
- no=1, node1=n1.no, node2=n2.no, nMat=mat.no, nSec1=sec.no, nSec2=sec.no
60
+ no=1, node1=n1.no, node2=n2.no, mat=mat.no, sec1=sec.no, sec2=sec.no
61
61
  )
62
62
 
63
63
  # Create boundaries
@@ -105,7 +105,7 @@ from pyosis.material import material_manager
105
105
  from pyosis.node import node_manager
106
106
 
107
107
  mat = material_manager.create_conc(no=1, name="C30", code="JTG3362_2018", grade="C30")
108
- node = node_manager.create(0, 0, 0)
108
+ node = node_manager.create(no=None, x=0, y=0, z=0)
109
109
  ```
110
110
 
111
111
  ### 4. Using OSISSolver — Start the Solver Directly (Solver-Only Mode)
@@ -177,8 +177,8 @@ engine.boundary.group.create("AbutmentBoundaries", "a", "1to2")
177
177
 
178
178
  # Various boundary types
179
179
  engine.boundary.create_general(no=1, x=1, y=1, z=1, rx=1, ry=1, rz=1, rw=1) # General support
180
- engine.boundary.create_master_slave(no=1, node=1, dx=1, dy=1, dz=1, rx=0, ry=1, rz=1, coincident=2) # Master-slave
181
- engine.boundary.create_rigid(no=1, nNodeI=1) # Rigid link
180
+ engine.boundary.create_master_slave(no=1, node=1, dx=1, dy=1, dz=1, rx=0, ry=1, rz=1, coincident=1) # Master-slave
181
+ engine.boundary.create_rigid(no=1, node_i=1) # Rigid link
182
182
  engine.boundary.create_elstcspt(no=1, coor="", x=0, dx=1e9, y=0, dy=1e9, z=0, dz=1e9) # Elastic support
183
183
 
184
184
  # Tendons
@@ -229,12 +229,12 @@ engine.prop.creep_shrink.create(no=1, name="Creep1", avg_humidity=70.0,
229
229
  # Damping (Rayleigh 自定义系数)
230
230
  engine.prop.damping.create_rayleigh_custom(name="Damping1", alpha=0.05, beta=0.005)
231
231
 
232
- # P-U curve (no, name, curve_type, num, values)
233
- # curve_type: 1=水平位移推力 2=竖向位移推力 3=竖向力位移
234
- engine.prop.pu_curve.create(no=1, name="PU1", curve_type=1, num=3, values=[0, 0.01, 1000, 0.02, 1500])
232
+ # P-U curve (no, name, curve_type, num, *values)
233
+ # curve_type: 0 = force, 1 = moment
234
+ engine.prop.pu_curve.create(1, "PU1", 1, 3, 0, 0.01, 1000, 0.02, 1500)
235
235
 
236
236
  # Element thickness assignment (thickness, op, *elems)
237
- engine.prop.assign_component_thickness(thickness=0.3, op="a", elems=[1])
237
+ engine.prop.assign_component_thickness(0.3, "a", 1)
238
238
 
239
239
  # Shell thickness (no, in_plane, out_plane)
240
240
  engine.thickness.create(no=1, in_plane=0.3, out_plane=0.3)
@@ -246,13 +246,13 @@ The `GeometryManager` supports querying geometric entities:
246
246
 
247
247
  ```python
248
248
  # Get all splines
249
- splines = engine.geometry.all("spline")
249
+ splines = engine.geometry.all()
250
250
 
251
251
  # Get a specific spline
252
- spline = engine.geometry.get("spline", name="curve1")
252
+ spline = engine.geometry.get("curve1")
253
253
 
254
- # Filter by type
255
- arcs = engine.geometry.filter("spline", spline_type="ARC3D")
254
+ # Filter by type (General / Natural / Arc3D / Arc2D)
255
+ arcs = [s for s in engine.geometry.all() if s.spline_type.name == "Arc3D"]
256
256
  ```
257
257
 
258
258
  ### Data Class Objects
@@ -268,7 +268,7 @@ print(elem.mat) # Material ID
268
268
  # Objects support operations (operations下沉 to object)
269
269
  lc = engine.load.get("Self-weight")
270
270
  lc.create_gravity()
271
- lc.create_nforce(1, dFx=1000)
271
+ lc.create_nforce(1, fx=1000)
272
272
  ```
273
273
 
274
274
  ### Explicit Numbering
@@ -332,23 +332,23 @@ engine.control.set_inc_tendon(True)
332
332
  engine.control.set_nonlinear(geom=False, link=False)
333
333
 
334
334
  # Sections
335
- engine.section.create_circle("CircleSection1", d=0.219, tw=0.012, no=1)
336
- engine.section.create_circle("CircleSection2", d=0.180, tw=0.008, no=2)
335
+ engine.section.create_circle(no=1, name="CircleSection1", d=0.219, tw=0.012)
336
+ engine.section.create_circle(no=2, name="CircleSection2", d=0.180, tw=0.008)
337
337
 
338
338
  # Materials
339
339
  engine.material.create_steel(
340
- "Steel1", code="JTGD64_2015", grade="Q345", dmp=0.05, no=1
340
+ no=1, name="Steel1", code="JTGD64_2015", grade="Q345", dmp=0.05
341
341
  )
342
342
 
343
343
  # Nodes
344
- engine.node.create(0, 5, 0, no=1)
345
- engine.node.create(15, 5, 0, no=2)
346
- engine.node.create(7.5, 0, 0, no=3)
347
- engine.node.create(20, 0, 0, no=4)
344
+ engine.node.create(no=1, x=0, y=5, z=0)
345
+ engine.node.create(no=2, x=15, y=5, z=0)
346
+ engine.node.create(no=3, x=7.5, y=0, z=0)
347
+ engine.node.create(no=4, x=20, y=0, z=0)
348
348
 
349
349
  # Elements
350
- engine.element.create_beam3d(1, 3, nMat=1, nSec1=1, nSec2=1, no=1)
351
- engine.element.create_beam3d(2, 3, nMat=1, nSec1=2, nSec2=2, no=2)
350
+ engine.element.create_beam3d(no=1, node1=1, node2=3, mat=1, sec1=1, sec2=1)
351
+ engine.element.create_beam3d(no=2, node1=2, node2=3, mat=1, sec1=2, sec2=2)
352
352
 
353
353
  # Boundaries
354
354
  engine.boundary.create_general(no=1)
@@ -360,8 +360,8 @@ lc = engine.load.create(
360
360
  load_case_type="USER",
361
361
  prompt="Two forces applied at nodes 3 and 4"
362
362
  )
363
- lc.create_nforce(3, dFx=0, dFy=-1000000, dFz=0)
364
- lc.create_nforce(4, dFx=200000, dFy=0, dFz=0)
363
+ lc.create_nforce(3, fx=0, fy=-1000000, fz=0)
364
+ lc.create_nforce(4, fx=200000, fy=0, fz=0)
365
365
 
366
366
  # Solve
367
367
  engine.solve()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: osis-python
3
- Version: 0.6.2
3
+ Version: 0.6.3
4
4
  Summary: A Python client library for Osis APDL
5
5
  Author-email: "CCCC Highway Consultant Co. Ltd." <support@osisbim.com>
6
6
  License-Expression: MIT
@@ -88,7 +88,7 @@ n2 = engine.node.create(no=2, x=15, y=0, z=0)
88
88
 
89
89
  # Create elements
90
90
  elem = engine.element.create_beam3d(
91
- no=1, node1=n1.no, node2=n2.no, nMat=mat.no, nSec1=sec.no, nSec2=sec.no
91
+ no=1, node1=n1.no, node2=n2.no, mat=mat.no, sec1=sec.no, sec2=sec.no
92
92
  )
93
93
 
94
94
  # Create boundaries
@@ -136,7 +136,7 @@ from pyosis.material import material_manager
136
136
  from pyosis.node import node_manager
137
137
 
138
138
  mat = material_manager.create_conc(no=1, name="C30", code="JTG3362_2018", grade="C30")
139
- node = node_manager.create(0, 0, 0)
139
+ node = node_manager.create(no=None, x=0, y=0, z=0)
140
140
  ```
141
141
 
142
142
  ### 4. Using OSISSolver — Start the Solver Directly (Solver-Only Mode)
@@ -208,8 +208,8 @@ engine.boundary.group.create("AbutmentBoundaries", "a", "1to2")
208
208
 
209
209
  # Various boundary types
210
210
  engine.boundary.create_general(no=1, x=1, y=1, z=1, rx=1, ry=1, rz=1, rw=1) # General support
211
- engine.boundary.create_master_slave(no=1, node=1, dx=1, dy=1, dz=1, rx=0, ry=1, rz=1, coincident=2) # Master-slave
212
- engine.boundary.create_rigid(no=1, nNodeI=1) # Rigid link
211
+ engine.boundary.create_master_slave(no=1, node=1, dx=1, dy=1, dz=1, rx=0, ry=1, rz=1, coincident=1) # Master-slave
212
+ engine.boundary.create_rigid(no=1, node_i=1) # Rigid link
213
213
  engine.boundary.create_elstcspt(no=1, coor="", x=0, dx=1e9, y=0, dy=1e9, z=0, dz=1e9) # Elastic support
214
214
 
215
215
  # Tendons
@@ -260,12 +260,12 @@ engine.prop.creep_shrink.create(no=1, name="Creep1", avg_humidity=70.0,
260
260
  # Damping (Rayleigh 自定义系数)
261
261
  engine.prop.damping.create_rayleigh_custom(name="Damping1", alpha=0.05, beta=0.005)
262
262
 
263
- # P-U curve (no, name, curve_type, num, values)
264
- # curve_type: 1=水平位移推力 2=竖向位移推力 3=竖向力位移
265
- engine.prop.pu_curve.create(no=1, name="PU1", curve_type=1, num=3, values=[0, 0.01, 1000, 0.02, 1500])
263
+ # P-U curve (no, name, curve_type, num, *values)
264
+ # curve_type: 0 = force, 1 = moment
265
+ engine.prop.pu_curve.create(1, "PU1", 1, 3, 0, 0.01, 1000, 0.02, 1500)
266
266
 
267
267
  # Element thickness assignment (thickness, op, *elems)
268
- engine.prop.assign_component_thickness(thickness=0.3, op="a", elems=[1])
268
+ engine.prop.assign_component_thickness(0.3, "a", 1)
269
269
 
270
270
  # Shell thickness (no, in_plane, out_plane)
271
271
  engine.thickness.create(no=1, in_plane=0.3, out_plane=0.3)
@@ -277,13 +277,13 @@ The `GeometryManager` supports querying geometric entities:
277
277
 
278
278
  ```python
279
279
  # Get all splines
280
- splines = engine.geometry.all("spline")
280
+ splines = engine.geometry.all()
281
281
 
282
282
  # Get a specific spline
283
- spline = engine.geometry.get("spline", name="curve1")
283
+ spline = engine.geometry.get("curve1")
284
284
 
285
- # Filter by type
286
- arcs = engine.geometry.filter("spline", spline_type="ARC3D")
285
+ # Filter by type (General / Natural / Arc3D / Arc2D)
286
+ arcs = [s for s in engine.geometry.all() if s.spline_type.name == "Arc3D"]
287
287
  ```
288
288
 
289
289
  ### Data Class Objects
@@ -299,7 +299,7 @@ print(elem.mat) # Material ID
299
299
  # Objects support operations (operations下沉 to object)
300
300
  lc = engine.load.get("Self-weight")
301
301
  lc.create_gravity()
302
- lc.create_nforce(1, dFx=1000)
302
+ lc.create_nforce(1, fx=1000)
303
303
  ```
304
304
 
305
305
  ### Explicit Numbering
@@ -363,23 +363,23 @@ engine.control.set_inc_tendon(True)
363
363
  engine.control.set_nonlinear(geom=False, link=False)
364
364
 
365
365
  # Sections
366
- engine.section.create_circle("CircleSection1", d=0.219, tw=0.012, no=1)
367
- engine.section.create_circle("CircleSection2", d=0.180, tw=0.008, no=2)
366
+ engine.section.create_circle(no=1, name="CircleSection1", d=0.219, tw=0.012)
367
+ engine.section.create_circle(no=2, name="CircleSection2", d=0.180, tw=0.008)
368
368
 
369
369
  # Materials
370
370
  engine.material.create_steel(
371
- "Steel1", code="JTGD64_2015", grade="Q345", dmp=0.05, no=1
371
+ no=1, name="Steel1", code="JTGD64_2015", grade="Q345", dmp=0.05
372
372
  )
373
373
 
374
374
  # Nodes
375
- engine.node.create(0, 5, 0, no=1)
376
- engine.node.create(15, 5, 0, no=2)
377
- engine.node.create(7.5, 0, 0, no=3)
378
- engine.node.create(20, 0, 0, no=4)
375
+ engine.node.create(no=1, x=0, y=5, z=0)
376
+ engine.node.create(no=2, x=15, y=5, z=0)
377
+ engine.node.create(no=3, x=7.5, y=0, z=0)
378
+ engine.node.create(no=4, x=20, y=0, z=0)
379
379
 
380
380
  # Elements
381
- engine.element.create_beam3d(1, 3, nMat=1, nSec1=1, nSec2=1, no=1)
382
- engine.element.create_beam3d(2, 3, nMat=1, nSec1=2, nSec2=2, no=2)
381
+ engine.element.create_beam3d(no=1, node1=1, node2=3, mat=1, sec1=1, sec2=1)
382
+ engine.element.create_beam3d(no=2, node1=2, node2=3, mat=1, sec1=2, sec2=2)
383
383
 
384
384
  # Boundaries
385
385
  engine.boundary.create_general(no=1)
@@ -391,8 +391,8 @@ lc = engine.load.create(
391
391
  load_case_type="USER",
392
392
  prompt="Two forces applied at nodes 3 and 4"
393
393
  )
394
- lc.create_nforce(3, dFx=0, dFy=-1000000, dFz=0)
395
- lc.create_nforce(4, dFx=200000, dFy=0, dFz=0)
394
+ lc.create_nforce(3, fx=0, fy=-1000000, fz=0)
395
+ lc.create_nforce(4, fx=200000, fy=0, fz=0)
396
396
 
397
397
  # Solve
398
398
  engine.solve()
@@ -7,7 +7,7 @@ A library for extending OSIS functionality.
7
7
  A library that allows users to use CAE with great flexibility.
8
8
  """
9
9
 
10
- __version__ = "0.6.2"
10
+ __version__ = "0.6.3"
11
11
  __author__ = "CCCC Highway Consultant Co. Ltd." # 中交公路规划设计院 - 工程技术研究中心 - lzh - wjh - myf
12
12
 
13
13
  from .core.engine import OSISEngine
@@ -688,9 +688,9 @@ class BoundaryManager:
688
688
  RuntimeError: 创建失败
689
689
 
690
690
  Examples:
691
- >>> boundary_manager.create(None, "GENERAL", bX=1, bY=1, bZ=1)
692
- >>> boundary_manager.create(1, "MSTSLV", nNode=10)
693
- >>> boundary_manager.create(2, "RIGID", nNodeI=5)
691
+ >>> boundary_manager.create(None, "GENERAL", x=1, y=1, z=1)
692
+ >>> boundary_manager.create(1, "MSTSLV", node=10)
693
+ >>> boundary_manager.create(2, "RIGID", node_i=5)
694
694
  """
695
695
  _creator = {
696
696
  "GENERAL": self.create_general,
@@ -973,26 +973,26 @@ class BoundaryManager:
973
973
  def create_rigid(
974
974
  self,
975
975
  no: int | None,
976
- nNodeI: int,
976
+ node_i: int,
977
977
  ) -> Boundary:
978
978
  '''创建刚性连接
979
979
 
980
- 将主节点 nNodeI 与通过 assign 分配的从节点绑定为刚性区域,
980
+ 将主节点 node_i 与通过 assign 分配的从节点绑定为刚性区域,
981
981
  刚性区域内所有节点的 6 个自由度保持完全一致。
982
982
 
983
983
  Args:
984
984
  no: 边界编号,None 时自动分配
985
- nNodeI: 节点1编号(刚性区域的主节点)
985
+ node_i: 节点1编号(刚性区域的主节点)
986
986
 
987
987
  Returns:
988
988
  Boundary 对象
989
989
 
990
990
  Notes:
991
- 用于形成刚性区域的从节点号 nodeJ, nodeK, ..., nodeL 由 assign 方法定义。
991
+ 用于形成刚性区域的从节点号 node_j, node_k, ..., node_l 由 assign 方法定义。
992
992
  '''
993
993
  if no is None:
994
994
  no = self._next_no()
995
- ok, err = osis_boundary_rigid(no, "RIGID", nNodeI)
995
+ ok, err = osis_boundary_rigid(no, "RIGID", node_i)
996
996
  if not ok:
997
997
  raise RuntimeError(f"创建刚性连接 {no} 失败: {err}")
998
998
  return self.get(no) # type: ignore[return-value]
@@ -553,7 +553,7 @@ class ElementManager:
553
553
 
554
554
  用法:
555
555
  >>> from pyosis.element import element_manager
556
- >>> elem = element_manager.create_beam3d(1, 2, nMat=1, nSec1=1, nSec2=1)
556
+ >>> elem = element_manager.create_beam3d(1, 2, mat=1, sec1=1, sec2=1)
557
557
  >>> elem.no
558
558
  >>> elem.element_type
559
559
  >>> all_elems = element_manager.all()
@@ -616,7 +616,7 @@ class ElementManager:
616
616
  RuntimeError: 创建失败
617
617
 
618
618
  Examples:
619
- >>> element_manager.create(None, "BEAM3D", 1, 2, nMat=1, nSec1=1, nSec2=1)
619
+ >>> element_manager.create(None, "BEAM3D", 1, 2, mat=1, sec1=1, sec2=1)
620
620
  >>> element_manager.create(10, "TRUSS", 1, 2, 1, 1, 1)
621
621
  """
622
622
  _creator = {
@@ -638,15 +638,15 @@ class ElementManager:
638
638
  no: int | None,
639
639
  node1: int,
640
640
  node2: int,
641
- nMat: int,
642
- nSec1: int,
643
- nSec2: int,
644
- nYTrans: Literal[1, 2, 3, 4] = 1,
645
- nZTrans: Literal[1, 2, 3, 4] = 1,
646
- dStrain: float = 0.0,
647
- bFlag: bool = 0,
648
- dTheta: float = 0,
649
- bWarping: bool = 0,
641
+ mat: int,
642
+ sec1: int,
643
+ sec2: int,
644
+ y_trans: Literal[1, 2, 3, 4] = 1,
645
+ z_trans: Literal[1, 2, 3, 4] = 1,
646
+ strain: float = 0.0,
647
+ flag: bool = 0,
648
+ theta: float = 0,
649
+ warping: bool = 0,
650
650
  ) -> Element:
651
651
  '''创建梁柱单元
652
652
 
@@ -657,19 +657,19 @@ class ElementManager:
657
657
  no: 单元编号,None 时自动分配
658
658
  node1: 节点1编号
659
659
  node2: 节点2编号
660
- nMat: 材料编号
661
- nSec1: I 端截面1编号
662
- nSec2: J 端截面2编号
663
- nYTrans: y 轴截面变化次方,可选值:1, 2, 3, 4
664
- nZTrans: z 轴截面变化次方,可选值:1, 2, 3, 4
665
- dStrain: 应变值,默认为 0.0
666
- bFlag: 轴向转角定义方式:
660
+ mat: 材料编号
661
+ sec1: I 端截面1编号
662
+ sec2: J 端截面2编号
663
+ y_trans: y 轴截面变化次方,可选值:1, 2, 3, 4
664
+ z_trans: z 轴截面变化次方,可选值:1, 2, 3, 4
665
+ strain: 应变值,默认为 0.0
666
+ flag: 轴向转角定义方式:
667
667
  * 0: 使用 beta 角定义
668
668
  * 1: 使用关键点定义
669
- dTheta: 轴向转角参数:
670
- * bFlag=0 时: 轴向转角(beta 角)
671
- * bFlag=1 时: 关键点
672
- bWarping: 翘曲效应标志:
669
+ theta: 轴向转角参数:
670
+ * flag=0 时: 轴向转角(beta 角)
671
+ * flag=1 时: 关键点
672
+ warping: 翘曲效应标志:
673
673
  * 1: 考虑翘曲
674
674
  * 0: 不考虑翘曲
675
675
 
@@ -677,13 +677,13 @@ class ElementManager:
677
677
  Element 对象
678
678
 
679
679
  Examples:
680
- >>> element_manager.create_beam3d(None, 1, 2, nMat=1, nSec1=1, nSec2=1)
680
+ >>> element_manager.create_beam3d(None, 1, 2, mat=1, sec1=1, sec2=1)
681
681
  '''
682
682
  if no is None:
683
683
  no = self._next_no()
684
684
  ok, err = osis_element_beam3d(
685
- no, "BEAM3D", node1, node2, nMat, nSec1, nSec2,
686
- nYTrans, nZTrans, dStrain, bFlag, dTheta, bWarping
685
+ no, "BEAM3D", node1, node2, mat, sec1, sec2,
686
+ y_trans, z_trans, strain, flag, theta, warping
687
687
  )
688
688
  if not ok:
689
689
  raise RuntimeError(f"创建梁单元 {no} 失败: {err}")
@@ -694,10 +694,10 @@ class ElementManager:
694
694
  no: int | None,
695
695
  node1: int,
696
696
  node2: int,
697
- nMat: int,
698
- nSec1: int,
699
- nSec2: int,
700
- dStrain: float = 0.0,
697
+ mat: int,
698
+ sec1: int,
699
+ sec2: int,
700
+ strain: float = 0.0,
701
701
  ) -> Element:
702
702
  '''创建桁架单元
703
703
 
@@ -707,20 +707,20 @@ class ElementManager:
707
707
  no: 单元编号,None 时自动分配
708
708
  node1: 节点1编号
709
709
  node2: 节点2编号
710
- nMat: 材料编号
711
- nSec1: I 端截面1编号
712
- nSec2: J 端截面2编号
713
- dStrain: 应变值,默认为 0.0
710
+ mat: 材料编号
711
+ sec1: I 端截面1编号
712
+ sec2: J 端截面2编号
713
+ strain: 应变值,默认为 0.0
714
714
 
715
715
  Returns:
716
716
  Element 对象
717
717
 
718
718
  Examples:
719
- >>> element_manager.create_truss(None, 1, 2, nMat=1, nSec1=1, nSec2=1)
719
+ >>> element_manager.create_truss(None, 1, 2, mat=1, sec1=1, sec2=1)
720
720
  '''
721
721
  if no is None:
722
722
  no = self._next_no()
723
- ok, err = osis_element_truss(no, "TRUSS", node1, node2, nMat, nSec1, nSec2, dStrain)
723
+ ok, err = osis_element_truss(no, "TRUSS", node1, node2, mat, sec1, sec2, strain)
724
724
  if not ok:
725
725
  raise RuntimeError(f"创建桁架单元 {no} 失败: {err}")
726
726
  return self.get(no) # type: ignore[return-value]
@@ -730,7 +730,7 @@ class ElementManager:
730
730
  no: int | None,
731
731
  node1: int,
732
732
  node2: int,
733
- bLinear: int = 1,
733
+ is_linear: int = 1,
734
734
  dx: float = 10,
735
735
  dy: float = 10,
736
736
  dz: float = 10,
@@ -747,39 +747,39 @@ class ElementManager:
747
747
  no: 单元编号,None 时自动分配
748
748
  node1: 节点1编号
749
749
  node2: 节点2编号
750
- bLinear: 弹簧类型标志:
750
+ is_linear: 弹簧类型标志:
751
751
  * 1: 线性弹簧
752
752
  * 0: 非线性弹簧
753
753
  dx: x 方向自由度参数:
754
- * 线性弹簧 (bLinear=1): 局部坐标系下 dx 方向的刚度值
755
- * 非线性弹簧 (bLinear=0): 局部坐标系下 dx 方向的力-位移曲线编号(PUCurve 定义)
754
+ * 线性弹簧 (is_linear=1): 局部坐标系下 dx 方向的刚度值
755
+ * 非线性弹簧 (is_linear=0): 局部坐标系下 dx 方向的力-位移曲线编号(PUCurve 定义)
756
756
  dy: y 方向自由度参数:
757
- * 线性弹簧 (bLinear=1): 局部坐标系下 dy 方向的刚度值
758
- * 非线性弹簧 (bLinear=0): 局部坐标系下 dy 方向的力-位移曲线编号(PUCurve 定义)
757
+ * 线性弹簧 (is_linear=1): 局部坐标系下 dy 方向的刚度值
758
+ * 非线性弹簧 (is_linear=0): 局部坐标系下 dy 方向的力-位移曲线编号(PUCurve 定义)
759
759
  dz: z 方向自由度参数:
760
- * 线性弹簧 (bLinear=1): 局部坐标系下 dz 方向的刚度值
761
- * 非线性弹簧 (bLinear=0): 局部坐标系下 dz 方向的力-位移曲线编号(PUCurve 定义)
760
+ * 线性弹簧 (is_linear=1): 局部坐标系下 dz 方向的刚度值
761
+ * 非线性弹簧 (is_linear=0): 局部坐标系下 dz 方向的力-位移曲线编号(PUCurve 定义)
762
762
  rx: 绕 x 轴旋转自由度参数:
763
- * 线性弹簧 (bLinear=1): 局部坐标系下 rx 方向的刚度值
764
- * 非线性弹簧 (bLinear=0): 局部坐标系下 rx 方向的力-位移曲线编号(PUCurve 定义)
763
+ * 线性弹簧 (is_linear=1): 局部坐标系下 rx 方向的刚度值
764
+ * 非线性弹簧 (is_linear=0): 局部坐标系下 rx 方向的力-位移曲线编号(PUCurve 定义)
765
765
  ry: 绕 y 轴旋转自由度参数:
766
- * 线性弹簧 (bLinear=1): 局部坐标系下 ry 方向的刚度值
767
- * 非线性弹簧 (bLinear=0): 局部坐标系下 ry 方向的力-位移曲线编号(PUCurve 定义)
766
+ * 线性弹簧 (is_linear=1): 局部坐标系下 ry 方向的刚度值
767
+ * 非线性弹簧 (is_linear=0): 局部坐标系下 ry 方向的力-位移曲线编号(PUCurve 定义)
768
768
  rz: 绕 z 轴旋转自由度参数:
769
- * 线性弹簧 (bLinear=1): 局部坐标系下 rz 方向的刚度值
770
- * 非线性弹簧 (bLinear=0): 局部坐标系下 rz 方向的力-位移曲线编号(PUCurve 定义)
769
+ * 线性弹簧 (is_linear=1): 局部坐标系下 rz 方向的刚度值
770
+ * 非线性弹簧 (is_linear=0): 局部坐标系下 rz 方向的力-位移曲线编号(PUCurve 定义)
771
771
  beta: 轴向转角(beta 角),默认为 0.0
772
772
 
773
773
  Returns:
774
774
  Element 对象
775
775
 
776
776
  Examples:
777
- >>> element_manager.create_spring(None, 1, 2, bLinear=1)
777
+ >>> element_manager.create_spring(None, 1, 2, is_linear=1)
778
778
  '''
779
779
  if no is None:
780
780
  no = self._next_no()
781
781
  ok, err = osis_element_spring(
782
- no, "SPRING", node1, node2, bLinear, dx, dy, dz, rx, ry, rz, beta
782
+ no, "SPRING", node1, node2, is_linear, dx, dy, dz, rx, ry, rz, beta
783
783
  )
784
784
  if not ok:
785
785
  raise RuntimeError(f"创建弹簧单元 {no} 失败: {err}")
File without changes
File without changes
File without changes