Você está na página 1de 8

62

Tutoriais
Autodesk Inventor
Ano 2007 Versão 2008 Página 1/8

API 

A Macro seguinte tem como objectivo criar programação CNC para os furos de
uma Placa.

Faça clique em e abra o modelo C:\Curso de INVENTOR\Modelo_API_3.ipt.

No Autodesk Inventor faça clique no menu Tools ► Macro ► Visual Basic


Editor;

Em ApplicationProject, faça clique com o botão direito e seleccione Insert ►


Module, para definir uma caixa de diálogo para a definição do cubo. As macros
devem ser definidas em ApplicationProject para ficarem disponíveis em
qualquer documento do Autodesk Inventor.

Américo Costa, Eng. americocosta@net.novis.pt


62
Tutoriais
Autodesk Inventor
Ano 2007 Versão 2008 Página 2/8

Digite o código seguinte:

Sub Furos()

' Define a variável Documento do tipo documento

Dim documento As PartDocument

' Atribuir a varável docuemnto ao modelo activo

Set documento = ThisApplication.ActiveDocument

' Definir a variável contar do tipo Inteiro

Dim contar As Integer

' Definir a variável Furo do tipo HoleFeature

Dim furo As HoleFeature

'Conta o número de furos do modelo

contar = documento.ComponentDefinition.Features.HoleFeatures.Count

' Definir as variávels para controlo dimensional dos furos liso e roscados

Dim diametro As Double

Dim profundidade As Double

Dim macho As Double

' Definir uma variável que controla o número de pontos de centro de furos

Dim centros As SketchPoint

' Definir uma variável que controla as dimensões do furo roscado

Dim roscas As HoleTapInfo

Américo Costa, Eng. americocosta@net.novis.pt


62
Tutoriais
Autodesk Inventor
Ano 2007 Versão 2008 Página 3/8

' Variáveis para controlar o inicio e fim dos furos

Dim inicio_z As Double

Dim fim_z As Double

Dim linha As String

' Abrir o ficheiro cnc.txt para escrever o programa CNC

Dim ficheiro As String

ficheiro = "c:\temp\cnc.txt"

Open ficheiro For Output As #1

' Ciclo para percorrer todas as features do modelo

For i = 1 To contar

' Atribui à variável forma cada Feature sequencial do modelo

Set furo = documento.ComponentDefinition.Features.HoleFeatures.Item(i)

' Se o furo for não roscado, na variável Diametro é colocado o valor do diâmetro do
furo

If Not furo.Tapped Then

' Verificar o diametro do furo

diametro = furo.HoleDiameter.Value

' Controlar o número de furos executados em simultâneo na mesma feature

' Verificar o inicio em Z do furo e o fim em Z do furo

inicio_z = furo.RangeBox.MaxPoint.Z

fim_z = furo.RangeBox.MinPoint.Z

k = furo.HoleCenterPoints.Count

For j = 1 To k

Américo Costa, Eng. americocosta@net.novis.pt


62
Tutoriais
Autodesk Inventor
Ano 2007 Versão 2008 Página 4/8

Set centros = furo.HoleCenterPoints.Item(j)

Debug.Print "X="; centros.Geometry.x * 10

Debug.Print "Y="; centros.Geometry.Y * 10

Debug.Print "Z Inferior="; fim_z * 10

Debug.Print "Z Superior="; inicio_z * 10

Debug.Print "Diametro="; diametro * 10

' Para executar programação em CNC no comando HEIDENHAIN 426 B

Print #1, "CYCL DEF 1.0 FURAR EM PROF."

Print #1, "CYCL DEF 1.1 DIST 2"

linha = "CYCL DEF 1.2 PROF" + Str(fim_z * 10)

Print #1, linha

Print #1, "CYCL DEF 1.3 INCR. 5"

Print #1, "CYCL; DEF; 1.4; TEMPO";

Print #1, "CYCL DEF 1.5 F 80"

Next j

End If

If furo.Tapped Then

Set roscas = furo.TapInfo

macho = roscas.NominalSize

profundidade = roscas.ThreadDepth.Value * 10

inicio_z = furo.RangeBox.MaxPoint.Z

fim_z = furo.RangeBox.MinPoint.Z

k = furo.HoleCenterPoints.Count

Américo Costa, Eng. americocosta@net.novis.pt


62
Tutoriais
Autodesk Inventor
Ano 2007 Versão 2008 Página 5/8

For j = 1 To k

Set centros = furo.HoleCenterPoints.Item(j)

Debug.Print "X="; centros.Geometry.x * 10

Debug.Print "Y="; centros.Geometry.Y * 10

Debug.Print "Z Inferior="; fim_z * 10

Debug.Print "Z Superior="; inicio_z * 10

Debug.Print "Macho="; macho

Next j

End If

Next i

Close #1

End Sub

Américo Costa, Eng. americocosta@net.novis.pt


62
Tutoriais
Autodesk Inventor
Ano 2007 Versão 2008 Página 6/8

Código para pesquisar Pattern de furos:

Para testar esta macro faça clique em e abra o modelo C:\Curso de


INVENTOR\Modelo_API_4.ipt.

Sub Furos_Pattern()

' Define a variável Documento do tipo documento

Dim documento As PartDocument

' Atribuir a varável docuemnto ao modelo activo

Set documento = ThisApplication.ActiveDocument

' Definir a variável contar_furos e contar_pattern do tipo Inteiro

Dim contar_furos As Integer

Dim contar_pattern As Integer

Dim contar As Integer

Dim aresta As Edge

Dim eixo As WorkAxis

' Definir a variável Furo do tipo HoleFeature

Dim furo As HoleFeature

Dim pattern As RectangularPatternFeature

Dim elemento As PartFeature

' Conta o número de Furos no modelo

contar_furos = documento.ComponentDefinition.Features.HoleFeatures.Count

' Conta o número de Patterns no modelo

contar_pattern = documento.ComponentDefinition.Features.RectangularPatternFeatures.Count

' Ciclos para pesquisar dentro dos Patterns os furos do modelo

For i = 1 To contar_furos

Américo Costa, Eng. americocosta@net.novis.pt


62
Tutoriais
Autodesk Inventor
Ano 2007 Versão 2008 Página 7/8

' Atribui à variàvel furo o primeiro furo do modelo

Set furo = documento.ComponentDefinition.Features.HoleFeatures.Item(i)

For j = 1 To contar_pattern

' Atribui à variàvel pattern o primeiro pattern do modelo

Set pattern = documento.ComponentDefinition.Features.RectangularPatternFeatures.Item(j)

' Lista o numero de elementos do Pattern

Debug.Print pattern.ParentFeatures.Count

' Lista o nome dos elemntos do Pattern

Set elemento = pattern.ParentFeatures.Item(1)

Debug.Print elemento.Name

' Se o nome do furo corresponde ao encontrado no Pattern

If furo.Name = elemento.Name Then

' Pesquisar as direcções do pattern

Debug.Print pattern.XDirectionEntity.Type

Debug.Print pattern.YDirectionEntity.Type

' Condição para verificar se a direcção é definida por um eixo

If pattern.XDirectionEntity.Type = "83891200" Then

Set eixo = pattern.XDirectionEntity

' Define um ponto e direcção

Debug.Print eixo.Line.RootPoint.x

Debug.Print eixo.Line.RootPoint.Y

Debug.Print eixo.Line.RootPoint.Z

Debug.Print eixo.Line.Direction.x

Debug.Print eixo.Line.Direction.Y

Américo Costa, Eng. americocosta@net.novis.pt


62
Tutoriais
Autodesk Inventor
Ano 2007 Versão 2008 Página 8/8

Debug.Print eixo.Line.Direction.Z

End If

' Condição para verificar se a direcção é definida por uma aresta

If pattern.XDirectionEntity.Type = "67120176" Then

Set aresta = pattern.XDirectionEntity

' Define dois pontos

Debug.Print aresta.Evaluator.RangeBox.MaxPoint.x

Debug.Print aresta.Evaluator.RangeBox.MaxPoint.Y

Debug.Print aresta.Evaluator.RangeBox.MaxPoint.Z

Debug.Print aresta.Evaluator.RangeBox.MinPoint.x

Debug.Print aresta.Evaluator.RangeBox.MinPoint.Y

Debug.Print aresta.Evaluator.RangeBox.MinPoint.Z

End If

' Número de elementos segundo a primeira direcção

Debug.Print pattern.XCount

' Distância entre elementos segundo XX

Debug.Print pattern.XSpacing

End If

Next j

Américo Costa, Eng. americocosta@net.novis.pt

Você também pode gostar