Olá Olá LeandroM, tudo bem?
Fiz um teste agora para resetar valores e funcionou muito bem, porém é de uma forma que eu acho sujo, ou seja, forçaremos o MAX a aceitar o que nós queremos.
O processo é o seguinte:
- No Attribute Holder, nós teremos vários Custom Parameters, e entre eles (de preferência o último) o parâmetro que será usado para resetar. Esse parâmetro será do tipo Boolean (UI Type = Check Button) que será um botão.
- Agora devemos associar cada Custom Parameter ao Botão criado.
- Quando associamos dois parâmetros com Wire Parameters, será apresentado a tela de Parameters Wire Dialog.
- Essa tela é dividida em duas partes (em cima a indicação das propriedades que serão ligadas e na parte debaixo a expressão que ditará o comportamento dos valores dos parâmetros.
- Primeiro passo: na parte de cima, para esse recurso funcionar, deveremos habilitar o primeiro botão, indicando que a alteração poderá ser realizada em ambos os lados, onde o lado oposto será afetado também. Pode parecer estranho, mas esse recurso habilitado será necessário.
- Segundo passo: no lado do parâmetro (que não é o botão), deveremos incluir a seguinte expressão:
if (NomeBotao,0,NomeParametro)
- Terceiro passo: no lado do parâmetro do botão, deveremos incluir a seguinte expressão:
if (NomeParametro=0,NomeBotao,NomeBotao)
- É só testar que irá funcionar. O Max irá acusar erro, porque os tipos de informações são diferentes, mas pode apertar em OK e testar que irá funcionar.
Explicação das expressões:
if (NomeBotao,0,NomeParametro)
A função if possui três argumentos, são eles nesta expressão: NomeBotao, 0 e NomeParametro. O if verifica se o primeiro argumento é verdadeido (normalmente com comparações). Nesse caso, o parâmetro NomeBotao é do tipo Boolean, ou seja, já retorna automaticamente o valor de uma comparação (verdadeiro ou falso). Se o valor de NomeBotão for verdadeiro, ou seja, o botão foi pressionado, então o segundo argumento será utilizado como valor do parâmetro, dessa forma o valor 0 será armazenado em NomeParametro (criando o efeito de reset). E se NomeBotao for falso, ou seja, está em seu estado normal (desativado), então o valor atual de NomeParametro será mantido.
Se o seu valor inicial for diferente de 0, basta colocar este valor no lugar do 0.
if (NomeParametro=0,NomeBotao,NomeBotao)
Esta função é o segredo do funcionamento. Se o NomeParametro for 0, significa que o botão continuará desativado, já que ele se encontra na posição de reset. E se o NomeParametro for diferente de 0, o botão também irá continuar no mesmo estado desativado, ou seja, não irá influenciar na alteração dos valores do NomeParametro.
A lógica é um pouco complicada, mas consiste em permitir que o botão nunca fique no estado ativado, ou seja, ela entrará no estado ativado apenas para resetar os valores e logo em seguida ele será desativado, por já ter cumprido o seu papel.
Se alguém não entender estas expressões, poderei fazer explicações de forma diferente e mais detalhada.