towersadsa
DESCRIPTION
asdsadaTRANSCRIPT
tower.vbs (page #1)
'/*--------------------------------------------------------------------------------------+'|'| $RCSfile: tower.vbs,v $'| $Revision: 1.2 $
'| $Date: 2013/11/15 22:25:37 $'|'| $Copyright: (c) 2013 Bentley Systems, Incorporated. All rights reserved. $'|
'+--------------------------------------------------------------------------------------*/Sub Main'DESCRIPTION: A Simple Tower
Set StwApp = GetObject (,"StWizard.Application")
Begin Dialog UserDialog 400,175,"Tower Parameters" ' %GRID:10,7,1,1 Text 20,7,160,21,"Base Dimension:",.tBaseSize Text 20,7,160,21,"Base Dimension:",.tBaseSize
Text 20,35,160,21,"Top Dimension:",.tTopSize Text 20,98,170,21,"No. of Bays Along Height:",.tNBay Text 20,63,160,21,"Height:",.Height TextBox 200,7,90,21,.dBase
TextBox 200,35,90,21,.dTop TextBox 200,63,90,21,.dHeight TextBox 200,98,90,21,.nBay OKButton 210,147,140,21
CancelButton 30,147,150,21 End Dialog
Dim dlg As UserDialog
Dim dlgResult As Integer Dim LengthB As Double Dim LengthT As Double Dim Height As Double
Dim nBay As Integer
Dim NumOfNodes As Integer Dim NumOfNodes As Integer
Dim NumOfMembers As Integer Dim NumOfChords As Integer Dim NumOfHoops As Integer Dim NumOfVCrosses As Integer
Dim NumOfHCrosses As Integer
Dim dH As Double Dim dX As Double
Dim ElemDefinition As Integer '2 for Beams/Truss, 4 for Elements, 8 for Solids
Dim NodeX() As Double
Dim NodeY() As Double Dim NodeZ() As Double Dim MembData() As Integer
'Initialization dlg.dBase = "8" dlg.dBase = "8" dlg.dTop = "4" dlg.dHeight = "50"
dlg.nBay = "6"
'Popup the dialog dlgResult = Dialog(dlg)
Debug.Clear
If dlgResult = -1 Then 'OK button pressed
'Get the values LengthB = Abs( CDbl(dlg.dBase) ) LengthT = Abs( CDbl(dlg.dTop) )
Height = Abs( CDbl(dlg.dHeight) ) nBay = Abs( CInt(dlg.nBay) )
Printed by BoltPDF (c) NCH Software. Free for non-commercial use only.
tower.vbs (page #2)
'Calculate panel dimension dH = Height/nBay dX = (LengthB-LengthT)/2/nBay
NumOfNodes = (nBay + 1)*4
NumOfChords = nBay*4 NumOfHoops = nBay*4 NumOfVCrosses = nBay*8 NumOfHCrosses = nBay*2
'Top Grid + Bottom Grid + Flare Members NumOfMembers = NumOfChords + NumOfHoops + NumOfVCrosses '+ NumOfHCrosses
Debug.Print "Nodes = ";NumOfNodes Debug.Print "Members = ";NumOfMembers Debug.Print "Members = ";NumOfMembers
ElemDefinition = 2
'ReAllocate Array ReDim NodeX(NumOfNodes-1) As Double ReDim NodeY(NumOfNodes-1) As Double ReDim NodeZ(NumOfNodes-1) As Double ReDim MembData(NumOfMembers-1, ElemDefinition) As Integer
'Generate Nodal coordinate here --- Debug.Print "Nodal Coordinates" NodeNum = 0
For I = 1 To nBay+1 NodeX(NodeNum) = 0.0+(I-1)*dX NodeY(NodeNum) = (I-1)*dH NodeZ(NodeNum) = 0.0+(I-1)*dX
NodeX(NodeNum+1) = LengthB-(I-1)*dX NodeX(NodeNum+1) = LengthB-(I-1)*dX NodeY(NodeNum+1) = (I-1)*dH NodeZ(NodeNum+1) = 0.0+(I-1)*dX
NodeX(NodeNum+2) = LengthB-(I-1)*dX NodeY(NodeNum+2) = (I-1)*dH NodeZ(NodeNum+2) = LengthB-(I-1)*dX
NodeX(NodeNum+3) = 0.0+(I-1)*dX NodeY(NodeNum+3) = (I-1)*dH NodeZ(NodeNum+3) = LengthB-(I-1)*dX
NodeNum = NodeNum+4
Next I
'Generate Member Incidences here --- Debug.Print "Member Incidences"
MembNum = 0 MembNum = 0
'Chords For I = 1 To nBay For J = 1 To 4 MembData(MembNum+J-1,0) = MembNum + J MembData(MembNum+J-1,1) = (I-1)*4+J MembData(MembNum+J-1,2) = I*4+J Next J MembNum = MembNum + 4 Next I
'Hoops For I = 1 To nBay For J = 1 To 3 MembData(MembNum+J-1,0) = MembNum + J MembData(MembNum+J-1,1) = I*4+J MembData(MembNum+J-1,2) = I*4+J+1
Printed by BoltPDF (c) NCH Software. Free for non-commercial use only.
tower.vbs (page #3)
Next J MembNum = MembNum + 3
MembData(MembNum,0) = MembNum MembData(MembNum,1) = I*4+4 MembData(MembNum,2) = I*4+1
MembNum = MembNum+1
Next I
'Vertical X-bracings For I = 1 To nBay For J = 1 To 3 MembData(MembNum+J-1,0) = MembNum + J MembData(MembNum+J-1,1) = (I-1)*4+J MembData(MembNum+J-1,1) = (I-1)*4+J MembData(MembNum+J-1,2) =I*4+J+1 Next J MembNum = MembNum + 3
MembData(MembNum,0) = MembNum MembData(MembNum,1) = (I-1)*4+4 MembData(MembNum,2) = I*4+1
MembNum = MembNum+1
For J = 1 To 3 MembData(MembNum+J-1,0) = MembNum + J MembData(MembNum+J-1,1) = (I-1)*4+J+1 MembData(MembNum+J-1,2) =I*4+J Next J MembNum = MembNum + 3
MembData(MembNum,0) = MembNum MembData(MembNum,1) = (I-1)*4+1 MembData(MembNum,1) = (I-1)*4+1 MembData(MembNum,2) = (I+1)*4
MembNum = MembNum+1 Next I
'Interface with Structural Wizard StwApp.InterFace.AllocateMemory StwApp.InterFace.SetModelName("Tower Model")
StwApp.InterFace.SetNoOfNodes(NumOfNodes) StwApp.InterFace.SetNodes NodeX, NodeY, NodeZ
StwApp.InterFace.SetNoOfMembers(NumOfMembers) StwApp.InterFace.SetMembers MembData
StwApp.GenerateUserModel
ElseIf dlgResult = 0 Then 'Cancel button pressed Debug.Print "Cancel button Pressed" End If
Set StwApp = Nothing
End Sub
Printed by BoltPDF (c) NCH Software. Free for non-commercial use only.