这很好用,但我想把代码分开,这样我就可以创建一个用于打开程序的函数,几个用于它的函数,以及另一个用于关闭的函数。这将使我能够灵活地根据需要进行不同的计算,然后关闭它。在
这是我到目前为止的代码,其中enableloadcases()是一个函数,它在实例创建后立即运行。在import os
import sys
import comtypes.client
import pandas as pd
def openSAP2000(path,filename):
ProgramPath = "C:\Program Files (x86)\Computers and Structures\SAP2000 20\SAP2000.exe"
APIPath = path
ModelPath = APIPath + os.sep + filename
mySapObject = comtypes.client.GetActiveObject("CSI.SAP2000.API.SapObject")
#start SAP2000 application
mySapObject.ApplicationStart()
#create SapModel object
SapModel = mySapObject.SapModel
#initialize model
SapModel.InitializeNewModel()
ret = SapModel.File.OpenFile(ModelPath)
#run model (this will create the analysis model)
ret = SapModel.Analyze.RunAnalysis()
def closeSAP2000():
#ret = mySapObject.ApplicationExit(False)
SapModel = None
mySapObject = None
def enableloadcases(case_id):
'''
The function activates LoadCases for output
'''
ret = SapModel.Results.Setup.SetCaseSelectedForOutput(case_id)
在另一个模块中,我调用函数openSAP2000(),它工作得很好,但是当我调用函数enableloadcases()时,一个错误显示AttributeError: type object ‘SapModel’ has no attribute ‘Results’。在
我相信这必须通过创建一个类和调用内部函数来完成,但是我真的不知道怎么做。在
你能帮帮我吗?在
非常感谢。在