Скрипты Abaqus: получить точку

Есть ли способ написать сценарий, запрашивающий щелчок в Abaqus CAE? Я знаю функцию getInput, но она работает только для строк.


person janekpel    schedule 02.08.2017    source источник


Ответы (1)


Способ есть, но он не так прост. Вам нужно создать пользовательскую процедуру GUI. Использование простых сценариев ядра не поможет.

Вы должны реализовать пользовательскую процедуру AFXPickStep. Более подробную информацию о самой процедуре можно найти в документации Abaqus: Abaqus GUI Toolkit Reference Guide > All Classes > AFXPickStep.

Вот небольшой пример аналогичной процедуры, которая используется для выбора узлов в Abaqus Viewer. Адаптируйте его под свои нужды.

import abaqusConstants
import abaqusGui


class PickNodesProcedure(abaqusGui.AFXProcedure):

    def __init__(self, owner):
        abaqusGui.AFXProcedure.__init__(self, owner)

        self.cmd = abaqusGui.AFXGuiCommand(
            mode=self,
            method='pick',
            objectName='node_set',
            registerQuery=abaqusGui.FALSE
        )

        self.nodesKw = abaqusGui.AFXObjectKeyword(
            command=self.cmd,
            name='node',
            isRequired=abaqusGui.TRUE
        )

    def activate(self):
        return abaqusGui.AFXProcedure.activate(self)

    def getFirstStep(self):
        self.pickStep = abaqusGui.AFXPickStep(
            owner=self,
            keyword=self.nodesKw,
            prompt="Pick nodes",
            entitiesToPick=abaqusGui.NODES,
            numberToPick=abaqusGui.ONE,
            sequenceStyle=abaqusGui.TUPLE
        )
        return self.pickStep

    def getLoopStep(self):
        return self.pickStep


toolset = abaqusGui.getAFXApp().getAFXMainWindow().getPluginToolset()

toolset.registerGuiMenuButton(
    buttonText='Pick Nodes',
    object=PickNodesProcedure(toolset),
    kernelInitString='import kernel_module',
    applicableModules=abaqusConstants.ALL,
)

Обратите внимание, что сюда не входит сценарий ядра, необходимый для обработки выбранных объектов.

person hgazibara    schedule 02.08.2017
comment
Спасибо. я буду стараться - person janekpel; 03.08.2017