Scripts BASIC para arquivos MD

Você pode estender a funcionalidade fornecida para arquivos de design de máquina acessando Interface de Programação de Aplicativos (API). Esse ambiente de programação permite personalizar e aprimorar os recursos de design de máquina utilizando a linguagem de programação BASIC.

Funcionalidade adicionada utilizando API em várias situações incluem:

Tipicamente, é bastante simples programar um desses scripts. Geralmente, você pode copiar um bloco semelhante de código de outra máquina e modificar ligeiramente para que funcione numa nova máquina. Na verdade, recomenda-se que você utilize a técnica copiar-e-modificar para qualquer função padrão.

O script BASIC associado a um arquivo de design de máquina é completamente gerenciado pelo FeatureCAM. Isto é, não existe um arquivo separado que pode ser visualizado no navegador de arquivos. Você pode acessar somente de dentro do FeatureCAM, da seguinte maneira:

  1. Carregue seu arquivo de design de máquina no FeatureCAM.
  2. Pressione as teclas Alt+F11 no teclado. Uma nova janela é exibida, contendo o script BASIC associado ao arquivo MD atual.

Notas importantes

Como um pequeno exemplo de um script BASIC para um arquivo MD, o código para abrir as garras do fuso principal é exibido abaixo. Anotações após o código descrevem alguns aspectos importantes que você precisa considerar.

Public Sub MachineSim_spindle( Doc As FeatureCAM.MFGDocument, _

ByVal data As Double, _

ByVal Action As FeatureCAM.tagFMMachineSimSpindleActionType, _

ByVal spindle As Long)

Dim Vw As MFGWindow

Dim Err As Long

Dim i As Integer

Dim dOpen As Double

Dim dCls As Double

Set Vw = Doc.ActiveWindow

Err = 0

i = 0

If( Doc.Metric ) Then

dOpen = 4

dCls = -1

Else

dOpen = .25

dCls = -.125

End If

Vw.SimIgnoreClashes(0)

If( Action = eSimAction_Open And spindle = 0 ) Then

Vw.SimIgnoreClashes(1)

While Err = 0 And i<3

Vw.SimCutMove( "main_jaw_1", dOpen, 0, 0 )

Vw.SimCutMove( "main_jaw_2", dOpen, 0, 0 )

Vw.SimCutMove( "main_jaw_3", dOpen, 0, 0 )

Vw.SimPerformCut Err

If( Err = 0 ) Then

Vw.SimUpdateGraphics

End If

i = i + 1

Wend

End If

End Sub

A rotina MachineSim_spindle mostrada é o hook fornecido para obter controle sobre ações do fuso.

Embora você defina sua máquina em unidades métricas ou imperiais, usuários que utilizarem seu arquivo podem executar documentos FeatureCAM em qualquer uma das duas unidades. Então o arquivo MD precisa calcular ou converter todas as unidades para cada sistema.

A enumeração eSimAction_Open indica que a ação gerada é 'Abrir'. Outros tipos incluem eSimAction_Close e eSimAction_Position. Consulte o guia API para uma lista completa

O fuso principal é identificado como 0, o contrafuso como 1. Então esse bloco captura eventos que assinalam a abertura somente do fuso principal.

Desliga verificação de invasão, com a qual você precisa lidar manualmente no script.

Movimento geralmente é realizado num loop para quebrar a movimentação em pequenos incrementos. Nesse caso, as garras são abertas em três passos. Tipicamente, podemos utilizar incrementos muito maiores para itens que provavelmente não colidam. Ao fechar garras, no entanto, você pode utilizar 50 passos para parar exatamente quando as garras tocam o bloco.

Esse é o comando básico para mover um sólido com movimento linear. (Um comando semelhante, SimCutRotate, é utilizado para movimento rotacional). Todos os sólidos filhos declarados no arquivo MD seguem apropriadamente. O nome do sólido é o primeiro argumento e precisa corresponder ao nome de um sólido no arquivo MD. O movimento é com relação ao SCL definido para o sólido, ou ao sistema de coordenadas da mesa caso nenhum SCL seja especificado.

Executar todos os movimentos especificados, e executar verificação de invasão ao mesmo tempo. Note que os movimentos são executados simultaneamente, não sequencialmente.

Verificar se ocorreu um erro. Ás vezes pode ser útil desabilitar a verificação de erro para depuração, mas a condição deve ser restaurada quando o modelo estiver funcionando.

Atualizar a exibição gráfica somente se nenhum erro tiver ocorrido.