Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor
  iPropertis

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
  
NVIDIA RTX™ Virtual Workstation (vWS)
Autor Thema:  iPropertis (1082 / mal gelesen)
Enric
Mitglied
Ingenieurbüro


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

Beiträge: 246
Registriert: 29.02.2008

Einsatz: Inventor 2018

erstellt am: 26. Jan. 2024 13:29    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


Anwenderoption-Benutzername.jpg

 
Hallo liebe CAD Gemeinde,

ich habe euch ein Skript aufgezeigt, womit ich ein Model und eine Zeichnung kopiere, und dabei Daten in den iPropertis lösche. Soweit so gut und es läuft auch.
Nun habe ich an die Spezialisten mal eine Frage:
Wie bekomme ich den Benutzername und das Erstelldatum noch in die Kommandozeile, damit mir das in der Zeichnung angezeigt wird.

'---------------------------------------------------------------------------------------------
'--------------------------iPobs löschen und Modell mit Zeichnung kopieren
'---------------------------------------------------------------------------------------------

Option Explicit
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Sub CopyDrawingWithReferenceReplace()
    Dim oApp As Inventor.Application
    Set oApp = ThisApplication
   
'---------------------------------------------------------------------------------------------
'--------------------------die Zeichnung muss geöffnet sein-----------------------------------
'---------------------------------------------------------------------------------------------

    If Not oApp.ActiveDocumentType = kDrawingDocumentObject Then
        MsgBox "aktive Zeichnung erforderlich", vbCritical
        Exit Sub
    End If
 
    Dim oDrawDoc As DrawingDocument
    Set oDrawDoc = oApp.ActiveDocument
   
'--------------------------------------------------------------------------------------------
'------------------Only one referenced document is allowed-----------------------------------
'--------------------------------------------------------------------------------------------
        If Not oDrawDoc.File.ReferencedFileDescriptors.Count = 1 Then
        MsgBox "Nur 1 referenziertes Modell pro Zeichnung zulässig.", vbCritical
        Exit Sub
    End If
 
    Dim sNewName As String
    Dim sOldName As String
    If Not oDrawDoc.FullFileName = "" Then
        sOldName = Left$(oDrawDoc.FullFileName, Len(oDrawDoc.FullFileName) - 4)
    End If

    Dim oFileDialog As Inventor.FileDialog
    Call oApp.CreateFileDialog(oFileDialog)
'---------------------------------------------------------------------------------------------
'------------------------------Zeichnung neu kopieren-----------------------------------------
'---------------------------------------------------------------------------------------------
    oFileDialog.FilterIndex = 1
    oFileDialog.CancelError = True
    oFileDialog.Filter = "Inventor Files (*.idw)|*.idw|All Files (*.*)|*.*"
    oFileDialog.DialogTitle = "Save Drawing Copy"
    oFileDialog.FileName = sOldName & "_COPY.idw"
 
    On Error Resume Next
    oFileDialog.ShowSave

    If Err Then
        Exit Sub
    ElseIf oFileDialog.FileName <> "" Then
        sNewName = oFileDialog.FileName
        On Error GoTo 0
    End If

    Call oDrawDoc.SaveAs(sNewName, False)
 
 
    Dim oRefedDoc As Document
    Set oRefedDoc = oDrawDoc.ReferencedDocuments.Item(1)
 
    Dim sNewModelCopyName As String
    sNewModelCopyName = CopyRefedDoc(oRefedDoc, sNewName)
 
    If sNewModelCopyName = "" Then
        MsgBox "Modell kopieren fehlgeschlagen.", vbCritical
        Exit Sub
    End If
 
    Dim oFileDesc As FileDescriptor
    Set oFileDesc = oDrawDoc.File.ReferencedFileDescriptors.Item(1)
    oFileDesc.ReplaceReference (sNewModelCopyName)
 
End Sub


Private Function CopyRefedDoc(ByVal oRefedDoc As Document, ByVal sNewName As String) As String

    Dim oApp As Inventor.Application
    Set oApp = ThisApplication
 
    Dim sOldName As String
    If Not oRefedDoc.FullFileName = "" Then
        sOldName = Left$(oRefedDoc.FullFileName, Len(oRefedDoc.FullFileName) - 4)
    End If

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

    oFileDialog.FilterIndex = 1
    oFileDialog.CancelError = True

    Select Case oRefedDoc.DocumentType

    Case kPartDocumentObject:
   
'----------------------------------------------------------------------------------------------
'------------------MsgBox "Part"---------------------------------------------------------------
'----------------------------------------------------------------------------------------------

        Dim oPartDoc As PartDocument
        Set oPartDoc = oRefedDoc
        oFileDialog.Filter = "Inventor Files (*.ipt)|*.ipt|All Files (*.*)|*.*"
        oFileDialog.DialogTitle = "Save Part Copy"
        oFileDialog.FileName = sOldName & "_COPY.ipt"
        On Error Resume Next
        oFileDialog.ShowSave

        If Err Then
            Exit Function
        ElseIf oFileDialog.FileName <> "" Then
            sNewName = oFileDialog.FileName
            On Error GoTo 0
        End If

        Call oPartDoc.SaveAs(sNewName, True)
 
    Case kAssemblyDocumentObject:
   
'-----------------------------------------------------------------------------------------------
'-----------------MsgBox "Assembly"-------------------------------------------------------------
'-----------------------------------------------------------------------------------------------

        Dim oAssDoc As AssemblyDocument
        Set oAssDoc = oRefedDoc
        oFileDialog.Filter = "Inventor Files (*.iam)|*.iam|All Files (*.*)|*.*"
        oFileDialog.DialogTitle = "Save Assembly Copy"
        oFileDialog.FileName = sOldName & "_COPY.iam"
 
        On Error Resume Next
        oFileDialog.ShowSave

        If Err Then
            Exit Function
        ElseIf oFileDialog.FileName <> "" Then
            sNewName = oFileDialog.FileName
            On Error GoTo 0
        End If
 
        Call oAssDoc.SaveAs(sNewName, True)
 
    Case Else:
        MsgBox "Document not an Assembly or Part.", vbCritical
        CopyRefedDoc = ""
        Exit Function
 
    End Select


    Dim oNewDoc As Document
    Set oNewDoc = ThisApplication.Documents.Open(sNewName, True) 'Kopie nicht öffnen (Visible=False)

    'Das Speichern kann etwas dauern.
    'While Not oRefedDoc.FullDocumentName = sNewName
    '    Sleep 100
    '    DoEvents
    'Wend

    Call ClearAllUserDefinediProps(oNewDoc) 'diese Subs auf die Kopie anwenden
    Call ClearPartNumberProp(oNewDoc)

    oNewDoc.ReleaseReference 'weil unsichtbar geöffnet, sonst bleibts ewig offen

    CopyRefedDoc = sNewName

End Function
'--------------------------------------------------------------------------------------------
'----------------------Benutz. iProb löschen-------------------------------------------------
'--------------------------------------------------------------------------------------------
Private Sub ClearAllUserDefinediProps(ByRef oRefedDoc As Document)

    Dim oPropset As PropertySet
    Set oPropset = oRefedDoc.PropertySets.Item("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}")

    Dim oProp As Property
    For Each oProp In oPropset
        oProp.Value = ""
    Next

End Sub
'--------------------------------------------------------------------------------------------
'----------------------System. iProb löschen-------------------------------------------------
'--------------------------------------------------------------------------------------------
Private Function ClearPartNumberProp(ByRef oRefedDoc As Document)

    Dim oPropset As PropertySet
    Set oPropset = oRefedDoc.PropertySets.Item("{32853F0F-3444-11D1-9E93-0060B03C1CA6}")

    Dim oProp As Property
    For Each oProp In oPropset
        If oProp.Name = "Part Number" Then
          oProp.Value = ""
    End If
    Next
 
End Function

Danke für eure Anregungen.
LG
Enric

------------------
Konstruktion

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: 26. Jan. 2024 15:44    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 Enric 10 Unities + Antwort hilfreich

Moin

Was meinst du mit der Kommandozeile?
Den aktuellen Benutzer des Inventor kann man unter

Code:
ThisApplication.UserName

auslesen. Der Erstellungszeit einer Datei speichert Inventor glaub ich in
Code:
ThisApplication.ActiveDocument.PropertySets(3).Item(1)

Wenn du in den iProperties der Zeichnung diese Werte einträgst und im Schriftfeld die entsprechenden Textfelder einfügst, wird es auch angezeigt.

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

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

Enric
Mitglied
Ingenieurbüro


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

Beiträge: 246
Registriert: 29.02.2008

Einsatz: Inventor 2018

erstellt am: 26. Jan. 2024 16:01    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,

ich meine den Quellcode, sorry.
Wie müsste der heißen?
Weiß du wie er lauten könnte?
Die Felder auf der Zeichnung lauten Erstelldatum und Autor, die möchte ich füllen lassen.
VG
Enric

------------------
Konstruktion

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: 26. Jan. 2024 16:27    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 Enric 10 Unities + Antwort hilfreich

Moin

Probiere es mal so:

Code:

Private Sub DrawingProps()

Dim oApp As Inventor.Application
Set oApp = ThisApplication

Dim oDrawDoc As DrawingDocument
Set oDrawDoc = oApp.ActiveDocument

Dim oDate As Date
oDate = Date

Dim sAuthor As String
sAuthor = oApp.UserName

oDrawDoc.PropertySets("{F29F85E0-4FF9-1068-AB91-08002B27B3D9}").Item(3).Value = sAuthor
oDrawDoc.PropertySets("{32853F0F-3444-11D1-9E93-0060B03C1CA6}").Item(1).Value = oDate

End Sub


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

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

Enric
Mitglied
Ingenieurbüro


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

Beiträge: 246
Registriert: 29.02.2008

Einsatz: Inventor 2018

erstellt am: 26. Jan. 2024 17:07    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 Ralf,

leider hat der Code keine Auswirkung gezeigt!

LG
Enric

------------------
Konstruktion

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

RolandD
Mitglied



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

Beiträge: 558
Registriert: 07.01.2005

i7-9700k
32GB DDR4-RAM
Nvidia RTX 2060
SSD 970 m.2
Win10-64 (21H2)
AIP 2020.3
Dell U3417W

erstellt am: 26. Jan. 2024 18:29    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 Enric 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Enric:
...Die Felder auf der Zeichnung lauten Erstelldatum und Autor...

Sind das Eigenschaften der IDW oder der dargestellten IPT bzw. IAM?
Falls mehrere Referenzen in der IDW sind, wird die Datei der Erstansicht genommen.

------------------
Gruß Roland

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

Enric
Mitglied
Ingenieurbüro


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

Beiträge: 246
Registriert: 29.02.2008

Einsatz: Inventor 2018

erstellt am: 26. Jan. 2024 19:26    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 Roland,

die beschriebenen Felder sind Eigenschaften der idw, können aber auch auf die iam oder ipt umgeschrieben werden.

Gruß
Enric

------------------
Konstruktion

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

RolandD
Mitglied



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

Beiträge: 558
Registriert: 07.01.2005

i7-9700k
32GB DDR4-RAM
Nvidia RTX 2060
SSD 970 m.2
Win10-64 (21H2)
AIP 2020.3
Dell U3417W

erstellt am: 26. Jan. 2024 21: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 Enric 10 Unities + Antwort hilfreich

Hallo Enric,

versuch mal ein Update nachdem du die iProps geändert hast:

Code:
dim oSheet as Sheet
For Each oSheet In oDrawDoc.Sheets
    oSheet.Activate
    oSheet.Update
Next

------------------
Gruß Roland

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: 27. Jan. 2024 08: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 Enric 10 Unities + Antwort hilfreich

Moin

Mein Code sollte in die iProperties Author und Erstellungsdatum der Zeichnung das aktuelle Datum und den Namen des Benutzers aus den Anwendungsoptionen geschrieben haben. Mehr nicht. Kannst du bitte prüfen, ob das funktioniert hat?
Mir ist nicht ganz klar, wo und wie die Werte angezeigt werden sollen. Einfach irgendwo auf dem Blatt oder im Schriftfeld? Existieren die dafür notwendigen Textfelder bereits oder erwartest du, dass die per Code eingefügt werden? Kannst du einen Screenshot machen wo und wie die Werte angezeigt werden sollen? Ein Bild hilft manchmal mehr.

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

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

Enric
Mitglied
Ingenieurbüro


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

Beiträge: 246
Registriert: 29.02.2008

Einsatz: Inventor 2018

erstellt am: 27. Jan. 2024 10:45    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


EigenschaftenZeichnung.jpg


nachdemAnwendendescodes.jpg


Anwenderoption.jpg

 
Moin,

ich habe Dir mal einen Screenshot des Zeichnungskopfes gemacht.
Steht alles in den Eigenschaften der Zeichnung (iProps der Zeichnung).
Der Code sollte die Werte in das Feld schreiben!

So sieht der gesamte Code aus.

'---------------------------------------------------------------------------------------------
'--------------------------iPobs löschen und Modell mit Zeichnung kopieren
'---------------------------------------------------------------------------------------------

Option Explicit
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Sub CopyDrawingWithReferenceReplace()
    Dim oApp As Inventor.Application
    Set oApp = ThisApplication
   
'---------------------------------------------------------------------------------------------
'--------------------------die Zeichnung muss geöffnet sein-----------------------------------
'---------------------------------------------------------------------------------------------

    If Not oApp.ActiveDocumentType = kDrawingDocumentObject Then
        MsgBox "aktive Zeichnung erforderlich", vbCritical
        Exit Sub
    End If
  
    Dim oDrawDoc As DrawingDocument
    Set oDrawDoc = oApp.ActiveDocument
   
'--------------------------------------------------------------------------------------------
'------------------Only one referenced document is allowed-----------------------------------
'--------------------------------------------------------------------------------------------
        If Not oDrawDoc.File.ReferencedFileDescriptors.Count = 1 Then
        MsgBox "Nur 1 referenziertes Modell pro Zeichnung zulässig.", vbCritical
        Exit Sub
    End If
  
    Dim sNewName As String
    Dim sOldName As String
    If Not oDrawDoc.FullFileName = "" Then
        sOldName = Left$(oDrawDoc.FullFileName, Len(oDrawDoc.FullFileName) - 4)
    End If

    Dim oFileDialog As Inventor.FileDialog
    Call oApp.CreateFileDialog(oFileDialog)
'---------------------------------------------------------------------------------------------
'------------------------------Zeichnung neu kopieren-----------------------------------------
'---------------------------------------------------------------------------------------------
    oFileDialog.FilterIndex = 1
    oFileDialog.CancelError = True
    oFileDialog.Filter = "Inventor Files (*.idw)|*.idw|All Files (*.*)|*.*"
    oFileDialog.DialogTitle = "Save Drawing Copy"
    oFileDialog.FileName = sOldName & "_COPY.idw"
  
    On Error Resume Next
    oFileDialog.ShowSave

    If Err Then
        Exit Sub
    ElseIf oFileDialog.FileName <> "" Then
        sNewName = oFileDialog.FileName
        On Error GoTo 0
    End If

    Call oDrawDoc.SaveAs(sNewName, False)
  
  
    Dim oRefedDoc As Document
    Set oRefedDoc = oDrawDoc.ReferencedDocuments.Item(1)
  
    Dim sNewModelCopyName As String
    sNewModelCopyName = CopyRefedDoc(oRefedDoc, sNewName)
  
    If sNewModelCopyName = "" Then
        MsgBox "Modell kopieren fehlgeschlagen.", vbCritical
        Exit Sub
    End If
  
    Dim oFileDesc As FileDescriptor
    Set oFileDesc = oDrawDoc.File.ReferencedFileDescriptors.Item(1)
    oFileDesc.ReplaceReference (sNewModelCopyName)
  
End Sub


Private Function CopyRefedDoc(ByVal oRefedDoc As Document, ByVal sNewName As String) As String

    Dim oApp As Inventor.Application
    Set oApp = ThisApplication
  
    Dim sOldName As String
    If Not oRefedDoc.FullFileName = "" Then
        sOldName = Left$(oRefedDoc.FullFileName, Len(oRefedDoc.FullFileName) - 4)
    End If

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

    oFileDialog.FilterIndex = 1
    oFileDialog.CancelError = True

    Select Case oRefedDoc.DocumentType

    Case kPartDocumentObject:
   
'----------------------------------------------------------------------------------------------
'------------------MsgBox "Part"---------------------------------------------------------------
'----------------------------------------------------------------------------------------------

        Dim oPartDoc As PartDocument
        Set oPartDoc = oRefedDoc
        oFileDialog.Filter = "Inventor Files (*.ipt)|*.ipt|All Files (*.*)|*.*"
        oFileDialog.DialogTitle = "Save Part Copy"
        oFileDialog.FileName = sOldName & "_COPY.ipt"
        On Error Resume Next
        oFileDialog.ShowSave

        If Err Then
            Exit Function
        ElseIf oFileDialog.FileName <> "" Then
            sNewName = oFileDialog.FileName
            On Error GoTo 0
        End If

        Call oPartDoc.SaveAs(sNewName, True)
  
    Case kAssemblyDocumentObject:
   
'-----------------------------------------------------------------------------------------------
'-----------------MsgBox "Assembly"-------------------------------------------------------------
'-----------------------------------------------------------------------------------------------

        Dim oAssDoc As AssemblyDocument
        Set oAssDoc = oRefedDoc
        oFileDialog.Filter = "Inventor Files (*.iam)|*.iam|All Files (*.*)|*.*"
        oFileDialog.DialogTitle = "Save Assembly Copy"
        oFileDialog.FileName = sOldName & "_COPY.iam"
  
        On Error Resume Next
        oFileDialog.ShowSave

        If Err Then
            Exit Function
        ElseIf oFileDialog.FileName <> "" Then
            sNewName = oFileDialog.FileName
            On Error GoTo 0
        End If
  
        Call oAssDoc.SaveAs(sNewName, True)
  
    Case Else:
        MsgBox "Document not an Assembly or Part.", vbCritical
        CopyRefedDoc = ""
        Exit Function
  
    End Select


    Dim oNewDoc As Document
    Set oNewDoc = ThisApplication.Documents.Open(sNewName, True) 'Kopie nicht öffnen (Visible=False)

    'Das Speichern kann etwas dauern.
    'While Not oRefedDoc.FullDocumentName = sNewName
    '    Sleep 100
    '    DoEvents
    'Wend

    Call ClearAllUserDefinediProps(oNewDoc) 'diese Subs auf die Kopie anwenden
    Call ClearPartNumberProp(oNewDoc)

    oNewDoc.ReleaseReference 'weil unsichtbar geöffnet, sonst bleibts ewig offen

    CopyRefedDoc = sNewName

End Function

'--------------------------------------------------------------------------------------------
'----------------------Benutz. iProb löschen-------------------------------------------------
'--------------------------------------------------------------------------------------------

Private Sub ClearAllUserDefinediProps(ByRef oRefedDoc As Document)

    Dim oPropset As PropertySet
    Set oPropset = oRefedDoc.PropertySets.Item("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}")

    Dim oProp As Property
    For Each oProp In oPropset
        oProp.Value = ""
    Next

End Sub

'--------------------------------------------------------------------------------------------
'----------------------System. iProb löschen-------------------------------------------------
'--------------------------------------------------------------------------------------------

Private Function ClearPartNumberProp(ByRef oRefedDoc As Document)

    Dim oPropset As PropertySet
    Set oPropset = oRefedDoc.PropertySets.Item("{32853F0F-3444-11D1-9E93-0060B03C1CA6}")

    Dim oProp As Property
    For Each oProp In oPropset
        If oProp.Name = "Part Number" Then
           oProp.Value = ""
    End If
    Next
   
End Function

'--------------------------------------------------------------------------------------------
'------------------einlesen des aktuellen Benutzernames und Erstelldatum---------------------
'--------------------------------------------------------------------------------------------

Private Sub DrawingProps()
Dim oApp As Inventor.Application
Set oApp = ThisApplication

    Dim oDrawDoc As DrawingDocument
    Set oDrawDoc = oApp.ActiveDocument

    Dim oDate As Date
    oDate = Date

    Dim sAutor As String
    sAutor = oApp.UserName

    oDrawDoc.PropertySets("{F29F85E0-4FF9-1068-AB91-08002B27B3D9}").Item(3).Value = sAutor
    oDrawDoc.PropertySets("{32853F0F-3444-11D1-9E93-0060B03C1CA6}").Item(1).Value = oDate
  
End Sub

Gruß
Enric

------------------
Konstruktion

[Diese Nachricht wurde von Enric am 27. Jan. 2024 editiert.]

[Diese Nachricht wurde von Enric am 27. Jan. 2024 editiert.]

[Diese Nachricht wurde von Enric am 27. Jan. 2024 editiert.]

[Diese Nachricht wurde von Enric am 27. Jan. 2024 editiert.]

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

Enric
Mitglied
Ingenieurbüro


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

Beiträge: 246
Registriert: 29.02.2008

Einsatz: Inventor 2018

erstellt am: 27. Jan. 2024 11: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

Hallo Roland,

hat nicht den nötigen Erfolg gebracht.
Gruß
Enric

------------------
Konstruktion

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

RolandD
Mitglied



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

Beiträge: 558
Registriert: 07.01.2005

i7-9700k
32GB DDR4-RAM
Nvidia RTX 2060
SSD 970 m.2
Win10-64 (21H2)
AIP 2020.3
Dell U3417W

erstellt am: 27. Jan. 2024 14:08    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 Enric 10 Unities + Antwort hilfreich

Hallo Enric,

Ich würde empfehlen, den Code im VBA-Editor Schrittweise zu testen und dabei die Variablen zu überwachen.
Wenn du eine Überwachung auf oDoc setzt, kannst du die Struktur beliebig kontrollieren. Einfach immer das + im Browser anklicken. Das ermöglicht dir einen super Überblick, wie die Datei und deren Variablen strukturiert sind.

Schreibt dein Code die richtigen Werte in die iProperties?
Falls JA, dann nach dem Code manuell die IDW aktualisieren. Eigentlich sollten die korrekten Werte im Schriftfeld  dargestellt werden, nachdem du die iProperties manuell geöffnet und wieder geschlossen hast.

Ich probiere deinen Code morgen mal aus. Habe gerade keinen Inventor zur Hand.

------------------
Gruß Roland

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: 27. Jan. 2024 21:06    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 Enric 10 Unities + Antwort hilfreich

Moin

Rufst du meine Sub auch irgendwo auf? Von allein wird die nicht ausgeführt. 
Ich hab das mal entsprechend geändert.

Code:

Option Explicit

'---------------------------------------------------------------------------------------------
'--------------------------iPobs löschen und Modell mit Zeichnung kopieren
'---------------------------------------------------------------------------------------------

Option Explicit
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Sub CopyDrawingWithReferenceReplace()
    Dim oApp As Inventor.Application
    Set oApp = ThisApplication
 
'---------------------------------------------------------------------------------------------
'--------------------------die Zeichnung muss geöffnet sein-----------------------------------
'---------------------------------------------------------------------------------------------

    If Not oApp.ActiveDocumentType = kDrawingDocumentObject Then
        MsgBox "aktive Zeichnung erforderlich", vbCritical
        Exit Sub
    End If
 
    Dim oDrawDoc As DrawingDocument
    Set oDrawDoc = oApp.ActiveDocument
 
'--------------------------------------------------------------------------------------------
'------------------Only one referenced document is allowed-----------------------------------
'--------------------------------------------------------------------------------------------
        If Not oDrawDoc.File.ReferencedFileDescriptors.count = 1 Then
        MsgBox "Nur 1 referenziertes Modell pro Zeichnung zulässig.", vbCritical
        Exit Sub
    End If
 
    Dim sNewName As String
    Dim sOldName As String
    If Not oDrawDoc.FullFileName = "" Then
        sOldName = Left$(oDrawDoc.FullFileName, Len(oDrawDoc.FullFileName) - 4)
    End If

    Dim oFileDialog As Inventor.FileDialog
    Call oApp.CreateFileDialog(oFileDialog)
'---------------------------------------------------------------------------------------------
'------------------------------Zeichnung neu kopieren-----------------------------------------
'---------------------------------------------------------------------------------------------
    oFileDialog.FilterIndex = 1
    oFileDialog.CancelError = True
    oFileDialog.Filter = "Inventor Files (*.idw)|*.idw|All Files (*.*)|*.*"
    oFileDialog.DialogTitle = "Save Drawing Copy"
    oFileDialog.Filename = sOldName & "_COPY.idw"
 
    On Error Resume Next
    oFileDialog.ShowSave

    If Err Then
        Exit Sub
    ElseIf oFileDialog.Filename <> "" Then
        sNewName = oFileDialog.Filename
        On Error GoTo 0
    End If

    Call oDrawDoc.SaveAs(sNewName, False)
 
 
    Dim oRefedDoc As Document
    Set oRefedDoc = oDrawDoc.ReferencedDocuments.Item(1)
 
    Dim sNewModelCopyName As String
    sNewModelCopyName = CopyRefedDoc(oRefedDoc, sNewName)
 
    If sNewModelCopyName = "" Then
        MsgBox "Modell kopieren fehlgeschlagen.", vbCritical
        Exit Sub
    End If
 
    Dim oFileDesc As FileDescriptor
    Set oFileDesc = oDrawDoc.File.ReferencedFileDescriptors.Item(1)
    oFileDesc.ReplaceReference (sNewModelCopyName)
 
End Sub


Private Function CopyRefedDoc(ByVal oRefedDoc As Document, ByVal sNewName As String) As String

    Dim oApp As Inventor.Application
    Set oApp = ThisApplication
 
    Dim sOldName As String
    If Not oRefedDoc.FullFileName = "" Then
        sOldName = Left$(oRefedDoc.FullFileName, Len(oRefedDoc.FullFileName) - 4)
    End If

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

    oFileDialog.FilterIndex = 1
    oFileDialog.CancelError = True

    Select Case oRefedDoc.DocumentType

    Case kPartDocumentObject:
 
'----------------------------------------------------------------------------------------------
'------------------MsgBox "Part"---------------------------------------------------------------
'----------------------------------------------------------------------------------------------

        Dim oPartDoc As PartDocument
        Set oPartDoc = oRefedDoc
        oFileDialog.Filter = "Inventor Files (*.ipt)|*.ipt|All Files (*.*)|*.*"
        oFileDialog.DialogTitle = "Save Part Copy"
        oFileDialog.Filename = sOldName & "_COPY.ipt"
        On Error Resume Next
        oFileDialog.ShowSave

        If Err Then
            Exit Function
        ElseIf oFileDialog.Filename <> "" Then
            sNewName = oFileDialog.Filename
            On Error GoTo 0
        End If

        Call oPartDoc.SaveAs(sNewName, True)
 
    Case kAssemblyDocumentObject:
 
'-----------------------------------------------------------------------------------------------
'-----------------MsgBox "Assembly"-------------------------------------------------------------
'-----------------------------------------------------------------------------------------------

        Dim oAssDoc As AssemblyDocument
        Set oAssDoc = oRefedDoc
        oFileDialog.Filter = "Inventor Files (*.iam)|*.iam|All Files (*.*)|*.*"
        oFileDialog.DialogTitle = "Save Assembly Copy"
        oFileDialog.Filename = sOldName & "_COPY.iam"
 
        On Error Resume Next
        oFileDialog.ShowSave

        If Err Then
            Exit Function
        ElseIf oFileDialog.Filename <> "" Then
            sNewName = oFileDialog.Filename
            On Error GoTo 0
        End If
 
        Call oAssDoc.SaveAs(sNewName, True)
 
    Case Else:
        MsgBox "Document not an Assembly or Part.", vbCritical
        CopyRefedDoc = ""
        Exit Function
 
    End Select


    Dim oNewDoc As Document
    Set oNewDoc = ThisApplication.Documents.Open(sNewName, True) 'Kopie nicht öffnen (Visible=False)

    'Das Speichern kann etwas dauern.
    'While Not oRefedDoc.FullDocumentName = sNewName
    '    Sleep 100
    '    DoEvents
    'Wend

    Call ClearAllUserDefinediProps(oNewDoc) 'diese Subs auf die Kopie anwenden
    Call ClearPartNumberProp(oNewDoc)
    Call DrawingProps(oNewDoc)
   
    oNewDoc.ReleaseReference 'weil unsichtbar geöffnet, sonst bleibts ewig offen

    CopyRefedDoc = sNewName

End Function

'--------------------------------------------------------------------------------------------
'----------------------Benutz. iProb löschen-------------------------------------------------
'--------------------------------------------------------------------------------------------

Private Sub ClearAllUserDefinediProps(ByRef oRefedDoc As Document)

    Dim oPropset As PropertySet
    Set oPropset = oRefedDoc.PropertySets.Item("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}")

    Dim oProp As Property
    For Each oProp In oPropset
        oProp.Value = ""
    Next

End Sub

'--------------------------------------------------------------------------------------------
'----------------------System. iProb löschen-------------------------------------------------
'--------------------------------------------------------------------------------------------

Private Function ClearPartNumberProp(ByRef oRefedDoc As Document)

    Dim oPropset As PropertySet
    Set oPropset = oRefedDoc.PropertySets.Item("{32853F0F-3444-11D1-9E93-0060B03C1CA6}")

    Dim oProp As Property
    For Each oProp In oPropset
        If oProp.Name = "Part Number" Then
          oProp.Value = ""
    End If
    Next
 
End Function

'--------------------------------------------------------------------------------------------
'------------------einlesen des aktuellen Benutzernames und Erstelldatum---------------------
'--------------------------------------------------------------------------------------------

Private Function DrawingProps(ByRef oRefedDoc As Document)

    Dim oDate As Date
    oDate = Date

    Dim sAutor As String
    sAutor = oApp.UserName

    oRefedDoc.PropertySets("{F29F85E0-4FF9-1068-AB91-08002B27B3D9}").Item(3).Value = sAutor
    oRefedDoc.PropertySets("{32853F0F-3444-11D1-9E93-0060B03C1CA6}").Item(1).Value = oDate
 
End Function


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

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

RolandD
Mitglied



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

Beiträge: 558
Registriert: 07.01.2005

i7-9700k
32GB DDR4-RAM
Nvidia RTX 2060
SSD 970 m.2
Win10-64 (21H2)
AIP 2020.3
Dell U3417W

erstellt am: 28. Jan. 2024 18:26    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 Enric 10 Unities + Antwort hilfreich

Hallo Enric,

Du kannst das Ändern der iProperties der IDW nach dem Ersetzen der Referenz der IDW einfügen, da passt es von der Logik am Besten hin:
   

Code:
...
    Dim oFileDesc As FileDescriptor
    Set oFileDesc = oDrawDoc.File.ReferencedFileDescriptors.Item(1)
    oFileDesc.ReplaceReference (sNewModelCopyName)

    'iProperties der IDW ändern
    Dim oDate As Date
    oDate = Date

    Dim sAutor As String
    sAutor = oApp.UserName

    oDrawDoc.PropertySets("{F29F85E0-4FF9-1068-AB91-08002B27B3D9}").Item(3).Value = sAutor
    oDrawDoc.PropertySets("{32853F0F-3444-11D1-9E93-0060B03C1CA6}").Item(1).Value = oDate


Achtung: Deine ursprüngliche IPT bleibt unsichtbar offen
Wie erhalten die neue IPT und IDW ihre Bauteilnummer?

------------------
Gruß Roland

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

Enric
Mitglied
Ingenieurbüro


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

Beiträge: 246
Registriert: 29.02.2008

Einsatz: Inventor 2018

erstellt am: 28. Jan. 2024 19:06    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


FehlerbeimKompillieren.jpg

 
Hallo Ralf,

ich habe mal deinen Code eingefügt und folgende Fehlermeldung (siehe Anhang)erhalten.

MFG
Enric

------------------
Konstruktion

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

Enric
Mitglied
Ingenieurbüro


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

Beiträge: 246
Registriert: 29.02.2008

Einsatz: Inventor 2018

erstellt am: 28. Jan. 2024 19:26    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 Roland,

die Bauteilnummer wir von Hand erzeugt.
Das bedeutet, dass ich die Benennung der ipt, iam kopiere und in die Bauteilnummer einfüge.

Was du mir noch schreibst, ist mit noch nicht ganz klar!
Bist du so nett und kannst mir das mal bitte genauer beschreiben?

Gruß
Enric

------------------
Konstruktion

[Diese Nachricht wurde von Enric am 28. Jan. 2024 editiert.]

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: 28. Jan. 2024 20:18    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 Enric 10 Unities + Antwort hilfreich

Moin

Entschuldige bitte, ich hatte da zum Testen zusätzlichen Code drin und hab versehentlich zuviel herausgelöscht. Ersetze bitte in der Function DrawingProps das "oApp" mit "ThisApplication".

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

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

Enric
Mitglied
Ingenieurbüro


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

Beiträge: 246
Registriert: 29.02.2008

Einsatz: Inventor 2018

erstellt am: 28. Jan. 2024 20:54    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


BenutzernameindenAnwenderoptionen.jpg


AutornachdemKopieren.jpg


Erstellungsdatum.jpg

 
Hallo Ralf,

ich habe den Ausdruck geändert, danke.
Wie du den Bildern entnehmen kannst, hat sich in den iProperties nichts geändert. Woran liegt das?
Ich greife auf dem Zeichnungskopf diese Infos (Autor, Erstellungsdatum) ab!

MFG
Enric

------------------
Konstruktion

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

RolandD
Mitglied



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

Beiträge: 558
Registriert: 07.01.2005

i7-9700k
32GB DDR4-RAM
Nvidia RTX 2060
SSD 970 m.2
Win10-64 (21H2)
AIP 2020.3
Dell U3417W

erstellt am: 29. Jan. 2024 12: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 Enric 10 Unities + Antwort hilfreich

Hallo Enric,

Ich nehme an, dass deine iProps in der falschen Datei geändert werden.
Deshalb der Hinweis, direkt nach dem Ersetzen der Referenz in der IDW die iProps zu ändern.
Also den Code von Ralf an dieser Stelle einzufügen, da zu dem Zeitpunkt ja die IDW - also die richtige Datei - aktiv ist.
So wie ich es am  28. Jan. 2024 18:26  geschrieben hatte.

Zu der offenen Datei: kontrollier mal im Inventor ganz rechts unten die Anzahl der offenen Dateien. Als ich gestern deinen Code (mit meiner vorgeschlagenen Änderung)  getestet hatte, waren Copy.IPT und Copy.IDW offen, also 2 Dateien sichtbar. es wurde aber rechts unten 3 Dateien angezeigt.

------------------
Gruß Roland

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: 29. Jan. 2024 15:57    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 Enric 10 Unities + Antwort hilfreich

Moin

Code:

'---------------------------------------------------------------------------------------------
'--------------------------iPobs löschen und Modell mit Zeichnung kopieren
'---------------------------------------------------------------------------------------------

Option Explicit
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Sub CopyDrawingWithReferenceReplace()
    Dim oApp As Inventor.Application
    Set oApp = ThisApplication
  
'---------------------------------------------------------------------------------------------
'--------------------------die Zeichnung muss geöffnet sein-----------------------------------
'---------------------------------------------------------------------------------------------

    If Not oApp.ActiveDocumentType = kDrawingDocumentObject Then
        MsgBox "aktive Zeichnung erforderlich", vbCritical
        Exit Sub
    End If
 
    Dim oDrawDoc As DrawingDocument
    Set oDrawDoc = oApp.ActiveDocument
  
'--------------------------------------------------------------------------------------------
'------------------Only one referenced document is allowed-----------------------------------
'--------------------------------------------------------------------------------------------
        If Not oDrawDoc.File.ReferencedFileDescriptors.count = 1 Then
        MsgBox "Nur 1 referenziertes Modell pro Zeichnung zulässig.", vbCritical
        Exit Sub
    End If
 
    Dim sNewName As String
    Dim sOldName As String
    If Not oDrawDoc.FullFileName = "" Then
        sOldName = Left$(oDrawDoc.FullFileName, Len(oDrawDoc.FullFileName) - 4)
    End If

    Dim oFileDialog As Inventor.FileDialog
    Call oApp.CreateFileDialog(oFileDialog)
'---------------------------------------------------------------------------------------------
'------------------------------Zeichnung neu kopieren-----------------------------------------
'---------------------------------------------------------------------------------------------
    oFileDialog.FilterIndex = 1
    oFileDialog.CancelError = True
    oFileDialog.Filter = "Inventor Files (*.idw)|*.idw|All Files (*.*)|*.*"
    oFileDialog.DialogTitle = "Save Drawing Copy"
    oFileDialog.Filename = sOldName & "_COPY.idw"
 
    On Error Resume Next
    oFileDialog.ShowSave

    If Err Then
        Exit Sub
    ElseIf oFileDialog.Filename <> "" Then
        sNewName = oFileDialog.Filename
        On Error GoTo 0
    End If
   
    Call oDrawDoc.SaveAs(sNewName, False)

    Call DrawingProps(oDrawDoc) 
 
    Dim oRefedDoc As Document
    Set oRefedDoc = oDrawDoc.ReferencedDocuments.Item(1)
 
    Dim sNewModelCopyName As String
    sNewModelCopyName = CopyRefedDoc(oRefedDoc, sNewName)
 
    If sNewModelCopyName = "" Then
        MsgBox "Modell kopieren fehlgeschlagen.", vbCritical
        Exit Sub
    End If
 
    Dim oFileDesc As FileDescriptor
    Set oFileDesc = oDrawDoc.File.ReferencedFileDescriptors.Item(1)
    oFileDesc.ReplaceReference (sNewModelCopyName)
 
End Sub


Private Function CopyRefedDoc(ByVal oRefedDoc As Document, ByVal sNewName As String) As String

    Dim oApp As Inventor.Application
    Set oApp = ThisApplication
 
    Dim sOldName As String
    If Not oRefedDoc.FullFileName = "" Then
        sOldName = Left$(oRefedDoc.FullFileName, Len(oRefedDoc.FullFileName) - 4)
    End If

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

    oFileDialog.FilterIndex = 1
    oFileDialog.CancelError = True

    Select Case oRefedDoc.DocumentType

    Case kPartDocumentObject:
  
'----------------------------------------------------------------------------------------------
'------------------MsgBox "Part"---------------------------------------------------------------
'----------------------------------------------------------------------------------------------

        Dim oPartDoc As PartDocument
        Set oPartDoc = oRefedDoc
        oFileDialog.Filter = "Inventor Files (*.ipt)|*.ipt|All Files (*.*)|*.*"
        oFileDialog.DialogTitle = "Save Part Copy"
        oFileDialog.Filename = sOldName & "_COPY.ipt"
        On Error Resume Next
        oFileDialog.ShowSave

        If Err Then
            Exit Function
        ElseIf oFileDialog.Filename <> "" Then
            sNewName = oFileDialog.Filename
            On Error GoTo 0
        End If

        Call oPartDoc.SaveAs(sNewName, True)
 
    Case kAssemblyDocumentObject:
  
'-----------------------------------------------------------------------------------------------
'-----------------MsgBox "Assembly"-------------------------------------------------------------
'-----------------------------------------------------------------------------------------------

        Dim oAssDoc As AssemblyDocument
        Set oAssDoc = oRefedDoc
        oFileDialog.Filter = "Inventor Files (*.iam)|*.iam|All Files (*.*)|*.*"
        oFileDialog.DialogTitle = "Save Assembly Copy"
        oFileDialog.Filename = sOldName & "_COPY.iam"
 
        On Error Resume Next
        oFileDialog.ShowSave

        If Err Then
            Exit Function
        ElseIf oFileDialog.Filename <> "" Then
            sNewName = oFileDialog.Filename
            On Error GoTo 0
        End If
 
        Call oAssDoc.SaveAs(sNewName, True)
 
    Case Else:
        MsgBox "Document not an Assembly or Part.", vbCritical
        CopyRefedDoc = ""
        Exit Function
 
    End Select


    Dim oNewDoc As Document
    Set oNewDoc = ThisApplication.Documents.Open(sNewName, True) 'Kopie nicht öffnen (Visible=False)

    'Das Speichern kann etwas dauern.
    'While Not oRefedDoc.FullDocumentName = sNewName
    '    Sleep 100
    '    DoEvents
    'Wend

    Call ClearAllUserDefinediProps(oNewDoc) 'diese Subs auf die Kopie anwenden
    Call ClearPartNumberProp(oNewDoc)
   
   
    oNewDoc.ReleaseReference 'weil unsichtbar geöffnet, sonst bleibts ewig offen

    CopyRefedDoc = sNewName

End Function

'--------------------------------------------------------------------------------------------
'----------------------Benutz. iProb löschen-------------------------------------------------
'--------------------------------------------------------------------------------------------

Private Sub ClearAllUserDefinediProps(ByRef oRefedDoc As Document)

    Dim oPropset As PropertySet
    Set oPropset = oRefedDoc.PropertySets.Item("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}")

    Dim oProp As Property
    For Each oProp In oPropset
        oProp.Value = ""
    Next

End Sub

'--------------------------------------------------------------------------------------------
'----------------------System. iProb löschen-------------------------------------------------
'--------------------------------------------------------------------------------------------

Private Function ClearPartNumberProp(ByRef oRefedDoc As Document)

    Dim oPropset As PropertySet
    Set oPropset = oRefedDoc.PropertySets.Item("{32853F0F-3444-11D1-9E93-0060B03C1CA6}")

    Dim oProp As Property
    For Each oProp In oPropset
        If oProp.Name = "Part Number" Then
           oProp.Value = ""
    End If
    Next
  
End Function

'--------------------------------------------------------------------------------------------
'------------------einlesen des aktuellen Benutzernames und Erstelldatum---------------------
'--------------------------------------------------------------------------------------------

Private Function DrawingProps(ByRef oRefedDoc As Document)

    Dim oDate As Date
    oDate = Date

    Dim sAutor As String
    sAutor = ThisApplication.UserName

    oRefedDoc.PropertySets("{F29F85E0-4FF9-1068-AB91-08002B27B3D9}").Item(3).Value = sAutor
    oRefedDoc.PropertySets("{32853F0F-3444-11D1-9E93-0060B03C1CA6}").Item(1).Value = oDate
 
End Function


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

Enric
Mitglied
Ingenieurbüro


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

Beiträge: 246
Registriert: 29.02.2008

Einsatz: Inventor 2018

erstellt am: 29. Jan. 2024 17: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

Hallo Ralf,

danke für deine Unterstützung!
Läuft 

MfG
Enric

------------------
Konstruktion

[Diese Nachricht wurde von Enric am 29. Jan. 2024 editiert.]

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

Enric
Mitglied
Ingenieurbüro


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

Beiträge: 246
Registriert: 29.02.2008

Einsatz: Inventor 2018

erstellt am: 29. Jan. 2024 17:49    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

Danke Roland,

auch Dir Danke für die Unterstützung.

MfG
Enric

------------------
Konstruktion

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