canvasObjects;нашел PartInstance, ожидающий кортеж в Abaqus / CAE - PullRequest
0 голосов
/ 06 мая 2019

Я разрабатываю плагин Abaqus / CAE, в этом плагине я использую набор инструментов gui, и у меня есть кнопка, которая использует PickStep, при нажатии на кнопку я могу выбрать PartInstance в области просмотра .

Затем я хочу экспортировать выбранный PartInstance в файл .obj, но когда я пытаюсь это сделать, abaqus выдает ошибку.

Это пример моей кнопки выбора:

        # PICK BUTTON 1
        pickHf = FXHorizontalFrame(p=col2, opts=0, x=0, y=0, w=0, h=0, pl=0, pr=0, pt=0, pb=0, hs=DEFAULT_SPACING,
                                   vs=DEFAULT_SPACING)
        # Note: Set the selector to indicate that this widget should not be
        # colored differently from its parent when the 'Color layout managers'
        # button is checked in the RSG Dialog Builder dialog.
        pickHf.setSelector(99)
        label1 = FXLabel(p=pickHf, text='' + ' (None)', ic=None, opts=LAYOUT_CENTER_Y | JUSTIFY_LEFT)

        pickHandler1 = DBPickHandler(form, form.uper, 'Select a 3D, discrete and dependent meshed instance', INSTANCES,
                                     1, label1)
        icon = afxGetIcon('select', AFX_ICON_SMALL)
        FXButton(p=pickHf, text='\tPick Items in Viewport', ic=icon, tgt=pickHandler1, sel=AFXMode.ID_ACTIVATE,
                 opts=BUTTON_NORMAL | LAYOUT_CENTER_Y, x=0, y=0, w=0, h=0, pl=2, pr=2, pt=1, pb=1)

Я сохраняю значение в ObjectKeyword:

self.uper = AFXObjectKeyword(self.cmd, 'uper', True, pickedDefault)

Вот так я экспортирую PartInstance в .obj:

    print 'Uper - ' + uper[0].name
    f.write('Uper - '+uper[0].name+'\n')
    session.writeOBJFile(fileName='C:/temp/Uper.obj', canvasObjects=(uper[0]))

Это отображает и ошибка, и я также попробовал это:

print 'Fixed - ' + fixed[0].name
    f.write(fixed[0].name+'\n')
    fixedobj = open('Fixed.obj', 'w')
    pickle.dump(fixed[0], fixedobj)
    fixedobj.close()

Но это тоже не работает.

Я получаю эту ошибку:
canvasObjects; найдено PartInstance, ожидающий кортеж

1 Ответ

1 голос
/ 07 мая 2019

Этот ответ поможет вам. При вызове session.writeOBJFile вы пытаетесь создать кортеж из одного элемента для аргумента canvasObjects. Простое завершение предмета в скобках не даст этого. Вам нужно добавить запятую, чтобы сделать ее кортежем:

session.writeOBJFile(fileName='C:/temp/Uper.obj', canvasObjects=(uper[0],))

Документация Abaqus говорит об этом canvasObjects:

canvasObjects

Последовательность объектов холста для экспорта.

Я не уверен, считается ли PartInstance объектом холста или нет, но у вас могут возникнуть проблемы даже после исправления аргумента в кортеж. Если это так, убедитесь, что элементы кортежа являются правильными объектами canvas.

...