Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Makro Dokumenteneigenschaft

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
  
2D DraftSight ergänzt 3D-Konstruktionswerkzeuge bei Young Industries
Autor Thema:  Makro Dokumenteneigenschaft (1601 mal gelesen)
hdf90
Mitglied
Student

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

Beiträge: 4
Registriert: 16.02.2015

erstellt am: 16. Feb. 2015 14:11    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,

im Rahmen meiner Masterarbeit möchte ich ein PDM einrichten und ggf. alte Daten ebenfalls dort einpflegen. An der Universität gelten Konstruktionsrichtlinien, welche in den Dokumenteigenschaften den Autor, eine genauere Beschreibung sowie Material und Gewicht erfordern. Ich möchte ein kleines Makro erstellen, dass unter den Eigenschaften die Punkte "Description", "Author", "Material" mit dem Wert "SW-Material" und "Weight" mit dem Wert "SW-Mass" angelegt werden. Ich habe dazu auch schon ein Skript gefunden, nur leider sind meine Kenntnisse im Programmieren nicht so groß, dass ich es alleine schaffen werde. Das Problem in dem Skript ist, dass der Eintrag "bitte ausfüllen" in jede Zeile geschrieben wird. Ich möchte jedoch, dass ich für jede Zeile einen anderen Wert eintragen lassen kann. Irgendwas in der letzten Schleife müsste wohl geändert werden. Ich hoffe ihr könnt mir weiterhelfen. So nun das Skript und die Quelle: http://solidworks.cad.de/mm_35.htm


Const AllConfigs = 1
'
' unten noch die Properties eintragen!
'
' NICHT MEHR AB HIER EDITIEREN, es sei denn Sie wissen was sie tun ;-)
' **********************************************************************

' Definitions of typenames are consistent as in swconst.bas
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 ConfigCount As Long
    Dim ConfigNames As Variant
    Dim PropConfigs As New Collection
    Dim PropNames As New Collection
    Dim Prop As Variant
    Dim Config As Variant

    Dim PropType As Long
    Dim PropText As String
    Dim i As Long

    Set swApp = CreateObject("SldWorks.Application")
    Set ModelDoc = swApp.ActiveDoc

    If ModelDoc Is Nothing Then
        ' Call MsgBox("Keine Datei geöffnet", vbOKOnly, "Information")
        Exit Sub
    End If
    '
    ' **********************************************************************
    ' diese folgenden Werte können editiert werden, hier einfach die Namen
    ' der Dateieigenschaften reinschreiben/ergänzen/Löschen 
    '
    ' die gewünschten Properties mal sammeln, ggf. einfach erweitern
    PropNames.Add "Abendessen"
    PropNames.Add "Einen-fuer-Mama"
    PropNames.Add "Einen-fuer-Papa"
    PropNames.Add "und-einen"
    PropNames.Add "fuer-die-liebe-Oma"

    ' jetzt besser nicht mehr editieren 
    ' **********************************************************************

    ' alle Dateieigenschaften aus der Konfiguration holen
    ConfigCount = ModelDoc.GetConfigurationCount
    ConfigNames = ModelDoc.GetConfigurationNames

    ' dann die Coolection vorbereiten mit den Namen der Konfigs bzw. "" wenn auf Datei
    If AllConfigs = 0 Then
        PropConfigs.Add ""
    Else
        For i = 0 To ConfigCount - 1
            PropConfigs.Add ConfigNames(i)
        Next i
    End If

    For Each Config In PropConfigs
        For Each Prop In PropNames
            ' als Dateieigenschaft wieder einsetzen, Dummywert "bitte ausfüllen" eintragen
            ' und neu hinzufügen; falls schon vorhanden passiert nix
            Debug.Print ModelDoc.AddCustomInfo3(Config, Prop, swCustomInfoText, "bitte ausfüllen")
        Next
    Next

End Sub

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

HenryV
Mitglied
Konstrukteur, Engineering


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

Beiträge: 813
Registriert: 18.05.2005

SolidWorks 2022 x64 SP5.0
Dell Precision 5820
Intel Xeon W-2125 4x4GHz
NVIDIA Quadro P2000 5GB
32GB RAM
2x Dell U2412M, 24" TFT
Windows 10 Enterprise x64 22H2
Microsoft 365 E5
Microsoft Visual Studio Enterprise 2022

erstellt am: 16. Feb. 2015 16:32    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 hdf90 10 Unities + Antwort hilfreich

Hallo du

Das hast du richtig erkannt.

In der Schleife

Code:
For Each Prop In PropNames
    ' als Dateieigenschaft wieder einsetzen, Dummywert "bitte ausfüllen" eintragen
    ' und neu hinzufügen; falls schon vorhanden passiert nix
    Debug.Print ModelDoc.AddCustomInfo3(Config, Prop, swCustomInfoText, "bitte ausfüllen")
Next
wird für jedes vorher definierte Property ein Eintrag mit dem Wert "bitte ausfüllen" erzeugt.

Da du nur 4 Properties erzeugen willst, würde die die Befüllung der PropNames-Collection weglassen, und die untere Schleife so abändern.

Code:
For Each Config In PropConfigs
        ' Dateieigenschaft  generieren; falls schon vorhanden passiert nix
        '"Description", "Author", "Material" mit dem Wert "SW-Material" und "Weight" mit dem Wert "SW-Mass"
        Debug.Print ModelDoc.AddCustomInfo3(Config, "Description", swCustomInfoText, "")
        Debug.Print ModelDoc.AddCustomInfo3(Config, "Author", swCustomInfoText, "")
        Debug.Print ModelDoc.AddCustomInfo3(Config, "Material", swCustomInfoText, """SW-Material@@" & Config & "@" & ModelDoc.GetTitle & """")
        Debug.Print ModelDoc.AddCustomInfo3(Config, "Weight", swCustomInfoText, """SW-Mass@@" & Config & "@" & ModelDoc.GetTitle & """")
Next


Gruss Andreas

------------------
21 ist nur die halbe Antwort.

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

hdf90
Mitglied
Student

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

Beiträge: 4
Registriert: 16.02.2015

erstellt am: 17. Feb. 2015 09:36    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

Vielen vielen Dank, das Makro läuft jetzt Prima.

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

hdf90
Mitglied
Student

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

Beiträge: 4
Registriert: 16.02.2015

erstellt am: 05. Mrz. 2015 09:32    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

Eine kleine Frage hätte ich leider doch noch. Mit diesem Makro werden konfigurationspezifische Eigenschaften erstellt. Ich möchte jedoch Einträge für benutzerspezifische Eigenschaften erstellen. Welche Befehle müssten dafür geändert werden?

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

Winni-two
Mitglied
Ing. Maschb.


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

Beiträge: 154
Registriert: 12.03.2010

SW 2021 SP5
Intel Xenon W2135 @3.7GHz
Win 10 64 bit
Graka: Nvidia Quadro P4000
32 GB Ram

erstellt am: 05. Mrz. 2015 09: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 Nur für hdf90 10 Unities + Antwort hilfreich

Hallo

Config durch "" ersetzen.

Gruß

Winni

Debug.Print ModelDoc.AddCustomInfo3(Config, "Description", swCustomInfoText, "")

wird zu

Debug.Print ModelDoc.AddCustomInfo3("", "Description", swCustomInfoText, "")

[Diese Nachricht wurde von Winni-two am 05. Mrz. 2015 editiert.]

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

hdf90
Mitglied
Student

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

Beiträge: 4
Registriert: 16.02.2015

erstellt am: 05. Mrz. 2015 11: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

Vielen Dank für die schnelle Hilfe, hat natürlich funktioniert.

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

HenryV
Mitglied
Konstrukteur, Engineering


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

Beiträge: 813
Registriert: 18.05.2005

SolidWorks 2022 x64 SP5.0
Dell Precision 5820
Intel Xeon W-2125 4x4GHz
NVIDIA Quadro P2000 5GB
32GB RAM
2x Dell U2412M, 24" TFT
Windows 10 Enterprise x64 22H2
Microsoft 365 E5
Microsoft Visual Studio Enterprise 2022

erstellt am: 05. Mrz. 2015 12:13    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 hdf90 10 Unities + Antwort hilfreich

Hallo

Oder du setzt die Konstante AllConfigs auf 0.

Code:
Const AllConfigs = 0

Gruss Andreas

------------------
21 ist nur die halbe Antwort.

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