首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用VBA宏从STAAD中提取梁杆件力

用VBA宏从STAAD中提取梁杆件力
EN

Stack Overflow用户
提问于 2017-11-02 06:45:38
回答 1查看 2K关注 0票数 0

在为特定情况创建宏时,我遇到了问题。我有一个STAAD模型,它有8个梁和10个载荷箱。我想得到所有梁的梁端力,但只加载情况1和2。

这是密码

代码语言:javascript
复制
Sub ExtractLC_Click()

Sheets("COPING BEAM").Range("A:I").ClearContents

'Variable Declaration

Dim lMemberNo As Long
Dim lEnd As Long
Dim lLoadCase As Long
Dim dForceArray(6) As Double
Dim icount As Integer
Dim ret As Boolean
Dim path As String

path = Sheets("Main").Cells(185, 23).Value

Set staad = GetObject(, "StaadPro.OpenSTAAD")

staad.OpenSTAADFile path

'extract beam end forces

lMemberNo = Sheets("Main").Cells(184, 10).Value

For x = 2 To 6
lLoadCase = Sheets("SEISMIC").Range("B" & x).Value
ret = staad.Output.GetMemberEndForces(lMemberNo, lEnd, lLoadCase, dForceArray)

For icount = 0 To 5
Sheets("SEISMIC").Cells(x, 3 + icount).Value = dForceArray(icount)

Next icount
Next x

Set staad = Nothing

End Sub

然而,对于这一行:

代码语言:javascript
复制
Output.GetMemberEndForces(lMemberNo, lEnd, lLoadCase, dForceArray)

只提取梁的起始力,而不提取Excel与STAAD比较

我想两者兼得。是否有某种代码涉及到打开STAAD,复制所有成员的最终力量?谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2017-11-02 06:58:30

日安!

您可以添加一个循环语句来表示“loop”。

示例:

代码语言:javascript
复制
For lend = 0 to 1

For x = 2 To 6
lLoadCase = Sheets("SEISMIC").Range("B" & x).Value
ret = staad.Output.GetMemberEndForces(lMemberNo, lEnd, lLoadCase, dForceArray)

For icount = 0 To 5
Sheets("SEISMIC").Cells(x, 3 + icount).Value = dForceArray(icount)

Next icount
Next x

next lend

尽管您仍然需要编辑代码才能将结果粘贴到不同的单元格中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47069160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档