Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Dateinamen aus Dateieigenschaften erstellen

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
  
Cloud for All - Neue Vorteile in Ihrer SOLIDWORKS Lizenz
Autor Thema:  Dateinamen aus Dateieigenschaften erstellen (3488 mal gelesen)
Benny2k03
Mitglied
Maschinenbau-Techniker


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

Beiträge: 11
Registriert: 07.12.2011

erstellt am: 15. Jan. 2014 17: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

Hallo zusammen.

Ich arbeite mit SWX2013 SP0.0 und stehe im Moment vor der Aufgabe, dass ca. 300 Artikel als Step importiert und unter unserer Artikelnummer abgelegt werden müssen.

Zu diesem Zweck habe ich bereits eine Eigenschaftskarte erstellt, in der ich die entsprechenden Eingaben mache.

Ich suche nun nach einer Möglichkeit (z.B. Makro), mit der es möglich ist die importierte Step-Datei unter einem Dateinamen abzuspeichern, welcher sich aus unterschiedlichen Einträgen in den Bauteileigenschaften zusammen setzt.

Bsp.:

Eigenschaften:

Typ:  BS2
Durchmesser:  005
lfd. Nummer:  001
Material:  NBR
Rev. Stand:  R1
Vergleichsartikelnummer:  (1.012.03)

Der Dateiname sollte dann wie folgt lauten: BS2-005-001-NBR-R1-(1.012.03)

Die Ablage erfolgt in einem definierten Ordner (alle 300 Dateien)


Mit Makroprogrammierung habe ich nur sehr wenig Erfahrung. Daher bräuchte ich in diesem Bereich starke Unterstützung um es entsprechend umsetzen zu können.


Vielleicht hat ja jemand eine Idee wie dieses Problem zu lösen ist...dann müsste ich die Daten nur 1x eintragen und alles wird in den vorgesehenen Ordner kopiert.

Danke schonmal im Voraus.

Gruß
Benny

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

JoergKirchner
Mitglied
Dipl.-Ing.


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

Beiträge: 174
Registriert: 18.06.2001

SWX2022 Edu - Dell Precision M4800

erstellt am: 16. Jan. 2014 07: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 Benny2k03 10 Unities + Antwort hilfreich

Hallo, ein fertiges Programm wird dir wohl keiner schreiben ....
Ich stocher da auch immer nur so ein bischen rum. Meine "high end specialist resource" ist immer der Stefan Berlitz :-)

Da gibt es ein Macro das du dir anschauen solltes.

http://solidworks.cad.de/prog_schriftfeld.htm

Das füllt aus den eigenschaften Felder in der Maske, mit ein bischen umbennen füllt der bestimmt deine Daten da rein.
Dann nur noch unten den Dateinamen aus den Feldern zusammenbauen und wieder speichern. Nach ein paar Tagen üben bist du schlauer und fertig 

------------------
http://www.braun.com

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. Jan. 2014 11: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 Benny2k03 10 Unities + Antwort hilfreich

Hallo Benny

Im SWX-Forum gibt es dazu einen Thread -> https://forum.solidworks.com/thread/33314

Hier der VBA-Code aus der Lösung:

Code:
Sub main()
    Dim swApp As SldWorks.SldWorks
    Dim SWmoddoc As SldWorks.ModelDoc2
    Dim partnumber As String

    Set swApp = Application.SldWorks
    Set SWmoddoc = swApp.ActiveDoc

    'Use this....To Get the value from the Properties in the CUSTOM tab
    partnumber = SWmoddoc.CustomInfo("Number")

    'Or this....To Get the value from the Configuration Specific Tab
    'partnumber = SWmoddoc.GetCustomInfoValue("Default", "Number")

    'this gets the full path of the current open document (including filename)
    PathName = SWmoddoc.GetPathName

    'uses to full pathname to get the folder path, to be added to the save as file name
    Filepath = Left(PathName, InStrRev(PathName, "\"))

    If (SWmoddoc.GetType = swDocASSEMBLY) Then
        SWmoddoc.SaveAs (Filepath + partnumber + ".sldasm")
    ElseIf (SWmoddoc.GetType = swDocPART) Then
        SWmoddoc.SaveAs (Filepath + partnumber + ".sldprt")
    End If
End Sub


Gruss Andreas

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

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

Benny2k03
Mitglied
Maschinenbau-Techniker


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

Beiträge: 11
Registriert: 07.12.2011

erstellt am: 16. Jan. 2014 14: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

Hallo!

Danke erstmal für die schnelle Hilfe!!! Echt super!

Ich habe folgendes geschrieben, was soweit auch funktioniert:

Code:
Sub main()
    Dim swApp As SldWorks.SldWorks
    Dim SWmoddoc As SldWorks.ModelDoc2
 
    Set swApp = Application.SldWorks
    Set SWmoddoc = swApp.ActiveDoc

    'Modelleigenschaften auslesen
   
    Vergleichsartikelnummer = SWmoddoc.GetCustomInfoValue("Default", "Vergleichsartikelnummer")
    Saugertyp = SWmoddoc.GetCustomInfoValue("Default", "Saugertyp")
    Saugerdurchmesser = SWmoddoc.GetCustomInfoValue("Default", "Saugerdurchmesser")
    Nummer = SWmoddoc.GetCustomInfoValue("Default", "Nummer")
    Revisionsstand = SWmoddoc.GetCustomInfoValue("Default", "Revisionsstand")
    ' Material = SWmoddoc.GetCustomInfoValue("Default", "Material")
   
    ' Dateiname aus den Eigenschaften zusammensetzen und speichern
    SWmoddoc.SaveAs (Saugertyp + "-" + Saugerdurchmesser + "-" + Nummer + "-" + Revisionsstand + " (" + Vergleichsartikelnummer + ")" + ".sldprt")
   

End Sub


Was mir jetzt noch fehlen würde wären zwei Sachen:

1.) Die Datei muss in einen speziellen Ordner abgelegt werden. Den Pfad dazu kann ich im Makro fest vorgeben

2.) Es wäre schön wenn die Dateinamen vorher noch abgeglichen werden. Nicht das die Datei evtl. schon vorhanden ist und dann einfach überschrieben wird.

Ich habe mich an diesen zwei Punkten schon versucht, aber ohne die richtige Syntax habe ich das einfach nicht hinbekommen.

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 16. Jan. 2014 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 Benny2k03 10 Unities + Antwort hilfreich

Hallo Benny,

Zitat:
Original erstellt von Benny2k03:
1.) Die Datei muss in einen speziellen Ordner abgelegt werden. Den Pfad dazu kann ich im Makro fest vorgeben

Vorher eine Variable oder Konstante festlegen und im SaveAs eifach mit angeben:
Code:
Sub main()
    Dim swApp As SldWorks.SldWorks
    Dim SWmoddoc As SldWorks.ModelDoc2

    Dim Pfad as String
    Pfad = "c:\temp\"

 
    Set swApp = Application.SldWorks
    Set SWmoddoc = swApp.ActiveDoc

    'Modelleigenschaften auslesen
   
    Vergleichsartikelnummer = SWmoddoc.GetCustomInfoValue("Default", "Vergleichsartikelnummer")
    Saugertyp = SWmoddoc.GetCustomInfoValue("Default", "Saugertyp")
    Saugerdurchmesser = SWmoddoc.GetCustomInfoValue("Default", "Saugerdurchmesser")
    Nummer = SWmoddoc.GetCustomInfoValue("Default", "Nummer")
    Revisionsstand = SWmoddoc.GetCustomInfoValue("Default", "Revisionsstand")
    ' Material = SWmoddoc.GetCustomInfoValue("Default", "Material")
   
    ' Dateiname aus den Eigenschaften zusammensetzen und speichern
    SWmoddoc.SaveAs (Pfad & Saugertyp + "-" + Saugerdurchmesser + "-" + Nummer + "-" + Revisionsstand + " (" + Vergleichsartikelnummer + ")" + ".sldprt")
   

End Sub



Zur anderen Frage:
Zitat:
Original erstellt von Benny2k03:
2.) Es wäre schön wenn die Dateinamen vorher noch abgeglichen werden. Nicht das die Datei evtl. schon vorhanden ist und dann einfach überschrieben wird.

Auf http://www.vb-tec.de/fdexists.htm sind einige schöne, kurze Funktionen für so etwas, z.B. die FileExists. Die einfach mit ins Makro hängen und vorher damit checken

Code:
Sub main()
    [...]
    Dim FileFullPath as string
    FileFullPath = Pfad & Saugertyp + "-" + Saugerdurchmesser + "-" + Nummer + "-" + Revisionsstand + " (" + Vergleichsartikelnummer + ")" + ".sldprt"

    If FileExists(FileFullPath) Then
        Msgbox "Ups, Datei existiert schon und ein Überschreiben würde ein Loch im Raum-Zeit-Kontinuum aufreißen ..."
    Else

        ' Dateiname aus den Eigenschaften zusammensetzen und speichern
        SWmoddoc.SaveAs FileFullPath
    End If
End Sub
   
Public Function FileExists(Path As String) As Boolean
  Const NotFile = vbDirectory Or vbVolume

  On Error Resume Next
    FileExists = (GetAttr(Path) And NotFile) = 0
  On Error Goto 0
End Function



Ich hab's jetzt einfach so im Beitragseditor runtergeschrieben, also kann sein, das irgendwelche Syntaxfehler drin, aber ich denke, du bekommst eine Idee wie es funktionieren kann.

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

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

JoergKirchner
Mitglied
Dipl.-Ing.


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

Beiträge: 174
Registriert: 18.06.2001

SWX2022 Edu - Dell Precision M4800

erstellt am: 16. Jan. 2014 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 Benny2k03 10 Unities + Antwort hilfreich

Ist doch schön wenn man fließend VB sprechen kann .... 

------------------
http://www.braun.com

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

Benny2k03
Mitglied
Maschinenbau-Techniker


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

Beiträge: 11
Registriert: 07.12.2011

erstellt am: 16. Jan. 2014 21: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

Danke, das funktioniert nach ein bischen Anpassung bis auf ein kleines Detail genau so wie ich mir das gedacht habe! 

Ein Problem ist jetzt jedoch noch, dass der Dateiname zwar überprüft wird und auch das Loch im Raum Zeit Kontinuum entsteht, sprich die Fehlermeldung kommt, die Datei aber dennoch überschrieben wird. Dabei ist egal ob man die Meldung mit OK oder "X" abschließt. Schöner wäre natürlich wenn der Speichervorgang nicht zu Ende gebracht werden würde. Den Meldetext könnte man entsprechend anpassen, sodass man weiß das man die Eigenschaften ändern muss um einen validen Dateinamen zu bekommen.

Die Königsklasse wäre natürlich noch wenn man einen bestimmten String hier z.B. 001 abfragen könnte, da es sich hier um eine in den Eigenschaften manuell eingegebene fortlaufende Nummer handelt, welche nur ein mal existieren sollte. Dann wären alle Fehlermöglichkeiten was die Dateiablage angeht gelöst!

Ich habe mich ja noch nie wirklich mit dem Thema VBA auseinandergesetzt, aber ich finde selbst an so einem kleinen Beispiel die Möglichkeiten fantastisch...und das ist ja nur die Spitze des Eisberges! :-)

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 20. Jan. 2014 09: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 Benny2k03 10 Unities + Antwort hilfreich

Hallo Benny,

Zitat:
Original erstellt von Benny2k03:
[...] die Datei aber dennoch überschrieben wird. Dabei ist egal ob man die Meldung mit OK oder "X" abschließt.

Die Königsklasse wäre natürlich noch wenn man einen bestimmten String hier z.B. 001 abfragen könnte, da es sich hier um eine in den Eigenschaften manuell eingegebene fortlaufende Nummer handelt, welche nur ein mal existieren sollte. Dann wären alle Fehlermöglichkeiten was die Dateiablage angeht gelöst!



Zum ersten Teil: dann machst du zwar die Abfrage, ignorierst aber die Antwort. Bei der Variante wie oben in meinem Beitrag wäre das unmöglich, weil entweder (if) die Meldung kommt oder (else) die Datei gespeichert wird.

Da musst du also irgendwo in deinem Code was falsch haben, und das ist ohne deinen Code nicht so einfach zu sehen.

Das zweite ist auch nicht schwieriger, ob du nun einen String vergleichst oder auf die Existenz einer Datei prüfst, du musst nur die Logik in deinem Code richtig hinbekommen.

Zitat:
Original erstellt von Benny2k03:
Ich habe mich ja noch nie wirklich mit dem Thema VBA auseinandergesetzt, aber ich finde selbst an so einem kleinen Beispiel die Möglichkeiten fantastisch...und das ist ja nur die Spitze des Eisberges! :-)

Oh ja, das ist nur die Spitze des Eisbergs. Programmieren ist nicht so schwer, die ersten Schritte sind manchmal etwas mühsam, wenn man sich gleichzeitig an Syntax (wie wird was geschrieben) und Semantik (was bedeutet es, welche Logik steckt dahinter) heranwagt.

Falls du erst mal ein wenig spielerisch die ersten Schritte Richtung Programmierung angehen willst empfehle ich so etwas wie http://code.org/learn . Auch Robomind oder Lightbot finde ich toll, und wir verraten einfach keinem, dass das hauptsächlich für Kinder als Einsteig ins Programmieren entwickelt wurde und deswegen mehr Spaß macht als VBA-Syntax zu lernen   

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

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