| |
| 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: Extern auf benutzerdefinierte Eigenschaften zugreifen (620 / mal gelesen)
|
HOMandre Mitglied
Beiträge: 35 Registriert: 08.01.2019
|
erstellt am: 10. Jul. 2022 11:10 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen zusammen, ich benötige Hilfe bzw. einen Denkanstoß für folgende Problematik. Ich habe für meine Teile ein Makro geschrieben, mit dem ich in der Lage bin, für das jeweilige Teil diverse Informationen wie z.B. Artikel-Name, Artikel Nummer, etc. zu hinterlegen. Darüber hinaus vergebe ich mit diesem Makro eine eindeutige Teile ID und generiere damit automatisiert die Teile / Zeichnungsmnummer. Als Beispiel, das neue Teil hat die ID 4500 bekommen und hat eine Konfiguration welche mit 01.00 beginnend benannt wurde. Hieraus wird dann automatisch die Zeichungsnummer 4500-01.00 generiert und in den Eigenschaften gespeichert. Vorteil, die Nummern werden automatisch vergeben und ich habe keine doppelten Zeichnungsnummern. Nun zu meinem Problem. Die Zeichnungsnummer befindet sich nur in den Teileigenschaften. Der Dateiname soll / darf nicht geändert werden. Mein derzeitiges Problem ist nun eine banale Suche um das Teil mit der jeweiligen Zeichnungsnummer schnell zu finden. Das Ganze sollte über SW funktionieren, könnte aber auch mit einem anderen kleinen Programm erfolgen, welches die Datei sucht und dan in SW öffnet. Es wäre wünschenswert, wenn die Suche auch halbwegs performant ablaufen würde. Hat jemand von euch eine gute Idee? Wünsche euch einen schönen Sonntag und vorab schon mal besten Dank. Gruss Andre Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andi Spieler Mitglied Mechaniker
Beiträge: 1347 Registriert: 12.12.2002 SOLIDWORKS 2024SP1
|
erstellt am: 10. Jul. 2022 12:22 <-- editieren / zitieren --> Unities abgeben: Nur für HOMandre
Hallo Andre, einfach den Suchpfad zu Deinen Teilen festlegen, (Microsoft macht den Index) und dann im SWX oben im Suchfeld danach suchen. Kannst nach "Zeichnungsnummer" oder dem entsprechenden Wert suchen. VG AndiS Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HOMandre Mitglied
Beiträge: 35 Registriert: 08.01.2019
|
erstellt am: 10. Jul. 2022 12:48 <-- editieren / zitieren --> Unities abgeben:
Hallo Andi, vielen Dank für deine Antwort. Zwischenzeitig habe ich ebenfalls diese Idee gehabt. Leider funktioniert die Suche noch nicht. In den Systemoptionen - Dateipositionen habe ich 5 vorgeschlagene Ordner, welche teilweise auch keinen Sinn machen. Das Löschen und Hinzufügen eines neuen Ordners klappt nicht. Beim Neustart von SW ist der hinzugefügte Ordner wieder weg und der gelöschte wieder da. Was kann das jetzt sein? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andi Spieler Mitglied Mechaniker
Beiträge: 1347 Registriert: 12.12.2002 SOLIDWORKS 2024SP1
|
erstellt am: 10. Jul. 2022 13:32 <-- editieren / zitieren --> Unities abgeben: Nur für HOMandre
|
HOMandre Mitglied
Beiträge: 35 Registriert: 08.01.2019
|
erstellt am: 10. Jul. 2022 13:57 <-- editieren / zitieren --> Unities abgeben:
Hi, das hat mit der Indizierung geklappt ich habe jetzt den richtigen Ordner. Nur leider haut es immer noch nicht hin. Wie du auf dem Bild 1 erkennen kannst, habe ich zum Ausprobieren einen Testordner erstellt, welcher auch als Suchpfad übernommen wurde. In Bild 2 möchte ich nach der ID (4653) suchen, welche in den benutzerdefinierten Eigenschaften enthalten ist. Hier stellt sich mir die Frage ob die Suche ebenfalls bei den konfigurationsspezifischen Eigenschaften genau so funktioniert. Müsste es doch oder? In Bild 3 habe ich oben die 4653 eingegeben mit dem Ergebnis, dass keine Datei gefunden wurde. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HOMandre Mitglied
Beiträge: 35 Registriert: 08.01.2019
|
erstellt am: 10. Jul. 2022 14:23 <-- editieren / zitieren --> Unities abgeben:
Ich habe den Testordner jetzt mal in das Verzeichnis C:\ kopiert. Dort klappt es einwandfrei. Sobald ich den Testordner meiner Konstruktions Ordnerstruktur hinzufüge, diesen Pfad indiziere, wird dieser in SW auch angezeigt, aber die Suche nach der ID geht wieder nicht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andi Spieler Mitglied Mechaniker
Beiträge: 1347 Registriert: 12.12.2002 SOLIDWORKS 2024SP1
|
erstellt am: 10. Jul. 2022 16:38 <-- editieren / zitieren --> Unities abgeben: Nur für HOMandre
|
HOMandre Mitglied
Beiträge: 35 Registriert: 08.01.2019
|
erstellt am: 10. Jul. 2022 18:32 <-- editieren / zitieren --> Unities abgeben:
Hallo Andi, anbei mal die Datei. Je nachdem in welchem Ordner Sie liegt, klappt das Suchen in den Eigenschaften ja. Natürlich unter Berücksichtigung des Suchverzeichnis in den Solidworks-Einstellungen. Es muss an der Ordnerstruktur irgendwie liegen. Vielleicht noch ein Hinweis, mein finaler Ordner liegt auf C:/ und ist ein Dropboxverzeichnis, was lokal auf der Platte liegt. Über die Suche des Dateinamen findet die SW Suche das Teil, allerdings nicht die integrierten Eigenschaften. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andi Spieler Mitglied Mechaniker
Beiträge: 1347 Registriert: 12.12.2002 SOLIDWORKS 2024SP1
|
erstellt am: 10. Jul. 2022 19:30 <-- editieren / zitieren --> Unities abgeben: Nur für HOMandre
|
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2572 Registriert: 02.10.2006 Firma: SW 2023-4.0 + PDM Prof. Windows 10 Pro 64bit, i9-11900 32 GbRAM, Quadro P2200 Home: SW 2022-5.0 Passungstabelle von Heinz Windows 11 Pro 64bit, i7-12700K, 32 GbRAM, GeForce GTX 1050Ti Samsung C34H892, 3440x1440 Pixel
|
erstellt am: 10. Jul. 2022 23:02 <-- editieren / zitieren --> Unities abgeben: Nur für HOMandre
|
riesi Mitglied CAD-Admin
Beiträge: 1073 Registriert: 06.05.2002 SWX Premium 2020-Sp5
|
erstellt am: 11. Jul. 2022 12:30 <-- editieren / zitieren --> Unities abgeben: Nur für HOMandre
Für das Suchen der Zeichnung wird der Pfad benötigt. Da Du die Zeichnungs-Nr. kennst, kann die Suche nach den entsprechenden möglichen Zeichnungen zuerst mit das Verzeichnis und anschließend könnte mit der Document-Manager-Api die Eigenschaften der vorgefilterten Zeichnungen durch sucht werden. Das geht flott. Selber erzeuge ich mir in regelmäßigen Abständen eine Liste unserer Schweiß-Konstruktions-Profile inkl. der Eigenschaften in Excel. Das Auslesen der Verzeichnisse, inkl. Eigenchaften dauert bei >1000 Dateien keine zwei Sekunden. Das Schreiben der Liste nach Excel dauert länger. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HOMandre Mitglied
Beiträge: 35 Registriert: 08.01.2019
|
erstellt am: 12. Jul. 2022 09:59 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen zusammen. Ich habe noch mal ein bisschen experimentiert. Leider klappt meine Suche immer noch nicht. Ich habe festgestellt, dass dieses von der Ordnerablage auf dem PC abhängig ist. Wenn mein Ordner z.B. nur auf dem Desktop liegt, geht es definitiv nicht. Liegt dieser unter C:\ klappt es einwandfrei. Auch wenn der Pfad extrem lang ist bzw. wird funktioniert es ebenfalls, es sei denn Windows sagt irgendwann das die Ordnerstruktur zu lang wird. Das ist klar und auch logisch. Ich nutze die Dropbox, dazu habe ich ein Verzeichnis unter C:\, sprich die Dropbox habe ich nach der Installation dorthin verschoben. Damit handelt es sich doch um einen völlig normalen lokalen Pfad. Teile die in diesem Ablageort liegen können mittels Dateiname über die SW Suche gefunden werden, allerdings wird nicht in den Eigenschaften gesucht. Das ist mir ein Rätsel. Alle Ablageordner habe ich in SW bzw. über die Indizierungsoption hinzugefügt. Ich kann in meinem hochgeladenen Teil auch alle Eigenschaften finden, wenn dieses in einem "funktionierenden" Ordner liegt. Ich möchte darüber hinaus keine zugehörige Zeichnung suchen, sondern das Teil über die Zeichnungs-Nr. Jetzt denke ich über ein Makro nach, was diese Funktion ausführen könnte. Riesi, dass was du schreibst hört sich doch mal gut an. Kannst du mir darüber vielleicht noch ein paar Informationen oder ein kleines Beispielprogramm zukommen lassen? Werde jetzt erst mal nach der Document-Manager-Api schauen, davon habe ich nämlich noch nichts gehört. Vielen Dank für eure Hilfe. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Senior Konstrukteur (m/w/d) | ystral ist ein stark wachsendes, inhabergeführtes Unternehmen im Maschinen- und Anlagenbau mit über 280 Mitarbeitern. Für unterschiedlichste Branchen projektieren, konstruieren und fertigen wir mit Herzblut und vollem Engagement durchdachte Misch-, Dispergier- und Pulverbenetzungsmaschinen sowie Prozessanlagen für unsere Kunden. Unsere Technologien werden weltweit von mittelständischen Unternehmen wie auch großen Konzernen eingesetzt.... | Anzeige ansehen | Konstruktion, Visualisierung |
|
riesi Mitglied CAD-Admin
Beiträge: 1073 Registriert: 06.05.2002 SWX Premium 2020-Sp5
|
erstellt am: 12. Jul. 2022 11:16 <-- editieren / zitieren --> Unities abgeben: Nur für HOMandre
Gerne: Code:
// Klasse Profile: public class Profile { public int FileId { get; set; } public int FolderId { get; set; } public string FileName { get; set; } public string FolderPath { get; set; } public string PsiNo { get; set; } public string Title1 { get; set; } public string Title2 { get; set; } } // ----- Funktion um Eigenschaften aus zu lesen private void ReadProfile(ref Profile curProfile) { Success = false; SwDmDocumentOpenError nRetVal; string fileNameWithPath = Path.Combine(curProfile.FolderPath, curProfile.FileName); SwDMDocument25 swDoc = (SwDMDocument25)swDocMgr.GetDocument(fileNameWithPath, nDocType, true, out nRetVal); if (nRetVal != SwDmDocumentOpenError.swDmDocumentOpenErrorNone) { return; } string[] props = (string[])swDoc.GetCustomPropertyNames(); if (props == null) { curProfile.PsiNo = string.Empty; curProfile.Title1 = string.Empty; curProfile.Title2 = string.Empty; swDoc.CloseDoc(); return; } foreach (string prop in props) { SwDmCustomInfoType valueType; string linkto; switch (prop) { case "Z-Name": curProfile.Title1 = swDoc.GetCustomPropertyValues("Z-Name", out valueType, out linkto); break; case "Z-Name2": curProfile.Title2 = swDoc.GetCustomPropertyValues("Z-Name2", out valueType, out linkto); break; case "A-Nr.": curProfile.PsiNo = swDoc.GetCustomPropertyValues("A-Nr.", out valueType, out linkto); break; } } if (curProfile.PsiNo == null) { curProfile.PsiNo = string.Empty; } if (curProfile.Title1 == null) { curProfile.Title1 = string.Empty; } if (curProfile.Title2 == null) { curProfile.Title2= string.Empty; } swDoc.CloseDoc(); Success = true; return;
Mein Makro liest aus den globalen Eigenschaften die gewünschten Informationen. Um aus den Konfigurationsspezifischen-Eigenschaften die Werte abzufragen, musst Du eine zusätzliche Schleife für die Konfigurationen programmieren. Für die Suche nach einer bestimmten Datei würde ich in C# eine Liste der Dateien aus der Verzeichnis-Struktur anlegen und diese via LINQ abfragen.
[Diese Nachricht wurde von riesi am 12. Jul. 2022 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |