Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Makro für Einheit+Dateieigenschaft setzen

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
  
Bechtle Competence Days | Online
Autor Thema:  Makro für Einheit+Dateieigenschaft setzen (1161 mal gelesen)
Solid Worker
Mitglied
Techniker Maschinenbau


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

Beiträge: 34
Registriert: 11.09.2003

/ Software:
Win 11 Pro
-Solid Works 2023-SP4
(Solid Works seit 1999)
-AutoCAD LT 2024
-CoCreate ME10 8.7G ;-)
/ Hardware:
DELL 3660 Tower
Intel Core i7 12700K
32GB RAM
nVidia RTX A2000
3DConnexion SpaceMouse Pro

erstellt am: 27. Apr. 2022 14: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

Hallo Zusammen,
ich bräuchte mal Hilfe bei den Makros.

Mein Plan ist ein Makro zu basteln, mit dem ich das Gewicht einer BG setzen und anschließend im Zeichnungsrahmen einfügen kann.
Vorher möchte ich aber die Einheiten der BG anpassen.

Mein Wunsch für das Makro ist also:
1. Dokumenteinheit für Masse auf keine Dezimalstellen + Einheit Kilogramm setzen
2. Dateieigenschaft erzeugen mit Eigenschaftsname: "GEWICHT" / Typ: TEXT / Wert: MASSE
(beide Schritte in einem Makro)

Den Teil 1 bekomme ich auch per Makroaufzeichnung hin. Beim Hinzufügen der Dateieigenschaft hänge ich in der Luft.
Sicher kann mir jemand helfen 

VG
Solid Worker

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

R3vo
Mitglied
staatl. gepr. Techniker, Konstrukteur


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

Beiträge: 107
Registriert: 03.11.2021

Programme:
CAD: SolidWorks 2021 SP5.1
PDM: SpeedyPDM 7.5
------------------------
CPU: i7 10700
GPU: Nvidia Quadro RTX4000
RAM: 64 Gbyte
Datenträger: SSD

erstellt am: 27. Apr. 2022 14: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 Solid Worker 10 Unities + Antwort hilfreich

Schau dir mal in der Makrohilfe das ICustomPropertyManager Interface an.

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

Solid Worker
Mitglied
Techniker Maschinenbau


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

Beiträge: 34
Registriert: 11.09.2003

/ Software:
Win 11 Pro
-Solid Works 2023-SP4
(Solid Works seit 1999)
-AutoCAD LT 2024
-CoCreate ME10 8.7G ;-)
/ Hardware:
DELL 3660 Tower
Intel Core i7 12700K
32GB RAM
nVidia RTX A2000
3DConnexion SpaceMouse Pro

erstellt am: 27. Apr. 2022 15: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

...habe ich gerade mal angeschaut. Als Beispiel gibt es da was mit "Get Custom Properties..." ich benötige es aber umgekehrt 

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

R3vo
Mitglied
staatl. gepr. Techniker, Konstrukteur


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

Beiträge: 107
Registriert: 03.11.2021

Programme:
CAD: SolidWorks 2021 SP5.1
PDM: SpeedyPDM 7.5
------------------------
CPU: i7 10700
GPU: Nvidia Quadro RTX4000
RAM: 64 Gbyte
Datenträger: SSD

erstellt am: 27. Apr. 2022 15:09    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 Solid Worker 10 Unities + Antwort hilfreich

Such mal nach der Methode "add3".

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

Solid Worker
Mitglied
Techniker Maschinenbau


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

Beiträge: 34
Registriert: 11.09.2003

/ Software:
Win 11 Pro
-Solid Works 2023-SP4
(Solid Works seit 1999)
-AutoCAD LT 2024
-CoCreate ME10 8.7G ;-)
/ Hardware:
DELL 3660 Tower
Intel Core i7 12700K
32GB RAM
nVidia RTX A2000
3DConnexion SpaceMouse Pro

erstellt am: 27. Apr. 2022 16:03    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

ich komme der Sache schon näher, aber nicht wirklich weiter.
Leider kenne ich diese ganzen VBA Befehle überhaupt nicht 

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

Solid Worker
Mitglied
Techniker Maschinenbau


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

Beiträge: 34
Registriert: 11.09.2003

/ Software:
Win 11 Pro
-Solid Works 2023-SP4
(Solid Works seit 1999)
-AutoCAD LT 2024
-CoCreate ME10 8.7G ;-)
/ Hardware:
DELL 3660 Tower
Intel Core i7 12700K
32GB RAM
nVidia RTX A2000
3DConnexion SpaceMouse Pro

erstellt am: 28. Apr. 2022 09:20    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

vielleicht kann mir noch jemand einen Tipp geben.
möglicherweise geht es hiermit in die richtige Richtung:

value = instance.Add3(FieldName, FieldType, FieldValue, OverwriteExisting)

aber woher bekomme ich den FieldValue für das Gewicht??

[Diese Nachricht wurde von Solid Worker am 28. Apr. 2022 editiert.]

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

R3vo
Mitglied
staatl. gepr. Techniker, Konstrukteur


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

Beiträge: 107
Registriert: 03.11.2021

Programme:
CAD: SolidWorks 2021 SP5.1
PDM: SpeedyPDM 7.5
------------------------
CPU: i7 10700
GPU: Nvidia Quadro RTX4000
RAM: 64 Gbyte
Datenträger: SSD

erstellt am: 28. Apr. 2022 11: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 Solid Worker 10 Unities + Antwort hilfreich

Code:
Set swPropMgr = swModelExt.CustomPropertyManager("")
        value = swPropMgr.Add3("Material", swCustomInfoText, Chr(34) & "SW-Material@" & swModel.GetTitle & Chr(34), swCustomPropertyReplaceValue)

Das ist zwar für die Eigenschaft Material, lässt sich aber für das/die Gewicht/Masse ähnlich umsetzen. Schau mal ob dir das weiterhilft.

[Diese Nachricht wurde von R3vo am 28. Apr. 2022 editiert.]

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

Solid Worker
Mitglied
Techniker Maschinenbau


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

Beiträge: 34
Registriert: 11.09.2003

/ Software:
Win 11 Pro
-Solid Works 2023-SP4
(Solid Works seit 1999)
-AutoCAD LT 2024
-CoCreate ME10 8.7G ;-)
/ Hardware:
DELL 3660 Tower
Intel Core i7 12700K
32GB RAM
nVidia RTX A2000
3DConnexion SpaceMouse Pro

erstellt am: 28. Apr. 2022 14:20    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

Zitat:
Original erstellt von R3vo:
Set swPropMgr = swModelExt.CustomPropertyManager("")

hier meldet sich der Debugger, Zeile wird gelb markiert

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

Solid Worker
Mitglied
Techniker Maschinenbau


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

Beiträge: 34
Registriert: 11.09.2003

/ Software:
Win 11 Pro
-Solid Works 2023-SP4
(Solid Works seit 1999)
-AutoCAD LT 2024
-CoCreate ME10 8.7G ;-)
/ Hardware:
DELL 3660 Tower
Intel Core i7 12700K
32GB RAM
nVidia RTX A2000
3DConnexion SpaceMouse Pro

erstellt am: 28. Apr. 2022 14:55    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

Ich bin nun an einem Punkt angelangt, wo ich wohl aufgeben werde. Leider blicke ich beim VBA noch nicht durch. Mir fehlt auch momentan die Zeit, mich erst stundenlang damit zu beschäftigen. Es geht dann wohl schneller, wenn ich in den Dokumenteigenschaften selber eine Zeile mit dem Gewicht einfüge.

Trotzdem wäre es natürlich super, falls jemand so ein Makro hat und den Code hier veröffentlicht 

VG
Solid Worker

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

Ralf Tide
Moderator
-




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

Beiträge: 4978
Registriert: 06.08.2001

Sehr seltsame Dinge passiern <Klaus Lage - Toy Story>
.-)

erstellt am: 28. Apr. 2022 14: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 Solid Worker 10 Unities + Antwort hilfreich


033693_BeispielAusSWX-Hilfe.jpg

 
Hallo solider Arbeiter,

bei mir funktioniert das Beispiel aus der Hilfe ( https://help.solidworks.com/2020/english/api/sldworksapi/Get_Custom_Properties_of_Referenced_Part_Example_VB.htm ).
Alle Variablen deklariert? 

HTH
Ralf

------------------

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

Solid Worker
Mitglied
Techniker Maschinenbau


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

Beiträge: 34
Registriert: 11.09.2003

/ Software:
Win 11 Pro
-Solid Works 2023-SP4
(Solid Works seit 1999)
-AutoCAD LT 2024
-CoCreate ME10 8.7G ;-)
/ Hardware:
DELL 3660 Tower
Intel Core i7 12700K
32GB RAM
nVidia RTX A2000
3DConnexion SpaceMouse Pro

erstellt am: 28. Apr. 2022 15:22    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,
mein Problem ist, dass die Daten in die Dokumenteigenschaften geschrieben werden sollen. Nicht auslesen.
Dass es irgendwie mit Add3 funktionieren soll, habe ich herausgefunden. Mir fehlt aber das drumherum.

Zusammenfassend möchte ich einfach in den Dokumenteigenschaften einer BG eine Zeile mit dem Gewicht einfügen.

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

Ralf Tide
Moderator
-




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

Beiträge: 4978
Registriert: 06.08.2001

Sehr seltsame Dinge passiern <Klaus Lage - Toy Story>
.-)

erstellt am: 28. Apr. 2022 15:34    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 Solid Worker 10 Unities + Antwort hilfreich


033693_LesenUndSchreiben.jpg

 
Zitat:
Original erstellt von Solid Worker:
...geschrieben werden sollen. Nicht auslesen.
Hab ich beim zweiten lesen auch gemerkt 

Aber:

Code:

Option Explicit

Dim swApp As SldWorks.SldWorks
Dim swModel As ModelDoc2
Dim swModelDocExt As ModelDocExtension
Dim swCustProp As CustomPropertyManager
Dim val As String
Dim valout As String
Dim bool As Boolean
Dim Wert As Integer

Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swModelDocExt = swModel.Extension
' Get the custom property data
Set swCustProp = swModelDocExt.CustomPropertyManager("")
bool = swCustProp.Get4("Gewicht2", False, val, valout)
    Debug.Print "Value:                    " & val
    Debug.Print "Evaluated value:          " & valout
    Debug.Print "Up-to-date data:          " & bool
Wert = swCustProp.Add3("Gewicht2", 30, Chr(34) & "SW-Masse@" & swModel.GetTitle & Chr(34), 1)
    Debug.Print "Wert geschrieben:        " & Wert
bool = swCustProp.Get4("Gewicht2", False, val, valout)
    Debug.Print "Value:                    " & val
    Debug.Print "Evaluated value:          " & valout
    Debug.Print "Up-to-date data:          " & bool
End Sub


Damit klappt auch schreiben 

HTH
Ralf

------------------

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

Solid Worker
Mitglied
Techniker Maschinenbau


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

Beiträge: 34
Registriert: 11.09.2003

/ Software:
Win 11 Pro
-Solid Works 2023-SP4
(Solid Works seit 1999)
-AutoCAD LT 2024
-CoCreate ME10 8.7G ;-)
/ Hardware:
DELL 3660 Tower
Intel Core i7 12700K
32GB RAM
nVidia RTX A2000
3DConnexion SpaceMouse Pro

erstellt am: 28. Apr. 2022 16: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

Oh ja, das sieht gut aus.
Grundsätzlich scheint es zu funktionieren. Zumindest wenn ich ein neues Teil anlege.
Wenn ich Bestandsdaten nehme funktioniert es noch nicht. Komischerweise wird mir nur der Dateiname als Wert ausgegeben.
Beim manuellen Anlegen der Dokumenteigenschaft wird mir dann beim Dateinamen auch die Erweiterung angezeigt.

Heißt, es müsste nach dem Dateinamen (swModel.GetTitle) noch die Dateierweiterung mit angefügt werden.

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

Solid Worker
Mitglied
Techniker Maschinenbau


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

Beiträge: 34
Registriert: 11.09.2003

/ Software:
Win 11 Pro
-Solid Works 2023-SP4
(Solid Works seit 1999)
-AutoCAD LT 2024
-CoCreate ME10 8.7G ;-)
/ Hardware:
DELL 3660 Tower
Intel Core i7 12700K
32GB RAM
nVidia RTX A2000
3DConnexion SpaceMouse Pro

erstellt am: 28. Apr. 2022 16:42    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

Hiermit geht's:

Option Explicit

Dim swApp As SldWorks.SldWorks
Dim swModel As ModelDoc2
Dim swModelDocExt As ModelDocExtension
Dim swCustProp As CustomPropertyManager
Dim val As String
Dim valout As String
Dim bool As Boolean
Dim Wert As Integer

Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swModelDocExt = swModel.Extension
' Get the custom property data
Set swCustProp = swModelDocExt.CustomPropertyManager("")
bool = swCustProp.Get4("Gewicht2", False, val, valout)
    Debug.Print "Value:                    " & val
    Debug.Print "Evaluated value:          " & valout
    Debug.Print "Up-to-date data:          " & bool
Wert = swCustProp.Add3("Gewicht1", 30, Chr(34) & "SW-Masse@" & swModel.GetTitle & swModel.GetPathName & Chr(34) & "kg", 1)
    Debug.Print "Wert geschrieben:        " & Wert
bool = swCustProp.Get4("Gewicht1", False, val, valout)
    Debug.Print "Value:                    " & val
    Debug.Print "Evaluated value:          " & valout
    Debug.Print "Up-to-date data:          " & bool
End Sub

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

Solid Worker
Mitglied
Techniker Maschinenbau


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

Beiträge: 34
Registriert: 11.09.2003

/ Software:
Win 11 Pro
-Solid Works 2023-SP4
(Solid Works seit 1999)
-AutoCAD LT 2024
-CoCreate ME10 8.7G ;-)
/ Hardware:
DELL 3660 Tower
Intel Core i7 12700K
32GB RAM
nVidia RTX A2000
3DConnexion SpaceMouse Pro

erstellt am: 28. Apr. 2022 16:46    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

jetzt bin ich natürlich auf den Geschmack gekommen 
Kann man noch einbauen, dass das Makro nur bei .SLDPRT und .SLDASM ausgeführt werden kann?

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

Ralf Tide
Moderator
-




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

Beiträge: 4978
Registriert: 06.08.2001

Sehr seltsame Dinge passiern <Klaus Lage - Toy Story>
.-)

erstellt am: 28. Apr. 2022 19:35    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 Solid Worker 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Solid Worker:
jetzt bin ich natürlich auf den Geschmack gekommen 
Kann ich ja gar nicht glauben 
Zitat:
Original erstellt von Solid Worker:
Kann man noch einbauen, dass das Makro nur bei .SLDPRT und .SLDASM ausgeführt werden kann?
Schon vor vielen Jahren von Stefan Berlitz in Code gemeißelt (hier leicht abgewandelt):
Code:

' http://solidworks.cad.de/mm_01.htm
' die Konstanten aus swconst.bas, damit nicht mit Zahlen gearbeitet werden muss
Const swDocNONE = 0               ' Used to be TYPE_NONE
Const swDocPART = 1               ' Used to be TYPE_PART
Const swDocASSEMBLY = 2           ' Used to be TYPE_ASSEMBLY
Const swDocDRAWING = 3            ' Used to be TYPE_DRAWING
Const swDocSDM = 4                ' Solid data manager.

Sub Main()
...

    ' Zeiger auf aktives Dokument holen und überprüfen, ob überhaupt eins aktiv ist
    Set swModel = SwApp.ActiveDoc
    If swModel Is Nothing Then
        MsgBox ("Kein Modell geöffnet")
        End
    End If

    ' Mit Zeichnungen geht's nicht
    If swModel.GetType() = swDocDRAWING Then
        MsgBox ("Das Makro funktioniert nicht mit Zeichnungen")
        End
    End If
...



HTH - again 
Ralf

------------------

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

Solid Worker
Mitglied
Techniker Maschinenbau


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

Beiträge: 34
Registriert: 11.09.2003

/ Software:
Win 11 Pro
-Solid Works 2023-SP4
(Solid Works seit 1999)
-AutoCAD LT 2024
-CoCreate ME10 8.7G ;-)
/ Hardware:
DELL 3660 Tower
Intel Core i7 12700K
32GB RAM
nVidia RTX A2000
3DConnexion SpaceMouse Pro

erstellt am: 29. Apr. 2022 08: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

Hallo Ralf, vielen Dank!
Dank deiner Unterstützung habe ich nun mein Makro erfolgreich erstellen können.
Nochmal zusammenfassend was das Makro nun macht:

- Prüfung des Dateityps, Makro nur für SLDASM oder SLDPRT
- Dokumenteigenschaften auf Einheit Kilogramm und eine Dezimalstelle setzen
- Dateiinformationen, neue Zeile mit Gewicht des geöffneten Dokuments einfügen (inkl. Kennzeichnung "kg")

Code:

Option Explicit

Dim swApp As SldWorks.SldWorks
Dim swModel As ModelDoc2
Dim swModelDocExt As ModelDocExtension
Dim swCustProp As CustomPropertyManager
Dim val As String
Dim valout As String
Dim bool As Boolean
Dim Wert As Integer
Dim myModelView As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swModelDocExt = swModel.Extension
Set Part = swApp.ActiveDoc
Set myModelView = Part.ActiveView

'Masseeinheit eine Dezimalstelle, Einheit auf kg setzen
myModelView.FrameState = swWindowState_e.swWindowMaximized
boolstatus = Part.Extension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swUnitSystem, 0, swUnitSystem_e.swUnitSystem_Custom)
boolstatus = Part.Extension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swUnitsMassPropDecimalPlaces, 0, 1)
boolstatus = Part.Extension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swUnitsMassPropMass, 0, swUnitsMassPropMass_e.swUnitsMassPropMass_Kilograms)

'Prüfung des SW-Dateityps, Makro nicht für Zeichnungen
Const swDocNONE = 0              ' Used to be TYPE_NONE
Const swDocPART = 1              ' Used to be TYPE_PART
Const swDocASSEMBLY = 2          ' Used to be TYPE_ASSEMBLY
Const swDocDRAWING = 3            ' Used to be TYPE_DRAWING
Const swDocSDM = 4                ' Solid data manager

' Zeiger auf aktives Dokument holen und überprüfen, ob überhaupt eins aktiv ist
    Set swModel = swApp.ActiveDoc
    If swModel Is Nothing Then
        MsgBox ("Kein Modell geöffnet")
        End
    End If

    ' Mit Zeichnungen geht's nicht
    If swModel.GetType() = swDocDRAWING Then
        MsgBox ("Das Makro funktioniert nicht mit Zeichnungen")
        End
    End If

' Benutzerdefinierte Dateiinformationen setzen
Set swCustProp = swModelDocExt.CustomPropertyManager("")
bool = swCustProp.Get4("Gewicht1", False, val, valout)
    Debug.Print "Value:                    " & val
    Debug.Print "Evaluated value:          " & valout
    Debug.Print "Up-to-date data:          " & bool
Wert = swCustProp.Add3("Gewicht1", 30, Chr(34) & "SW-Masse@" & swModel.GetTitle & swModel.GetPathName & Chr(34) & " kg", 1)
    Debug.Print "Wert geschrieben:        " & Wert
bool = swCustProp.Get4("Gewicht1", False, val, valout)
    Debug.Print "Value:                    " & val
    Debug.Print "Evaluated value:          " & valout
    Debug.Print "Up-to-date data:          " & bool
End Sub

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 05. Mai. 2022 10:39    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 Solid Worker 10 Unities + Antwort hilfreich

Hallo,

für dich zur Info warum "swModel.GetTitle" bei dir nicht so funktioniert wie bei anderen. Wenn du im Windows Exploder die Option "Erweiterungen bei bekannten Dateitypen ausblenden" aktiv hast wird dein Titel (der Titel vom SWX Fenster mit dem Dokument) ohne Dateierweiterung ausgegeben (weil ja bekannt), wenn du diese Option nicht aktiv hast wird dir die Dateierweiterung mit ausgegeben.

Diesen Tipp gebe ich dir, da man öffter mal über dieses verhalten stolpert, vor allem wenn mehrere Benutzer das Macro verwenden sollen.

Ich vermeide das verwenden von "GetTitle" ohne vorherige Prüfung ob die Dateierweiterung beinhaltet ist oder nicht.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

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