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

Commit 6dab709

Browse files
committed
Steel design addon - done (before code review)
1 parent 03b2b15 commit 6dab709

5 files changed

Lines changed: 426 additions & 5 deletions

File tree

examples/high_level_functions_demos/addon_steel_design.js

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
/********* !PRERELEASE MODE! *********/
1+
if (!PRERELEASE_MODE) {
2+
throw new Error("This script uses some prerelease functionality.");
3+
}
24

35
/*
46
Effective length Boundary condition Local section red. Ultimate conf. Serviceability conf. Fire resistance conf. Strength conf. Seismic configuration
@@ -24,7 +26,7 @@ run("../includes/Tools/clearAll.js");
2426
function IsCurrent (current_standard) {
2527
ASSERT(STEEL_DESIGN.isActive(), "Steel design add-on must be active");
2628
var current = general.current_standard_for_steel_design.match(/\w+/);
27-
return current == current_standard; // Don't use === (we don't want compare types of strings)
29+
return current == current_standard; // Don't use === (we don't want compare types of strings, only its string's values)
2830
}
2931

3032
var t1 = new Date().getTime();
@@ -51,7 +53,7 @@ var material = new Material(undefined, "S235");
5153
var section = new Section(undefined, "IPE 80", material.GetNo());
5254
var memberList = [];
5355

54-
var nodeForMembers = createNodesGrid(-28, -28, [12, 2], [3, 2]);
56+
var nodeForMembers = createNodesGrid(-28, -28, [12, 3], [3, 2]);
5557
for (var i = 0; i < nodeForMembers.length; i+=2) {
5658
var member = new Member();
5759
memberList.push(member);
@@ -344,7 +346,7 @@ var memberSet = new MemberSet();
344346
memberSet.ContinuousMembers(undefined, [memberList[7].GetNo(), member.GetNo(), memberList[8].GetNo()]);
345347
memberSet.SteelDesignProperties();
346348

347-
/********************************************************* Member, Member set - Design properties (Steel design add-on) ********************************************************/
349+
/********************************************************* Member, Member set - Design types (Steel design add-on) ********************************************************/
348350
var effectiveLengthNo = 1;
349351
var boundaryConditionNo = (IsCurrent("EN") || IsCurrent("NTC")) ? 2 : undefined;
350352
var localSectionReductionNo = 1;
@@ -366,6 +368,26 @@ memberSet.SetSteeleDesignConfigurations(ultimateConfigurationNo, serviceabilityC
366368
/**************************************************** Members - Design support & deflection (Steel design add-on) ******************************************************/
367369
var memberDesignSupport = new MemberDesignSupport(undefined, undefined, [memberSet.GetNo()], [15, 16, 17, 18]);
368370
memberDesignSupport.Name("Member design support");
371+
memberDesignSupport.GeneralInZ(true, 0.25, false, 0.15, "ZAXIS_NEGATIVE");
372+
memberDesignSupport.GeneralInY(true, undefined, undefined, undefined, "YAXIS_BOTH", false);
373+
374+
memberList[9].SteelDesignProperties();
375+
memberList[9].SetDesignSupport(memberDesignSupport.GetNo(), memberDesignSupport.GetNo());
376+
377+
memberList[11].SetDesignSupport(memberDesignSupport.GetNo(), memberDesignSupport.GetNo());
378+
memberList[11].SetDeflectionAnalysis("LOCAL_AXIS_Z_AND_Y", "DEFORMED_UNDEFORMED_SYSTEM", false, 1.5, 0.02);
379+
380+
/**************************************************** Member Sets - Design support & deflection (Steel design add-on) **************************************************/
381+
var member = new Member();
382+
member.Beam(undefined, [26, 27], section.GetNo());
383+
member.SteelDesignPropertiesViaParentMemberSet(false); // Can't be set?
384+
var member2 = new Member();
385+
member2.Beam(undefined, [28, 29], section.GetNo());
386+
memberSet.ContinuousMembers(undefined, [memberList[12].GetNo(), member.GetNo(), memberList[13].GetNo(), member2.GetNo(), memberList[14].GetNo()]);
387+
memberSet.SteelDesignProperties();
388+
memberSet.SetDesignSupport(memberDesignSupport.GetNo(), memberDesignSupport.GetNo());
389+
memberSet.SetDesignSupportAtInternalNodes(memberDesignSupport.GetNo(), undefined, undefined, memberDesignSupport.GetNo());
390+
memberSet.SetDeflectionAnalysis("LOCAL_AXIS_Z", "DEFORMED_SEGMENT_ENDS", [undefined, [undefined, 8.0, 0.02]]);
369391

370392
var t2 = new Date().getTime();
371393
var time = (t2 - t1) / 1000;

includes/BasicObjects/Member.js

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/*
22
1. SetSteeleDesignConfigurations - no API support for Strength configuration?
33
2. SetSteeleDesignConfigurations - no API support for Seismic configuration?
4+
3. design_properties_parent_member_set cam't be set?
45
*/
56

67
include("../Tools/high_level_functions_support.js");
@@ -806,12 +807,27 @@ Member.prototype.GetMember = function (){
806807
*/
807808
Member.prototype.SteelDesignProperties = function (enabled) {
808809
ASSERT(STEEL_DESIGN.isActive(), "Steel design add-on must be active");
810+
ASSERT(!this.member.is_deactivated_for_calculation, "Calculation must be deactivated");
809811
if (typeof enabled === "undefined") {
810812
enabled = true;
811813
}
812814
this.member.design_properties_via_member = enabled;
813815
}
814816

817+
Member.prototype.SteelDesignPropertiesViaParentMemberSet = function (design_properties_via_parent_member_set,
818+
design_properties_parent_member_set_no) {
819+
ASSERT(STEEL_DESIGN.isActive(), "Steel design add-on must be active");
820+
ASSERT(!this.member.is_deactivated_for_calculation, "Calculation must be deactivated");
821+
ASSERT(typeof design_properties_via_parent_member_set !== "undefined", "Enable / disable must be defined");
822+
this.member.design_properties_via_parent_member_set = design_properties_via_parent_member_set;
823+
if (typeof design_properties_parent_member_set_no !== "undefined") {
824+
ASSERT(this.member.design_properties_via_parent_member_set, "Via parent member set must be enabled");
825+
if (__objectExists(design_properties_parent_member_set_no, "Member set", member_sets)) {
826+
//this.member.design_properties_parent_member_set = design_properties_parent_member_set_no; // Can't be set?
827+
}
828+
}
829+
};
830+
815831
/**
816832
* Sets Steel design types (Steel design add-on)
817833
* @param {Number} steel_effective_lengths_no Effective length number, can be undefined
@@ -863,6 +879,79 @@ Member.prototype.SetSteeleDesignConfigurations = function (member_steel_design_u
863879
}
864880
};
865881

882+
/**
883+
* Sets Design supports
884+
* @param {Number} design_support_on_member_start Design support at member start, can be undefined
885+
* @param {Number} design_support_on_member_end Design support at member end, can be undefined
886+
*/
887+
Member.prototype.SetDesignSupport = function (design_support_on_member_start,
888+
design_support_on_member_end) {
889+
ASSERT(STEEL_DESIGN.isActive(), "Steel design add-on must be active");
890+
if (typeof design_support_on_member_start !== "undefined") {
891+
if (__objectExists(design_support_on_member_start, "Design support", design_supports)) {
892+
this.member.design_support_on_member_start = design_support_on_member_start;
893+
}
894+
}
895+
if (typeof design_support_on_member_end !== "undefined") {
896+
if (__objectExists(design_support_on_member_end, "Design support", design_supports)) {
897+
this.member.design_support_on_member_end = design_support_on_member_end;
898+
}
899+
}
900+
};
901+
902+
/**
903+
* Sets Deflection analysis
904+
* @param {String} deflection_check_direction Check direction (LOCAL_AXIS_Z, LOCAL_AXIS_Y, LOCAL_AXIS_Z_AND_Y, RESULTING_AXIS), can be undefined (LOCAL_AXIS_Z_AND_Y as default)
905+
* @param {String} deflection_check_displacement_reference Displacement reference (DEFORMED_SEGMENT_ENDS, DEFORMED_UNDEFORMED_SYSTEM), can be undefined (DEFORMED_SEGMENT_ENDS as default)
906+
* @param {Boolean} active_z Segment in z-axis - active, can be undefined (true as default)
907+
* @param {Number} length_z Segment in z-axis - length, can be undefined (member length as default)
908+
* @param {Number} precamber_z Segment in z-axis - precamber, can be undefined (0.0 as default)
909+
*/
910+
Member.prototype.SetDeflectionAnalysis = function (deflection_check_direction,
911+
deflection_check_displacement_reference,
912+
active_z,
913+
length_z,
914+
precamber_z/*,
915+
active_y,
916+
length_y,
917+
precamber_y*/) {
918+
ASSERT(STEEL_DESIGN.isActive(), "Steel design add-on must be active");
919+
this.member.deflection_check_direction = GetMemberDesignSupportCheckDirection(deflection_check_direction);
920+
this.member.deflection_check_displacement_reference = GetMemberDesignCheckDisplacementDirection(deflection_check_displacement_reference);
921+
if (typeof active_z !== "undefined") {
922+
ASSERT(this.member.deflection_check_direction !== members.DEFLECTION_CHECK_DIRECTION_LOCAL_AXIS_Y, "Check direction can't be " + members.DEFLECTION_CHECK_DIRECTION_LOCAL_AXIS_Y);
923+
this.member.deflection_segments_z_axis[1].active = active_z;
924+
}
925+
if (typeof length_z !== "undefined") {
926+
ASSERT(this.member.deflection_check_direction !== members.DEFLECTION_CHECK_DIRECTION_LOCAL_AXIS_Y, "Check direction can't be " + members.DEFLECTION_CHECK_DIRECTION_LOCAL_AXIS_Y);
927+
this.member.deflection_segments_defined_length_z_axis_enabled = true;
928+
this.member.deflection_segments_z_axis[1].length = length_z;
929+
}
930+
else {
931+
this.member.deflection_segments_defined_length_z_axis_enabled = false;
932+
}
933+
if (typeof precamber_z !== "undefined") {
934+
ASSERT(this.member.deflection_check_direction !== members.DEFLECTION_CHECK_DIRECTION_LOCAL_AXIS_Y, "Check direction can't be " + members.DEFLECTION_CHECK_DIRECTION_LOCAL_AXIS_Y);
935+
this.member.deflection_segments_z_axis[1].precamber = precamber_z;
936+
}
937+
/*if (typeof active_y !== "undefined") {
938+
ASSERT(this.member.deflection_check_direction !== members.DEFLECTION_CHECK_DIRECTION_LOCAL_AXIS_Z, "Check direction can't be " + members.DEFLECTION_CHECK_DIRECTION_LOCAL_AXIS_Z);
939+
this.member.deflection_segments_y_axis[1].active = active_y;
940+
}
941+
if (typeof length_y !== "undefined") {
942+
ASSERT(this.member.deflection_check_direction !== members.DEFLECTION_CHECK_DIRECTION_LOCAL_AXIS_Z, "Check direction can't be " + members.DEFLECTION_CHECK_DIRECTION_LOCAL_AXIS_Z);
943+
this.member.deflection_segments_defined_length_y_axis_enabled = true;
944+
this.member.deflection_segments_y_axis[1].length = length_y;
945+
}
946+
else {
947+
this.member.deflection_segments_defined_length_y_axis_enabled = false;
948+
}
949+
if (typeof precamber_y !== "undefined") {
950+
ASSERT(this.member.deflection_check_direction !== members.DEFLECTION_CHECK_DIRECTION_LOCAL_AXIS_Z, "Check direction can't be " + members.DEFLECTION_CHECK_DIRECTION_LOCAL_AXIS_Z);
951+
this.member.deflection_segments_y_axis[1].precamber = precamber_y;
952+
}*/
953+
};
954+
866955
/**
867956
* Support function for section distributions (private), more info can be find there
868957
*/
@@ -1145,3 +1234,45 @@ function GetMemberSectionAlignment(section_alignment) {
11451234
return members.SECTION_ALIGNMENT_TOP;
11461235
}
11471236
}
1237+
1238+
function GetMemberDesignSupportCheckDirection(direction_type) {
1239+
const direction_types_dict = {
1240+
"LOCAL_AXIS_Z": members.DEFLECTION_CHECK_DIRECTION_LOCAL_AXIS_Z,
1241+
"LOCAL_AXIS_Y": members.DEFLECTION_CHECK_DIRECTION_LOCAL_AXIS_Y,
1242+
"LOCAL_AXIS_Z_AND_Y": members.DEFLECTION_CHECK_DIRECTION_LOCAL_AXIS_Z_AND_Y,
1243+
"RESULTING_AXIS": members.DEFLECTION_CHECK_DIRECTION_RESULTING_AXIS
1244+
};
1245+
1246+
if (direction_type !== undefined) {
1247+
var type = direction_types_dict[direction_type];
1248+
if (type === undefined) {
1249+
console.log("Wrong design support check direction type. Value was: " + direction_type);
1250+
console.log("Correct values are: ( " + Object.keys(direction_types_dict) + ")");
1251+
type = members.DEFLECTION_CHECK_DIRECTION_LOCAL_AXIS_Z_AND_Y;
1252+
}
1253+
return type;
1254+
}
1255+
else {
1256+
return members.DEFLECTION_CHECK_DIRECTION_LOCAL_AXIS_Z_AND_Y;
1257+
}
1258+
}
1259+
1260+
function GetMemberDesignCheckDisplacementDirection(direction_type) {
1261+
const direction_types_dict = {
1262+
"DEFORMED_SEGMENT_ENDS": members.DEFLECTION_CHECK_DISPLACEMENT_REFERENCE_DEFORMED_SEGMENT_ENDS,
1263+
"DEFORMED_UNDEFORMED_SYSTEM": members.DEFLECTION_CHECK_DISPLACEMENT_REFERENCE_DEFORMED_UNDEFORMED_SYSTEM
1264+
};
1265+
1266+
if (direction_type !== undefined) {
1267+
var type = direction_types_dict[direction_type];
1268+
if (type === undefined) {
1269+
console.log("Wrong design support check displacement type. Value was: " + direction_type);
1270+
console.log("Correct values are: ( " + Object.keys(direction_types_dict) + ")");
1271+
type = members.DEFLECTION_CHECK_DISPLACEMENT_REFERENCE_DEFORMED_SEGMENT_ENDS;
1272+
}
1273+
return type;
1274+
}
1275+
else {
1276+
return members.DEFLECTION_CHECK_DISPLACEMENT_REFERENCE_DEFORMED_SEGMENT_ENDS;
1277+
}
1278+
}

0 commit comments

Comments
 (0)