Коллеги, кто занимается программированием под SAP. Возник вопрос, кому-то по справке удавалось выполнить копирование существующих объектов методом ReplicateLinear
У данного метода очень странное описание, возможно моего английского недостаточно для понимания происходящего.
Я так понимаю, что сначала мы выделяем все объекты методом:
SapModel.SelectObj.All
Затем, мы выделенные объекты копируем. Не понятно, зачем надо указывать в методе количество выделенных объектов “Number”
Так же не понятно почему objectType должен быть массивом
Параметр Obkjectname вверху справки написано, что это string, а уже ниже указано что это должен быть array , вообще для чего нужен параметр имен ,если все объекты выделены заранее.
import comtypes.client
#create Sap2000 object
SapObject = comtypes.client.GetActiveObject("CSI.SAP2000.API.SapObject")
#create SapModel object
SapModel = SapObject.SapModel
#initialize model
kN_m_C = 6
SapModel.InitializeNewModel(kN_m_C)
#create new blank model
SapModel.File.NewBlank()
ret = -1
#create points
ret = SapObject.SapModel.PointObj.AddCartesian(0, 0, 0, None)
print (ret)
p1 = ret[0]
ret = SapObject.SapModel.PointObj.AddCartesian(6, 0, 0, None)
p2 = ret[0]
ret = SapObject.SapModel.PointObj.AddCartesian(0, 0, 3, None)
p3 = ret[0]
ret = SapObject.SapModel.PointObj.AddCartesian(6, 0, 3, None)
p4 = ret[0]
#create frames
ret = SapModel.FrameObj.AddByPoint(p1, p3, None)
print (ret)
f1 = ret[0]
ret = SapModel.FrameObj.AddByPoint(p2, p4, None)
f2 = ret[0]
print (f2)
ret = SapModel.FrameObj.AddByPoint(p3, p4, None)
f3 = ret[0]
print (f3)
NumberObjects=2
ObjectType=[1,2]
ObjectName=""
ret = SapModel.SelectObj.All
print ("f3=",f3)
#ret=SapObject.SapModel.EditGeneral.ReplicateLinear(0,1,0,1,2,'13', [2],False)
#print(help(SapModel.EditGeneral))
ret=SapModel.EditGeneral.ReplicateLinear(0, 2, 0, 2, NumberObjects, ObjectName, ObjectType,False)
print (ret)
#set restraints
restr = True, True, True, True, True, True
SapObject.SapModel.PointObj.SetRestraint(p1, restr)
SapObject.SapModel.PointObj.SetRestraint(p2, restr)
#set loads
SapObject.SapModel.FrameObj.SetLoadDistributed(f3, 'DEAD', 1, 10, 0.0, 1.0, 15.0, 6.0)
SapModel.View.RefreshView()
print('ok')