Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Makros für Eigenschaten mit Verweisen

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: SOLIDWORKS - DFMXpress
Autor Thema:   Makros für Eigenschaten mit Verweisen (201 mal gelesen)
Malte70
Mitglied
Konstrukteur


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

Beiträge: 29
Registriert: 11.11.2020

PC1
AMD Threadripper 1020X 12-Core
G.Skill 64GB DDR4
ASUS RX570 4GB
1TB SSD M2
Windows 10 Pro
Inventor 2018
Inventor 2017
Solidworks 2015
Solidworks 2020
Solidworks 2018
SW PDM 2015 und 2020<P>Logitrace V.12
Autocad R13
Autocad 2017
Office 2019<P>Baugruppen meist ab 20.000 Teile

erstellt am: 12. Nov. 2020 08:17    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,

ich habe ein Macro umgeschrieben, das mir die Eigenschaften "säubert"

nun wollte ich einen Materialverweis und ein Gewichtsverweis auf den Strukturbaum einbauen.
Bedeutet, das sollte nachher in den Eigenschaften so aussehen:

Gewicht         Text "SW-Mass@Teil.SLDPRT"       0.00
Material Text "SW-Material@Teil.SLDPRT"

wie mache ich das(wie und wo füge ich das ein)   

Sub main()
Set swApp = Application.SldWorks
    
    Dim FileName As String
    Dim Errors As Long
    Errors = 0
    Dim Warnings As Long
    Warnings = 0
    Dim strOrdnerName As String
    Dim strName As String
    Dim intz As Integer
    strOrdnerName = "C:\Zwischenordner\Strukturbauteile\DIN\UNP\"
    strName = Dir(strOrdnerName & "*.sldlfp")
    
        Do While strName <> ""
            FileName = strOrdnerName & strName
            If FileName = strOrdnerName Then
            Exit Do
            End If
            Set ModelDoc = swApp.OpenDoc6(FileName, 1, 0, "", Errors, Warnings)
            swApp.ActivateDoc2 strName, False, Errors
            Dim val As String
            Dim valout As String
            Dim boolstatus As Boolean
            Set swModelDocExt = ModelDoc.Extension
            Set swCustProp = swModelDocExt.CustomPropertyManager("")
            boolstatus = swCustProp.Get4("Oberflächenbehandlung", False, val, valout)
            boolstatus = ModelDoc.DeleteCustomInfo("Oberflächenbehandlung")
            boolstatus = swCustProp.Get4("Oberflächenbehandlung", False, val, valout)
           
            boolstatus = swCustProp.Get4("Gewicht", False, val, valout)
            boolstatus = ModelDoc.DeleteCustomInfo("Gewicht")
            boolstatus = swCustProp.Get4("Gewicht", False, val, valout)
           
            boolstatus = swCustProp.Get4("Beschreibung", False, val, valout)
            boolstatus = ModelDoc.DeleteCustomInfo("Beschreibung")
            boolstatus = swCustProp.Get4("Beschreibung", False, val, valout)
           
            boolstatus = swCustProp.Get4("Material", False, val, valout)
            boolstatus = ModelDoc.DeleteCustomInfo("Material")
            boolstatus = swCustProp.Get4("Material", False, val, valout)
            boolstatus = ModelDoc.AddCustomInfo("Material", "Text", "  " & val)
           
            boolstatus = swCustProp.Get4("Norm", False, val, valout)
            boolstatus = ModelDoc.DeleteCustomInfo("Norm")
            boolstatus = swCustProp.Get4("Norm", False, val, valout)
            boolstatus = ModelDoc.AddCustomInfo("Norm", "Text", "DIN1026-1 " & val)
           
            boolstatus = swCustProp.Get4("Abmessung", False, val, valout)
            boolstatus = ModelDoc.DeleteCustomInfo("Abmessung")
            boolstatus = swCustProp.Get4("Abmessung", False, val, valout)
           
            boolstatus = swCustProp.Get4("Abmessungen", False, val, valout)
            boolstatus = ModelDoc.DeleteCustomInfo("Abmessungen")
            boolstatus = swCustProp.Get4("Abmessungen", False, val, valout)
            boolstatus = ModelDoc.AddCustomInfo("Abmessung", "Text", "UPN " & val)
           
            boolstatus = swCustProp.Get4("Benennung", False, val, valout)
            boolstatus = ModelDoc.DeleteCustomInfo("Benennung")
            boolstatus = swCustProp.Get4("Benennung", False, val, valout)
            boolstatus = ModelDoc.AddCustomInfo("Gewicht", "Text", "  " & val)
           
            boolstatus = swCustProp.Get4("Description", False, val, valout)
            boolstatus = ModelDoc.DeleteCustomInfo("Description")
            boolstatus = ModelDoc.AddCustomInfo("Benennung", "Text", "UPN-Profil " & val)
            boolstatus = swCustProp.Get4("Description", False, val, valout)
            longstatus = ModelDoc.SaveAs3(FileName, 0, 2)
          
          
            Debug.Print (strName & " ==> " & val & " ==> " & valout)
          
            Dim Titel As String
            Titel = ModelDoc.GetTitle
            swApp.CloseDoc Titel
            strName = Dir
        Loop
End Sub

[Diese Nachricht wurde von Malte70 am 12. Nov. 2020 editiert.]

[Diese Nachricht wurde von Malte70 am 12. Nov. 2020 editiert.]

[Diese Nachricht wurde von Malte70 am 12. Nov. 2020 editiert.]

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

ad_man
Mitglied
freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))


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

Beiträge: 1221
Registriert: 20.12.2003

SolidWorks 2020 SP5 mit Enterprise PDM , Windows 10 x64, HP ZBook 17 G4, i7-7820HQ, 32 GB DDR-Ram, Quadro P-3000

erstellt am: 12. Nov. 2020 14: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 Malte70 10 Unities + Antwort hilfreich

Hallo Malte,

erst einmal "Herzlich willkommen im SWX-Board" 
Schau mal in das Beispiel

http://help.solidworks.com/2020/english/api/sldworksapi/add_and_get_custom_properties_example_vb.htm

Dort findest du Hinweise, wie das in SWX gemacht wird 
Und du solltest deinen Code noch mal durchschauen, da sind eine Menge
unsinnige Befehle drin. So zum Beispiel hier:

Code:

strName = Dir(strOrdnerName & "*.sldlfp")

Du rufst zum einen nicht ein Teil sondern ein Bibliotheksfeature auf.
Zum anderen erschliesst sich der Sinn des * nicht. Willst du alle
Bibliotheksfeature aufrufen? Das musst du unter VBA anders lösen. Ich
gehe auch davon aus, dass es hier zu einem Fehler kommt, hab es aber noch
nicht ausprobiert.

In den Zeilen

Code:
boolstatus = swCustProp.Get4("Oberflächenbehandlung", False, val, valout)
boolstatus = ModelDoc.DeleteCustomInfo("Oberflächenbehandlung")
boolstatus = swCustProp.Get4("Oberflächenbehandlung", False, val, valout)

rufst du zwei mal die Property Oberflächenbehandlung auf. Dazwischen wird
dann mit einem "alten" Befehl die Property gelöscht. Warum 
Das sieht ein wenig nach "Cut&Paste bis der Arzt kommt" aus. Nicht falsch
verstehen, aber du solltest dich in das Thema "Programmieren mit VBA"
noch ein wenig einarbeiten.

------------------
==========
Gruß
Andreas
==========

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

Malte70
Mitglied
Konstrukteur


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

Beiträge: 29
Registriert: 11.11.2020

PC1
AMD Threadripper 1020X 12-Core
G.Skill 64GB DDR4
ASUS RX570 4GB
1TB SSD M2
Windows 10 Pro
Inventor 2018
Inventor 2017
Solidworks 2015
Solidworks 2020
Solidworks 2018
SW PDM 2015 und 2020<P>Logitrace V.12
Autocad R13
Autocad 2017
Office 2019<P>Baugruppen meist ab 20.000 Teile

erstellt am: 12. Nov. 2020 14: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

Schonmal vielen vielen Dank,

Ja, sind Bibliotheksfeatures

Die SW Beispiele hab ich schon gefunden, konnte nur nix damit anfangen  

Copy,Cut& Paste bis der Arzt kommt stimmt schon  
das mit dem einarbeiten ist auch vollkommen richtig (Anfänger)
habe diese Woche mit dem umschreiben angefangen und vor ein paar Jahren mal die ersten 3 Seiten von einem VB Wälzer gelesen.

das Programm läuft bis hier einwandfrei.

nur die Materialeigenschaften fehlen mir

In den Zeilen

Code:

    boolstatus = swCustProp.Get4("Oberflächenbehandlung", False, val, valout)
    boolstatus = ModelDoc.DeleteCustomInfo("Oberflächenbehandlung")
    boolstatus = swCustProp.Get4("Oberflächenbehandlung", False, val, valout)

habe ich ein Property drin was blödsinn ist, das soll halt raus.

wenn ich das nicht tue, dann lässt er den wert stehen.

(hab zwar fast keine Ahnung davon aber ich glaube er schaut nach, welcher wert (in dem falle keiner, weil er ja gelöscht wurde)
drin steht und schreib diesen dann in die Eigenschaften.


[Diese Nachricht wurde von Malte70 am 12. Nov. 2020 editiert.]

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)2020 CAD.de | Impressum | Datenschutz