Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
0034be0
Created two modules, fixed existing 4 modules and rendered and design…
faran4 May 20, 2025
2a1cb01
Merged code for 8 modules
faran4 May 24, 2025
711cabd
Refactor database connection settings and created core files
sogalabhi May 20, 2025
010c243
Created new page for bolted_to_end_gusset in tension member. Used the
sogalabhi May 20, 2025
06130b9
feat: Display 3D GLB model with hover-based morph target key info usi…
sogalabhi May 20, 2025
47f51e7
Refactor database connection settings and created core files
sogalabhi May 20, 2025
01c9858
feat: Add new page for bolted_to_end_gusset and refactor DockTemplate…
sogalabhi May 21, 2025
27d1b96
feat: Connected react with backend. getting inputs
sogalabhi May 26, 2025
e9339d8
Refactor database connection settings and created core files
sogalabhi May 20, 2025
55f07fc
Refactor database connection settings and created core files
sogalabhi May 20, 2025
3de8d72
Created new page for bolted_to_end_gusset in tension member. Used the
sogalabhi May 20, 2025
bc9919b
Refactor BoltedToEndPage and related components
sogalabhi May 28, 2025
2c5e25b
feat: Output dock done. Cad ongoing
sogalabhi May 29, 2025
d280d87
feat: Add comprehensive installation guide for Osdag-web on Ubuntu/Linux
sogalabhi May 30, 2025
eb09309
feat: Update .gitignore and add new image resources for report genera…
sogalabhi Jun 5, 2025
a434db2
Refactor Tension Member Module and Update UI Components
sogalabhi Jun 5, 2025
da49e39
fix: Bug fixes in core files. Update image saving functionality with …
sogalabhi Jun 5, 2025
68f55b0
feat: Enhance logging in Tension Member module and update .gitignore …
sogalabhi Jun 5, 2025
443c418
feat: Fixed the ui in BoltedToEndOutputDock component
sogalabhi Jun 5, 2025
80ff5de
Merge pull request #1 from sogalabhi/feature/tension-member-bolted
sogalabhi Jun 5, 2025
87dc676
Restructured Code
faran4 Jun 4, 2025
68a932b
Update EngineeringModule.jsx
faran4 Jun 3, 2025
4b3e311
Refactored - Cover Plate Welded and Beam to Column End Plate.
Some1Uknow Jun 9, 2025
1f143cc
Final Bug Fixes
Some1Uknow Jun 24, 2025
cdd07b5
Final Bug Fixes
Some1Uknow Jun 25, 2025
880034a
Refactor database connection settings and created core files
sogalabhi May 20, 2025
54e76c0
feat: Output dock done. Cad ongoing
sogalabhi May 29, 2025
6035ef3
Restructuring Code
faran4 Jun 3, 2025
07ff03f
FinPlate Refactored
faran4 Jun 19, 2025
849a827
Fixed session, module functionalities and reset
faran4 Jun 23, 2025
6fcfda6
merged abhi's repo
faran4 Jun 24, 2025
650ef12
Reset Navigation Session Fixed Module Functionalities
faran4 Jun 24, 2025
3e783fd
Refactor database connection settings and created core files
sogalabhi May 20, 2025
17a871f
feat: Add new page for bolted_to_end_gusset and refactor DockTemplate…
sogalabhi May 21, 2025
7a5fc08
feat: Connected react with backend. getting inputs
sogalabhi May 26, 2025
9298455
Refactor database connection settings and created core files
sogalabhi May 20, 2025
5d43b7c
Refactor database connection settings and created core files
sogalabhi May 20, 2025
a4a5119
Refactor BoltedToEndPage and related components
sogalabhi May 28, 2025
9469b8d
feat: Output dock done. Cad ongoing
sogalabhi May 29, 2025
39e54bd
Refactor Tension Member Module and Update UI Components
sogalabhi Jun 5, 2025
aed49c1
Refactor Tension Member Bolted Design Module
sogalabhi Jun 25, 2025
07b086f
Implement Tension Member Bolted Design Enhancements
sogalabhi Jun 25, 2025
3a03ded
Refractor the tension bolted modue to match
sogalabhi Jun 25, 2025
eb37c2e
Refactor API endpoints and remove session management for multi-module…
sogalabhi Jun 25, 2025
384075c
Refactor component imports and clean up code formatting
sogalabhi Jun 25, 2025
b22a7a9
Refactor CAD generation API and common logic for improved session han…
sogalabhi Jun 25, 2025
6e89cc7
Enhance input handling and logging for design modules
sogalabhi Jun 25, 2025
035fe6a
Enhance user authentication and error handling in Signup, Login, and …
sogalabhi Jun 25, 2025
6456837
Update connection handling and improve CAD model generation for Fin-P…
sogalabhi Jun 25, 2025
3e9089e
Restructuring Code
faran4 Jun 3, 2025
32a409b
refactoring finplate, endplate, cleat angle
amaydixit11 Jun 24, 2025
3249912
restructuring of finplate, endplate, cleat angle
amaydixit11 Jun 24, 2025
b4dc267
code cleanup
amaydixit11 Jun 25, 2025
9529a3e
merge conflicts resolving
amaydixit11 Jun 26, 2025
0027ac3
Refactor FinPlate component imports and update configurations
sogalabhi Jun 26, 2025
281f5fa
Enhance CleatAngle connection handling and improve logging
sogalabhi Jun 26, 2025
216028f
Enhance logger message handling and improve design report generation
sogalabhi Jun 26, 2025
fbf6521
Add Simply Supported Beam module and related components
pramila-bishnoi Jun 26, 2025
ed4579b
Implement Simply Supported Beam design module and enhance related com…
sogalabhi Jun 27, 2025
ad23cf1
Refactor output handling in multiple modules to align with frontend e…
sogalabhi Jul 4, 2025
9fddc0e
feat: Enhance project management and user experience
sogalabhi Jul 14, 2025
a8ad801
feat: Enhance Fin Plate module with improved configurations and UI st…
sogalabhi Jul 14, 2025
6d1d411
feat: Enhance Engineering Module with project loading and input handl…
sogalabhi Jul 14, 2025
31b1864
refactor: Simplify RecentProjects component and enhance MainContent p…
sogalabhi Jul 14, 2025
b5a180d
refactor: Enhance RecentProjects component with project deletion hand…
sogalabhi Jul 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,6 @@ file_storage/company_logo/*.png

# ignore the input values files
file_storage/input_values_files/*.osi
conda_packages
conda_packages

file_storage/cad_models/*
212 changes: 208 additions & 4 deletions Common.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ def tuple_to_str_popup(tl):

def tuple_to_str(tl, call_type,table_name=None):

if call_type is "dropdown" and table_name != 'Material' and table_name != 'Bolt':
if call_type == "dropdown" and table_name != 'Material' and table_name != 'Bolt':
arr = ['Select Section']
else:
arr = []
Expand Down Expand Up @@ -347,13 +347,156 @@ def is_valid_custom(self):
KEY_DISP_COMPRESSION = 'Compression Member'
KEY_DISP_BB_EP_SPLICE = 'Beam-to-Beam End Plate Connection'

###################################
#Flexure Members
###################################
KEY_Plastic = "Plastic"
KEY_Compact = "Compact"
KEY_SemiCompact = "Semi-Compact"
KEY_Flexure_Member_MAIN_MODULE = 'Flexure Member'
KEY_DISP_FLEXURE = 'Flexural Members - Simply Supported'
KEY_DISP_FLEXURE2 = 'Flexural Members - Cantilever'
KEY_DISP_FLEXURE3 = 'Flexural Members'

KEY_DISP_PLASTIC_STRENGTH_MOMENT = 'Plastic Strength (kNm)'
KEY_DISP_Bending_STRENGTH_MOMENT = 'Bending Strength (kNm)'
KEY_DISP_LTB_Bending_STRENGTH_MOMENT = 'Lateral Torsional Buckling Strength (kNm)'

KEY_DISP_betab_constatnt= 'Beta<sub>b</sub>'
KEY_betab_constatnt= 'Beta.Constant'
KEY_BUCKLING_STRENGTH= 'Buckling.Strength'
KEY_DISP_BUCKLING_STRENGTH= 'Buckling Strength (kN)'
KEY_WEB_CRIPPLING= 'Crippling.Strength'
KEY_DISP_CRIPPLING_STRENGTH = 'Crippling Strength (kN)'
KEY_DISP_LTB= 'Lateral Torsional Buckling Details'
KEY_DISP_Elastic_CM= 'Critical Moment (M<sub>cr</sub>)' # Elastic
KEY_DISP_Elastic_CM_latex= 'Elastic Critical Moment(kNm)' #
KEY_DISP_T_constatnt= 'Torsional Constant (mm<sup>4</sup>)' # (I<sub>t</sub>)
KEY_DISP_W_constatnt= 'Warping Constant (mm<sup>6</sup>)' # (I<sub>w</sub>)
KEY_LTB= 'L.T.B.Details'
KEY_Elastic_CM= 'Elastic.Moment'
KEY_T_constatnt= 'T.Constant'
KEY_W_constatnt= 'W.Constant'
KEY_IMPERFECTION_FACTOR_LTB = 'Imperfection.LTB'
KEY_SR_FACTOR_LTB = 'SR.LTB'
KEY_NON_DIM_ESR_LTB = 'NDESR.LTB'
# KEY_LTB= 'Lateral Torsional Buckling Details'
KEY_WEB_BUCKLING= 'Web Buckling Details'
KEY_BEARING_LENGTH = 'Bearing.Length'
# Simply_Supported_img = str(files("osdag.data.ResourceFiles.images").joinpath("ss_beam.png"))
# Cantilever_img = str(files("osdag.data.ResourceFiles.images").joinpath("c_beam.png"))
KEY_LENGTH_OVERWRITE = 'Length.Overwrite'
KEY_DISPP_LENGTH_OVERWRITE = 'Effective Length Parameter'
KEY_DISP_BEAM_MOMENT = 'Bending Moment (kNm)(M<sub>z-z</sub>)'
KEY_DISP_BEAM_MOMENT_Latex = 'Bending Moment (kNm)' # ($M_{z-z}$)
KEY_SUPP_TYPE = 'Member.Type'
DISP_TITLE_ISECTION = 'I Sections'

KEY_DISP_DESIGN_TYPE_FLEXURE = 'Laterally Supported'
KEY_DESIGN_TYPE_FLEXURE = 'Flexure.Type'
KEY_BEAM_SUPP_TYPE = 'Support Type *'
KEY_BEAM_SUPP_TYPE_DESIGN = 'Design Support Type'
KEY_DISP_DESIGN_TYPE2_FLEXURE = 'Laterally Unsupported'
KEY_DESIGN_TYPE2_FLEXURE = 'Laterally.Unsupported'
KEY_DISP_BENDING = 'Axis of Bending'
KEY_DISP_BENDING1 = 'Major'
KEY_DISP_BENDING2 = 'Minor'
VALUES_BENDING_TYPE = list((KEY_DISP_BENDING2, KEY_DISP_BENDING1))
VALUES_SUPP_TYPE = list((KEY_DISP_DESIGN_TYPE_FLEXURE, KEY_DISP_DESIGN_TYPE2_FLEXURE)) #[KEY_DISP_DESIGN_TYPE_FLEXURE, KEY_DISP_DESIGN_TYPE2_FLEXURE]
VALUES_SUPP_TYPE_temp = list((KEY_DISP_BENDING1 + " " + KEY_DISP_DESIGN_TYPE_FLEXURE, KEY_DISP_BENDING2 + " " + KEY_DISP_DESIGN_TYPE2_FLEXURE, KEY_DISP_BENDING1 + " " + KEY_DISP_DESIGN_TYPE2_FLEXURE)) #[KEY_DISP_DESIGN_TYPE_FLEXURE, KEY_DISP_DESIGN_TYPE2_FLEXURE]
KEY_BENDING = 'Bending.type'
KEY_SUPPORT = 'Flexure.Support'
KEY_DISP_SUPPORT = 'End Conditions'
KEY_DISP_SUPPORT1 = 'Simply Supported'
KEY_DISP_SUPPORT2 = 'Cantilever'
KEY_DISP_SUPPORT_LIST = list((KEY_DISP_SUPPORT1, KEY_DISP_SUPPORT2)) #[KEY_DISP_SUPPORT1, KEY_DISP_SUPPORT2]
# KEY_SUPPORT1 = 'SimpSupport.Torsional'
# KEY_SUPPORT2 = 'SimpSupport.Warping'
KEY_DISP_LENGTH_BEAM = 'Effective Span (m)*'
KEY_LOAD = 'Loading.Condition'
KEY_DISP_LOAD = 'Loading Condition'
KEY_DISP_LOAD1 ='Normal'
KEY_DISP_LOAD2 = 'Destabilizing'
KEY_DISP_LOAD_list = list((KEY_DISP_LOAD1, KEY_DISP_LOAD2))
KEY_TORSIONAL_RES = 'Torsion.restraint'
DISP_TORSIONAL_RES = 'Torsional restraint *'
Torsion_Restraint1 = 'Fully Restrained'
Torsion_Restraint2 = 'Partially Restrained-support connection'
Torsion_Restraint3 = 'Partially Restrained-bearing support'
Torsion_Restraint_list = list(( Torsion_Restraint1, Torsion_Restraint2, Torsion_Restraint3))
KEY_WARPING_RES = 'Warping.restraint'
DISP_WARPING_RES = 'Warping restraint *'
Warping_Restraint1 = 'Both flanges fully restrained'
Warping_Restraint2 = 'Compression flange fully restrained'
# Warping_Restraint3 = 'Both flanges fully restrained'
Warping_Restraint4 = 'Compressicm flange partially restrained'
Warping_Restraint5 = 'Warping not restrained in both flanges'
Warping_Restraint_list = list(( Warping_Restraint1, Warping_Restraint2, Warping_Restraint4, Warping_Restraint5))
DISP_SUPPORT_RES = 'Support restraint *'
KEY_SUPPORT_TYPE = 'Cantilever.Support'
Support1 = 'Continous, with lateral restraint to top flange'
Support2 = 'Continous, with partial torsional restraint'
Support3 = 'Continous, with lateral and torsional restraint'
Support4 = 'Restrained laterally, torsionally and against rotation on flange'
Supprt_Restraint_list = list(( Support1, Support2, Support3, Support4))
DISP_TOP_RES = 'Top restraint *'
KEY_SUPPORT_TYPE2 = 'Cantilever.Top'
Top1 = 'Free'
Top2 = 'Lateral restraint to top flange'
Top3 = 'Torsional rwstraint'
Top4 = 'Lateral and Torsional restraint'
Top_Restraint_list = list(( Top1, Top2, Top3, Top4))
KEY_WEB_BUCKLING_option = ['Method A','Method B']
KEY_BUCKLING_METHOD = 'Buckling.Method'
KEY_ShearBuckling = 'Shear Buckling Design Method '
KEY_ShearBucklingOption = 'S.B.Methods'
KEY_DISP_SB_Option = ['Simple Post Critical', 'Tension Field Test']
KEY_DISP_TENSION_HOLES = 'Tension Zone'
KEY_DISP_Web_Buckling = 'Web Buckling'
KEY_DISP_Utilization_Ratio = 'Utilization Ratio'
KEY_DISP_Web_Buckling_Support = 'Web Buckling @Support'
KEY_DISP_I_eff_latex = '$I_{eff}$web'
KEY_DISP_A_eff_latex = '$A_{eff}$web'
KEY_DISP_r_eff_latex = '$r_{eff}$web'
KEY_DISP_K_v_latex = '$K_{v}$'
KEY_DISP_Elastic_Critical_shear_stress_web = 'Elastic Critical Shear Stress Web($N/mm^2$)' #(\tau_{crc})
KEY_DISP_Transverse_Stiffener_spacing = 'Spacing of Transverse Stiffeners(c)(mm)'
KEY_DISP_slenderness_ratio_web = 'Web Slenderness ratio($\lambda_w$)'
KEY_DISP_BUCKLING_STRENGTH= 'Buckling Resistance (kN)'
KEY_DISP_reduced_moment= 'Reduced moment (Nmm)'
# KEY_DISP_reduced_moment= 'Reduced moment (N_f)'
KEY_DISP_tension_field_incline= 'Tension field inclination($\phi$)'
KEY_DISP_Yield_Strength_Tension_field = 'Yield Strength of Tension field(f_v)($N/mm^2$)'
KEY_DISP_AnchoragelengthTensionField= 'Anchorage length of Tension Field(s)(mm)'
KEY_DISP_WidthTensionField= 'Width of Tension Field($w_{tf}$)'

###################################
# Plate Girder
###################################
KEY_PLATE_GIRDER_MAIN_MODULE = 'PLATE GIRDER'
KEY_DISP_PLATE_GIRDER_WELDED = 'PLATE GIRDER - WELDED'
KEY_tf = 'TF.Data'
KEY_tw = 'TW.Data'
KEY_dw = 'DW.Data'
KEY_bf = 'BF.Data'
KEY_DISP_tf = 'Flange Thickness(mm)'
KEY_DISP_tw = 'Web Thickness(mm)'
KEY_DISP_dw = 'Web Depth(mm)'
KEY_DISP_bf = 'Flange Width(mm)'
KEY_IntermediateStiffener = 'IntermediateStiffener.Data'
KEY_DISP_IntermediateStiffener = 'Intermediate Stiffener'
KEY_DISP_Plate_Girder_PROFILE = 'Section Profile'
KEY_IntermediateStiffener_spacing = 'IntermediateStiffener.Spacing'
KEY_DISP_IntermediateStiffener_spacing = 'Intermediate Stiffener Spacing'

DISP_TITLE_CM = 'Connecting Members'

###################################
# All Input Keys
###################################
KEY_MODULE = 'Module'
KEY_CONN = 'Connectivity'
KEY_CONN1 = 'Connectivity *'
KEY_LOCATION = 'Conn_Location'
KEY_ENDPLATE_TYPE = 'EndPlateType'
KEY_MATERIAL = 'Material'
Expand Down Expand Up @@ -385,6 +528,7 @@ def is_valid_custom(self):

KEY_LENGTH = 'Member.Length'
KEY_SEC_PROFILE = 'Member.Profile'
KEY_SEC_TYPE = 'Member.Type'

KEY_SHEAR = 'Load.Shear'
KEY_AXIAL = 'Load.Axial'
Expand All @@ -405,6 +549,7 @@ def is_valid_custom(self):
KEY_CONNECTOR_FY_20 = 'Connector.Fy_20' #Extra Keys for DP Display
KEY_CONNECTOR_FY_20_40 = 'Connector.Fy_20_40' #Extra Keys for DP Display
KEY_CONNECTOR_FY_40 = 'Connector.Fy_40' #Extra Keys for DP Display
KEY_CONNECTOR_GUSSET = 'Connector.GUSSET' #Extra Keys for DP Display

KEY_PLATETHK = 'Connector.Plate.Thickness_List'
KEY_FLANGEPLATE_PREFERENCES = 'Connector.Flange_Plate.Preferences'
Expand Down Expand Up @@ -443,6 +588,10 @@ def is_valid_custom(self):

KEY_DP_DESIGN_METHOD = 'Design.Design_Method'

# Additional flexure-related constants
KEY_EFFECTIVE_AREA_PARA = 'Design.Effective_Area_Parameter'
KEY_ALLOW_CLASS = 'Design.Allowable_Class'

###################
# Value Keys
###################
Expand Down Expand Up @@ -531,6 +680,9 @@ def is_valid_custom(self):
# Display Keys (Input Dock, Output Dock, Design preference, Design report)
############################

KEY_SECTION_DATA = 'Section Properties'
VALUES_SEC_PROFILE3 = ['Beams', 'Columns']

KEY_DISP_SHEAR_YLD = 'Shear Yielding Capacity (kN)'
KEY_DISP_SHEAR_RUP = 'Shear Rupture Capacity (kN)'
KEY_DISP_PLATE_BLK_SHEAR_SHEAR = 'Block Shear Capacity in Shear (kN)'
Expand Down Expand Up @@ -2008,9 +2160,6 @@ def get_leg_lengths(designation):

all_angles = connectdb("Angles","popup")
VALUES_CLEAT_CUSTOMIZED = get_available_cleat_list(all_angles, 200.0, 50.0)
print(all_angles)
print("customised")
print(VALUES_CLEAT_CUSTOMIZED)

BOLT_DESCRIPTION = str("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
Expand Down Expand Up @@ -2145,3 +2294,58 @@ def get_leg_lengths(designation):
"<p align=\"justify\" style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:\'Calibri\'; font-size:8pt;\"><br /></p>\n"
"<p align=\"justify\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'MS Shell Dlg 2\'; font-size:8pt;\">Specifying whether the members are exposed to corrosive influences, here, only affects the calculation of the maximum edge distance as per cl. 10.2.4.3</span></p>\n"
"<p align=\"justify\" style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:\'MS Shell Dlg 2\'; font-size:8pt;\"><br /></p></body></html>")


# IS 800:2007 Design Constants (add to your constants file)

# Partial safety factors for materials (IS 800 Table 5)
GAMMA_M0 = 1.10 # For yielding/buckling of steel
GAMMA_M1 = 1.25 # For ultimate stress (tension/rupture)
GAMMA_MF_SHOP = 1.25 # For shop bolts
GAMMA_MF_FIELD = 1.25 # For field bolts
GAMMA_MB_SHOP = 1.25 # For shop bolts (bearing)
GAMMA_MB_FIELD = 1.25 # For field bolts (bearing)
GAMMA_MR_SHOP = 1.25 # For shop rivets
GAMMA_MR_FIELD = 1.25 # For field rivets
GAMMA_MW_SHOP = 1.25 # For shop welds
GAMMA_MW_FIELD = 1.50 # For field welds

# Modulus of elasticity and Poisson's ratio (IS 800:2007, Cl. 2.2.4)
E = 2.0e5 # Modulus of elasticity of steel in MPa
G = 0.769e5 # Modulus of rigidity (shear modulus) in MPa
NU = 0.3 # Poisson's ratio

# Density of steel (IS 800:2007, Cl. 2.2.4)
DENSITY_STEEL = 7850 # kg/m^3

# Standard value for epsilon (used in section classification)
def epsilon(f_y):
return (250.0 / f_y) ** 0.5

# Standard minimum and maximum allowed values for custom material (from MaterialValidator)
MIN_FY = 165
MAX_FY = 1500
MIN_FU = 165
MAX_FU = 1500

# Standard bolt hole diameter addition (IS 800:2007, Table 19)
BOLT_HOLE_CLEARANCE = {
12: 1.0, 14: 1.0, 16: 1.0, 18: 1.0, 20: 2.0, 22: 2.0, 24: 2.0, 27: 3.0, 30: 3.0, 36: 4.0
}

# Standard partial safety factors for design
PARTIAL_SAFETY_FACTORS = {
"gamma_m0": GAMMA_M0,
"gamma_m1": GAMMA_M1,
"gamma_mf_shop": GAMMA_MF_SHOP,
"gamma_mf_field": GAMMA_MF_FIELD,
"gamma_mb_shop": GAMMA_MB_SHOP,
"gamma_mb_field": GAMMA_MB_FIELD,
"gamma_mr_shop": GAMMA_MR_SHOP,
"gamma_mr_field": GAMMA_MR_FIELD,
"gamma_mw_shop": GAMMA_MW_SHOP,
"gamma_mw_field": GAMMA_MW_FIELD,
}

# Other useful constants
PI = math.pi
Loading