Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor
  Inventor VBA Kopie speichern markierter Elemente

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:  Inventor VBA Kopie speichern markierter Elemente (994 mal gelesen)
DanielMaierhofer2
Mitglied
Technischer Produktdesigner

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

Beiträge: 6
Registriert: 23.02.2022

erstellt am: 23. Feb. 2022 13:43    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 Zusammen,

ich würde gerne ein VBA Tool erstellen, bei dem man in einer Baugruppe das markierte Bauteil kopieren kann.
Das heißt, dass der Befehl "Kopie speichern unter" nicht für die aktuelle Baugruppe gilt,
sondern für das markierte Bauteil/Baugruppe.

Hier ist der Code den ich für das normale "Kopie speichern unter" verwende.
Was muss ich hier anfügen, damit nur das markierte Teile kopiert wird?

viele Grüße
Daniel

Code:
           
        Dim oCommandMgr As CommandManager
        Set oCommandMgr = ThisApplication.CommandManager
       
       
        Dim oControlDef As ControlDefinition
        Set oControlDef = oCommandMgr.ControlDefinitions.Item( _
            "AppFileSaveCopyAsCmd")
       
        Call oControlDef.Execute

[Diese Nachricht wurde von DanielMaierhofer2 am 23. Feb. 2022 editiert.]

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: 702
Registriert: 19.09.2007

Inventor Professional 2020
WinX

erstellt am: 23. Feb. 2022 16:33    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 DanielMaierhofer2 10 Unities + Antwort hilfreich

Zuerst: es gibt ein eigenes Brett für IV VBA
Inventor VBA

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

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: 702
Registriert: 19.09.2007

Inventor Professional 2020
WinX

erstellt am: 23. Feb. 2022 16:48    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 DanielMaierhofer2 10 Unities + Antwort hilfreich

Mit den control definitions klappt das nicht so gut. Diese bilden 'nur' die Befehle ab, die man auch auf der Benutzeroberfläche findet.

Der API Befehl ist
Document.SaveAs Method

An das gewählte Objekt kommst du über das selectSet vom aktiven Dokument. Das liefert aber zunächst eine Component occurrence (eine Komponente). Über dessen Definition gelangt man zum document.

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

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: 702
Registriert: 19.09.2007

Inventor Professional 2020
WinX

erstellt am: 23. Feb. 2022 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 DanielMaierhofer2 10 Unities + Antwort hilfreich

Vermutlich soll die Kopie dann auch eingefügt werden. Dazu gibt es ein Beispiel in der Hilfe :
Assembly Add Occurrence API Sample

Mir gefällt die Variante über die CompDef besser (als im Bsp. die, über den Dateinamen)
ComponentOccurrences.AddByComponentDefinition Method
Damit kann man auch ungespeicherte Dokumente einfügen.

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

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: 2428
Registriert: 15.11.2006

Windows 10 x64, AIP 2023

erstellt am: 24. Feb. 2022 09: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 DanielMaierhofer2 10 Unities + Antwort hilfreich

Hallo

Erstmal ganz ohne Programmierung, die Funktion "Speichern und Ersetzen" kennst du? In der Baugruppe im RibbonTab "Zusammenfügen" --> Ribbonpanel "Produktivität" das Flyout aufklappen. Erstellt eine Kopie des gewählten Bauteiles oder der Baugruppe und ersetzt das Original durch die Kopie.

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

RKW Solutions GmbH
www.RKW-Solutions.com

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

DanielMaierhofer2
Mitglied
Technischer Produktdesigner

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

Beiträge: 6
Registriert: 23.02.2022

erstellt am: 24. Feb. 2022 10:38    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,

leider bin ich hier mit dem Programmieren ein wenig überfordert.
Gibt es hierfür schon einen ähnlichen Code den ich abwandeln kann?

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

DanielMaierhofer2
Mitglied
Technischer Produktdesigner

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

Beiträge: 6
Registriert: 23.02.2022

erstellt am: 24. Feb. 2022 10:41    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 rkauskh,

ja den Befehl kenne ich, nur will ich nicht gleich ersetzen sondern nur kopieren und einfügen. :/

Grüße
Daniel

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: 2428
Registriert: 15.11.2006

Windows 10 x64, AIP 2023

erstellt am: 24. Feb. 2022 13:12    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 DanielMaierhofer2 10 Unities + Antwort hilfreich

Hallo

Dann könnte man den Kopieren Befehl im RibbonTab "Zusammenfügen" --> Ribbonpanel "Muster" nehmen. Der kopiert auch einzelne Bauteile. In den Anwendungsoptionen, im Reiter "Datei" kann man ganz unten den Button "Vorgaben für Dateibenennung" klicken und die Vorgaben der Dateibenennung für den Kopieren Befehl anpassen.

Wenn's programmiert sein soll, könnte man in etwa so vorgehen. Das Beispiel ist nur für das Kopieren von Bauteilen.

Code:

Private Sub CopyAndPlace()

Dim oApp As Inventor.Application
Set oApp = ThisApplication

If Not oApp.ActiveDocument.DocumentType = kAssemblyDocumentObject Then
    Call MsgBox("Funktion nur in Baugruppen möglich. Abbruch", vbCritical, "CopyAndPlace")
    Exit Sub
End If

Dim oAssDoc As AssemblyDocument
Set oAssDoc = ThisApplication.ActiveDocument

Dim oOcc As ComponentOccurrence
Do
    Set oOcc = oApp.CommandManager.Pick(kAssemblyLeafOccurrenceFilter, "Bauteil auswählen...")
    If oOcc Is Nothing Then Exit Sub
    If Not oOcc.DefinitionDocumentType = kPartDocumentObject Then
        Set oOcc = Nothing
    End If
Loop While oOcc Is Nothing

Dim oPartDoc As PartDocument
Set oPartDoc = oOcc.Definition.Document

Dim oSaveDlg As Inventor.FileDialog
Call oApp.CreateFileDialog(oSaveDlg)

With oSaveDlg
    .CancelError = True
    .Filter = "Inventor Part Files (*.ipt)|*.ipt|All Files (*.*)|*.*"
    .DialogTitle = "SaveCopy"
    .InitialDirectory = oApp.DesignProjectManager.ActiveDesignProject.WorkspacePath
End With

On Error Resume Next
oSaveDlg.ShowSave

Dim oNewDoc As PartDocument
If Err Then
    Exit Sub
ElseIf oSaveDlg.FileName <> "" Then
    Call oPartDoc.SaveAs(oSaveDlg.FileName, True)
End If

Call oApp.CommandManager.PostPrivateEvent(kFileNameEvent, oSaveDlg.FileName)

Call oApp.CommandManager.ControlDefinitions.Item("AssemblyPlaceComponentCmd").Execute

End Sub


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

RKW Solutions GmbH
www.RKW-Solutions.com

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

DanielMaierhofer2
Mitglied
Technischer Produktdesigner

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

Beiträge: 6
Registriert: 23.02.2022

erstellt am: 24. Feb. 2022 14:33    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 rkauskh,

danke für den Code, funktioniert perfekt 
Habe hier ein allgemeines Tool mit einigen Funktionen erstellt, hier passt die Umsetzung mit dem Code bestens rein.
Danke!!

Grüße
Daniel

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