Sap2000 and python

Просмотр 1 сообщения - с 1 по 1 (всего 1)
  • Автор
    Сообщения
  • #9721 Score: 0
    David
    Участник

    Коллеги, кто занимается программированием под 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')
Просмотр 1 сообщения - с 1 по 1 (всего 1)
  • Для ответа в этой теме необходимо авторизоваться.