| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Auf dem Weg zur digitalen Auftragsmappe. , ein Anwenderbericht
|
Autor
|
Thema: Inventor VBA Kopie speichern markierter Elemente (1215 / mal gelesen)
|
DanielMaierhofer2 Mitglied Technischer Produktdesigner
Beiträge: 6 Registriert: 23.02.2022
|
erstellt am: 23. Feb. 2022 13:43 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 721 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 23. Feb. 2022 16:33 <-- editieren / zitieren --> Unities abgeben: Nur für DanielMaierhofer2
|
KraBBy Mitglied Maschinenbau-Ingenieur
Beiträge: 721 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 23. Feb. 2022 16:48 <-- editieren / zitieren --> Unities abgeben: Nur für DanielMaierhofer2
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
Beiträge: 721 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 23. Feb. 2022 16:56 <-- editieren / zitieren --> Unities abgeben: Nur für DanielMaierhofer2
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2630 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 24. Feb. 2022 09:56 <-- editieren / zitieren --> Unities abgeben: Nur für DanielMaierhofer2
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
Beiträge: 6 Registriert: 23.02.2022
|
erstellt am: 24. Feb. 2022 10:38 <-- editieren / zitieren --> Unities abgeben:
|
DanielMaierhofer2 Mitglied Technischer Produktdesigner
Beiträge: 6 Registriert: 23.02.2022
|
erstellt am: 24. Feb. 2022 10:41 <-- editieren / zitieren --> Unities abgeben:
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2630 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 24. Feb. 2022 13:12 <-- editieren / zitieren --> Unities abgeben: Nur für DanielMaierhofer2
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
Beiträge: 6 Registriert: 23.02.2022
|
erstellt am: 24. Feb. 2022 14:33 <-- editieren / zitieren --> Unities abgeben:
|