| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
Autor
|
Thema: Makroaufruf nach Laden einer Zeichnung (1068 mal gelesen)
|
Denys Mitglied Konstrukteur
Beiträge: 39 Registriert: 09.09.2003 OSD 13.01 ME10 10.00 W2k
|
erstellt am: 22. Mrz. 2005 09:13 <-- editieren / zitieren --> Unities abgeben:
Moin moin, Ich habe zwei Problemchen. Ich möchte nach jedem Laden einer Zeichnung in ME10 ein Makro aufrufen, welches die Zeichnung durchsucht, ob Elemente mit der Farbe Gelb (auch Unterteile) vorhanden sind, um daraufhin eine Aktion auszuführen. Wie kann ich soetwas bewerkstelligen?
------------------ Gruss Denys Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADMike Mitglied Konstrukteur
Beiträge: 118 Registriert: 16.01.2003
|
erstellt am: 22. Mrz. 2005 11:14 <-- editieren / zitieren --> Unities abgeben: Nur für Denys
|
Gero Adrian Mitglied MBA, Dipl.Ing.
Beiträge: 528 Registriert: 13.12.2000 Ihr Berater Klietsch Partner
|
erstellt am: 22. Mrz. 2005 11:18 <-- editieren / zitieren --> Unities abgeben: Nur für Denys
Moin, waere es nicht besser, 1. Laden 2. "Gelbsuchaktion" 3. Speichern in bereinigtes Verzeichnis Wenn Du es global ausfuehrst, merkst Du vielleicht nicht mehr, wenn Du es nicht mehr brauchst und Du Dir Dinge zerstoerst. Einmal eine gesammelte Aktion - fertig ------------------ Grüssle Gero Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lw Mitglied Koordinator technische DV CAD Betreuer
Beiträge: 24 Registriert: 21.10.2002 Workmanager 5.10 ME10 9.0 NT + UNIX
|
erstellt am: 22. Mrz. 2005 11:26 <-- editieren / zitieren --> Unities abgeben: Nur für Denys
|
weinel Mitglied
Beiträge: 464 Registriert: 04.09.2002
|
erstellt am: 22. Mrz. 2005 12:05 <-- editieren / zitieren --> Unities abgeben: Nur für Denys
Hallo Denys, worin liegt genau das Problem? Ist es das automatische Ausführen eines Makros nach dem Laden einer Zeichnung? Dann mach das Laden einfach über ein Makro! ------------------ Gruß weinel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Denys Mitglied Konstrukteur
Beiträge: 39 Registriert: 09.09.2003 OSD 13.01 ME10 10.00 W2k
|
erstellt am: 22. Mrz. 2005 14:38 <-- editieren / zitieren --> Unities abgeben:
Hallo Gemeinde, Ich hol mal ein bischen weiter aus. In unserer Firma arbeiten wir in ME10 mit weißer Arbeitsfläche. Bisher wurde dies über ein Macro realisiert, welches mittels screen_transformation die Farbdarstellung der Zeichnungselemente auf dem Bildschirm ändert. Dieses Provisorium sollte den Anwender die Entscheidund überlassen, ob die Arbeitsweise mit heller arbeitsfläche tatsächlich angenehmer ist. Nachdem sich 95% unserer Anwender für die helle Arbeitfläche entschieden haben wollen wir nun mit Nägel mit Köpfen machen. Über ein Macro werden die ME10-Farbeistellungen umkonfiguriert. Werden Zeichnungen aus geladen, deren Zeichnungselemente das alte Farbschema aufweisen, kommt ein weiteres Macro zum Einsatz, welches alle Zeichnungselemente in das neue Farbschema übersetzt. Genau diese Angelegenheit möchte ich automatisieren. (Mittels screen_transfomation wird die schwarze Arbeitsfläche den besagten 5% Anwender zu Verfügung gestellt - hierfür brauch ich den Automatismus, da diese Leute nicht sofort sehen, ob gerade eine Zeichnung mit altem oder neuem Farbschema geladen wurde.) Wie kann ich nun im ME10 feststellen, ob gerade eine Zeichnung geladen wurde. Zeichnungen werden sowohl über dem ME10-Dateibrowser als auch über unsere ProfiDB Datenbank geladen. Wie kann ich feststellen, ob eine Zeichnung Elemente mit der Farbe gelb enthält damit ggf. mein Macro aufgerufen wird?
------------------ Gruss Denys Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rhoffmann Mitglied Techniker
Beiträge: 58 Registriert: 22.01.2003
|
erstellt am: 22. Mrz. 2005 15:17 <-- editieren / zitieren --> Unities abgeben: Nur für Denys
Hallo Denys, lw hat Dir die Antwort schon gegeben: INQ_SELECTED_ELEM SELECT GLOBAL YELLOW CONFIRM IF ((INQ14)>0) { gelbe Elemente vorhanden } tu was END_IF Ob gerade eine Zchng. geladen wurde, wirst Du nicht ohne weiteres feststellen können. Entweder kannst Du die Leute dazu bringen, dieses Makro nach dem Laden aufzurufen oder Du verknüpfst es mit einem Befehl, der garantiert nach dem Laden aufgerufen wird. Z.B. bei der Classic-Oberfläche der Befehl, um das Erstellen-Menu aufzurufen. TMENU xx,yy xx,yy Dein_Makro TM_CREATE_1 MfG Robert
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
H.annes Mitglied CAD-Pfriemler
Beiträge: 482 Registriert: 02.07.2001 ME10 8.7 - PTC DirectDrafting 19.00; OSM 15.xx - PTC DM 19.xx
|
erstellt am: 23. Mrz. 2005 08:19 <-- editieren / zitieren --> Unities abgeben: Nur für Denys
Zitat: Original erstellt von rhoffmann: ... Ob gerade eine Zchng. geladen wurde, wirst Du nicht ohne weiteres feststellen können.... MfG Robert
Morgen! Mit INQ_ENV 0 (INQ 304) kann man den Namen der gerade geladenene Zeichnung feststellen, den könnte man regelmäßig kontrollieren - aber wie man das vernünftig einbaut? Ein Knopf mit Roberts Makro - auf den die Leute dann selbst drücken müssen - wär sicher am gscheitesten. Hannes
------------------ zum zaun zuwigschissn hod schnö amoi oana, owa iwan zaun driba sei lebdog no koana Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
weinel Mitglied
Beiträge: 464 Registriert: 04.09.2002
|
erstellt am: 23. Mrz. 2005 08:59 <-- editieren / zitieren --> Unities abgeben: Nur für Denys
Nochmal für mich zum Verständnis: Kann man das nicht direkt mit dem Lade-Befehl verknüpfen? Also es soll doch immer dann stattfinden, wenn eine Zeichnung geladen wurde. Das Laden einer Zeichnung wird doch bewußt ausgeführt. Wenn man das Laden einer Zeichnung über ein Makro ausführt, kann man doch in dieses Makro die Umsetzung in Gelb direkt einbauen, oder verstehe ich was falsch?! Ansonsten könnte man es auch mit ZOOM ALLES - Befehl oder dem NEUZEICHNEN - Befehl verknüpfen! ------------------ Gruß weinel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Denys Mitglied Konstrukteur
Beiträge: 39 Registriert: 09.09.2003 OSD 13.01 ME10 10.00 W2k
|
erstellt am: 23. Mrz. 2005 09:17 <-- editieren / zitieren --> Unities abgeben:
Moin moin, die manuelle Lösung, die Anwender einen Knopf drücken zu lassen, wäre nicht so tool. Mit der Zeit werden zwar nach und nach immer mehr der alten Zeichnungen in das neue Farbschema übersetzt (das Knöpfchendrücken wird in gleicher Weise immer weniger nötig), jedoch können selbst nach Jahren noch Zeichnungen in Datenbank auftauchen, die noch das alte Farbschema aufweisen. Die 3 Kollegen, die mit schwarzem Bildschirm arbeiten bemerken dann erst beim Ausdruck, dass mit der Zeichnung etwas nicht stimmt. Ich werde Robert's Vorschlag folgen und die Prüfung nach Vorkommen der Farbe gelb in einen Tablettbefehl einbauen. Eine Frage hab ich da noch (bin noch nicht so bewandert in der ME-Macroprogrammierung). Wie kann ich die Prüfung nach Farbe gelb auf ein bestimmtes Teil (z.B. Name Zeichnungsrahmen) beschränken? INQ_SELECTED_ELEM SELECT ?>GLOBAL<? YELLOW CONFIRM ------------------ Gruss Denys Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lw Mitglied Koordinator technische DV CAD Betreuer
Beiträge: 24 Registriert: 21.10.2002 Workmanager 5.10 ME10 9.0 NT + UNIX
|
erstellt am: 23. Mrz. 2005 09:34 <-- editieren / zitieren --> Unities abgeben: Nur für Denys
Moin,moin >>Wie kann ich die Prüfung nach Farbe gelb auf ein bestimmtes Teil (z.B. Name Zeichnungsrahmen) beschränken? INQ_SELECTED_ELEM SELECT ?>GLOBAL<? YELLOW CONFIRM << Die Prüfung kannst du ohne global auf das aktive Teil beschränken. Dafür muß das entsprechende Teil nach dem Laden gesucht und editiert werden. Zum suchen benutze ich immer folgendes Macro: DEFINE le_teil_vorhanden_test {RÏckgabewert ist die eindeutige Teilenummer oder ''} LOCAL inhalt LOCAL le_tab LOCAL K LOCAL K1 LOCAL wert PARAMETER inhalt {Suchstring Teilename, x und ? erlaubt} PB_LTAB_UPDATE LET le_tab 'PBT_LTAB' LET K1 (LTAB_ROWS le_tab) LET K 1 LET wert '' LOOP IF ((MATCH inhalt (TRIM (READ_LTAB le_tab K 1))) = 1) LET wert (TRIM (READ_LTAB le_tab K 2)) END_IF EXIT_IF (wert <> '') EXIT_IF (K1 = K) LET K (K + 1) END_LOOP LET le_return_val wert END_DEFINE {copyright by lw_lemo} Der Rückgabewert muß ausgewertet werden. Den Aufruf deiner Prüfung würde ich automatisieren, d.h. in einem neuen Macro das Laden als auch die Prüfung verbauen. ProfiDB kenne ich so nicht, kann aber bezogen auf den Ladevorgang nicht viel anders als der WM sein, dort wird im ME10 ein Macro angeschubst. Dort würde ich die Erweiterung deiner Prüfung einbauen. Vorteile: Du investierst einmal Zeit mit programmieren und testen und deine Mitarbeiter vergessen nicht einmal das entsprechende Macro auszuführen. Gruß Uli Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Denys Mitglied Konstrukteur
Beiträge: 39 Registriert: 09.09.2003 OSD 13.01 ME10 10.00 W2k
|
erstellt am: 23. Mrz. 2005 09:39 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von weinel: Kann man das nicht direkt mit dem Lade-Befehl verknüpfen?
Genau das war mein Gedanke. Jedoch möchte ich nich unbedingt in den Orginalmacros unserer Datenbank und der ProfiPlus-Oberfläche hinein fuschen. Die Lösung mittels modifiziertem Tablettfeld in unserer Anpassungsdatei würde transparent bleiben.
------------------ Gruss Denys Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
H.annes Mitglied CAD-Pfriemler
Beiträge: 482 Registriert: 02.07.2001 ME10 8.7 - PTC DirectDrafting 19.00; OSM 15.xx - PTC DM 19.xx
|
erstellt am: 23. Mrz. 2005 09:40 <-- editieren / zitieren --> Unities abgeben: Nur für Denys
Zitat: Original erstellt von weinel: Nochmal für mich zum Verständnis: Kann man das nicht direkt mit dem Lade-Befehl verknüpfen? Also es soll doch immer dann stattfinden, wenn eine Zeichnung geladen wurde. Das Laden einer Zeichnung wird doch bewußt ausgeführt. Wenn man das Laden einer Zeichnung über ein Makro ausführt, kann man doch in dieses Makro die Umsetzung in Gelb direkt einbauen, oder verstehe ich was falsch?!Ansonsten könnte man es auch mit ZOOM ALLES - Befehl oder dem NEUZEICHNEN - Befehl verknüpfen!
Zeichnungen werden auf 2 Arten geladen: (1) aus der Datenbank ... die DB kenn ich nicht, aber ich könnte mir vorstellen, daß man das Lademakro erweitern kann. (2) interaktiv über den Dateibrowser ... da sehe ich das Problem. Der Ladevorgang läuft komplett interaktiv ab. Wenn Du NACH dem Laden einer Zeichnung ein Makro ablaufen laseen willst, müßtest Du den gesamten Ladevorgang im Makro nachbauen, dann kannst Du Dein Makro reinhängen. Die einfachere & robustere Variante wäre, einen gut sichtbaren Button zur Verfügung zu stellen, den der User dann "händisch" zu drücken hat. Aber vielleicht hat hier jemand ein Makro, das den ladevorgang nachbaut?? Hannes ------------------ zum zaun zuwigschissn hod schnö amoi oana, owa iwan zaun driba sei lebdog no koana Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dittrich Mitglied SysAdmin
Beiträge: 388 Registriert: 06.06.2000 Wenn es nicht geht, probier was anderes, vielleicht geht es dann auch nicht.
|
erstellt am: 23. Mrz. 2005 22:29 <-- editieren / zitieren --> Unities abgeben: Nur für Denys
Hi, hatte mal eine ähnliches Problem mit Farbkonvertierung. Die Nummer mit "Makro nach dem Laden" habe ich verworfen und stattdessen einen Batchjob zum umfärben durchs Netz geschickt. Verworfen deshalb, weil ich keine Makrolösung für das Hinzuladen von Geometrie zu vorhandenen Bildschirminhalt gesehen habe. Das mag für Einzelteilzeichnungen nicht so häufig sein, aber beim Konstruieren ist das häufig der Fall. Das Programm fragt vorm platzieren nach ein Punkt und zeigt mit einer Umrisslinie an, was da wohin kommt. Den Absetzpunkt bekommt man ins Makro, aber ich nicht die Umrisslinie als Vorschau auf den Bildschirm. Wenn Du einen Rat von mir willst, versuch eine Linienfarbvariante zu finden, bei denen beide Fraktionen ohne Screentransformation leben können. Und dann frag mal Konstruktionslieferanten, wie die das machen, wenn sie jeden dritten Tag für eine andereren Auftraggeber in anderen Farben konstruieren. Eine Wunschscreenfarbe ist einfach nicht machbar. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Elektrokonstrukteur (m/w/d) im Forschungsumfeld | hte ? the high throughput experimentation company beschleunigt die Forschung und Entwicklung in der Katalyse und macht sie produktiver. Wir ermöglichen kosteneffiziente Innovationen und kürzere Markteinführungszeiten für neue Produkte. Dadurch sichern sich unsere Kunden aus dem Energie- und Raffineriesektor, der Umweltkatalyse und der chemischen und petrochemischen Branche einen Wettbewerbsvorteil.... | Anzeige ansehen | Konstruktion, Visualisierung |
|
Bernfried Epting Mitglied Konstruktion Sys-admin CAD (ME10 SWX)
Beiträge: 383 Registriert: 06.11.2000 HP Z440 E5-1650v4 3,6Ghz 32Gb Ram Quatro M4000 SWX2017 4.1 Me10 10.0
|
erstellt am: 24. Mrz. 2005 10:04 <-- editieren / zitieren --> Unities abgeben: Nur für Denys
Zitat: Original erstellt von Dittrich:
Verworfen deshalb, weil ich keine Makrolösung für das Hinzuladen von Geometrie zu vorhandenen Bildschirminhalt gesehen habe. Das mag für Einzelteilzeichnungen nicht so häufig sein, aber beim Konstruieren ist das häufig der Fall. Das Programm fragt vorm platzieren nach ein Punkt und zeigt mit einer Umrisslinie an, was da wohin kommt. Den Absetzpunkt bekommt man ins Makro, aber ich nicht die Umrisslinie als Vorschau auf den Bildschirm.
Hallo Es geht. Habe ich schon öfter so gemacht.
DEFINE Test LOCAL Lpnt LOCAL Name LOCAL Dummy LET Dummy 0 INQ_ENV 7 IF (NOT ((INQ 101)=(INQ 102))) LET Dummy 1 END_IF LOOP TRAP_ERROR READ "Einzelteil wählen, oder 'Name' der Sicherungsdatei ('load_file_name') eingeben" Name LOAD Name EXIT_IF (NOT (CHECK_ERROR)) BEEP END_LOOP IF (Dummy=1) READ 'Ort für geladenes Teil oder Option ABSOLUTE angeben.' LAST_FEEDBACK Lpnt LOAD Name Lpnt END_IF DISPLAY 'geht doch' {ab hier könnte die Dateimanipulation sein} END_DEFINE
------------------ Gruß Bernfried Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |