我的电脑上打开了 ETABS 2015 上的项目。我想通过VBA代码自动对其进行一些更改和处理,但是我找到的所有示例代码都是这样的:
Public Sub Example()
Dim SapModel As cSapModel
Dim EtabsObject As cOAPI
Dim FileName as String
Dim ret As Integer = -1
'create ETABS object
EtabsObject = CreateObject("CSI.ETABS.API.ETABSObject")
'start ETABS application
ret = EtabsObject.ApplicationStart()
'create SapModel object
SapModel = EtabsObject.SapModel
'initialize model
ret = SapModel.InitializeNewModel()
'open an existing file - If no file exists, run the Save example first.
FileName = "c:\CSI_API_temp\example.edb"
ret = SapModel.File.OpenFile(FileName)
此代码只是在我的电脑中打开一个新的 ETABS。但我的 ETABS 项目已经在运行,我想连接到它,但我不知道如何连接! 请帮助我。
您的sample代码基本上通常是打开 ETABS ITSELF 并初始化新模型所需的代码,
ETABSObject = CreateObject("CSI.ETABS.API.ETABSObject")
随后调用 ApplicationStart
方法是实现此目的的直接方法。
如果您参考安装目的地中的 ETABS API 文档文件(例如“C:\Program Files\Computers and Structures\ETABS 2015\CSi API ETABS 2015.chm”),请在“发行说明>附加到手动启动的ETABS 的实例”,或者如果您从链接中看到相同的部分 http://docs.csiamerica.com/help-files/etabs-api-2015/html/3ceb8889-9028-4de3-9c87-69a12055ade7.htm 你会发现代码(在 VB.Net 中)接近你的目标,但它不适用于 vba,所以,你要做的就是这个
'The ret variable, just for method invocation convenience
Dim ret As Integer
'Create an instance of the currently opened Program
Dim myETABSObject As ETABS2015.cOAPI
Set myETABSObject = GetObject(, "CSI.ETABS.API.ETABSObject")
'Create an instance to the model
Dim myETABSModel As ETABS2015.cSapModel
Set myETABSModel = myETABSObject.SapModel
'Now, after the "reference instances" are obtained
'Initialize the model (using the model's instance of course)
ret = myETABSModel.InitializeNewModel() 'default units in kip_in_F
'Set the model templete, which is "Blank"
ret = myETABSModel.File.NewBlank()
您可以正常继续编码。
注意:1- 如果未打开 ETABS,
GetObject(CSI.ETABS.API.ETABSObject)
方法将引发错误。
2- 即使 ETABS 没有打开并且你想从 Windows shell 打开它(比如使用命令提示符打开程序而不是双击它们各自的图标),你仍然可以使用
GetObject
,但这当然需要一些错误处理和“Windows 脚本宿主对象模型”的使用。
3- 文档中的示例(在记录的方法和属性下)在启动输入数据方面可能并不完整,在这种情况下,它们只是为了给人留下如何使用各自方法和属性的印象。
下面的代码按照您的要求进行。它使用 VBA 连接到当前运行的 ETABS 实例。请注意,如果您正在运行 ETABS 的多个实例,它可能无法附加到您想要的实例。
您需要将对“ETABSv1.tlb”的引用添加到您的 VBA 项目中。如果您使用的是 VBA Editor for Excel,请在“工具”菜单上选择“引用”,然后单击“浏览”,然后添加 C:\Program Files\Computers and Structures\ETABS 19\ETABSv1.tlb
Sub Main()
'create API helper object
Dim myHelper As ETABSv1.cHelper
Set myHelper = New ETABSv1.Helper
'dimension the ETABS Object as cOAPI type
Dim myETABSObject As ETABSv1.cOAPI
Set myETABSObject = Nothing
'attach to a running instance of ETABS
'get the active ETABS object
Set myETABSObject = myHelper.GetObject("CSI.ETABS.API.ETABSObject")
'get a reference to cSapModel to access all API classes and functions
Dim mySapModel As ETABSv1.cSapModel
Set mySapModel = myETABSObject.SapModel
' DO YOUR WORK BELOW.
MsgBox "Do your work here."
' DO YOUR WORK ABOVE.
'clean up variables
Set mySapModel = Nothing
Set myETABSObject = Nothing
Exit Sub
ErrHandler:
MsgBox "Cannot run API script: " & Err.Description
End Sub
ETABS 附带 API 文档,您可以在安装文件夹中找到该文档。在我的机器上,它位于:C:\Program Files\Computers and Structures\ETABS 19\CSA API ETABS v1.chm
我无法根据 etabs v21 中的截面属性选择框架和墙壁,然后删除选定的框架和墙壁。谁能向我建议使用 Excel VBA 代码来完成此操作的代码