Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  SW2022 API - Ersatz für AddCustomInfo3

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 SOLIDWORKS
Autor Thema:  SW2022 API - Ersatz für AddCustomInfo3 (152 mal gelesen)
i440bx
Mitglied
Konstrukteur

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

Beiträge: 6
Registriert: 01.03.2020

Solidworks 2022

erstellt am: 18. Jan. 2023 21: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

Hallo zusammen,

wir haben vor ein paar Wochen von SW19 auf SW22 gewechselt. Der Wechsel lief soweit ganz gut - aber unsere Makro's sind natürlich noch die, die mit der Libary von SW2019 funktioniert haben. Ich konnte die alten Makros erstmal flicken (in VBA via "Extras" - "Verweise" - SW2019 Konstanten sowie Kommandos aktivieren) bin mit der Lösung aber nicht ganz so happy.

Bei meiner Suche nach den Ursachen stieß ich unter anderem auf die Funktion "AddCustomInfo3" die wir benutzen um Benutzerdefinierte Dateieigenschaften hinzu zu fügen. Meine Recherche bei der Solidworks-API Hilfeseite stieß ich dann wiederrum auf folgende Versionen:

AddCustomInfo ersetzt durch AddCustomInfo2 ersetzt durch AddCustomInfo3 ersetzt durch CustomPropertyManager.Add3
Siehe hier: Klick

Soweit so gut. Ich hab folgendes Beispiel auch gefunden:
Add3 Method (ICustomPropertyManager)

Das VBA Beispiel funktioniert auch, nur fügt es bei den Dateieigenschaften im Reiter "Eigenschafteninfo" das Datum von 1959 ein. Klar, gehört ja zur aktuellen Konfiguration.

Aber: Wie benutze ich die CustomPropertyManager.Add3 Methode so, dass ich die Eigenschaften im Reiter "Benutzerdefiniert" stehen habe? Also Konfigurationsunabhängig? Ich möchte gerne unsere alten Makro's alle auf den aktuellen Stand bringen und die Altlasten ohne Workaround entfernen.

Hier ein (gekürztes) Beispiel meines Makros:

Code:
Option Explicit

Const swDocPART = 1
Const swDocASSEMBLY = 2
Const swDocDRAWING = 3

Public Enum swCustomInfoType_e
    swCustomInfoUnknown = 0
    swCustomInfoText = 30      '  VT_LPSTR
    swCustomInfoDate = 64      '  VT_FILETIME
    swCustomInfoNumber = 3    '  VT_I4
    swCustomInfoYesOrNo = 11  '  VT_BOOL
End Enum

---

Sub main()
   
    Dim swApp As Object
    Dim ModelDoc As Object
    Dim PropNames As New Collection
    Dim Prop As Variant
    Dim config As Variant
    Dim ConfigCount As Long
    Dim ConfigNames As Variant
    Dim dummy As String
    Dim Teilenamen, DateiName, BauteilNummer, DateiTyp, Bauteilname As String
    Dim PosErstesLeerzeichen, LängeDateiname As Long
   
    Set swApp = Application.SldWorks
    Set ModelDoc = swApp.ActiveDoc
   
    If ModelDoc Is Nothing Then
        swApp.SendMsgToUser ("Keine Datei geöffnet! Makro beendet.")
        Exit Sub
    End If

    DateiName = swApp.ActiveDoc.GetTitle
 
    PosErstesLeerzeichen = InStr(DateiName, " ")
   
    If PosErstesLeerzeichen = 0 Then
        swApp.SendMsgToUser ("Dateiname ohne Leerzeichen! Makro beendet.")
        Exit Sub
    End If
   
   
    LängeDateiname = Len(DateiName)
    BauteilNummer = Left(DateiName, PosErstesLeerzeichen - 1)
    DateiTyp = Right(DateiName, 6)
    Bauteilname = Mid(DateiName, PosErstesLeerzeichen + 1, LängeDateiname - PosErstesLeerzeichen - 7)
   
    If DateiTyp = "SLDDRW" Then
        swApp.SendMsgToUser ("Dies ist eine Zeichnung! Makro beendet.")
        Exit Sub
    End If
             
   
    Debug.Print ModelDoc.AddCustomInfo3(config, "Bauteil Nummer", swCustomInfoText, BauteilNummer)
    Debug.Print ModelDoc.AddCustomInfo3(config, "Material", swCustomInfoText, Chr(34) & "SW-Material@" & ModelDoc.GetTitle & Chr(34))
    Debug.Print ModelDoc.AddCustomInfo3(config, "Weight", swCustomInfoText, Chr(34) & "SW-Mass@" & ModelDoc.GetTitle & Chr(34))
   
    If DateiTyp = "SLDPRT" Then
        Debug.Print ModelDoc.AddCustomInfo3(config, "Bauteilname", swCustomInfoText, Bauteilname)
        Debug.Print ModelDoc.AddCustomInfo3(config, "Baugruppenname", swCustomInfoText, "")
    Else
        Debug.Print ModelDoc.AddCustomInfo3(config, "Bauteilname", swCustomInfoText, "")
        Debug.Print ModelDoc.AddCustomInfo3(config, "Baugruppenname", swCustomInfoText, Bauteilname)
    End If
   
    Debug.Print ModelDoc.AddCustomInfo3(config, "Konfigurationsbaugruppe", swCustomInfoYesOrNo, "")
    Debug.Print ModelDoc.AddCustomInfo3(config, "Description", swCustomInfoText, "")
    Debug.Print ModelDoc.AddCustomInfo3(config, "Fertigungsverfahren", swCustomInfoText, "")
    Debug.Print ModelDoc.AddCustomInfo3(config, "Hersteller", swCustomInfoText, "")
    Debug.Print ModelDoc.AddCustomInfo3(config, "Herstellernummer", swCustomInfoText, "")
    Debug.Print ModelDoc.AddCustomInfo3(config, "Erstellt von", swCustomInfoText, Environ("USERNAME"))
    Debug.Print ModelDoc.AddCustomInfo3(config, "Ersatzteil", swCustomInfoYesOrNo, "")
   
    DateiinformationenÖffnen
 
End Sub

---

Sub DateiinformationenÖffnen()

Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
Part.FileSummaryInfo

End Sub



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

Olls Lai Lolli
Mitglied
Konstrukteur


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

Beiträge: 345
Registriert: 07.05.2009

MS Windows 10 Prof.
Intel Xeon E5-1630 v 3 3.7 GHz
32 GB Ram
Nvidia Quadro M4000
SWX 2019 x64 SP 5
PDM Enterprise 2019 SP 3

erstellt am: 19. Jan. 2023 08:28    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 i440bx 10 Unities + Antwort hilfreich

Geht ganz einfach...

Set cusPropMgr = swModelDocExt.CustomPropertyManager("") für die Benutzerdefinierten Eigenschaften

und

Set cusPropMgr = swModelDocExt.CustomPropertyManager("Standard")
für z.B. die Eigenschaften der Konfig Standard.

Nach diesen Zeilen dann den Add3 Befehl.


Gruß OLL

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