diff --git a/src/osdag/Common.py b/src/osdag/Common.py
index bd5c20630..e597ace07 100644
--- a/src/osdag/Common.py
+++ b/src/osdag/Common.py
@@ -298,6 +298,7 @@ def is_valid_custom(self):
TYPE_TITLE = 'Title'
TYPE_LABEL = 'Label'
TYPE_IMAGE = 'Image'
+TYPE_IMAGE_BIGGER = 'Image_Bigger'
TYPE_IMAGE_COMPRESSION = 'Image_compression'
TYPE_COMBOBOX_CUSTOMIZED = 'ComboBox_Customized'
TYPE_IN_BUTTON = 'Input_dock_Button'
@@ -346,6 +347,9 @@ def is_valid_custom(self):
KEY_DISP_COLUMNCOVERPLATE = 'Column-to-Column Cover Plate Bolted Connection'
KEY_DISP_BEAMCOVERPLATEWELD = 'Beam-to-Beam Cover Plate Welded Connection'
KEY_DISP_COLUMNCOVERPLATEWELD = 'Column-to-Column Cover Plate Welded Connection'
+KEY_DISP_LAPJOINTBOLTED = 'Lap Joint Bolted Connection'
+KEY_DISP_LAPJOINTWELDED = 'Lap Joint Welded Connection'
+KEY_DISP_BUTTJOINTBOLTED = 'Butt Joint Bolted Connection'
# KEY_DISP_BEAMENDPLATE = 'Beam End Plate Connection'
KEY_DISP_COLUMNENDPLATE = 'Column-to-Column End Plate Connection'
KEY_DISP_BCENDPLATE = 'Beam-to-Column End Plate Connection'
@@ -449,7 +453,7 @@ def is_valid_custom(self):
KEY_EULER_BUCKLING_STRESS = 'MajorBucklingStress'
KEY_DISP_EULER_BUCKLING_STRESS = 'Buckling Stress (MPa)' # Euler
KEY_EFF_SEC_AREA = 'MajorEffSecArea'
-KEY_DISP_EFF_SEC_AREA = 'Eff. Sectional Area (mm2)' # ective
+KEY_DISP_EFF_SEC_AREA = 'Eff. Sectional Area (cm2)' # ective
KEY_EFF_LEN = 'Major.Effective_Length'
KEY_DISP_EFF_LEN = 'Eff. Length (m)' # ective
KEY_BUCKLING_CURVE = 'BucklingCurve'
@@ -543,8 +547,8 @@ def is_valid_custom(self):
KEY_DISP_LTB= 'Lateral Torsional Buckling Details'
KEY_DISP_Elastic_CM= 'Critical Moment (Mcr)' # Elastic
KEY_DISP_Elastic_CM_latex= 'Elastic Critical Moment(kNm)' #
-KEY_DISP_T_constatnt= 'Torsional Constant (mm4)' # (It)
-KEY_DISP_W_constatnt= 'Warping Constant (mm6)' # (Iw)
+KEY_DISP_T_constatnt= 'Torsional Constant (cm4)' # (It)
+KEY_DISP_W_constatnt= 'Warping Constant (cm6)' # (Iw)
KEY_LTB= 'L.T.B.Details'
KEY_Elastic_CM= 'Elastic.Moment'
KEY_T_constatnt= 'T.Constant'
@@ -591,17 +595,17 @@ def is_valid_custom(self):
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 *'
+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 *'
+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_Restraint4 = 'Compression 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 *'
@@ -646,7 +650,8 @@ def is_valid_custom(self):
# Plate Girder
###################################
KEY_PLATE_GIRDER_MAIN_MODULE = 'PLATE GIRDER'
-KEY_DISP_PLATE_GIRDER_WELDED = 'PLATE GIRDER - WELDED'
+KEY_DISP_PLATE_GIRDER_WELDED = 'PLATE GIRDER'
+KEY_DISP_PG_SectionDetail = 'Section Details'
KEY_tf = 'TF.Data'
KEY_tw = 'TW.Data'
KEY_dw = 'DW.Data'
@@ -660,6 +665,103 @@ def is_valid_custom(self):
KEY_DISP_Plate_Girder_PROFILE = 'Section Profile'
KEY_IntermediateStiffener_spacing = 'IntermediateStiffener.Spacing'
KEY_DISP_IntermediateStiffener_spacing = 'Intermediate Stiffener Spacing'
+KEY_LongitudnalStiffener = 'LongitudnalStiffener.Data'
+KEY_LongitudnalStiffener_thickness = 'LongitudnalStiffner.Thickness'
+KEY_LongitudnalStiffener_thickness_val = 'LongitudnalStiffner.Thickness.val'
+KEY_DISP_LongitudnalStiffener = 'Longitudnal Stiffener'
+KEY_DISP_LongitudnalStiffener_thickness = 'Longitudnal Stiffener Thickness'
+KEY_IntermediateStiffener_thickness = 'IntermediateStiffener.Thickness'
+KEY_IntermediateStiffener_thickness_val = 'IntermediateStiffener.Thickness.val'
+KEY_DISP_IntermediateStiffener_thickness = 'Intermediate Stiffener Thickness'
+KEY_WeldWebtoflange= 'WeldWebtoflange.Data'
+KEY_DISP_WeldWebtoflange= 'Weld for Web to Flange'
+KEY_WeldStiffenertoweb= 'WeldStiffenertoweb.Data'
+KEY_DISP_WeldStiffenertoweb= 'Weld for Stiffener to Web'
+KEY_IS_IT_SYMMETRIC = 'Girder.Symmetry'
+KEY_DISP_IS_IT_SYMMETRIC = 'Symmetry'
+KEY_DISP_SYM = 'Symmetric Girder'
+KEY_DISP_UNSYM = 'Unsymmetric Girder'
+KEY_DISP_SYMMETRIC_list = list((KEY_DISP_SYM, KEY_DISP_UNSYM))
+KEY_TOP_FLANGE_THICKNESS_PG = 'TopFlange.Thickness'
+KEY_DISP_TOP_FLANGE_THICKNESS_PG = 'Top Flange Thickness (mm)'
+KEY_OVERALL_DEPTH_PG = 'Total.Depth'
+KEY_OVERALL_DEPTH_PG_TYPE = 'Total.Design_Type'
+KEY_DISP_OVERALL_DEPTH_PG_TYPE = 'Design Type'
+KEY_DISP_OVERALL_DEPTH_PG = 'Total Depth (mm)'
+KEY_WEB_THICKNESS_PG = 'Web.Thickness'
+KEY_DISP_WEB_THICKNESS_PG = 'Web Thickness (mm)'
+KEY_TOP_Bflange_PG_Type = 'Topflange.Width_Type'
+KEY_DISP_TOP_Bflange_PG_Type = 'Top Flange Width Type'
+KEY_TOP_Bflange_PG = 'Topflange.Width'
+KEY_DISP_TOP_Bflange_PG = 'Width of Top Flange (mm)'
+KEY_BOTTOM_Bflange_PG_Type = 'Bottomflange.Width_Type'
+KEY_DISP_BOTTOM_Bflange_PG_Type = 'Bottom Flange Width Type'
+KEY_BOTTOM_Bflange_PG = 'Bottomflange.Width'
+KEY_DISP_BOTTOM_Bflange_PG = 'Width of Bottom Flange (mm)'
+KEY_BOTTOM_FLANGE_THICKNESS_PG = 'BottomFlange.Thickness'
+KEY_DISP_BOTTOM_FLANGE_THICKNESS_PG = 'Bottom Flange Thickness (mm)'
+KEY_STR_TYPE = 'Structure.Type'
+KEY_DISP_STR_TYPE = 'Type of Structure'
+KEY_WEB_PHILOSOPHY = 'Web.Philosophy'
+KEY_DISP_WEB_PHILOSOPHY = 'Web Philosophy'
+KEY_DISP_SECTION_DATA_PG = 'Design Inputs'
+KEY_LOADING = 'Factored Maximum Loads'
+KEY_DISP_STR_TYP1 = 'Highway Bridge'
+KEY_DISP_STR_TYP2 = 'Railway Bridge'
+KEY_DISP_STR_TYP3 = 'Industrial Structure'
+KEY_DISP_STR_TYP4 = 'Other Building'
+KEY_DISP_STR_TYPE_list = [KEY_DISP_STR_TYP1, KEY_DISP_STR_TYP2, KEY_DISP_STR_TYP3,KEY_DISP_STR_TYP4]
+KEY_DISP_PHILO1 = 'Thin Web with ITS'
+KEY_DISP_PHILO2 = 'Thick Web without ITS'
+WEB_PHILOSOPHY_list = list((KEY_DISP_PHILO1, KEY_DISP_PHILO2))
+KEY_DISP_DESIGN_STIFFER = 'Stiffener Design'
+KEY_DISP_WELD_DESIGN = 'Weld Design'
+KEY_BENDING_MOMENT_SHAPE= 'Bendingmoment.shape'
+KEY_DISP_BENDING_MOMENT_SHAPE='Bending Moment Shape'
+KEY_UDL_PIN_PIN_PG='UDLPINPIN.Data'
+KEY_DISP_UDL_PIN_PIN_PG='Uniform Loading with pinned-pinned support'
+KEY_UDL_FIX_FIX_PG= 'UDLFIXFIX.Data'
+KEY_DISP_UDL_FIX_FIX_PG= 'Uniform Loading with fixed-fixed support'
+KEY_PL_PIN_PIN_PG= 'PLPINPIN.Data'
+KEY_DISP_PL_PIN_PIN_PG='Concentrate Load with pinned-pinned support'
+KEY_PL_FIX_FIX_PG= 'PLFIXFIX.Data'
+KEY_DISP_PL_FIX_FIX_PG= 'Concentrate load with fixed-fixed support'
+KEY_DISP_GIRDERSEC = 'Girder Properties'
+Bending_moment_shape_list= list((KEY_DISP_UDL_PIN_PIN_PG, KEY_DISP_UDL_FIX_FIX_PG, KEY_DISP_PL_PIN_PIN_PG,KEY_DISP_PL_FIX_FIX_PG))
+VALUES_DEPTH_PG = ['Customized','Optimized']
+VALUES_OPT = ['All']
+KEY_DESIGN_LOAD = 'Design.Load'
+KEY_DISP_DESIGN_LOAD = 'Design Load'
+VALUE_DESIGN_LOAD_list = ['Live load','Dead load', 'Crane Load(Manual operation)', 'Crane load(Electric operation up to 50t)', 'Crane load(Electric operation over 50t)']
+KEY_MEMBER_OPTIONS = 'Member.Options'
+KEY_DISP_MEMBER_OPTIONS = 'Member Options'
+# VALUES_MEMBER_OPTIONS_INDUS = ['Purlin and Girts', 'Simple span', 'Cantilever span', 'Rafter Supporting', 'Gantry']
+# VALUES_MEMBER_OPTIONS_OTHER = ['Floor and roof', 'Cantilever']
+# VALUES_MEMBER_OPTIONS_BRIDGE = ['Simple span', 'Cantilever span']
+VALUES_MEMBER_OPTIONS = [['Simple Span', 'Cantilever Span'],['Purlin and Girts', 'Simple span', 'Cantilever span', 'Rafter Supporting', 'Gantry'], ['Floor and roof', 'Cantilever']]
+KEY_SUPPORTING_OPTIONS = 'Supporting.Options'
+KEY_DISP_SUPPORTING_OPTIONS = 'Supporting Options'
+VALUES_SUPPORTING_OPTIONS_PSC = ['Elastic cladding', 'Brittle cladding']
+VALUES_SUPPORTING_OPTIONS_RS = ['Profiled Metal sheeting', 'Plastered sheeting']
+VALUES_SUPPORTING_OPTIONS_GNT = ['Crane']
+VALUES_SUPPORTING_OPTIONS_FRC = ['Elements not susceptible to cracking', 'Element susceptible to cracking']
+VALUES_SUPPORTING_OPTIONS_DEF = ['NA']
+KEY_MAX_DEFL = 'Deflection.Max'
+KEY_DISP_MAX_DEFL = 'Maximum Deflection'
+VALUES_MAX_DEFL = ['600','800','400','300','360','150','180','240','120','500','750','1000']
+KEY_SUPPORT_WIDTH = 'Support.Width'
+KEY_DISP_SUPPORT_WIDTH = 'Support Width (mm)'
+VALUES_STIFFENER_THICKNESS = ['8', '10', '12', '14', '16', '18', '20', '22', '25', '28', '32', '36', '40', '45', '50', '56', '63', '75', '80', '90', '100',
+ '110', '120']
+KEY_EndpanelStiffener_thickness = 'EndpanelStiffener.Thickness'
+KEY_DISP_EndpanelStiffener_thickness = 'End Panel Stiffener Thickness (mm)'
+KEY_LongitudnalStiffener_numbers = 'LongitudnalStiffener.Numbers'
+KEY_DISP_LongitudnalStiffener_numbers = 'Number of Longitudnal Stiffeners'
+KEY_LongitudinalStiffener1_pos = 'LongitudnalStiffener1.Position'
+KEY_DISP_LongitudinalStiffener1_pos = 'Position of Longitudnal Stiffener 1 from NA (mm) '
+KEY_LongitudinalStiffener2_pos = 'LongitudnalStiffener2.Position'
+KEY_DISP_LongitudinalStiffener2_pos = 'Position of Longitudnal Stiffener 2 from NA (mm)'
+
###################################
# All Input Keys
###################################
@@ -758,7 +860,7 @@ def is_valid_custom(self):
KEY_DP_DETAILING_EDGE_TYPE = 'Detailing.Edge_type'
KEY_DP_DETAILING_GAP = 'Detailing.Gap'
KEY_DP_DETAILING_CORROSIVE_INFLUENCES = 'Detailing.Corrosive_Influences'
-
+KEY_DP_DETAILING_PACKING_PLATE = 'Detailing.Packing_Plate'
KEY_DP_DESIGN_METHOD = 'Design.Design_Method'
###################
@@ -777,6 +879,7 @@ def is_valid_custom(self):
# VALUES_CONN_BP = ['Welded Column Base', 'Welded+Bolted Column Base', 'Moment Base Plate', 'Hollow/Tubular Column Base']
VALUES_CONN_BP = ['Welded Column Base', 'Moment Base Plate', 'Hollow/Tubular Column Base']
VALUES_LOCATION = ['Select Location','Long Leg', 'Short Leg', 'Web']
+VALUES_COVER_PLATE = ['Single-Cover', 'Double-Cover']
# TODO: Every one is requested to use VALUES_ALL_CUSTOMIZED key instead of all other keys
VALUES_ALL_CUSTOMIZED = ['All', 'Customized']
@@ -830,7 +933,11 @@ def is_valid_custom(self):
VALUES_DIAM = connectdb("Bolt")
# VALUES_DIAM = ['Select diameter','12','16','20','24','30','36']
-
+VALUES_IMAGE_PLATEGIRDER = [str(files("osdag.data.ResourceFiles.images").joinpath("ULPPS_PG.png")),
+ str(files("osdag.data.ResourceFiles.images").joinpath("ULFFS_PG.png")),
+ str(files("osdag.data.ResourceFiles.images").joinpath("CLPPS_PG.png")),
+ str(files("osdag.data.ResourceFiles.images").joinpath("CLFFS_PG.png")),
+ str(files("osdag.data.ResourceFiles.images").joinpath("CLPPSPB_PG.png"))]
VALUES_IMG_TENSIONBOLTED = [str(files("osdag.data.ResourceFiles.images").joinpath("bA.png")),str(files("osdag.data.ResourceFiles.images").joinpath("bBBA.png")),str(files("osdag.data.ResourceFiles.images").joinpath("bSA.png")),str(files("osdag.data.ResourceFiles.images").joinpath("bC.png")),str(files("osdag.data.ResourceFiles.images").joinpath("bBBC.png"))]
VALUES_IMG_TENSIONWELDED = [str(files("osdag.data.ResourceFiles.images").joinpath("wA.png")),str(files("osdag.data.ResourceFiles.images").joinpath("wBBA.png")),str(files("osdag.data.ResourceFiles.images").joinpath("wSA.png")),str(files("osdag.data.ResourceFiles.images").joinpath("wC.png")),str(files("osdag.data.ResourceFiles.images").joinpath("wBBC.png"))]
VALUES_IMG_TENSIONBOLTED_DF01 = [str(files("osdag.data.ResourceFiles.images").joinpath("equaldp.png")),str(files("osdag.data.ResourceFiles.images").joinpath("bblequaldp.png")),str(files("osdag.data.ResourceFiles.images").joinpath("bbsequaldp.png")),str(files("osdag.data.ResourceFiles.images").joinpath("salequaldp.png")),str(files("osdag.data.ResourceFiles.images").joinpath("sasequaldp.png"))]
@@ -885,6 +992,7 @@ def is_valid_custom(self):
DISP_MAX_CLEAT_HEIGHT = 'Max. Cleat Angle Height'
DISP_MIN_CLEAT_THK = 'Min. Cleat Angle Thickness (mm)'
DISP_MIN_WIDTH = 'Minimum Width (mm)'
+
DISP_MIN_PLATE_THICK = 'Min. Plate Thickness (mm)'
######### Minimun for Flange####
@@ -938,6 +1046,19 @@ def is_valid_custom(self):
# VALUES_CONN_BP = ['Welded-Slab Base', 'Bolted-Slab Base', 'Gusseted Base Plate', 'Hollow Section']
+#lapjointbolted
+KEY_PLATE1_THICKNESS = "Plate1Thickness"
+KEY_PLATE2_THICKNESS = "Plate2Thickness"
+KEY_PLATE_WIDTH = "PlateWidth"
+KEY_DISP_PLATE1_THICKNESS = "Thickness of Plate-1 (mm) *"
+KEY_DISP_PLATE2_THICKNESS = "Thickness of Plate-2 (mm) *"
+KEY_DISP_PLATE_WIDTH = "Width of Plate (mm) *"
+KEY_TENSILE_FORCE = "TensileForce*"
+KEY_DISP_TENSILE_FORCE = "Tensile Force (kN) *"
+
+KEY_COVER_PLATE = "ButtJoint.CoverPlate"
+KEY_DISP_COVER_PLATE = "Cover Plate"
+
KEY_DISP_LENGTH = 'Length (mm) *'
KEY_DISP_LOCATION = 'Conn_Location *'
KEY_DISP_LOCATION_STRUT = 'Connection *'
@@ -1310,6 +1431,7 @@ def is_valid_custom(self):
DISP_TITLE_INTERMITTENT = 'Intermittent Connection'
DISP_TITLE_BOLTD = 'Bolt Details'
+DISP_TITLE_BOLTDS = 'Bolt Design'
DISP_TITLE_PLATED = 'Plate Details'
KEY_DISP_DP_DETAILING_GAP = 'Gap Between Beam and
Support (mm)'
@@ -1319,6 +1441,7 @@ def is_valid_custom(self):
KEY_DISP_DP_DETAILING_CORROSIVE_INFLUENCES_BEAM = 'Are the Members Exposed to Corrosive Influences?'
KEY_DISP_CORR_INFLUENCES = 'Members exposed to corrosive influences?'
KEY_DISP_DP_DESIGN_METHOD = 'Design Method'
+KEY_DISP_DP_DETAILING_PACKING_PLATE = 'Packing Plate'
KEY_DISP_DP_DESIGN_BASE_PLATE = 'Base Plate Analysis'
KEY_DISP_GAP = 'Gap Between Members (mm)'
@@ -1799,6 +1922,8 @@ def is_valid_custom(self):
KEY_OUT_GRD_PROVIDED = 'Bolt.Grade_Provided'
+KEY_OUT_DISP_TYP_PROVIDED = 'Type'
+KEY_OUT_TYP_PROVIDED = 'Bolt.Type_Provided'
KEY_OUT_DISP_GRD_PROVIDED = 'Property Class'
KEY_OUT_INTER_GRD_PROVIDED = 'Bolt.InterGrade'
KEY_OUT_DISP_INTER_GRD_PROVIDED = 'Grade'
@@ -1818,6 +1943,11 @@ def is_valid_custom(self):
KEY_DISP_BOLT_HOLE = 'Hole Diameter (mm)'
KEY_DISP_MIN_BOLT = 'Minimum Bolts (nos)'
+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_DISP_BOLT_AREA = 'Nominal Stress Area (mm2)'
KEY_DISP_KB = 'Kb'
@@ -1836,6 +1966,7 @@ def is_valid_custom(self):
KEY_OUT_BETA_PK = 'Bolt.Betapk'
KEY_OUT_DISP_BETA_PK = 'βpk'
KEY_OUT_DISP_BOLT_SLIP= 'Slip Resistance'
+KEY_OUT_BOLT_SLIP = 'Bolt.Slip'
KEY_OUT_DISP_BOLT_SLIP_DR = 'Slip Resistance (kN)'
KEY_OUT_BOLT_CAPACITY = 'Bolt.Capacity'
KEY_OUT_BOLT_CAPACITY_SPTD = 'Bolt.Capacity_sptd'
@@ -2278,7 +2409,9 @@ def is_valid_custom(self):
KEY_AXFOR = 'Axial Force'
KEY_DISP_AXFOR = 'Axial Force (kN)*'
KEY_PLTHK = 'Plate thk'
+KEY_PK_PLTHK = 'PackingPlate thk'
KEY_DISP_PLTHK = 'Plate thk (mm)'
+KEY_DISP_PK_PLTHK = 'Packing Plate thickness (mm)'
KEY_PLTHICK = 'Plate thk'
KEY_DISP_PLTHICK = 'Plate Thickness (mm)'
KEY_DISP_PLATE_THICK = 'Plate Thickness (mm)'
@@ -2488,6 +2621,15 @@ def get_leg_lengths(designation):
"
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
\n" "