Senhores,
Todos sabem que uma das grandes vantagens de se usar um software 3D na mecânica é a tal da Análise de Interferência, para quando queremos saber se alguma peça esta ocupando o espaço da outra, se irão colidir em um determinado ponto e assim por diante.
Bom, todos os softwares tem essa análise, porém, todos requer um grau de conhecimento no software e leva algum tempo, selecionando os objetos a serem analisados e por ai vai.
Pesquisando nos Fóruns gringos achei um código em iLogic (Ambiente de programação do Autodesk Inventor), que é muito útil e simples para se executar, e resolvi compartilhar com vocês.
É bem simples, primeiro criamos a regra no Ambiente de Montagem.
Rodamos a Regra no Browser, que eu chamei de Análise de Interferência.
Logo que rodar a regra, ele exibirá quanto elementos estão com interferência.
Em seguida, após clicar no OK, ele irá detalhar as interferência, com as informações dos nomes das peças e suas respectivas cores, e o Volume em cm³ que está sobre posto de uma peça a outra.
Bem simples, certo?
Espero que tenha ajudado vocês, esse tipo de código pode ser implantado dentro de uma outra regra (Rotina) da sua Automação.
Segue o Código:
Sub Main
Dim oAsmDoc As AssemblyDocument
oAsmDoc =
ThisApplication.ActiveDocument
Dim oAsmCompDef As AssemblyComponentDefinition
oAsmCompDef = oAsmDoc.ComponentDefinition
' Add each occurrence in the assembly to
the object collection.
Dim oCheckSet As ObjectCollection
oCheckSet= ThisApplication.TransientObjects.CreateObjectCollection
Dim oOcc As ComponentOccurrence
For Each oOcc In oAsmCompDef.Occurrences
oCheckSet.Add (oOcc)
Next
' Call the AnalyzeInterference method,
passing in a single
' collection. This will cause it to
compare everything against
' everything else.
Dim oResults As InterferenceResults
oResults =
oAsmCompDef.AnalyzeInterference(oCheckSet)
' Display the results of the
interference.
MessageBox.Show(oResults.Count & " Interferences found ","iLogic")
Dim oResult As InterferenceResult
Dim iCount As Integer
iCount =
0
For Each oResult In oResults
iCount =
iCount + 1
Component.Color(FullOccurrenceName(oResult.OccurrenceOne)) =
"Yellow"
Component.Color(FullOccurrenceName(oResult.OccurrenceTwo)) =
"Magenta"
MessageBox.Show(" " & FullOccurrenceName(oResult.OccurrenceOne) & "
(colored yellow)" _
& vbLf & "interferes
with " _
& vbLf & "
" & FullOccurrenceName(oResult.OccurrenceTwo) & "
(colored magenta)" _
& vbLf & "" _
& vbLf & "Volume:
" & Round(oResult.Volume,5) & "
cm^3", _
" Interference "& iCount)
Component.Color(FullOccurrenceName(oResult.OccurrenceOne)) =
"As Material"
Component.Color(FullOccurrenceName(oResult.OccurrenceTwo)) =
"As Material"
Next
End Sub
' Used to display the full path of an
occurrence. This is the path of the
' occurrence within the assembly
structure.
Private Function FullOccurrenceName(Occ As ComponentOccurrence) As String
Dim i As Integer
For i = 1 To Occ.OccurrencePath.Count
If i = 1 Then
FullOccurrenceName = Occ.OccurrencePath.Item(i).Name
Else
FullOccurrenceName = FullOccurrenceName & "\" & Occ.OccurrencePath.Item(i).Name
End If
Next
End Function
Att,
Paulo Ito
0 comentários :
Postar um comentário