Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Normteile erstellen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Normteile erstellen (1218 mal gelesen)
lumb
Mitglied
Informatiker


Sehen Sie sich das Profil von lumb an!   Senden Sie eine Private Message an lumb  Schreiben Sie einen Gästebucheintrag für lumb

Beiträge: 60
Registriert: 17.02.2011

Inventor2015

erstellt am: 11. Mrz. 2014 14:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,
ich würde gerne in Inv2014 die Normteilbibliothek (IDCL) per VBA ansprechen und Normteile in eine IAM (in der der VBA Code ist) erstellen.

Kann mir jemand sagen ob das möglich ist?

Danke

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 11. Mrz. 2014 18:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für lumb 10 Unities + Antwort hilfreich

Hallo

Ich poste mal das Beispiel aus der Inventorhilfe:

Code:
Public Sub PlaceFromContentCenter()
    Dim asmDoc As AssemblyDocument
    Set asmDoc = ThisApplication.Documents.Add(kAssemblyDocumentObject)
   
    Dim asmDef As AssemblyComponentDefinition
    Set asmDef = asmDoc.ComponentDefinition
   
    ' Get the node in the content browser based on the names of the nodes in the hierarchy.
    Dim hexHeadNode As ContentTreeViewNode
    Set hexHeadNode = ThisApplication.ContentCenter.TreeViewTopNode.ChildNodes.Item("Fasteners").ChildNodes.Item("Bolts").ChildNodes.Item("Hex Head")
   
    ' Find a specific family.  In this case it's using the display name, but any family
    ' characteristic could be searched for.
    Dim family As ContentFamily
    Dim checkFamily As ContentFamily
    For Each checkFamily In hexHeadNode.Families
        If checkFamily.DisplayName = "DIN EN 24016" Then
            Set family = checkFamily
            Exit For
        End If
    Next
   
    Dim i As Integer
    If Not family Is Nothing Then
        ' Place one instance of each member.
        Dim offset As Double
        offset = 0
        Dim row As ContentTableRow
        For Each row In family.TableRows
            ' Create the member (part file) from the table.
            Dim failureReason As MemberManagerErrorsEnum
            Dim failureMessage As String
            Dim memberFilename As String
            memberFilename = family.CreateMember(row, failureReason, failureMessage, kRefreshOutOfDateParts)
           
            ' Place the part into the assembly.
            Dim transMatrix As matrix
            Set transMatrix = ThisApplication.TransientGeometry.CreateMatrix
            transMatrix.Cell(2, 4) = offset
            Dim Occ As ComponentOccurrence
            Set Occ = asmDef.Occurrences.Add(memberFilename, transMatrix)
           
            ' Compute the position for the next placement based on the size of the part just placed.
            Dim minY As Double
            Dim maxY As Double
            minY = Occ.RangeBox.minPoint.y
            maxY = Occ.RangeBox.maxPoint.y
            offset = offset + ((maxY - minY) * 1.1)
        Next
    End If
End Sub

------------------
MfG
Ralf

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

lumb
Mitglied
Informatiker


Sehen Sie sich das Profil von lumb an!   Senden Sie eine Private Message an lumb  Schreiben Sie einen Gästebucheintrag für lumb

Beiträge: 60
Registriert: 17.02.2011

Inventor2015

erstellt am: 14. Mrz. 2014 12:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

Danke, das klappt soweit schonmal. Nur muss ich den "Node" kennen, also den "Ordner" der die Familien enthält. Dann gehe ich alle Familientabellen jeder Familie durch und gut.
Was ich aber nicht hinbekommen ist, das jeder "Node" drankommt, da ich ja die entgültige Tiefe nicht kenne. Habe da was von Rekursion gelesen aber leider verstehe ich das nicht.

Kann mir da nochmal jemand helfen?

Danke

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 16. Mrz. 2014 07:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für lumb 10 Unities + Antwort hilfreich

Moin

Ein einfaches Beispiel einer möglichen Rekursion. Wenn du im VBA-Editor das Direktfenster mit einblendest (Menü Ansicht), dann siehst du die Namen jedes Nodes.

Code:
Public Sub PlaceFromContentCenter()
    Dim oTopNode As ContentTreeViewNode
    Set oTopNode = ThisApplication.ContentCenter.TreeViewTopNode
 
    Dim oNode As ContentTreeViewNode
    For Each oNode In oTopNode.ChildNodes
        If oNode.ChildNodes.Count > 0 Then
            Call SubNode(oNode)
        End If
        Debug.Print oNode.DisplayName
    Next

End Sub

Public Sub SubNode(oNode As ContentTreeViewNode)
    Dim oSubNode As ContentTreeViewNode
    For Each oSubNode In oNode.ChildNodes
        If oSubNode.ChildNodes.Count > 0 Then
            Call SubNode(oSubNode)
        End If
        Debug.Print oSubNode.DisplayName
    Next
End Sub


------------------
MfG
Ralf

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

lumb
Mitglied
Informatiker


Sehen Sie sich das Profil von lumb an!   Senden Sie eine Private Message an lumb  Schreiben Sie einen Gästebucheintrag für lumb

Beiträge: 60
Registriert: 17.02.2011

Inventor2015

erstellt am: 17. Mrz. 2014 10:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

SUPER. Danke, das funktioniert gut. Habe bei meinen Versuchen das "Call" vergessen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz