Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Mit Abhängigkeiten kopieren

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
Autor Thema:   Mit Abhängigkeiten kopieren (815 mal gelesen)
KAME-WJ
Mitglied
Maschinenbau-Ingenieur


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

Beiträge: 13
Registriert: 22.09.2014

HP Workstation Z420
Intel® Xeon® CPU X3450 @ 2.67 GHz
4x4GB DDR3 SD RAM (16GB)
320 GB NVME
500 GB HDD SATA
NVIDIA® Quadro® 4000, 2GB
Win10x64
Invetor 2017 x64

erstellt am: 30. Sep. 2016 15:39    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 Programmier-Gemeinde,

ich arbeite gerade an einem Macro welches ein(e) markierte(s) Bauteil/Baugruppe erneut in die Baugruppe einfügt und diese mit den selben Abhängigkeiten versieht. (Das neu eingefügte Bauteil/Baugruppe befindet sich somit am selben Platz wie das zuvor markierte und die selben Abhängigkeiten aufweist).

Nun bin ich aber schon eine Zeit lang am tüfteln wie ich dies realisieren könnte, da ich bis jetzt noch nicht herausgefunden habe, wie ich die in der Abhängigkeit referenzierte Fläche/Ebene/Punkt (genannt EntityOne/EntityTwo) des "alten" Bauteils/Baugruppe mit dem der kopierten ersetzen kann.

Ich bin soweit, dass das markierte Bauteil/Baugruppe in die Baugruppe neu eingefügt wird, und dann sollen eben noch die selben Abhängigkeiten wie bei der markierten vergeben werden.

Hintergedanke ist dabei, dass man bei unregelmäßig angeordnetetn Bauteilen/Baugruppen nur mehr den Wert der gewünschten Abhängigkeit ändern muss.

Weiß jemand ob es so etwas in der richtung schon gibt oder hat jemand eine Idee wie man das programmieren kann?

Code:

Public Sub CopyInOrigin()


    Dim oDoc As Document
    Set oDoc = ThisApplication.ActiveDocument
    Dim oSelectSet As SelectSet
    Set oSelectSet = oDoc.SelectSet

    If oDoc.DocumentType <> kAssemblyDocumentObject Then
        MsgBox "Dieses Makro funktioniert nur in einer Baugruppe!", vbCritical
        End
    End If

    If oSelectSet.Count = 0 Then
        MsgBox "Keine Komponenten ausgewählt", vbExclamation + vbOKOnly + vbMsgBoxSetForeground, "Achtung"
        Exit Sub
    End If

    Dim oItem As Variant
    Set oSelectSet = ThisApplication.ActiveDocument.SelectSet

    Dim oAsmCompDef As AssemblyComponentDefinition
    Set oAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition

    Dim oTG As TransientGeometry
    Set oTG = ThisApplication.TransientGeometry

    Dim oMatrix As Matrix
    Set oMatrix = oTG.CreateMatrix

    Dim FullDocName As String

    Dim oOcc As ComponentOccurrence

    For Each oItem In oSelectSet

        FullDocName = oItem.ReferencedDocumentDescriptor.FullDocumentName

        Set oOcc = oAsmCompDef.Occurrences.Add(FullDocName, oMatrix)

        Dim oEntity As Object
        Dim oConstraint As Variant

        For Each oConstraint In oItem.Constraints

            Dim oInsert As InsertConstraint
            Dim oEntityOne As Object
            Set oEntityOne = oConstraint.EntityOne
            Dim oEntityTwo As Object
            Set oEntityTwo = oConstraint.EntityTwo

            Select Case oConstraint.Type

                Case kAngleConstraintObject

'                    ...

                Case kFlushConstraintObject

                    Call oAssConstraints.AddFlushConstraint(oEntity, oEntityTwo, oConstraint.Offset.Expression)

                Case kInsertConstraintObject

'                  ....

                Case ksymentryconstraintobject

'                  ....

            End Select

'          ...hier sollte es dann iwie weitergehen ;)

        Next

    Next

End Sub


Also Leute, dann lasst uns mal Brainstormen 

Greets,
Joscha

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

KraBBy
Mitglied
Maschinenbau-Ingenieur


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

Beiträge: 194
Registriert: 19.09.2007

Inventor Professional 2016
Win7

erstellt am: 01. Aug. 2018 08:35    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 KAME-WJ 10 Unities + Antwort hilfreich

ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist!


Hi Joscha,

gibts zu diesem Thema was neues? Bist Du zwischenzeitlich weiter gekommen?
Ein derartiges Makro hab ich mir auch schon eine Weile gewünscht / vorgenommen...

------------------
Gruß KraBBy

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

KAME-WJ
Mitglied
Maschinenbau-Ingenieur


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

Beiträge: 13
Registriert: 22.09.2014

HP Workstation Z420
Intel® Xeon® CPU X3450 @ 2.67 GHz
4x4GB DDR3 SD RAM (16GB)
320 GB NVME
500 GB HDD SATA
NVIDIA® Quadro® 4000, 2GB
Win10x64
Invetor 2017 x64

erstellt am: 01. Aug. 2018 08:42    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

Dieses Makro habe ich mittlerweile schon total vergessen. 
Nein, bin leider nicht weiter gekommen.
Jetzt frage ich mich für was ich das Makro damals wohl benötigt habe...  

Grüße,
J

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

Tacker
Mitglied
TZ, Tech. MB, Softwareentwickler


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

Beiträge: 175
Registriert: 23.09.2010

IV 2017 Pro
i7-7700K 4x4.2GHz
32GB DDR4-2400
GTX 1060 6GB DDR5

erstellt am: 01. Aug. 2018 16:56    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 KAME-WJ 10 Unities + Antwort hilfreich

Moin 

Abhängigkeiten mit dem Makro erstellen ist relativ einfach.
Die Schwierigkeit ist eher die benötigten Geometrien dafür zu finden.
Bei meinen Baugruppenkonfiguratoren artet das ein bisschen aus. Hab in VB.NET ca 1200 Zeilen nur um Geometrien zu finden.
Wenn sicher ist, dass es die absolut identische Komponente ist, kann man nach dem Transientkey zur Identifikation gehen, das wäre hier wahrscheinlich der Fall.
Dann musst nur durch den entsprechenden Container (Edge, Face...) iterieren und deinen Transientkey wiederfinden, schon hast deine Geometrien und kannst die Abhängigkeit erstellen.
→ Achtung, Geometrien befinden sich immer im Bauteil, nicht in der Baugruppe

Sollte das nicht der Fall sein, dann wirds spaßiger. Dann musst nach Geometrischen Eigenschaften suchen und im Dümmsten Fall sogar abwägen was die richtige Geometrie ist. Deswegen ist das auch etwas umfangreich bei mir.

Gruß

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

KraBBy
Mitglied
Maschinenbau-Ingenieur


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

Beiträge: 194
Registriert: 19.09.2007

Inventor Professional 2016
Win7

erstellt am: 13. Aug. 2018 10:00    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 KAME-WJ 10 Unities + Antwort hilfreich

Jetzt stehe ich wohl auch vor dem Problem, die richtige Geometrie zu finden. Gut, dass Tacker schon alle derartigen Probleme gelöst hat 

Nun etwas ernsthafter. Ich versuche es zunächst textlich zu beschreiben (ohne Code, der vmtl. mehr verwirrt als hilft) anhand dieser beispielhaften Struktur:

Assy.iam
- UnterBgr.iam:1
-- T1.ipt:1
-- T1.ipt:2

Makro läuft in einer Baugruppe Assy.iam. Diese enthält eine Unterbaugruppe, in der sich zwei Instanzen des gleichen Bauteils befinden. Die UnterBgr. ist mit Abhängigkeiten versehen, die sie platzieren und ausrichten. Z.b. ein "Fluchtend1" zw. xy-Ebene von Assy.iam und der xy-Ebene von T1.ipt:1.

Ich möchte also die UnterBgr.iam nochmals in die Assy.iam einfügen (klappt) und die Abhängigkeit "Fluchtend2" erstellen, analog zu "Fluchtend1". Da sehe ich noch keinen Weg, um das richtige Element zu finden.

Ich habe die Abhängigkeit "Fluchtend1". Diese liefert mir die Properties .AffectedOccurrenceOne / .AffectedOccurrenceTwo und .EntityOne / .EntityTwo. Ich weiß auch, ob ich ...One oder ...Two ersetzen will. Die Entity wäre im Bsp. ein WorkPlaneProxy-Object, ua. mit der Eigenschaft .Nativeobject das die xy-Ebene der T1.ipt liefert.
Mein weiterer Ablauf (der für Einzelteile auch funktioniert) ist: von der Entity (Proxy-Object) über das .NativeObject wieder zu einem Proxy-Object zu kommen, jedoch von der neu eingefügten Occurence (oOccNeu.CreateGeometryProxy(...)). Das schlägt aber im Beispiel (eben bei Unterbaugruppen) fehl. Für mein Verständnis deshalb, weil IV nicht wissen kann, von welcher T1-Instanz die xy-Ebene gemeint ist. Liege ich damit schon mal richtig?

Ich bräuchte also noch die Information, zu welcher Instanz von T1 die Ebene gehört. Damit könnte ich ein Proxy-Object bezogen auf die UnterBgr. erzeugen und damit wiederum ein Proxy eine Ebene höher.
Oder gibt es direkt Zugriff auf das Proxy-Object in der UnterBgr.?

Das Vorgehen sollte dann natürlich auch für weiter verschachtelte Unterbaugruppen funktionieren.

------------------
Gruß KraBBy

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

KAME-WJ
Mitglied
Maschinenbau-Ingenieur


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

Beiträge: 13
Registriert: 22.09.2014

HP Workstation Z420
Intel® Xeon® CPU X3450 @ 2.67 GHz
4x4GB DDR3 SD RAM (16GB)
320 GB NVME
500 GB HDD SATA
NVIDIA® Quadro® 4000, 2GB
Win10x64
Invetor 2017 x64

erstellt am: 12. Jun. 2019 12:51    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 KraBBy,

sry für die (sehr) verspätete Rückmeldung.
Bin leider echt kein Profi sondern mehr ein Trial and Error Programmierer 
Das übersteigt leider meine Kompetenzen. Vielleicht findet sich ja noch jemand der uns helfen kann.

Grüße,
J

------------------
"ENGINEER"

noun. [en-juh-neer]

Someone who does precision
guesswork based on unreliable
data provided by those of
questionable knowledge

See also wizard, magician

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)2019 CAD.de | Impressum | Datenschutz