Skip to content
This repository was archived by the owner on Apr 23, 2025. It is now read-only.

Commit 4cbd0e8

Browse files
authored
Merge pull request #85 from Dlubal-Software/11780-Steel_design_addon
2 parents fab2c4e + cf786c8 commit 4cbd0e8

26 files changed

Lines changed: 5839 additions & 9 deletions

examples/high_level_functions_demos/addon_steel_design.js

Lines changed: 423 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
3+
<script>
4+
<arguments>
5+
<argument argument-name="standard_index" default-value="0" label-name="Current index of standard for steel design (0: EN, 1: AISC, 2: IS, 3: BS, 4: GB, 5: CSA, 6: AS, 7: SP, 8: NTC, 9: NBR, 10: SIA)"/>
6+
</arguments>
7+
</script>

includes/AddOns/SteelDesign/FireResistanceConfiguration.js

Lines changed: 369 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 226 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,226 @@
1+
/**
2+
* Creates Steel Design Serviceability Configuration
3+
* @param {Number} no Serviceability configuration index, can be undefined
4+
* @param {Array} members_no List of members assigned, can be undefined
5+
* @param {Array} member_sets_no List of member sets assigned, can be undefined
6+
* @param {String} comment Comment, can be undefined
7+
* @param {Object} params Additional parameters, can be undefined
8+
*/
9+
function SteelDesignServiceabilityConfiguration (no,
10+
members_no,
11+
member_sets_no,
12+
comment,
13+
params) {
14+
ASSERT(STEEL_DESIGN.isActive(), "Steel design add-on must be active");
15+
this.addon = createBaseSteelDesignConfiguration(STEEL_DESIGN.steel_design_sls_configurations, no, members_no, member_sets_no, comment, params);
16+
}
17+
18+
/**
19+
* @returns Serviceability configuration index
20+
*/
21+
SteelDesignServiceabilityConfiguration.prototype.GetNo = function () {
22+
return this.addon.no;
23+
};
24+
25+
/**
26+
* @returns Serviceability configuration object
27+
*/
28+
SteelDesignServiceabilityConfiguration.prototype.GetServiceabilityConfiguration = function () {
29+
return this.addon;
30+
};
31+
32+
/**
33+
* Sets Name
34+
* @param {String} name Serviceability configuration name, can be undefined
35+
*/
36+
SteelDesignServiceabilityConfiguration.prototype.SetName = function (name) {
37+
ASSERT(typeof name !== "undefined", "Name must be specified");
38+
this.addon.name = name;
39+
};
40+
41+
/**
42+
* Sets Design parameters
43+
* @param {Number} property_sl_beam_limit_characteristic Beam limits - action combination, characteristic, can be undefined (is not set, 300 as default)
44+
* @param {Number} property_sl_beam_limit_frequent Beam limits - action combination, frequent, can be undefined (is not set, 200 as default)
45+
* @param {Number} property_sl_beam_limit_quasi_permanent Beam limits - action combination, quasi-permanent, can be undefined (is not set, 200 as default)
46+
* @param {Number} property_sl_cantilever_limit_characteristic Cantilever limits - action combination, characteristic, can be undefined (is not set, 150 as default)
47+
* @param {Number} property_sl_cantilever_limit_frequent Cantilever limits - action combination, frequent, can be undefined (is not set, 100 as default)
48+
* @param {Number} property_sl_cantilever_limit_quasi_permanent Cantilever limits - action combination, quasi-permanent, can be undefined (is not set, 100 as default)
49+
* @param {Number} property_vibration_design Vibration design, can be undefined (is not set, 5 mm as default)
50+
* @param {Boolean} property_lowb_design_of_steel_structure Limitation of web breathing, Design as steel bridge structure acc. to EN 1993-2, 7.4, can be undefined (is not set, false as default)
51+
* @param {Boolean} property_lowb_road_bridge Limitation of web breathing, Road bridge, can be undefined (is not set, true as default)
52+
* @param {Boolean} property_lowb_railway_bridge Limitation of web breathing, Railway bridge, can be undefined (is not set, false as default)
53+
*/
54+
SteelDesignServiceabilityConfiguration.prototype.SetDesignParametersEC3 = function (property_sl_beam_limit_characteristic,
55+
property_sl_beam_limit_frequent,
56+
property_sl_beam_limit_quasi_permanent,
57+
property_sl_cantilever_limit_characteristic,
58+
property_sl_cantilever_limit_frequent,
59+
property_sl_cantilever_limit_quasi_permanent,
60+
property_vibration_design,
61+
property_lowb_design_of_steel_structure,
62+
property_lowb_road_bridge,
63+
property_lowb_railway_bridge) {
64+
if (typeof property_sl_beam_limit_characteristic !== "undefined") {
65+
this.addon.settings_ec3.property_sl_beam_limit_characteristic = property_sl_beam_limit_characteristic;
66+
}
67+
if (typeof property_sl_beam_limit_frequent !== "undefined") {
68+
this.addon.settings_ec3.property_sl_beam_limit_frequent = property_sl_beam_limit_frequent;
69+
}
70+
if (typeof property_sl_beam_limit_quasi_permanent !== "undefined") {
71+
this.addon.settings_ec3.property_sl_beam_limit_quasi_permanent = property_sl_beam_limit_quasi_permanent;
72+
}
73+
if (typeof property_sl_cantilever_limit_characteristic !== "undefined") {
74+
this.addon.settings_ec3.property_sl_cantilever_limit_characteristic = property_sl_cantilever_limit_characteristic;
75+
}
76+
if (typeof property_sl_cantilever_limit_frequent !== "undefined") {
77+
this.addon.settings_ec3.property_sl_cantilever_limit_frequent = property_sl_cantilever_limit_frequent;
78+
}
79+
if (typeof property_sl_cantilever_limit_quasi_permanent !== "undefined") {
80+
this.addon.settings_ec3.property_sl_cantilever_limit_quasi_permanent = property_sl_cantilever_limit_quasi_permanent;
81+
}
82+
if (typeof property_vibration_design !== "undefined") {
83+
this.addon.settings_ec3.property_vibration_design = property_vibration_design;
84+
}
85+
if (typeof property_lowb_design_of_steel_structure !== "undefined") {
86+
this.addon.settings_ec3.property_lowb_design_of_steel_structure = property_lowb_design_of_steel_structure;
87+
}
88+
if (typeof property_lowb_road_bridge !== "undefined") {
89+
ASSERT(this.addon.settings_ec3.property_lowb_design_of_steel_structure, "Design as steel bridge must be on");
90+
this.addon.settings_ec3.property_lowb_road_bridge = property_lowb_road_bridge;
91+
}
92+
if (typeof property_lowb_railway_bridge !== "undefined") {
93+
ASSERT(this.addon.settings_ec3.property_lowb_design_of_steel_structure, "Design as steel bridge must be on");
94+
this.addon.settings_ec3.property_lowb_railway_bridge = property_lowb_railway_bridge;
95+
}
96+
};
97+
98+
/**
99+
* Sets Design parameters
100+
* @param {Number} property_sl_beam_limit Beam limits, can be undefined (is not set, 360 as default)
101+
* @param {Number} property_sl_cantilever_limit Cantilever limits, can be undefined (is not set, 180 as default)
102+
*/
103+
SteelDesignServiceabilityConfiguration.prototype.SetDesignParametersAISC = function (property_sl_beam_limit,
104+
property_sl_cantilever_limit) {
105+
if (typeof property_sl_beam_limit !== "undefined") {
106+
this.addon.settings_aisc.property_sl_beam_limit = property_sl_beam_limit;
107+
}
108+
if (typeof property_sl_cantilever_limit !== "undefined") {
109+
this.addon.settings_aisc.property_sl_cantilever_limit = property_sl_cantilever_limit;
110+
}
111+
};
112+
113+
/**
114+
* Sets Design parameters
115+
* @param {Number} property_sl_beam_limit Beam limits, can be undefined (is not set, 360 as default)
116+
* @param {Number} property_sl_cantilever_limit Cantilever limits, can be undefined (is not set, 180 as default)
117+
*/
118+
SteelDesignServiceabilityConfiguration.prototype.SetDesignParametersIS = function (property_sl_beam_limit,
119+
property_sl_cantilever_limit) {
120+
if (typeof property_sl_beam_limit !== "undefined") {
121+
this.addon.settings_is.property_sl_beam_limit = property_sl_beam_limit;
122+
}
123+
if (typeof property_sl_cantilever_limit !== "undefined") {
124+
this.addon.settings_is.property_sl_cantilever_limit = property_sl_cantilever_limit;
125+
}
126+
};
127+
128+
/**
129+
* Sets Design parameters
130+
* @param {Number} property_sl_beam_limit_value Beam limits, can be undefined (is not set, 360 as default)
131+
* @param {Number} property_sl_cantilever_limit_value Cantilever limits, can be undefined (is not set, 180 as default)
132+
* @param {Number} property_vibration_design Vibration design, can be undefined (is not set, 5 mm as default)
133+
*/
134+
SteelDesignServiceabilityConfiguration.prototype.SetDesignParametersBS = function (property_sl_beam_limit_value,
135+
property_sl_cantilever_limit_value,
136+
property_vibration_design) {
137+
if (typeof property_sl_beam_limit_value !== "undefined") {
138+
this.addon.settings_bs5.property_sl_beam_limit_value = property_sl_beam_limit_value;
139+
}
140+
if (typeof property_sl_cantilever_limit_value !== "undefined") {
141+
this.addon.settings_bs5.property_sl_cantilever_limit_value = property_sl_cantilever_limit_value;
142+
}
143+
if (typeof property_vibration_design !== "undefined") {
144+
this.addon.settings_bs5.property_vibration_design = property_vibration_design;
145+
}
146+
};
147+
148+
/**
149+
* Sets Design parameters
150+
* @param {Number} property_sl_beam_limit_characteristic_permanent_and_variable Beam limits acc. to GB 50017, Annex B, permanent and variable, can be undefined (is not set, 1000 as default)
151+
* @param {Number} property_sl_beam_limit_characteristic_variable Beam limits acc. to GB 50017, Annex B, variable, can be undefined (is not set, 1000 as default)
152+
* @param {Number} property_sl_cantilever_limit_characteristic_permanent_and_variable Cantilever limits acc. to GB 50017, Annex B, permanent and variable, can be undefined (is not set, 500 as default)
153+
* @param {Number} property_sl_cantilever_limit_characteristic_variable Cantilever limits acc. to GB 50017, Annex B, variable, can be undefined (is not set, 500 as default)
154+
*/
155+
SteelDesignServiceabilityConfiguration.prototype.SetDesignParametersGB = function (property_sl_beam_limit_characteristic_permanent_and_variable,
156+
property_sl_beam_limit_characteristic_variable,
157+
property_sl_cantilever_limit_characteristic_permanent_and_variable,
158+
property_sl_cantilever_limit_characteristic_variable) {
159+
if (typeof property_sl_beam_limit_characteristic_permanent_and_variable !== "undefined") {
160+
this.addon.settings_gb50017.property_sl_beam_limit_characteristic_permanent_and_variable = property_sl_beam_limit_characteristic_permanent_and_variable;
161+
}
162+
if (typeof property_sl_beam_limit_characteristic_variable !== "undefined") {
163+
this.addon.settings_gb50017.property_sl_beam_limit_characteristic_variable = property_sl_beam_limit_characteristic_variable;
164+
}
165+
if (typeof property_sl_cantilever_limit_characteristic_permanent_and_variable !== "undefined") {
166+
this.addon.settings_gb50017.property_sl_cantilever_limit_characteristic_permanent_and_variable = property_sl_cantilever_limit_characteristic_permanent_and_variable;
167+
}
168+
if (typeof property_sl_cantilever_limit_characteristic_variable !== "undefined") {
169+
this.addon.settings_gb50017.property_sl_cantilever_limit_characteristic_variable = property_sl_cantilever_limit_characteristic_variable;
170+
}
171+
};
172+
173+
/**
174+
* Sets Design parameters
175+
* @param {Number} property_sl_beam_limit Beam limits, can be undefined (is not set, 360 as default)
176+
* @param {Number} property_sl_cantilever_limit Cantilever limits, can be undefined (is not set, 180 as default)
177+
*/
178+
SteelDesignServiceabilityConfiguration.prototype.SetDesignParametersCSA = function (property_sl_beam_limit,
179+
property_sl_cantilever_limit) {
180+
if (typeof property_sl_beam_limit !== "undefined") {
181+
this.addon.settings_csa.property_sl_beam_limit = property_sl_beam_limit;
182+
}
183+
if (typeof property_sl_cantilever_limit !== "undefined") {
184+
this.addon.settings_csa.property_sl_cantilever_limit = property_sl_cantilever_limit;
185+
}
186+
};
187+
188+
/**
189+
* Sets Design parameters
190+
* @param {Number} property_sl_beam_limit_short_term_effects Beam limits, short-term effects, can be undefined (is not set, 500 as default)
191+
* @param {Number} property_sl_beam_limit_long_term_effects Beam limits, long-term effects, can be undefined (is not set, 250 as default)
192+
* @param {Number} property_sl_cantilever_limit_short_term_effects Cantilever limits, short-term effects, can be undefined (is not set, 250 as default)
193+
* @param {Number} property_sl_cantilever_limit_long_term_effects Cantilever effects, long-term effects, can be undefined (is not set, 125 as default)
194+
*/
195+
SteelDesignServiceabilityConfiguration.prototype.SetDesignParametersAS = function (property_sl_beam_limit_short_term_effects,
196+
property_sl_beam_limit_long_term_effects,
197+
property_sl_cantilever_limit_short_term_effects,
198+
property_sl_cantilever_limit_long_term_effects) {
199+
if (typeof property_sl_beam_limit_short_term_effects !== "undefined") {
200+
this.addon.settings_as4100.property_sl_beam_limit_short_term_effects = property_sl_beam_limit_short_term_effects;
201+
}
202+
if (typeof property_sl_beam_limit_long_term_effects !== "undefined") {
203+
this.addon.settings_as4100.property_sl_beam_limit_long_term_effects = property_sl_beam_limit_long_term_effects;
204+
}
205+
if (typeof property_sl_cantilever_limit_short_term_effects !== "undefined") {
206+
this.addon.settings_as4100.property_sl_cantilever_limit_short_term_effects = property_sl_cantilever_limit_short_term_effects;
207+
}
208+
if (typeof property_sl_cantilever_limit_long_term_effects !== "undefined") {
209+
this.addon.settings_as4100.property_sl_cantilever_limit_long_term_effects = property_sl_cantilever_limit_long_term_effects;
210+
}
211+
};
212+
213+
/**
214+
* Sets Design parameters
215+
* @param {Number} property_sl_beam_limit Beam limits, can be undefined (is not set, 360 as default)
216+
* @param {Number} property_sl_cantilever_limit Cantilever limits, can be undefined (is not set, 180 as default)
217+
*/
218+
SteelDesignServiceabilityConfiguration.prototype.SetDesignParametersSP = function (property_sl_beam_limit,
219+
property_sl_cantilever_limit) {
220+
if (typeof property_sl_beam_limit !== "undefined") {
221+
this.addon.settings_sp16.property_sl_beam_limit = property_sl_beam_limit;
222+
}
223+
if (typeof property_sl_cantilever_limit !== "undefined") {
224+
this.addon.settings_sp16.property_sl_cantilever_limit = property_sl_cantilever_limit;
225+
}
226+
};
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
/*
2+
Member sets cannot be set?? What condition for member sets?
3+
*/
4+
5+
include("../../Tools/global.js");
6+
7+
function createBaseSteelDesignConfiguration (object_to_create,
8+
no,
9+
members_no,
10+
member_sets_no,
11+
comment,
12+
params) {
13+
ASSERT(STEEL_DESIGN.isActive(), "Steel design must be active");
14+
if (typeof no === "undefined") {
15+
addon = object_to_create.create();
16+
}
17+
else {
18+
addon = object_to_create.create(no);
19+
}
20+
setSteelDesign_Members(addon, members_no, member_sets_no);
21+
set_comment_and_parameters(addon, comment, params);
22+
return addon;
23+
}
24+
25+
setSteelDesign_Members = function (object_to_set,
26+
members_no,
27+
member_sets_no) {
28+
if (typeof members_no !== "undefined") {
29+
ASSERT(Array.isArray(members_no), "Member list must be array if member indexes");
30+
member_list = members_no;
31+
members_no = [];
32+
for (var i = 0; i < member_list.length; ++i) {
33+
if (members.exist(member_list[i])) {
34+
ASSERT(__hasSteelSection(members[member_list[i]].section_start) && __hasSteelSection(members[member_list[i]].section_end), "Member no. " + member_list[i] + " must have section with " + materials.TYPE_STEEL + " material type");
35+
members_no.push(member_list[i]);
36+
}
37+
else {
38+
console.log("Member no. " + member_list[i] + " doesn't exist");
39+
}
40+
}
41+
object_to_set.assigned_to_members = members_no;
42+
}
43+
if (typeof member_sets_no !== "undefined") {
44+
ASSERT(Array.isArray(member_sets_no), "Member set list must be array of member sets indexes");
45+
member_sets_list = member_sets_no;
46+
member_sets_no = [];
47+
for (var i = 0; i < member_sets_list.length; ++i) {
48+
if (member_sets.exist(member_sets_list[i])) {
49+
for (var j = 0; j < member_sets[member_sets_list[i]].members.length; ++j) {
50+
ASSERT(__hasSteelSection(member_sets[member_sets_list[i]].members[j].section_start) && __hasSteelSection(member_sets[member_sets_list[i]].members[j].section_end), "Member no. " + member_sets_list[i].members[j] + " (member set no. " + member_sets_list[i] + ") must have section with " + materials.TYPE_STEEL + " material type");
51+
}
52+
member_sets_no.push(member_sets_list[i]);
53+
}
54+
else {
55+
console.log("Member set no. " + member_sets_list[i] + " doesn't exist");
56+
}
57+
}
58+
object_to_set.assigned_to_member_sets = member_sets_no;
59+
}
60+
}
61+
62+
setSteelDesignUltimateConfiguration_LimitValues = function (addon_settings,
63+
property_limit_values_tension,
64+
property_limit_values_compression,
65+
property_limit_values_shear_y,
66+
property_limit_values_shear_z,
67+
property_limit_values_torsion,
68+
property_limit_values_bending_about_major_axis_y,
69+
property_limit_values_bending_about_minor_axis_z) {
70+
ASSERT(addon_settings.property_perform_stability_analysis, "Perform stability design must be on");
71+
if (typeof property_limit_values_tension !== "undefined") {
72+
addon_settings.property_limit_values_tension = property_limit_values_tension;
73+
}
74+
if (typeof property_limit_values_compression !== "undefined") {
75+
addon_settings.property_limit_values_compression = property_limit_values_compression;
76+
}
77+
if (typeof property_limit_values_shear_y !== "undefined") {
78+
addon_settings.property_limit_values_shear_y = property_limit_values_shear_y;
79+
}
80+
if (typeof property_limit_values_shear_z != "undefined") {
81+
addon_settings.property_limit_values_shear_z = property_limit_values_shear_z;
82+
}
83+
if (typeof property_limit_values_torsion !== "undefined") {
84+
addon_settings.property_limit_values_torsion = property_limit_values_torsion;
85+
}
86+
if (typeof property_limit_values_bending_about_major_axis_y !== "undefined") {
87+
addon_settings.property_limit_values_bending_about_major_axis_y = property_limit_values_bending_about_major_axis_y;
88+
}
89+
if (typeof property_limit_values_bending_about_minor_axis_z !== "undefined") {
90+
addon_settings.property_limit_values_bending_about_minor_axis_z = property_limit_values_bending_about_minor_axis_z;
91+
}
92+
};
93+
94+
setSteelDesignUltimateConfiguration_PositionOfPositiveTransverse = function (addon_settings,
95+
property_load_acts_vp_downwards_on_top_flange,
96+
property_load_acts_vp_at_shear_point,
97+
property_load_acts_vp_at_center_point,
98+
property_load_acts_vp_downwards_on_bottom_flange) {
99+
ASSERT(addon_settings.property_perform_stability_analysis, "Perform stability design must be on");
100+
if (typeof property_load_acts_vp_downwards_on_top_flange !== "undefined") {
101+
addon_settings.property_load_acts_vp_downwards_on_top_flange = property_load_acts_vp_downwards_on_top_flange
102+
}
103+
if (typeof property_load_acts_vp_at_shear_point !== "undefined") {
104+
addon_settings.property_load_acts_vp_at_shear_point = property_load_acts_vp_at_shear_point;
105+
}
106+
if (typeof property_load_acts_vp_at_center_point !== "undefined") {
107+
addon_settings.property_load_acts_vp_at_center_point = property_load_acts_vp_at_center_point;
108+
}
109+
if (typeof property_load_acts_vp_downwards_on_bottom_flange !== "undefined") {
110+
addon_settings.property_load_acts_vp_downwards_on_bottom_flange = property_load_acts_vp_downwards_on_bottom_flange;
111+
}
112+
};
113+
114+
function GetCurrentCodeOfStandard () {
115+
return general.current_standard_for_steel_design.match(/\w+/);
116+
}
117+
118+
function IsCurrentCodeOfStandard (current_standard) {
119+
return GetCurrentCodeOfStandard() == current_standard; // Don't use === (we don't want compare types of strings)
120+
}

0 commit comments

Comments
 (0)