| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| PLM TechnologieForum Hannover |
Autor
|
Thema: API ListBox/Dateipfad und txt Datei füllen (3586 mal gelesen)
|
Lunik Mitglied Konstrukteur
Beiträge: 44 Registriert: 05.07.2017 Hardware -Intel Xeon W2123 -Nvidia Quadro P2000 -32GB RAM --------------------- Software -Windows 10 Professional 64bit -SolidWorks 2018 SP5.0 -Office 2010 --------------------- Sonstiges -SpaceMousePro Wireless -CadMouse Wireless
|
erstellt am: 10. Aug. 2018 15:00 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, vorweg erst einmal bitte zerreißt das Makro nicht in der Luft, ich habe aus verschiedensten Makros Code übernommen und zusammengefügt, ggf. ergänzt. Daher kann man einiges bestimmt besser/kürzer schreiben aber so wie es ist funktioniert es zumindest. Nun zu meinen eigentlichen Problemen. Ich bin momentan daran ein Schriftfeldmakro zu erstellen und bin auch schon recht weit gekommen. Allerdings habe ich folgende Probleme, und ich hoffe ihr könnt mir helfen oder zumindest ansätze anbieten: 1. Einträge aus ListBox wieder in .txt Datei schreiben Ich habe je eine ListBox unter „Auswahleigenschaften editieren“ > „Liste laden“. Dort werden alle Einträge aufgelistet, die in einer extra .txt Datei liegen. Mit dem Button „löschen“ kann ich auch einen Eintrag aus der ListBox entfernen, allerdings bekomme ich es nicht wieder hin die ListBox in die Textdatei zu schreiben, sodass der Eintrag gelöscht wurde. 2. Variabler Pfad für die .txt Dateien Wie oben schon erwähnt greift das Makro auf einige .txt Dateien zu. Momentan habe ich den Pfad fix bei jedem Aufruf vergeben. Ich hätte aber gerne den Pfad einmal global angelegt, sodass ich später nur noch einen Variablen Aufruf + „\NamederTexdatei“ machen muss. Habe ich auch schon versucht, allerdings zeigt er immer an das der Pfad „leer“ ist. Durch den variablen Pfad möchte ich später den Ordner mit dem Makro und den .txt Dateien verschieben können wie ich möchte ohne den Pfad überall neu definieren zu müssen. 3. Kalender optisch anpassen Ich habe aus dem Englischen Forum, leider weis ich den Beitrag nichtmehr, einen Code für einen Kalender. Diesen habe ich auch erfolgreich eingefügt, allerdings sind mir die beiden oberen Textboxen zu klein. Wie kann ich diese verschieben + vergrößern. Bzw. wie kann ich allgemein die Optik des Kalenders anpassen? Muss ich dazu in cCalender alle einzelnen werte bearbeiten? Der Kalender wird aufgerufen indem man in der UserForm „EigenschaftenUF“ in die TextBox von z.B. „Gezeichnet am“ klickt. Anbei noch das Makro und eine .txt Datei, es dürfen gerne weiter Verbesserungsvorschläge gemacht werden wenn jemand Lust hat drüber zu schauen Danke jetzt schon einmal für eure Mühe!
Gruß
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 10. Aug. 2018 17:54 <-- editieren / zitieren --> Unities abgeben: Nur für Lunik
Hallo, 1 - ähm ... schau mal was freefile macht - bestimmt nicht 'Textdatei leeren, wie du dahinter geschrieben hast. und append hängt immer hinten dran, wenn ich es recht in Erinnerung habe. Wie wäre es mit "file löschen" und einfach ein neues anlegen? 2 - hast du mal GetCurrentMacroPathFolder probiert? damit könntest du eine ini-Datei oder andere Dateien im gleichen Ordner ansprechen wie das Makro liegt. 3 - weiß auch nicht Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 13. Aug. 2018 07:11 <-- editieren / zitieren --> Unities abgeben: Nur für Lunik
Hallo, zu 1. wie Christian schon geschrieben hat. Wenn Du einen Text-Datei als "Konfigurations-Datei" hast und Einträge löschen möchtest bleibt Dir nur, die komplette Datei neu zu erstellen. Alternativen wären z.B: eine Excel-Datei, eine XML-Datei oder eine Datenbank zu verwenden das ist dann allerdings etwas aufwendiger zu programmieren zu 2. wie Christian geschrieben hat GetCurrentMacroPathFolder zu 3. geht es darum, das Erstellungsdatum der Zeichnung einzutragen? Wenn ja, dann lässt sich das ja auch autom. ermitteln z.B.: Dim oFSO As Object Dim oF As Object Set oFSO = CreateObject("Scripting.FileSystemObject") Set oF = oFSO.GetFile(Dateiname inkl. Pfad) Debug.Print oF.DateCreated Debug.Print oF.DateLastModified
------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 13. Aug. 2018 07:33 <-- editieren / zitieren --> Unities abgeben: Nur für Lunik
Hallo, zu 1. Ich habe mal google bemüht und folgendes gefunden zum löschen von Einträgen in Text-Datein. Hier entlang Ich bevorzuge für sollche Aufgaben aber das CSV Format, da es im Gegensatz zu Excel nicht geöffnet werden muss um es zu bearbeiten. 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 |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 13. Aug. 2018 15:30 <-- editieren / zitieren --> Unities abgeben: Nur für Lunik
Zitat: Original erstellt von bk.sc: ... Ich bevorzuge für sollche Aufgaben aber das CSV Format, da es im Gegensatz zu Excel nicht geöffnet werden muss um es zu bearbeiten. ...
It's Magic ... du löscht darin eine Zeile ohne die Datei zu öffnen? Gruß, Christian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christoph Weise Mitglied Technischer Produktdesigner / Konstruktion / CAD-Admin
Beiträge: 204 Registriert: 22.03.2015 Dell 3650 Intel I7 11700k 32 GB RAM Nvidia RTX A4000 16GB Win 10 22H2 64-bit SolidWorks 2022SP5 QuickPress 6.3.3 PortaX 2.27 SAP ERP 6.0
|
erstellt am: 13. Aug. 2018 17:12 <-- editieren / zitieren --> Unities abgeben: Nur für Lunik
Hallo Lunik, zu 1. Die Problematik wegen der Listbox habe ich ähnlich, allerdings gebe ich vor was die Kollegen eintragen können. Die Kollegen können allerdings nicht selbst die Vorlagen ändern. Gesteuert wird das bei mir über eine einfache Text Datei. Bei Bedarf könnte man diese auch jedesmal neu erstellen wenn sich etwas ändert. Ich habe das bei mir bei einer anderen Funktion so gelöst: Code: Open Replace(swApp.GetCurrentMacroPathName, "Dateieigenschaften_füllen.swp", "Fehlende Bezeichnung.txt") For Append As 1 Debug.Print cmdMARA_TEXT_DE.Text, ";", cmdMARA_TEXT_EN.Text Print #1, cmdMARA_TEXT_DE.Text, ";", cmdMARA_TEXT_EN.Text
Das ganze hängt an die Text Datei einfach eine Zeile dran. Gesteuert wird das Verhalten über "for Append" (Wie Christian schon erwähnt hat). zu 2. Da mache ich es in jedem Makro so wie es Christian geschrieben ist. Vorteil dabei ist, man kann das Makro(inkl. Text Dateien) so viel verschieben wie man will und es funktioniert immer. zu 3. Zum Kalender an sich habe ich keine Idee. Bei uns ist es so das einfach das aktuelle Datum eingetragen wird, und sich keiner Gedanken um ein paar Stunden hin oder her macht. Gruß Christoph ------------------ Wer einen Fehler findet darf ihn behalten, wer zwei findet kann beide behalten, ab fünf Fehler gibs Rabatt :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 13. Aug. 2018 18:14 <-- editieren / zitieren --> Unities abgeben: Nur für Lunik
Hallo Bernd, das Beispiel auf das Du hier verlinkst, erstellt aber auch nur die Datei einfach neu
Zitat: Original erstellt von bk.sc: Hallo,zu 1. Ich habe mal google bemüht und folgendes gefunden zum löschen von Einträgen in Text-Datein. Hier entlang
------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 14. Aug. 2018 07:33 <-- editieren / zitieren --> Unities abgeben: Nur für Lunik
Zitat: It's Magic ... du löscht darin eine Zeile ohne die Datei zu öffnen?
Zitat: das Beispiel auf das Du hier verlinkst, erstellt aber auch nur die Datei einfach neu
Morgen Christian und Heinz, ok hab eben mal in die Codes geschaut und die Datein werden ja doch entweder geöffnet oder ersetzt, nur eben nicht sichtbar. 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 |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 14. Aug. 2018 09:43 <-- editieren / zitieren --> Unities abgeben: Nur für Lunik
Zitat: Original erstellt von bk.sc: ... entweder geöffnet oder ersetzt, nur eben nicht sichtbar.
Hallo Bernd, der große Vorteil ist IMHO, dass sie direkt von VBA geöffnet werden, anstatt erst ein Application-Objekt aufzumachen (Excel) und dann mit den Excel-Funktionen da drin herumzumachen. so hatte ich deine Bemerkung zumindest verstanden, aber sie war halt anders formuliert Das Beispiel mit dem komplett einlesen und split find ich persönlich sehr schön! Danke dafür Gruß, Christian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lunik Mitglied Konstrukteur
Beiträge: 44 Registriert: 05.07.2017 Hardware -Intel Xeon W2123 -Nvidia Quadro P2000 -32GB RAM --------------------- Software -Windows 10 Professional 64bit -SolidWorks 2018 SP5.0 -Office 2010 --------------------- Sonstiges -SpaceMousePro Wireless -CadMouse Wireless
|
erstellt am: 27. Aug. 2018 07:47 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, danke für eure Antworten. Erst einmal Entschuldigung dass ich mich nicht gemeldet habe, ich war im Urlaub und hatte keinen Zugang. Ich werde eure Vorschläge mal anschauen und versuchen umzusetzen. Bezüglich Punkt 3. meinte ich eigentlich nur, das ich die die Optik anpassen kann, da mir die Comboboxen oben rechts zu klein sind. Gruß
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lunik Mitglied Konstrukteur
Beiträge: 44 Registriert: 05.07.2017 Hardware -Intel Xeon W2123 -Nvidia Quadro P2000 -32GB RAM --------------------- Software -Windows 10 Professional 64bit -SolidWorks 2018 SP5.0 -Office 2010 --------------------- Sonstiges -SpaceMousePro Wireless -CadMouse Wireless
|
erstellt am: 27. Aug. 2018 14:50 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, habe nun als erstes Versucht den Dateipfad auszulesen, und mir Testweise in einer MgsBox anzeigen zu lassen. Leider führt GetCurrentMacroPathFolder zu einer leeren MsgBox... Habe es auch mal an "richtiger" Stelle eingesetzt, leider ohne Erfolg. Wo liegt mein Fehler? Zu meinem Punkt 1, der ListBox habe ich immer noch keine Lösung. Ich habe es mittlerweile hinbekommen die Datei zu löschen und eine neue zu erstellen, allerdings bekomme ich die Einträge aus der ListBox nicht in die .txt Datei geschrieben. Es schreibt allerhöchstens den ersten Eintrag hinein... Jemand eine Lösung für mich, oder zumindest einen Vorschlag? Bin momentan ein wenig am Verzweifeln da ich fast fertig bin aber eben diese Kleinigkeiten nicht funktionieren... Gruß
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Maler Mitglied Konstrukteur / CAD-Admin / Mädchen für alles
Beiträge: 720 Registriert: 17.01.2007 SWX 2019 SP5 AutoCAD 2019 Win 10 pro 64 bit Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz 64GB RAM Nvidia Quadro M5000 SWx EPDM
|
erstellt am: 27. Aug. 2018 16:17 <-- editieren / zitieren --> Unities abgeben: Nur für Lunik
Zitat: Original erstellt von Lunik: Zu meinem Punkt 1, der ListBox habe ich immer noch keine Lösung. Ich habe es mittlerweile hinbekommen die Datei zu löschen und eine neue zu erstellen, allerdings bekomme ich die Einträge aus der ListBox nicht in die .txt Datei geschrieben. Es schreibt allerhöchstens den ersten Eintrag hinein... Jemand eine Lösung für mich, oder zumindest einen Vorschlag?
https://msdn.microsoft.com/de-de/VBA/Language-Reference-VBA/articles/printstatement Statt des mehrmaligen Print #1 einfach eine for-Schleife einbauen, die durch alle Elemente der Listbox geht und diese als Zeile in die txt schreibt: Code:
Open "TESTFILE" For Output As #1 ' Open file for output. TESTFILE = path For i = 0 To listbox.count Print #1, listbox.listindex(i) ' Print text to file. Next i Close #1
(Das wirst du umschreiben müssen, ist aus dem Gedächtnis geschrieben, aber die Richtung sollte klar sein...) Der Output-Befehl fängt jedesmal bei der ersten Zeile an. Wenn du etwas "unten" an die txt anhängen willst, muss du stattdessen "append" verwenden. Gruß, Jens ------------------ CSWE =) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 28. Aug. 2018 10:03 <-- editieren / zitieren --> Unities abgeben: Nur für Lunik
|
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 28. Aug. 2018 10:22 <-- editieren / zitieren --> Unities abgeben: Nur für Lunik
OK, mal ein bisschen detaillierter (soweit du das möglich machst) Zitat: ... habe nun als erstes Versucht den Dateipfad auszulesen, und mir Testweise in einer MgsBox anzeigen zu lassen. Leider führt GetCurrentMacroPathFolder zu einer leeren MsgBox...
fast guter Ansatz - aber IMHO sind da 2 Schritte notwendig. 1) was sagt denn "debug.print swapp.getcurrentmacropathname" ? oder mach einen Stop an der Stelle und schau mit dem Mauszeiger, was es zurückgeliefert hat. 2) wie setzt du es in deine Msgbox ? Zitat: ... Habe es auch mal an "richtiger" Stelle eingesetzt, ...
"richtig" - dein richtig? mein richtig? oder das von SolidWorks? Gruß, Christian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lunik Mitglied Konstrukteur
Beiträge: 44 Registriert: 05.07.2017 Hardware -Intel Xeon W2123 -Nvidia Quadro P2000 -32GB RAM --------------------- Software -Windows 10 Professional 64bit -SolidWorks 2018 SP5.0 -Office 2010 --------------------- Sonstiges -SpaceMousePro Wireless -CadMouse Wireless
|
erstellt am: 28. Aug. 2018 15:10 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, danke für eure Hilfe. die For Schleife hatte ich schon mal drin, bleibe aber jedes Mal am Print hängen... (siehe Bild1) Der Code dazu wäre: '____________________Textdatei löschen______________________________ Kill "P:\solidworks\Vorlagen\Makros\Schriftfeld\Auswahldateien\Lieferanten.txt" 'Textdatei löschen Open Dateipfad For Append As #1 For i = 0 To LBLF.ListCount 'LBLF.ListCount - 1 'für jede Zeile der Listbox ' LBLF.Selected(i) = True '____________________Lieferanten aus Liste eintragen______________________________ Print #1, LBLF.ListIndex(i) 'Print #1, Chr(10) & txt Next i Close #1 Zum Thema Pfad, tut mir leid dass ich euch die Mühe gemacht habe. Ich habe mich immer gewundert warum er es nicht nimmt, dabei hab ich einfach nur swApp vergessen hinzuschreiben . Dank Christian hab ich mir nochmal alles genau angeschaut und jetzt geht es, danke!
Wenn jetzt das mit der ListBox noch funktionieren würde, wäre meine Woche gerettet! Gruß
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Spirou85 Mitglied Konstruktuer und CAD-Betreuer
Beiträge: 70 Registriert: 01.12.2014 HP ZBook 15 G5 Intel Xeon 2,9 GHz - 32GB Ram NVIDIA Quadro P2000M Windows 10 Pro 64Bit Version 1809 Build 17763.1098 SWX2020-64Bit-SP1.0 MaxxDB 2020 SP0.06 DraftSight Enterprise 2019 x64 SP3 3DCONNEXION SpaceMouse Enterprise mit CadMouse
|
erstellt am: 29. Aug. 2018 15:25 <-- editieren / zitieren --> Unities abgeben: Nur für Lunik
Hallo Lunik, Auf die einzelnen Listboxelemente kannst Du über die List-Eigenschaft zugreifen. Ändere Deinen Code in folgendes: Code:
For i=0 to LBLF.ListCount - 1 Print #1, LBLF.List (i, 0) Next i Close #1
Einlesen am besten mit Line Input, so musst Du die chr(10) nicht beachten.
------------------ Viele Grüße aus Brackenheim Lars Pauly Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lunik Mitglied Konstrukteur
Beiträge: 44 Registriert: 05.07.2017 Hardware -Intel Xeon W2123 -Nvidia Quadro P2000 -32GB RAM --------------------- Software -Windows 10 Professional 64bit -SolidWorks 2018 SP5.0 -Office 2010 --------------------- Sonstiges -SpaceMousePro Wireless -CadMouse Wireless
|
erstellt am: 30. Aug. 2018 12:59 <-- editieren / zitieren --> Unities abgeben:
Hallo Lars, habe es gerade getestet und es funktioniert, vielen Dank dafür! Allerdings verstehe ich nicht ganz den Unterschied, was macht dein Code großartig anders als meiner? Wenn du mir das erkären könntest wärs echt nett. Gruß Lukas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Spirou85 Mitglied Konstruktuer und CAD-Betreuer
Beiträge: 70 Registriert: 01.12.2014 HP ZBook 15 G5 Intel Xeon 2,9 GHz - 32GB Ram NVIDIA Quadro P2000M Windows 10 Pro 64Bit Version 1809 Build 17763.1098 SWX2020-64Bit-SP1.0 MaxxDB 2020 SP0.06 DraftSight Enterprise 2019 x64 SP3 3DCONNEXION SpaceMouse Enterprise mit CadMouse
|
erstellt am: 30. Aug. 2018 13:27 <-- editieren / zitieren --> Unities abgeben: Nur für Lunik
Bei der Hilfe zu der ".ListIndex"-Eigenschaft wird nicht erwähnt, dass man auf die Listenelemente zugreifen kann, sondern das hier der Index des aktuell ausgewählten Elemntes abgefragt oder gesetzt werden kann. Verwendet man im Code ".ListIndex(i)" erhält man einen Lazfzeitfehler 13. Diese Eigenschaft gibt es nicht. Zum zugreifen auf die Listenelemente ist die ".List(i)"-Eigenschaft da. ------------------ Viele Grüße aus Brackenheim Lars Pauly Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lunik Mitglied Konstrukteur
Beiträge: 44 Registriert: 05.07.2017 Hardware -Intel Xeon W2123 -Nvidia Quadro P2000 -32GB RAM --------------------- Software -Windows 10 Professional 64bit -SolidWorks 2018 SP5.0 -Office 2010 --------------------- Sonstiges -SpaceMousePro Wireless -CadMouse Wireless
|
erstellt am: 30. Aug. 2018 15:19 <-- editieren / zitieren --> Unities abgeben:
|
Lunik Mitglied Konstrukteur
Beiträge: 44 Registriert: 05.07.2017 Hardware -Intel Xeon W2123 -Nvidia Quadro P2000 -32GB RAM --------------------- Software -Windows 10 Professional 64bit -SolidWorks 2018 SP5.0 -Office 2010 --------------------- Sonstiges -SpaceMousePro Wireless -CadMouse Wireless
|
erstellt am: 05. Sep. 2018 13:08 <-- editieren / zitieren --> Unities abgeben:
Noch einmal Hallo zusammen, ich habe endlich mein Makro fertig, und es funktioniert so wie ich mir das vorstelle, naja fast. Es ist lediglich ein Schönheitsfehler allerdings wäre es gut wenn das auch noch behoben werden könnte. Und zwar geht es um folgendes: Wenn ich die Dateieigenschaften per Makro schreibe und dann die Registrierkarte Benutzerdefinierte Eigenschaften aufrufe sind diese leer. Man muss erst einmal unten auf weitere Eigenschaften, das sich öffnende Fenster wieder schließen, um dann dort auch die eingetragenen Werte zu sehen. Gibt es eine Möglichkeit dies per Makro zu machen oder eine Einstellung dass es sich automatisch aktualisiert? Grüße Lukas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 05. Sep. 2018 13:48 <-- editieren / zitieren --> Unities abgeben: Nur für Lunik
Bit welchem Befehl erstellt Du die Eigenschaften? Erstellst Du sie in einem Teil oder in einer Zeichnung? Wenn in einem Teil, erstellst sie auch in der richtigen Konfiguration? ------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lunik Mitglied Konstrukteur
Beiträge: 44 Registriert: 05.07.2017 Hardware -Intel Xeon W2123 -Nvidia Quadro P2000 -32GB RAM --------------------- Software -Windows 10 Professional 64bit -SolidWorks 2018 SP5.0 -Office 2010 --------------------- Sonstiges -SpaceMousePro Wireless -CadMouse Wireless
|
erstellt am: 05. Sep. 2018 13:59 <-- editieren / zitieren --> Unities abgeben:
Ich schreibe die Eigenschaften mit: Model.CustomInfo2(glbConfName, "Eigenschaftsname") = Eingabefeld.text dummy = Model.AddCustomInfo3(glbConfName, "Eigenschaftsname", swCustomInfoText, Eingabefeld.text) In Teilen und Baugruppen, nicht in Zeichnungen. Es sind keine Konfigurationsspezifischen Eigenschaften sondern Benutzerdefinierte. Und ja sie werden bei den Benutzerdefierten hineingeschrieben. Grüße Lukas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HenryV Mitglied Konstrukteur, Engineering
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. Sep. 2018 14:01 <-- editieren / zitieren --> Unities abgeben: Nur für Lunik
|
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 05. Sep. 2018 15:24 <-- editieren / zitieren --> Unities abgeben: Nur für Lunik
Hallo Lukas, lt. Onlinehilfe (SWX 2016) ist "AddCustomInfo3" veraltet! siehe Bild um auf die Eigenschaften zuzugreifen sollte "CustomPropertyManager" verwendet werden. Und damit klappt es auch ohne Rebuild, wie im Beispiel unten ich habe die Erfahrung gemacht, dass - aufgekündigte Funktionen, besser nicht mehr genutzt werden sollten - wenn man Codeschnipsel aus dem WWW kopiert und diese nicht funktionieren, man mal in der Online Hilfe nachschauen sollte Sub main() Dim swApp As SldWorks.SldWorks Dim swModel As ModelDoc2 Dim exten As ModelDocExtension Dim propmngr As CustomPropertyManager
Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set exten = swModel.Extension Set propmngr = exten.CustomPropertyManager("") ergebnis = propmngr.Add3("Feldname", swCustomInfoText, "Feldwert", swCustomPropertyOnlyIfNew) If ergebnis <> 0 Then ergebnis = propmngr.Set2("Feldname", "Feldwert") If ergebnis <> 0 Then MsgBox "Fehler beim erstellen der Eigenschaft", vbOKOnly, "Meldung" End If End If End Sub ------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lunik Mitglied Konstrukteur
Beiträge: 44 Registriert: 05.07.2017 Hardware -Intel Xeon W2123 -Nvidia Quadro P2000 -32GB RAM --------------------- Software -Windows 10 Professional 64bit -SolidWorks 2018 SP5.0 -Office 2010 --------------------- Sonstiges -SpaceMousePro Wireless -CadMouse Wireless
|
erstellt am: 05. Sep. 2018 16:25 <-- editieren / zitieren --> Unities abgeben:
Danke für eure Antworten! Habe beide eben ausprobiert, und die von Andres hat funktioniert. Die von Heinz habe ich auch mal Testweise eingebunden und per Button eine Eigenschaft mit der neuen Funktion schreiben lassen. Geschrieben hat er sie auch, aber leider zeigt er sie mir auch erst nach öffnen des Dateiinformationsfensters an.
------------------ Grüße Lukas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 06. Sep. 2018 07:23 <-- editieren / zitieren --> Unities abgeben: Nur für Lunik
|
Lunik Mitglied Konstrukteur
Beiträge: 44 Registriert: 05.07.2017 Hardware -Intel Xeon W2123 -Nvidia Quadro P2000 -32GB RAM --------------------- Software -Windows 10 Professional 64bit -SolidWorks 2018 SP5.0 -Office 2010 --------------------- Sonstiges -SpaceMousePro Wireless -CadMouse Wireless
|
erstellt am: 06. Sep. 2018 11:35 <-- editieren / zitieren --> Unities abgeben:
|