Autor
|
Thema: selektierte parts/models auf Dateiebene in ein anderes Verzeichnis verschieben (2084 mal gelesen)
|
chris-cv5 Mitglied
Beiträge: 4 Registriert: 31.07.2009
|
erstellt am: 31. Jul. 2009 22:06 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich bin neu hier und durch Zufall auf dieses Forum gestossen... ich habe schon einige Beiträge gelesen aber noch nichts passendes gefunden. Vielleicht könnt Ihr mir weiterhelfen. Nun zur meiner Frage ... Ich habe in einem Verzeichnis ca. 4903 Datensätze die aus Catia V4 (ca. 80%) und Catia V5 (20%) bestehen. Aus den kryptischen Dateinamen ist leider nicht zu erkennen um welche Art von Teilen es sich handelt. Um diese riesige Datenmenge sortieren zu können muß ich also jeden Datensatz einladen und dadurch sichten. Dies mache ich dadurch das ich ca. 100 Teile immer einlade, aktiviere (Terminal-Mode aktivät)und dann entsprechende Sets zuweise. Nun möchte ich gerne automatisch die selektierten Teile von der Festplatte in ein selbst definiertes Verzeichnis auf der Festplatte verschieben. Der Wunsch Ablauf wäre dann z.B. ... 1. z.B. 15 Teile werden im Catia V5 selektiert. 2. das Makro wird gestartet und es wird nach einem Verzeichnisnamen gefragt (schön wäre Ordner auswahl analog Explorer). 3. die selektierten Dateien werden aus dem Ursprungsverzeichnis in das angewählte verschoben. Ich erhoffe mir dadurch diese Riesige Datenmenge bewältigen zu können und würde mich freuen wenn mir jemand hierzu weiterhelfen könnte. Wenn die Dateien dann alle in die entsprechenden Verzeichnisse vorsortiert sind wollte ich diese mit einer Software aus dem Internet einfach automatisch umbenennen z.B. wie Rohbau_001.model, Rohbau_002.model, u.s.w. ... Viele Grüße Chris
------------------ gemeinsam sind wir stark ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 01. Aug. 2009 13:37 <-- editieren / zitieren --> Unities abgeben: Nur für chris-cv5
Hallo Chris, erst einmal herzlich willkommen hier im Forum. Dein Problem ist zwar nicht sonderlich schwer (und sicherlich einfach zu implementieren) ABER es bedeutet doch einen gewissen Programmieraufwand. Die Frage ist jetzt wie fit bist du in VB bzw. VB.NET? Könntest du dir selber so einen Code zusammenbauen und nur bei Problemen fragen oder wünschst du dir einen vollständig implementierten, funktionierenden, getesteten Code Dein Beitrag ist zwar schon ziemlich ausführlich und verständlich geschrieben, dennoch bleiben eine paar Fragen offen. 1. Wie sieht deine Systeminformation aus (bitte in deinem Profil ausfüllen) 2. Soll das Makro nur auf Windows laufen oder wird es auch auf UNIX ausgeführt 3. Sollen die Dateien kopiert werden (dann hättest du zur Not noch eine Sicherung falls irgendetwas schief geht) oder willst du sie gleich verschieben 4. Wie meinst du das mit dem selektieren. Hast du 15 geöffnete unabhängige Modells in eigenen Fenstern (also 15 unabhängige Dateien), oder hast du ein riesen Produkt in dem die ganzen Modell´s eingefügt worden. Anmerkungen zu den Fragen: zu 1: Das ist immer wichtig damit andere User die dir helfen, wissen mit welchen Systemm du arbeitest (Release, SP, Hardware, etc.) Bei Fehlern spielt das oft eine übergeordnete Rolle zu 2: Wenn es nur auf Windows läuft würde ich dir entweder ein VB.NET bzw. VB6 Programm ans Herz legen (hier könntest du auch einen FolderSelectionDialog (also so wie im Explorer) einfügen. Diese Möglichkeit existiert weder in CATScript noch in CATVbs und CATVba) zu 3: Ein Beispiel wäre das eine Datei nicht kopiert werden kann weil sie z.B. schreibgeschützt ist oder du nicht die entsprechenden Rechte besitzt. Dies führt zu Fehlern die unbedingt abgefangen werden müssten (darum auch ein hoher Programmieraufwand) zu 4: Bevor du die Dateien kopierst bzw. verschreibst müssen Sie in CATIA geschlossen werden (sonst kann Windows aufgrund seiner Architektur diese Dateien nicht verschieben). D.h. hättest du ein Produkt und keine Einzeldateien wird das Makro komplexer. Jetzt zu meinen Ideen: Man erstellt sich das Teil auf jeden Fall in VB.NET (sieht auch deutlich professioneller aus). Sind es einzelne Dateien die geöffnet werden (bzw. geht auch mit einem Produkt) erstellt man sich eine UserForm mit einer ListBox. Hier werden alle geöffneten Dateien angezeigt. Des weiteren kann man hier den Zielpfad (entweder für jede einzelne Datei oder per Multiselektion) eingeben. Klickt man auf einen Eintrag in der ListBox erhält die Datei in CATIA den Fokus und wird angezeigt. Wenn man es ganz professionel machen will erstellt man sich Screenshots von jeder Datei und macht sich eine Art Thumbnail wenn man einen Eintrag anklickt. Wird dann der Finish-Button gedrückt werden alle Dateien in CATIA geschlossen und die Dateien in die Verzeichnisse verschoben (bzw. kopiert). Das ganze würde ich dann per *.bat machen. Eine *.bat schafft es nämlich eine geöffnete Datei zu verschieben (das geht mit den Windowsboardmittel nicht -> Fehlermeldung). CATIA hat nämlich die Eigenschaft die Items nicht aus der Document-Collection zu löschen wenn sie geschlossen wurden (kommt zumindestens häufiger vor). D.h. für Windows ist die Datei noch in Bearbeitung Sobald alle Dateien verschoben sind wird ein Log-File (von mir aus Excel oder sogar *.txt) angezeigt. Das sollte es dann gewesen sein. Leider habe ich nicht die Zeit es dir zu programmieren (zumindestens im Moment nicht).
------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
chris-cv5 Mitglied
Beiträge: 4 Registriert: 31.07.2009
|
erstellt am: 01. Aug. 2009 20:21 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel, danke für deine Antwort. Hier erst einmal die Beantwortung deiner Fragen ... wie fit ... ich selber habe bisher nur VB-Code für Excel verfasst. Das letzte mal ist jetzt ca. 3 Jahre her. Dies waren meisten immer kleine Programme um sich die Arbeit zu erleichtern -> also Profi bin ich leider nicht. Ein vollständiges Programm wäre natürlich zu schön um wahr zu sein ! Aber Code fragmente um bestimmte Operationen Variablen zuzuweisen würden mir auch schon helfen z.B. wie übertrage ich seletierte Modellenamen bzw. partnamen an eine variable, u.s.w. 1. Die Systemumgebung werde ich noch nachpflegen aber hier schon mal vorab .. PC -> dual Core - 4 GB Speicher - Catia V5 R19. 2. Ja das Makro soll auf Windows laufen und muß nicht auf Unix lauffähig sein. 3. schön wäre natürlich die Dateien zu verschieben - dann sieht man besser was noch übrig ist. Alle 4903 Dateien auch ohne Aktivierung schafft der Rechner auch nicht -> daher portionsweise ca. 100 STK pro Durchlauf. 4. Ja es handelt sich jeweils um z.B. 15 unabhängige Dateinen unter einem neu angelegten Product. Wegen der Empfehlung - Leider habe ich kein VB6 installiert so das ich warscheinlich keine andere Wahl habe als den Code entweder direkt im Catia V5 oder Excel ablaufen zu lassen - oder ? Vielleicht könntest du mich hierbei unterstützen sofern es deine Zeit zuläßt ? Viele Grüße Chris
------------------ gemeinsam sind wir stark ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 02. Aug. 2009 16:28 <-- editieren / zitieren --> Unities abgeben: Nur für chris-cv5
Hallo Chris, gut damit ich dich jetzt richtig verstehe. Du hast einen Ordner mir 4000 Dateien. Du erstellst dir ein neues Produkt fügst die 15 Dateien zu dem Produkt per Hand hinzu und willst diese dann in einen neuen Ordner verschieben? ODER Du öffnest 15 Dateien (die in unterschiedlichen Produkten liegen können) und willst diese per Auswahl in unterschiedlich Ordnber verschieben). Du erhalst ca. 270 neue Ordner mit jeweils ca. 15 Dateien. Zum Schluss willst du alle Dateien eines Ordners zu einem Produkt hinzufügen und dieses in den jeweiligen Ordner speichern? VB6 ist ja kostenpflichtig von dem her war es nur ein Vorschlag. Aber die könntest dir VB Express 2008 installieren (das ist ein freies SDK). Hiermit kannst du dir dann eine *.exe kompilieren ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
chris-cv5 Mitglied
Beiträge: 4 Registriert: 31.07.2009
|
erstellt am: 03. Aug. 2009 11:53 <-- editieren / zitieren --> Unities abgeben:
der Ablauf ist folgender. In einem Ordner befinden sich 4903 Datein (models & parts). In Catia lege ich ein Product an z.B. ZSB-Umfang. Darunter -> Insert New Component -> darunter lade ich dann ca. 100 Modelle per insert existing Component ein ... ZSB-Umfang |-> u1 |-> 1.model, 2.model, 3.part, ... 100.part |-> u2 |-> 101.model, 102.model, 103.part, ... 200.part Nun aktiviere ich durch aktivät Terminannode (u1 zuerst) alle 100 Modelle darunter und schaue Sie mir an. Mit der Funktion Edit Selektion Set Edition erstelle ich Sets wie z.B. Umfang1, Umfang2, u.s.w. Nun selektiere ich aus den 100 Modellen die entsprechenden und weise Sie den Set's zu. So habe ich nach dem Durchgehen aller Modelle eine vorsortierung -> nur in Catia. Diese möchte ich aber auf die Dateiebene mit entsprechender Umbenennung der Einzelteile umsetzen. Viele Grüße Christian ------------------ gemeinsam sind wir stark ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 03. Aug. 2009 12:33 <-- editieren / zitieren --> Unities abgeben: Nur für chris-cv5
Hallo Christian, wenn du die Selection Set so und so per Hand anlegst dann ist es nicht mal so komplex wie gedacht. Ich würde alle Sets durchlaufen, innerhalb der Set hast du ja eine Selektion. Dann jeweils den Dateipfad auslesen, Usereingabe machen lassen (wo das hinkopiert werden soll), Teilenummern und Dateinamen umbenennen, und mit dem FileSystem Objekt die Dateien verschieben. Hört sich jetzt vielleicht ein bisschen zu einfach an (die Dateien sind ja in Bearbeitung was ein IOExeption hervorrufen würde) aber im Prinzip kann man auch dies umgehen. Werd mich daheim mal an Werk machen ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Randle Mitglied CAD/PLM Consultant
Beiträge: 695 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 03. Aug. 2009 15:49 <-- editieren / zitieren --> Unities abgeben: Nur für chris-cv5
Hallo, da bin ich jetzt aber auch mal gespannt. Ich hatte auch schonmal versucht SelectionSets per Automation anzusprechen, bin aber leider bislang gescheitert. Hier mein kläglicher Versuch: Sub CATMain() Dim MyDoc As Document Set MyDoc = CATIA.ActiveDocument Dim MySets ' As SelectionSets Set MySets = MyDoc.GetItem("SelectionSets") MyDoc.SelectionSets.RenameSelectionSet "Set1", "TEST" End Sub Wie gesagt, bin gepannt auf das Ergebnis,- Viel Erfolg und lass uns bitte dran teilhaben. ------------------ MfG Randle ! It's not a bug, it's a feature ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
chris-cv5 Mitglied
Beiträge: 4 Registriert: 31.07.2009
|
erstellt am: 21. Aug. 2009 19:51 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel, hast du schon etwas zusammen bekommen ? Könnte das Makro nun gebrauchen da die Sets nur fertig erstellt sind. Wäre nett wenn du dich hierzu noch einmal melden könntest. Danke ! Gruß Chris ------------------ gemeinsam sind wir stark ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 22. Aug. 2009 10:24 <-- editieren / zitieren --> Unities abgeben: Nur für chris-cv5
Hallo, puh mir ist erst gerade klar geworden das ich da noch was machen wollte *schäm*. Hab mal geschaut es gibt eine Methode GetListOfSelectionSet die die Liste aller SelectionSets eines Dokuments abbilden kann. Leider weiß ich nicht wie man sie einsetzt und dokumentiert ist sie auch kaum. Ich werde aber dran bleiben und sobald ich rausgefunden habe wie man die SelektionSet´s anspricht würde ich das Makro fertig machen. Man könnte das ganze aber auch noch anders machen. Wenn ich (bzw. wir) nicht rausfinden sollte wie man diese Methode einsetzt kann man auch vom Anwender erst die SelektionSet selektieren lassen und anschließend das Makro ausführen. Das ist zwar nicht so komfortabel aber mit VB.NET auch gut lösbar. Makro wird gestartet und läuft asynchron neben CATIA. Anwender selektiert Items (Namen werden in eine ListBox übergeben) und klickt dann auf einen Button zum verschieben. Makro killt die Selektion...usw. ------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Ingenieur (m/w/d) Maschinenbau | Technologischer Fortschritt gelingt nur, wenn Visionen zur Realität werden. Dazu bringen wir bei FERCHAU als eine der führenden europäischen Plattformen für Technologie-Dienstleistungen die smartesten und innovativsten Köpfe mit Unternehmen verschiedenster Branchen zusammen. Wir suchen dich: als ambitionierte:n Ingenieur:in im Maschinenbau, der:die wie wir Technologien auf die nächste Stufe bringen möchte.... | Anzeige ansehen | Maschinenbau |
|
Dieter7 Mitglied Konstrukteur und CAD-Admin
Beiträge: 94 Registriert: 12.10.2007
|
erstellt am: 31. Aug. 2009 20:18 <-- editieren / zitieren --> Unities abgeben: Nur für chris-cv5
Das geht doch auch ohne Programmierung nicht allzu schwer: - Du erstellst für jede Gruppe (Selection Set) ein Unterprodukt - die Parts/Modelle jedes Selection Sets werden mit Copy/Paste (oder besser Cut/paste) in das entsprechende Unterprodukt verschoben, bis alle Parts/Modelle aus dem Haupt-Produkt entfernt sind - Alles speichern (ruhig im allgemeinen Datenverzeichnis in dem alle Parts und modelle stehen). - Jetzt im Desk (Schreibtisch) ein Unterprodukt selektieren (LMB) - Menüauswahl File/Send to/Directory: Dort sind nur die Parts und Modelle des selektierten Unterprodukts aufgelistet, sie werden mit >> komplett in den unteren Fensterbereich versetzt, es wird ein (neues) Zielverzeichnis (Target) ausgewählt, und mit OK werden die Parts gemeinsam mit dem CATProduct in das neue Verzeichnis kopiert. Send to Directory funktioniert auch mit model-Files (im Gegensatz zu Save-Management..) - Mit allen Unterprodukten so verfahren, bis die Modelle auf entsprechende Verzeichnisse verteilt (kopiert) sind. - Mit einer entsprechenden Methodik/Reihenfolge musst du noch sicherstellen, dass du alle Modelle/Parts bearbeitest, und jedes nur 1x, was aber machbar sein sollte. Gruß Dieter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|