Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
277 commits
Select commit Hold shift + click to select a range
9e24230
Fixed tab All Tab and control button issues.
mhsuhail00 Sep 17, 2025
18981c7
[Refactor] update_version_check.py
Zehen-249 Aug 20, 2025
04a49dc
Add update_now and update_later buttons
Zehen-249 Aug 20, 2025
8599a16
fix minor bugs and inconsistency
Zehen-249 Aug 20, 2025
c2302f1
add update_to_latest method to show dummy update
Zehen-249 Aug 20, 2025
041d533
seperate pixi and conda based installation updates
Zehen-249 Aug 20, 2025
33b9519
add synchronised update feature for conda(GUI block until update comp…
Zehen-249 Aug 20, 2025
c9fa1db
Add conda.exe and pixi.exe executable paths
Zehen-249 Aug 20, 2025
1651191
Add asyn update feature using QProcess
Zehen-249 Aug 21, 2025
55de1bb
Add dialog box to show update status
Zehen-249 Aug 21, 2025
63e9b7b
Make update status box Non-modal
Zehen-249 Aug 21, 2025
f41674a
Use conda channel and pixi to fetch latest versions
Zehen-249 Sep 10, 2025
9469181
Migrate update feature in osdag_gui
Zehen-249 Sep 21, 2025
eb9236c
Created schema and functions to interact with user database
mhsuhail00 Sep 21, 2025
af43189
Merge branch 'osdag-refactored-v2025.01.a.2' of https://github.com/mh…
mhsuhail00 Sep 21, 2025
43130ba
setup cli.py
Zehen-249 Sep 1, 2025
a1f364b
add method to generate design_dictionary from osi file
Zehen-249 Sep 1, 2025
4e9b3e6
add method to generate output_dictinory
Zehen-249 Sep 1, 2025
348c959
add method to save output as csv or complete pdf report
Zehen-249 Sep 1, 2025
b6b13ba
add run_module method for cli
Zehen-249 Sep 1, 2025
9961e23
Add cli osi file feature
Zehen-249 Sep 2, 2025
1a3e41b
Add cli utility for osi files
Zehen-249 Sep 3, 2025
882ad14
migrate from argparser to click
Zehen-249 Sep 4, 2025
7969114
migrate cli into osdag_core
Zehen-249 Sep 21, 2025
200b82f
Fix popup filename key
Zehen-249 Sep 21, 2025
acf4864
[Refactor] update_version_check.py
Zehen-249 Aug 20, 2025
215b953
Add update_now and update_later buttons
Zehen-249 Aug 20, 2025
99e45b3
fix minor bugs and inconsistency
Zehen-249 Aug 20, 2025
2fcf896
add update_to_latest method to show dummy update
Zehen-249 Aug 20, 2025
0e6d7c8
seperate pixi and conda based installation updates
Zehen-249 Aug 20, 2025
e20867d
add synchronised update feature for conda(GUI block until update comp…
Zehen-249 Aug 20, 2025
696b550
Add conda.exe and pixi.exe executable paths
Zehen-249 Aug 20, 2025
491788a
Add asyn update feature using QProcess
Zehen-249 Aug 21, 2025
511dac7
Add dialog box to show update status
Zehen-249 Aug 21, 2025
e5c066b
Make update status box Non-modal
Zehen-249 Aug 21, 2025
e2447b5
Use conda channel and pixi to fetch latest versions
Zehen-249 Sep 10, 2025
b497561
Migrate update feature in osdag_gui
Zehen-249 Sep 21, 2025
3c0cb95
Replace UpdateDialog in ui components dialog
Zehen-249 Sep 22, 2025
693a62a
Fix numpy.bool in setVisible method
Zehen-249 Sep 22, 2025
8d2e8cf
Fixed the report generation delay by ommiting unusual things.
mhsuhail00 Sep 22, 2025
17d3a4d
1. Implemented Recent PRoject and module except generate report funct…
mhsuhail00 Sep 22, 2025
ec173c5
Merged cli and update
mhsuhail00 Sep 23, 2025
1228893
Add osdag_latex_env-remove pdflatex dependency
Zehen-249 Sep 23, 2025
4d2c6e8
Delete redundant update_dialoge.py file
Zehen-249 Sep 23, 2025
10dc884
Recent projects and modules Implemented, report can also be generated…
mhsuhail00 Sep 24, 2025
281ffd1
Compression added in butt joint welded
nishikantmandal007 Sep 24, 2025
e327461
Fixed database errors on first start of Osdag
mhsuhail00 Sep 24, 2025
e1de04b
Implemented Hover Over functionality on CAD for FinPlate
mhsuhail00 Sep 24, 2025
4f30f0c
Fixed the Font Family as Ubuntu Sans Globally
mhsuhail00 Sep 25, 2025
80d119d
Beam Column assembing animation added in Splash page.
mhsuhail00 Sep 25, 2025
d70a3d3
Fixed Initial database creation issues
mhsuhail00 Sep 25, 2025
982f6d7
Update README.md
ajmalbabums Sep 28, 2025
1bd6cb2
Update README.md
ajmalbabums Sep 28, 2025
4662fc9
Update README.md
ajmalbabums Sep 28, 2025
6b8a54e
Merge branch 'osdag-admin:master' into feat/Compression_force
nishikantmandal007 Sep 28, 2025
3ae3bfb
Integrated New Spacing Details and Capacity Details, tested with FinP…
mhsuhail00 Sep 29, 2025
5bf467c
Fixed Checkboxes
mhsuhail00 Oct 1, 2025
07a88fb
Hover over finplate cad fix
mhsuhail00 Oct 3, 2025
34ae4c4
Completely implemented search functionality in home_widget
mhsuhail00 Oct 3, 2025
9337fc0
1. Navbar icon updated
mhsuhail00 Oct 3, 2025
5db8f10
Lap joint welded implemented with compression F
nishikantmandal007 Oct 4, 2025
0080724
Changed the title bar to customTitleBar of Material Dialog and Custom…
mhsuhail00 Oct 4, 2025
dec0c6b
Added legacy functionality to load last inputs when opening a module.
mhsuhail00 Oct 4, 2025
18e2793
Combined summary_popup and report_customization_popup into single popup
mhsuhail00 Oct 5, 2025
8a2a9a1
Removed custom_report and design_summary popup .py
mhsuhail00 Oct 5, 2025
64105cf
Add internet connectivity check before checking for updates
Zehen-249 Sep 27, 2025
eed8fdf
Refactored Cleat Angle, Seated Angle, End Plate Shear Connections Module
mhsuhail00 Oct 16, 2025
b7be785
Compression force added in both butt and lap joint
nishikantmandal007 Oct 18, 2025
b7e4520
Fixed zero level svgcard signal connection
mhsuhail00 Oct 23, 2025
530b647
Dark Mode working for FinPlateConnection
mhsuhail00 Oct 18, 2025
eda7ab0
Added legacy spacing dialog & Shear Connections completed with light/…
mhsuhail00 Oct 20, 2025
9de9d5b
Loading popup buffering fixed using Multiprocessing
mhsuhail00 Oct 20, 2025
57cab69
Added ISA in angle designation cad hover label
mhsuhail00 Oct 21, 2025
39338bf
Added sponsor logos
mhsuhail00 Oct 21, 2025
111f571
Navbar Icons Updated
mhsuhail00 Oct 24, 2025
4755ce1
Fixed Style for Additional Inputs
mhsuhail00 Oct 25, 2025
8f81115
Removed unused imports
mhsuhail00 Oct 25, 2025
ff6f93c
Docking Icons shifted below title_bar (main_window.py to template_pag…
mhsuhail00 Oct 25, 2025
01c9a92
EndPlate-ShearConnection to HeaderPlate-ShearConnection in ui only
mhsuhail00 Oct 26, 2025
4ff4da9
Added Beam-to-Column End Plate connection page
Navnit-07 Nov 1, 2025
5556289
Refactor BeamColumnEndPlate
Navnit-07 Nov 1, 2025
3543863
fix popup styling
Navnit-07 Nov 5, 2025
70e077f
fix: load correct initial end-plate type image on first render
Navnit-07 Nov 5, 2025
43170b6
EndPlate-ShearConnection to HeaderPlate-ShearConnection in ui only
mhsuhail00 Oct 26, 2025
8fc9d64
Fixed Home page Bufferening due to Howrah Bridge svg
mhsuhail00 Oct 31, 2025
cd508a6
Omited Animation steps, set single step animation.
mhsuhail00 Nov 2, 2025
dc25c04
Added Bounds button in Plate Girder
mhsuhail00 Nov 6, 2025
82956ac
Connected bound button in Plate Girder to backend
mhsuhail00 Nov 6, 2025
94f7d3f
Fixed floating-navbar & bounds button style for both mode
mhsuhail00 Nov 6, 2025
8419596
Merged and Refactored corrected calculation for plate-girder
mhsuhail00 Nov 9, 2025
8f39b59
Commented print statements for plate-girder in is800_2007.py
mhsuhail00 Nov 9, 2025
68525b7
refactor: Refactored code for Tension Member Bolted.
sumagnadas Oct 19, 2025
7ace4c5
fix: Fix 3D model generation for Tension Bolted member.
sumagnadas Oct 20, 2025
c89151a
feat: Bolt Spacing modal for Tension Bolted module and other changes.
sumagnadas Nov 3, 2025
6508cbe
Update pyproject.toml for osdag_gui
Zehen-249 Nov 20, 2025
c844c24
Tension Welded Refactored
harshchelani08 Dec 2, 2025
8752707
Merge branch 'pr-418' into osdag-refactored-v2025.01.a.2
harshchelani08 Dec 2, 2025
d7ea852
Simple Connections Refactored
harshchelani08 Dec 8, 2025
054d2ac
Delete src/report.aux
mhsuhail00 Dec 8, 2025
f4deb05
Set default folder for cli outputs
Zehen-249 Dec 2, 2025
d759b0a
Update pyproject.toml for osdag_gui
Zehen-249 Nov 20, 2025
868fe6c
Fix: Added Column CAD integration + output dock and capacity UI updates
Nov 23, 2025
3b09377
Fix: Beam-to-Beam Cover Plate Bolted, Beam-to-Beam Cover Plate Welded…
Nov 30, 2025
0887c7c
Fix: Added UI support for Column-to-Column Moment Connection modules
Dec 4, 2025
4bec4eb
Fix: CAD hover labels & component rendering for BB/CC cover plate + e…
Dec 6, 2025
2890139
Fix: Hover-label & checkbox for column cover plate, cover plate weld,…
Dec 6, 2025
78b0fc6
Added weld/gusset plate details and changed compression struts name
ctheface Oct 22, 2025
f9d0c0f
feat: Added welded/gusset plate connection support to compression mem…
ctheface Nov 11, 2025
ac5d3d3
Added struts in trusses module
ctheface Nov 11, 2025
afbe478
added struts in Trusses compression member module in osdag_core
ctheface Dec 1, 2025
4b70134
made the following changes, 1)spacing details 2)zoom in and zoom out …
Harshan-164 Dec 6, 2025
00b3b05
collective bolt hightlight while hovering
Harshan-164 Dec 8, 2025
6eee53b
minor fixes
Harshan-164 Dec 8, 2025
414b2da
Removed the looping animation on splash screen
mhsuhail00 Nov 17, 2025
03bda35
-Updated bolt and wed color
mhsuhail00 Nov 25, 2025
b911bb2
-Compressed Module calling function
mhsuhail00 Nov 26, 2025
0e9be53
Updated default save directory to Documents/
mhsuhail00 Nov 26, 2025
60f1a30
Made Color Of UnderDev Navbar button to Grey
mhsuhail00 Nov 26, 2025
ae38dde
Added INSDAG logo in home_widget
mhsuhail00 Nov 26, 2025
1c23520
Fixed styles inconsistency in dark mode
mhsuhail00 Nov 26, 2025
2a34ae5
-Reduced the theme toggle delay by Pre-Rendering qss
mhsuhail00 Nov 26, 2025
d372907
-Reduced the theme toggle delay by Pre-Rendering qss
mhsuhail00 Nov 26, 2025
7e36879
-Lock feature added in input_dock
mhsuhail00 Nov 27, 2025
977ecaf
Make Input Dock lock state more visible
Zehen-249 Dec 2, 2025
f42dfe5
Change under-developement modules visibility in menu bar
Zehen-249 Dec 2, 2025
0095789
Resize HomePage icons
Zehen-249 Dec 3, 2025
7ad56b5
Minor Ui fix
Zehen-249 Dec 3, 2025
843087d
Comment out unneccessary print statements
Zehen-249 Dec 4, 2025
81c41eb
Fix validation msg box error
Zehen-249 Dec 6, 2025
c64dc80
Add input dock unlock clears output dock feature
Zehen-249 Dec 6, 2025
7138188
Minor Ui fixes in input dock lock
Zehen-249 Dec 6, 2025
5917855
-Splash will be closed on double click
mhsuhail00 Dec 8, 2025
7657a1a
-Reduced redundant code for module calling in main_window
mhsuhail00 Dec 8, 2025
ec4820e
Fixed Missing connector function
mhsuhail00 Dec 10, 2025
7658294
Lock additional inputs dialog Issue #51
Zehen-249 Dec 16, 2025
0424844
Fixed #64
sumagnadas Dec 16, 2025
c9849ab
Fixes #56
sumagnadas Dec 16, 2025
363187f
Fixed #74
mhsuhail00 Dec 16, 2025
6ca5a80
Merge branch 'test' of https://github.com/mhsuhail00/Osdag into test
mhsuhail00 Dec 16, 2025
b431062
Fixed toggle_lock
mhsuhail00 Dec 16, 2025
461daf4
Fixed Issue #62
mhsuhail00 Dec 16, 2025
43df113
Fixed Issue #60
mhsuhail00 Dec 16, 2025
878a115
Fixed svg on Card for Column
mhsuhail00 Dec 16, 2025
a19fbe3
Issue Fixed #54
mhsuhail00 Dec 16, 2025
e68da8e
Issue Fixed #50
mhsuhail00 Dec 16, 2025
27cdfd4
Fixed Issue #77
mhsuhail00 Dec 16, 2025
63badd0
Resolved Issue #48
mhsuhail00 Dec 16, 2025
ef81fb8
Fixed Issue #45
mhsuhail00 Dec 16, 2025
43cb32f
Fixed Issue #44
mhsuhail00 Dec 16, 2025
b409d77
Fixed Issue #41
mhsuhail00 Dec 17, 2025
5c71e62
Fixed Issue #38
mhsuhail00 Dec 17, 2025
20246bd
issue #52 fixed
ctheface Dec 17, 2025
950c8bb
issue #49 fixed
ctheface Dec 17, 2025
398b816
Additional issue Resolved #issue - 64 and some other changes
harshchelani08 Dec 17, 2025
4480d38
Flexural Members - Purlins Refactored
harshchelani08 Dec 13, 2025
af25e83
Name Change - Flexural member
harshchelani08 Dec 16, 2025
621ea0a
Report generation of bolted lap joint
RoushanRaj-cmd Dec 11, 2025
598f931
Fixed report issue in welded butt joint
RoushanRaj-cmd Dec 12, 2025
edaecf7
Refactored Simply Supported and Cantilever + Main window updates
Dec 12, 2025
47753f5
Fix: flexural member and cantilever hover logic
Dec 17, 2025
8537a82
fix: Fixed how the models look
sumagnadas Dec 18, 2025
e3381f8
-Compressed Module calling function
mhsuhail00 Nov 26, 2025
49def47
Made Color Of UnderDev Navbar button to Grey
mhsuhail00 Nov 26, 2025
3869e47
-Reduced the theme toggle delay by Pre-Rendering qss
mhsuhail00 Nov 26, 2025
4093cd6
-Reduced the theme toggle delay by Pre-Rendering qss
mhsuhail00 Nov 26, 2025
72015cb
-Lock feature added in input_dock
mhsuhail00 Nov 27, 2025
454d736
Make Input Dock lock state more visible
Zehen-249 Dec 2, 2025
c84e8e1
Minor Ui fix
Zehen-249 Dec 3, 2025
20ec123
Minor Ui fixes in input dock lock
Zehen-249 Dec 6, 2025
24628a8
Fixed log issues for failed designs
ctheface Dec 18, 2025
e2df2c3
- Fixed InputDock callback signatures to prevent argument mismatch cr…
Dec 20, 2025
ad50a39
Renamed Struts in Trusses
mhsuhail00 Dec 20, 2025
ec3c934
Adding missing recent module connector functions
mhsuhail00 Dec 20, 2025
bf67c45
Grey disabled input in additional inputs
mhsuhail00 Dec 20, 2025
91e0b55
General fix of splash animation to all OS #70
mhsuhail00 Dec 20, 2025
fbf3f1c
Added PointingHand on output btn & fixed hover icon
mhsuhail00 Dec 20, 2025
be7622f
Fixing some missing self fix
mhsuhail00 Dec 21, 2025
f88a063
Renamed, structured connector & Resolved Issue #93
mhsuhail00 Dec 21, 2025
d029d37
Merged & Fixed PG by nishikantmandal007
mhsuhail00 Dec 22, 2025
2dd1574
Fixed Updating of Output Fields
mhsuhail00 Dec 22, 2025
a2f5443
Increased dimentions for View Cube at corners
mhsuhail00 Dec 22, 2025
c53e301
Fixed Label disalignment Issue
mhsuhail00 Dec 22, 2025
a7cd953
Fixed Label disalignment Issue
mhsuhail00 Dec 22, 2025
be4ae14
fixed butt joined bolted
nishikantmandal007 Dec 11, 2025
235ce4a
fixed the validation error
nishikantmandal007 Dec 11, 2025
a91f973
fixes applied for validation error
nishikantmandal007 Dec 11, 2025
9919594
added cross-platform support for new UI
nishikantmandal007 Dec 11, 2025
c8c6e6e
issue #35 fixed
nishikantmandal007 Dec 13, 2025
b4f59ae
Issue #66 fixed
nishikantmandal007 Dec 13, 2025
c797f88
Issue #64 fixed
nishikantmandal007 Dec 14, 2025
7108aab
Fixed the application crashing issue of BBEPlate
nishikantmandal007 Dec 16, 2025
d629ca9
Fixed BBE MODULE entirely #59 fixed
nishikantmandal007 Dec 16, 2025
05592e6
fin plate cad issue fixed
nishikantmandal007 Dec 20, 2025
8085933
Fixed Cad hover, Render Issue & hide 3dComp
mhsuhail00 Dec 23, 2025
d3b38be
fixed toggle issue
Harshan-164 Dec 17, 2025
adb43be
fixed toggle issue
Harshan-164 Dec 17, 2025
59e452a
fixed fin plate capacit details
Harshan-164 Dec 17, 2025
c26f65b
integrated lap joint welded
Harshan-164 Dec 17, 2025
fe2fb0d
Fixed View Cube flicker issue
Harshan-164 Dec 18, 2025
f73037d
Resolved model visibility
Harshan-164 Dec 20, 2025
6a30ec6
Fixed the Model visibility
Harshan-164 Dec 21, 2025
13930e1
Re-Positioned zo and zi btns, increased text size of zo and zo btn, i…
Harshan-164 Dec 22, 2025
7356f59
Increased Chamfer Size in View Cube
Harshan-164 Dec 23, 2025
1304093
Fixed Butt Joint Bolted Cad Varied Thickness in plate issue
Harshan-164 Dec 23, 2025
49b90df
Fixed bolt nut fusion in bolted lap joint module
Harshan-164 Dec 23, 2025
d73d8be
temporarily parked butt_joint_welded model
Harshan-164 Dec 23, 2025
8edc6ad
removed duplicate view_cube code lines
nishikantmandal007 Dec 24, 2025
11e620c
integrated multiprocessing and environment safety
nishikantmandal007 Dec 25, 2025
78852f1
fixed memory leaker and fin plate crash
nishikantmandal007 Dec 25, 2025
d11316e
implemented cad flushing with a 150ms delay
nishikantmandal007 Dec 26, 2025
90fdff7
Updated Navbar Icons
mhsuhail00 Dec 25, 2025
4cfdd52
Design report of Plate Girder Module
RoushanRaj-cmd Dec 26, 2025
f3ddb07
Updated comments
RoushanRaj-cmd Dec 26, 2025
570beaf
Issue Fixed #105
mhsuhail00 Dec 26, 2025
79cdd66
Merged #106 (harshan0416)
mhsuhail00 Dec 27, 2025
c831410
Fixed Osdag Icon Visibility
mhsuhail00 Dec 29, 2025
aa43e2d
Added TYPE_NOTE in Inputs
mhsuhail00 Dec 28, 2025
c00afcf
Base Plate Connection Refactored
mhsuhail00 Dec 30, 2025
2240ba5
deflection check skipped applied
nishikantmandal007 Dec 27, 2025
534d7ee
added Ubuntu sans as the fixed font
nishikantmandal007 Dec 27, 2025
683b18b
Fixed the plate girder issues
nishikantmandal007 Dec 27, 2025
a297ceb
plate girder fix 8-14
nishikantmandal007 Dec 27, 2025
378c4f8
deflection is skipped
nishikantmandal007 Dec 27, 2025
66c538c
optimising plate girder
nishikantmandal007 Dec 27, 2025
c491d54
plate girder optimized
nishikantmandal007 Dec 27, 2025
c7e71d5
set to default PSO
nishikantmandal007 Dec 27, 2025
ff65468
default debug is false
nishikantmandal007 Dec 27, 2025
5f4db5a
fixed the QT dialogue
nishikantmandal007 Dec 28, 2025
6c60254
pso vizuliser
nishikantmandal007 Dec 28, 2025
30f2404
added
nishikantmandal007 Dec 28, 2025
fb63a52
graph in place
nishikantmandal007 Dec 29, 2025
652ef83
everything in graph is place
nishikantmandal007 Dec 29, 2025
8dd1f51
code refactored
nishikantmandal007 Dec 29, 2025
9473ccb
vizual in place needs to update graph only
nishikantmandal007 Dec 29, 2025
4cfa724
Fixed Simple Conn hover labels
mhsuhail00 Jan 2, 2026
417250c
Fixed animation while loading
mhsuhail00 Jan 2, 2026
592f0f5
Added weld and gusset plate section in the report
RoushanRaj-cmd Jan 3, 2026
0131d81
graph modified
nishikantmandal007 Jan 1, 2026
4df5bdf
finally graph in place
nishikantmandal007 Jan 1, 2026
2c46d7a
integrated plate girder module
Harshan-164 Jan 5, 2026
770d7d4
changed weld color in plate girder model
Harshan-164 Jan 5, 2026
17f2aa7
add basic UI for strut bolted to end gusset
ctheface Dec 31, 2025
898917f
Iteration 1 of strut bolted to end gusset
ctheface Jan 4, 2026
a930c48
Fixed log/select_bolt_dia func/get_bolt_grade func
ctheface Jan 6, 2026
4905bad
Report of Strut Bolted to End Gusset Module
RoushanRaj-cmd Jan 7, 2026
c9263ad
Updated Module Images
mhsuhail00 Jan 9, 2026
ce6576f
Additional input loading issue
ctheface Jan 9, 2026
ae631bf
refactor cli module
Zehen-249 Jan 12, 2026
cee3b33
connect check for updates button in module page
Zehen-249 Jan 12, 2026
b3b32fc
Integrated struts: bolted to end gusset CAD
Harshan-164 Jan 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ Osdag_Workspace/*
/backup
OUTPUT_FILES/Output_PDF/*
Output_PDF/*
**/osdag_gui/data/reports/*
**/ResourceFiles/images/3d.png
**/ResourceFiles/images/front.png
**/ResourceFiles/images/side.png
Expand All @@ -37,4 +38,5 @@ Output_PDF/*
**/ResourceFiles/last_designs/*
**/ResourceFiles/html_page/*
*.xlsx
*.code-workspace
*.code-workspace
**/testing_code/
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,8 @@ Mr. Shahadad PP

Ms. Priti Kumari

Mr. Adnan Abdullah

===============================

Project Management
Expand Down
8 changes: 5 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,14 @@ where = ["src"]
[project]
name = "osdag"
dynamic = ["version"]
dependencies = ["PyQt5", "requests", "pylatex", "numpy", "PyYaml", "PyGithub"]
requires-python = ">= 3.8"
dependencies = ["PyQt5", "PySide6", "requests", "pylatex", "numpy", "PyYaml", "PyGithub"]
requires-python = ">= 3.11"
description = "Open steel design and graphics"
readme = "README.md"
license = {file = "LICENSE"}
keywords = ["steel design", "civil engineering", "engineering"]

[project.gui-scripts]
osdag = "osdag.osdagMainPage:do_stuff"
osdag = "osdag_gui.__main__:GUI"
[project.scripts]
osdag-cli = "osdag_gui.__main__:cli"
24 changes: 24 additions & 0 deletions src/osdag/Common.py
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,13 @@ def is_valid_custom(self):
KEY_DISP_BUTTJOINTBOLTED = 'Butt Joint Bolted Connection'
WELD_SIZES = [3, 5, 6, 10, 12]


#Simpleconnections (Tension+compression)
KEY_DESIGN_FOR = 'Design.For'
KEY_DISP_DESIGN_FOR = 'Design For'
KEY_AXIAL_FORCE = 'Load.Axial.Force' # If not using existing KEY_AXIAL
KEY_DISP_AXIAL_FORCE = 'Axial Force (kN)'

# MADE THIS t.s.
KEY_DISP_BUTTJOINTWELDED = 'Butt Joint Welded Connection'
KEY_OUT_UTILISATION_RATIO = 'Utilisation Ratio'
Expand Down Expand Up @@ -1904,6 +1911,11 @@ def is_valid_custom(self):
KEY_WEB_CAPACITY ='section.web_capacities'
KEY_DISP_WEB_CAPACITY ='Capacity'


#SimpleConnection(Tension+Compression)
KEY_OUT_DESIGN_FOR = "Design For"
KEY_OUT_DISP_DESIGN_FOR = "Design For"

# Web plate
KEY_REDUCTION_FACTOR_WEB ='web_plate.red,factor'
KEY_DISP_REDUCTION_FACTOR_WEB ="Red. Factor"
Expand Down Expand Up @@ -2008,10 +2020,22 @@ def is_valid_custom(self):
KEY_DISP_BOLT_HOLE = 'Hole Diameter (mm)'
KEY_DISP_MIN_BOLT = 'Minimum Bolts (nos)'


KEY_OUT_WELD_CONN_LEN = 'Weld.ConnLength'


KEY_OUT_BOLT_CONN_LEN = 'Bolt.ConnLength'
KEY_UTILIZATION_RATIO = 'Bolt.UtilizationRatio'
KEY_DISP_UTILIZATION_RATIO = 'Utilization Ratio'
KEY_OUT_DISP_BOLT_CONN_LEN = 'Length of Connection (mm)'
KEY_OUT_DISP_WELD_CONN_LEN = 'Length of Connection (mm)'
KEY_OUT_BOLT_UTILIZATION = 'Bolt.Utilization'
KEY_OUT_DISP_BOLT_UTILIZATION = 'Bolt Utilization'
KEY_OUT_BASE_METAL_CAPACITY = 'Plate.BaseCapacity'
KEY_OUT_DISP_BASE_METAL_CAPACITY = 'Base Metal Capacity (kN)'
KEY_OUT_BASE_METAL_UTILIZATION = 'Plate.BaseUtilization'
KEY_OUT_DISP_BASE_METAL_UTILIZATION = 'Base Metal Utilization'


KEY_DISP_BOLT_AREA = 'Nominal Stress Area (mm2)'
KEY_DISP_KB = 'Kb'
Expand Down
1 change: 1 addition & 0 deletions src/osdag/_version.py
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
__version__ = "2025.01.a.2"
__installation_type__ = "conda"
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ def init_bolt_place_params(self, bolt_place_obj):
self.cGauge = bolt_place_obj.pitch_spting
self.cEdge = bolt_place_obj.edge_spting
self.cEnd = bolt_place_obj.end_spting
print(self.cEnd,"hghghwuuw")
print(self.cEnd)
self.cRow = bolt_place_obj.bolt_one_line_spting
self.cCol = bolt_place_obj.bolt_lines_spting
# self.thk = bolt_place_obj.cleat.thickness
Expand Down
44 changes: 43 additions & 1 deletion src/osdag/cad/common_logic.py
Original file line number Diff line number Diff line change
Expand Up @@ -1852,6 +1852,21 @@ def createBoltedLapJoint(self):
edge=Conn.final_edge_dist,end=Conn.final_end_dist)
return lap_joint, plate1, plate2, bolts, nuts

def createWeldedLapJoint(self):
Conn = self.module_class

plate1_thickness = float(Conn.plate1.thickness[0])
plate2_thickness = float(Conn.plate2.thickness[0])
plate_width = float(Conn.width)
overlap_length = float(Conn.connection_length)
weld_size = float(Conn.weld_size)

print(f"DEBUG: createWeldedLapJoint called with: t1={plate1_thickness}, t2={plate2_thickness}, w={plate_width}, l={overlap_length}, s={weld_size}")

lap_joint, plate1, plate2, welds = create_welded_lap_joint(plate1_thickness, plate2_thickness, plate_width, overlap_length, weld_size)
print(f"DEBUG: create_welded_lap_joint returned: {lap_joint}, {plate1}, {plate2}, {welds}")
return lap_joint, plate1, plate2, welds

def createButtJointBoltedCAD(self):

# Get input values from the design object (i.e., instance of ButtJointBolted)
Expand Down Expand Up @@ -2396,10 +2411,36 @@ def display_3DModel(self, component, bgcolor):
for nut in self.nuts_models:
osdag_display_shape(self.display, nut, update=True,
color=Quantity_NOC_SADDLEBROWN)

elif self.mainmodule == 'Lap Joint Welded Connection':
print("DEBUG: Inside display_3DModel for Lap Joint Welded Connection")
self.col = self.module_class()
self.assembly, self.plate1_model, self.plate2_model, self.weld_models = self.createWeldedLapJoint()
print(f"DEBUG: Models created. Assembly: {self.assembly}")

if self.component == "Model":
print("DEBUG: Displaying Model components")
osdag_display_shape(self.display, self.plate1_model, update=True, material=Graphic3d_NOM_ALUMINIUM)
osdag_display_shape(self.display, self.plate2_model, update=True)
for weld in self.weld_models:
osdag_display_shape(self.display, weld, update=True, color=Quantity_NOC_RED)
elif self.component == "Plate1":
osdag_display_shape(self.display, self.plate1_model, update=True, material=Graphic3d_NOM_ALUMINIUM)
elif self.component == "Plate2":
osdag_display_shape(self.display, self.plate2_model, update=True)
elif self.component == "Weld":
for weld in self.weld_models:
osdag_display_shape(self.display, weld, update=True, color=Quantity_NOC_RED)

elif self.mainmodule == 'Butt Joint Bolted Connection':
self.col = self.module_class()
self.assembly,self.plate1_model,self.plate2_model,self.platec_model,self.bolt_models,self.nuts_models = self.createButtJointBoltedCAD()

# Reuse ColObj if already created by call_3DModel, otherwise create it
if hasattr(self, 'ColObj') and self.ColObj is not None:
# ColObj is a tuple from createButtJointBoltedCAD()
self.assembly, self.plate1_model, self.plate2_model, self.platec_model, self.bolt_models, self.nuts_models = self.ColObj
else:
self.assembly, self.plate1_model, self.plate2_model, self.platec_model, self.bolt_models, self.nuts_models = self.createButtJointBoltedCAD()

if self.component == "Model":
osdag_display_shape(self.display, self.plate1_model, update=True, material=Graphic3d_NOM_ALUMINIUM)
Expand All @@ -2412,6 +2453,7 @@ def display_3DModel(self, component, bgcolor):
osdag_display_shape(self.display, nut, update=True,
color=Quantity_NOC_SADDLEBROWN)


elif self.mainmodule == 'Flexure Member':
self.flex = self.module_class()
self.FObj = self.createSimplySupportedBeam()
Expand Down
223 changes: 223 additions & 0 deletions src/osdag/cli.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,223 @@
from osdag.design_type.connection.fin_plate_connection import FinPlateConnection
from osdag.design_type.connection.cleat_angle_connection import CleatAngleConnection
from osdag.design_type.connection.seated_angle_connection import SeatedAngleConnection
from osdag.design_type.connection.end_plate_connection import EndPlateConnection
from osdag.design_type.connection.base_plate_connection import BasePlateConnection
from osdag.design_type.connection.beam_cover_plate import BeamCoverPlate
from osdag.design_type.connection.beam_cover_plate_weld import BeamCoverPlateWeld
from osdag.design_type.connection.column_cover_plate_weld import ColumnCoverPlateWeld
from osdag.design_type.tension_member.tension_bolted import Tension_bolted
from osdag.design_type.tension_member.tension_welded import Tension_welded
from osdag.design_type.connection.beam_beam_end_plate_splice import BeamBeamEndPlateSplice
from osdag.design_type.connection.beam_column_end_plate import BeamColumnEndPlate
from osdag.design_type.connection.column_cover_plate import ColumnCoverPlate
from osdag.design_type.connection.column_end_plate import ColumnEndPlate
from osdag.design_type.compression_member.compression import Compression
from osdag.design_type.main import Main
from osdag.Common import TYPE_TEXTBOX, TYPE_OUT_BUTTON
from osdag.Common import (
# Shear Connection
KEY_DISP_FINPLATE,
KEY_DISP_ENDPLATE,
KEY_DISP_CLEATANGLE,
KEY_DISP_SEATED_ANGLE,

# Base Plate Connection
KEY_DISP_BASE_PLATE,

# Moment Connection
KEY_DISP_BEAMCOVERPLATE,
KEY_DISP_COLUMNCOVERPLATE,
KEY_DISP_BEAMCOVERPLATEWELD,
KEY_DISP_COLUMNCOVERPLATEWELD,
KEY_DISP_BB_EP_SPLICE,
KEY_DISP_COLUMNENDPLATE,
KEY_DISP_BCENDPLATE,

# Tension Member
KEY_DISP_TENSION_BOLTED,
KEY_DISP_TENSION_WELDED,

# Compression Member
KEY_DISP_COMPRESSION

)


available_modules = {
KEY_DISP_BASE_PLATE:BasePlateConnection,
KEY_DISP_BEAMCOVERPLATE:BeamCoverPlate,
KEY_DISP_CLEATANGLE:CleatAngleConnection,
KEY_DISP_COLUMNCOVERPLATE:ColumnCoverPlate,
KEY_DISP_COLUMNENDPLATE:ColumnEndPlate,
KEY_DISP_ENDPLATE:EndPlateConnection,
KEY_DISP_FINPLATE:FinPlateConnection,
KEY_DISP_SEATED_ANGLE:SeatedAngleConnection,
KEY_DISP_TENSION_BOLTED:Tension_bolted,
KEY_DISP_TENSION_WELDED:Tension_welded,
KEY_DISP_COMPRESSION:Compression,
KEY_DISP_BEAMCOVERPLATEWELD:BeamCoverPlateWeld,
KEY_DISP_COLUMNCOVERPLATEWELD:ColumnCoverPlateWeld,
KEY_DISP_BB_EP_SPLICE:BeamBeamEndPlateSplice,
KEY_DISP_BCENDPLATE:BeamColumnEndPlate,
}

from pathlib import Path
import yaml, click
import pandas as pd

def _print_result(out_dict:dict):
print("="*100)
for key, value in out_dict.items():
print(f"|| {key}: {value}")
print("="*100)

def _get_design_dictionary(osi_path:Path) -> dict:
"""return the design dictionary from an OSI file."""
with open(osi_path, 'r') as file:
return yaml.safe_load(file)

def _get_output_dictionary(module_class:Main) -> dict:
"""return the output dictionary for the design"""
status = module_class.design_status
out_list = module_class.output_values(module_class, status)
out_dict = {"Parameter": "Value"}
for option in out_list:
if option[0] is not None and option[2] == TYPE_TEXTBOX:
out_dict[option[0]] = option[3]
if option[2] == TYPE_OUT_BUTTON:
tup = option[3]
fn = tup[1]
for item in fn(module_class, status):
lable = item[0]
value = item[3]
if lable!=None and value!=None:
out_dict[lable] = value
return out_dict


def _save_to_csv(output_dictionary:dict, output_file:str):
"""save the output dictionary to a csv file"""
df = pd.DataFrame(output_dictionary.items())
df.to_csv(output_file, index=False, header=None)

def _save_to_pdf(module_class:Main, output_file:Path):
"""save the output dictionary to a pdf file"""
popup_summary = {
'ProfileSummary': {
'CompanyName': 'LoremIpsum',
'CompanyLogo': '',
'Group/TeamName': 'LoremIpsum',
'Designer': 'LoremIpsum'
},
'ProjectTitle': 'Fossee',
'Subtitle': '',
'JobNumber': '123',
'AdditionalComments': 'No comments',
'Client': 'LoremIpsum',
'filename': f'{output_file}',
'does_design_exist': True,
'logger_messages': ''
}
module_class.save_design(module_class, popup_summary)



def run_module(*args, **kargs) -> dict:
"""Run the module specified in the OSI file located at osi_path."""
osi_path = kargs["input_path"] if len(kargs) > 0 else None
op_type = kargs["op_type"] if len(kargs) > 1 else "print_result"
output_path = kargs["output_path"] if len(kargs) > 2 else None

result = {
"success": False,
"operation": op_type,
"input": str(osi_path) if osi_path else None,
"output": None,
"data": None,
"errors": [],
}

if osi_path is None:
result["errors"].append("No input file provided.")
print(result)
return result

osi_path = Path(osi_path) if osi_path else None
output_path = Path(output_path) if output_path else None
if not osi_path.exists():
result["errors"].append(f"File not found: {osi_path}")
print(result)
return result

design_dict = _get_design_dictionary(osi_path)
module_name = design_dict.get("Module")
if not module_name:
result["errors"].append("Module not specified.")
print(result)
return result

module_class = available_modules.get(module_name)
if not module_class:
result["errors"].append(f"Not a valid module class: {module_name}")
print(result)
return result

input_filename = osi_path.stem
output_filename = output_path.stem if output_path else None
if not output_path:
output_folder_path = osi_path.parent / "Outputs" / f"{module_class.__name__}"
else:
output_folder_path = output_path.parent / f"{module_class.__name__}"
output_folder_path.mkdir(parents=True, exist_ok=True)
output_file = output_folder_path / f"{output_filename if output_filename else input_filename}"

module_class.set_osdaglogger(None)
val_errors = module_class.func_for_validation(module_class, design_dict)

if val_errors:
result["errors"].extend(val_errors)
print(result)
return result

out_dict = _get_output_dictionary(module_class)
result["data"] = out_dict
if op_type == "save_csv":
try:
_save_to_csv(out_dict, str(output_file) + ".csv")
result["success"] = True
result["output"] = str(output_file)
except Exception as e:
result["success"] = False
result["errors"].append(f"Failed to save CSV: {e}")

elif op_type == "save_pdf":
try:
_save_to_pdf(module_class, output_file)
result["success"] = True
result["output"] = str(output_file)
except Exception as e:
result["success"] = False
result["errors"].append(f"Failed to save PDF: {e}")

elif op_type == "print_result":
try:
result["success"] = True
click.echo(_print_result(out_dict=out_dict))
except Exception as e:
result["success"] = False
result["errors"].append(f"Failed to get result: {e}")

else:
result["errors"].append(f"Unsupported op_type: {op_type}")

if len(result["errors"]) > 0:
print(result)

return result



# run_module(r"C:\Users\1hasa\Osdag\TensionBoltedTest4.osi",op_type="save to csv")
# run_module(r"C:\Users\1hasa\Osdag\TensionBoltedTest4.osi",op_type="save to pdf")
# print(run_module(r"C:\Users\1hasa\Osdag\TensionBoltedTest4.osi",op_type="output dictionary"))
Loading