| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
Autor
|
Thema: Importierte DXF/DWG riesige. Wie Datenmenge reduzieren? (4641 mal gelesen)
|
uger Mitglied CADler & Kinematiker
Beiträge: 1115 Registriert: 25.02.2003
|
erstellt am: 10. Nov. 2011 15:30 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen! Wie importieren sehr oft Anlagenpläne unserer Kunden in das Me10 hinein (als DXF oder DWG) um dann in diese Anlagen unsere Maschinen einzufügen. Je nach Ausgangs-CAD-System sind die ME10-Dateien so gross, dass der Rechner an seine Grenzen kommt. Obwohl wir doppelte Elemente bereingigen sind diese Zeichnungung kaum zu handhaben. Frage: wie kann ich Datenmenge reduzieren? Gibt es eine Möglichkeit sehr kleine Objekte automatisiert zu löschen? Oder gibt es andere Methoden (Software) mit der man die DXF oder DWG-Files vorher bereinigt? Übrigens: Wir arbeiten mit Me10 8.7G, also einer Version aus der Steinzeit :-( ------------------ Deine Wahrnehmung bestimmt deine Realität! NDS Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Gerhard Deeg Ehrenmitglied V.I.P. h.c. i.R. Konstrukteur aus Leidenschaft
Beiträge: 2643 Registriert: 17.12.2000 CREO - OSD - OSM HP XW4400 - XW4600 Dell Inspiron 17E NVIDIA QUADRO FX1500 NVIDIA Quadro FX1800 HP Mini 210 2002sg WIN 7 Ultimate 32/64
|
erstellt am: 10. Nov. 2011 16:13 <-- editieren / zitieren --> Unities abgeben: Nur für uger
Hallo uger, ich habe jetzt erst kürzlich für einen Kollegen vom CAD.de Daten vom ME10 ins DWG bzw. DXF übersetzt und musste feststellen, dass die Daten bei DWG und auch bei DXF sich sehr groß aufgebläht hatten. Teilweise musste ich die Zeichnungen sogar teilen, da ich diese sonst nicht per Mail hätte zurückschicken können. Was mir aufgefallen ist, ist, dass manche Texte als Graphic hinterlegt bzw. angefertigt wurden und dann noch mit 0-Abstand schraffiert wurden. Nachdem ich dies alles gelöscht hatte, waren die Daten wieder händelbar. Du solltest vielleicht mal in dieser Richtung die Zeichnungen durforsten. Gruss Gerhard ------------------ Jeder erfüllte Wunsch ist ein Traum weniger Träume sind die Sonnenstunden der Hoffnung Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
r.hoffmann Mitglied Techniker
Beiträge: 127 Registriert: 07.12.2006 OSD 13.2 20.4
|
erstellt am: 10. Nov. 2011 18:46 <-- editieren / zitieren --> Unities abgeben: Nur für uger
Hallo Uger, das Problem tritt bei uns auch auf. Es gibt natürlich die Möglichkeit, Schraffuren, Punkte (die meistens von ACAD-Bemassung stammen), leere Teile usw. über die gesamte Teilestruktur zu löschen. Damit bekomme ich Zeichnungen schon deutlich kleiner. Wenn in der Teilestruktur auch z.B. Schrauben usw. enthalten sind, weil andere Zulieferer ihre Zeichnungen in den Anlagenplan eingebracht haben, ohne diese vorher ein wenig abzuspecken, habe ich schon mal alle Teile nach solchen Namen durchsucht und alle anderen Teile ausgeblendet. Somit konnte ich dann global alle angezeigten Teile (z.B. Schrauben) auf einen Rutsch löschen. So habe ich dann mit z.B. Schraube, Scheibe, Ring, Mutter Feder usw. alle "Kleinteile" ausgefiltert und relativ schnell gelöscht. Falls Du spezielle Probleme hast, melde dich. Ansonsten sende mir mal eine typische Datei an info@me10-makros.de (Geheimhaltung garantiert!). Ich sehe mir die Teilestruktur dann mal an, um zu sehen, was evtl. die Grösse beeinflusst. MfG Robert ------------------ Homepage: www.me10-makros.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
riesi Mitglied CAD-Admin, SolidWorks-Backend-Developer
Beiträge: 1016 Registriert: 06.05.2002 SolidWorks 2020-Sp5 OneSpaceDrafting V20.5 MS-Windows 10 Prof. 64Bit Core i7-6700 @ 3.40 GHz 32,00 GB RAM ATI WX 5100
|
erstellt am: 11. Nov. 2011 08:07 <-- editieren / zitieren --> Unities abgeben: Nur für uger
Oftmals wird bei solchen Zeichnungen Datenmüll mitgeschleppt. Wir haben folgendes festgestellt: * Mehrfachabbildung, wo eigentlich keine ist, bedingt durch den Import. * unsichtbare Textelemente; erst mit höheren Versionen lassen sich diese erkennen und löschen. * In höheren Versionen ist auch ein Speichern mit STORE SELECT GLOBAL möglich, dass benutzen wir gerne um leere Teilestrukturen zu eliminieren. * Oft ist durch Import einer Zeichnungsableitung aus 3D-Programmen mehr Geometrie drin. Ich denke da gerade an Motoren, wo selbst das Lüftungsgitter, Firmenlogo, etc. drin ist. Das muss nicht sein. Wenn Du mir ein Hallenlayout zur Verfügung stellen darfst, lasse ich unser Makro "SAUBER_MACHEN", welches die oben genannten Punkte abarbeitet, einmal drüber laufen. Gruß, Klaus. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stere0 Mitglied
Beiträge: 41 Registriert: 29.11.2012 Win 10 V20
|
erstellt am: 11. Okt. 2022 10:49 <-- editieren / zitieren --> Unities abgeben: Nur für uger
Hallo zusammen, ich greife das alte Thema noch einmal auf, da ich von einem Kollegen die Hallenplanung übernehmen darf. Allerdings graut es mir hier, die Layouts sind größtenteils >100 mb und mit 100+ Maschinen bestückt. Viele natürlich voll detailliert mit Motoren etc., da er immer einfach nur reingeladen hat Ich denke die Performance kann man sich vorstellen... Hat hier jemand Makros die das Aufräumen größtenteils übernehmen und die er zur Verfügung stellen kann? Gruß stere0 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
riesi Mitglied CAD-Admin, SolidWorks-Backend-Developer
Beiträge: 1016 Registriert: 06.05.2002 SolidWorks 2020-Sp5 OneSpaceDrafting V20.5 MS-Windows 10 Prof. 64Bit Core i7-6700 @ 3.40 GHz 32,00 GB RAM ATI WX 5100
|
erstellt am: 11. Okt. 2022 12:53 <-- editieren / zitieren --> Unities abgeben: Nur für uger
Ein Makro, welches wichtige von unwichtige Gemetrie unterscheiden kann, hätten wir auch gerne. Folgender Ablauf hat sich gut bewährt:
Code:
DEFINE Csn_check_inv_geo LOCAL Versie LOCAL Frage LOCAL Ergebniss INQ_ENV 0 LET Versie (VAL (SUBSTR (INQ 301) 22 6)) IF (Versie>11.6) SHOW_INV_GEO GLOBAL CONFIRM INQ_SELECTED_ELEM GLOBAL INFOS 'INVISIBLE' END IF ((INQ 14)>0) DISPLAY_NO_WAIT (STR (INQ 14)+' INVISIBLE Geometrie gefunden!') DELETE GLOBAL INFOS 'INVISIBLE' END END_IF END_IF END_DEFINE
Code:
Csn_check_inv_geo STORE SELECT GLOBAL ALL CONFIRM '{Pfad\MI-Datei}' RESET_SYSTEM CONFIRM LOAD CHECK_2D '{Pfad\MI-Datei}'
[Diese Nachricht wurde von riesi am 11. Okt. 2022 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stere0 Mitglied
Beiträge: 41 Registriert: 29.11.2012 Win 10 V20
|
erstellt am: 11. Okt. 2022 15:37 <-- editieren / zitieren --> Unities abgeben: Nur für uger
Ja, so ein Makro wäre Gold wert... Naja, hätte gedacht das es vll. machbar ist z.B. Kreise mit Durchmesser unterhalb eines Schwellwertes automatisch zu löschen, oder Linien mit Linienlänge unterhalb X... Im Anno gibts dazu ja einen Schwellwert den man einstellen kann, der wird aber denke auf die 3D-Daten zurückgreifen um zu bestimmen ob das Teil angezeigt wird oder nicht. Danke für dein Makro. Ich habe es mal geladen und die Befehle eingegeben. Die Funktion Csn_check_inv_geo hat bei mir keine Meldung ausgegeben, zumindest sofern eine kommen sollte falls er was findet. Das STORE SELECT... hat die Dateigröße von 110 mb auf 21 mb gedrückt. Allerdings bekomme ich einen Fehler bei LOAD_CKECK_2D, Makro nicht bekannt... Kann es sein dass du LOAD CHECK_2D meinst? Habe zudem mal den MI-Check aus dem Face gestartet. Komischerweise springt die Dateigröße nach dem MI-Check von den 21 mb wieder auf knapp 90 mb Habe jetzt aber noch gesehen dass der normale Speicherdialog die .mi nicht komprimiert speichert, der Befehl STORE SELECT speichert die .mi komprimiert. Daher kommt auch der große Dateiunterschied. Wenn ich die mit MI-Check bereinigte Datei noch mal mit STORE... speichere, dann komme ich auf knapp 19 mb.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
riesi Mitglied CAD-Admin, SolidWorks-Backend-Developer
Beiträge: 1016 Registriert: 06.05.2002 SolidWorks 2020-Sp5 OneSpaceDrafting V20.5 MS-Windows 10 Prof. 64Bit Core i7-6700 @ 3.40 GHz 32,00 GB RAM ATI WX 5100
|
erstellt am: 11. Okt. 2022 15:43 <-- editieren / zitieren --> Unities abgeben: Nur für uger
|
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE6+8@home ● W10 Pro Build19044.2006 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1 ● @Scirotec201804
|
erstellt am: 11. Okt. 2022 19:08 <-- editieren / zitieren --> Unities abgeben: Nur für uger
Zitat: Original erstellt von stere0:
Naja, hätte gedacht das es vll. machbar ist z.B. Kreise mit Durchmesser unterhalb eines Schwellwertes automatisch zu löschen, oder Linien mit Linienlänge unterhalb X... Im Anno gibts dazu ja einen Schwellwert den man einstellen kann
19MB als 7zip Datei .. bei leicht komprimierbaren Daten . DAS ist ne FETTE MI Datei . kleine Kreise / kurze Linien .. Wieviel Gold gibst du? - bei den aktuellen Inlflationsraten muss man(n) sich da echt Gedanken machen... Ich bin mir sehr unsicher welche Anno Aktion du hier meinst ? ScreenShot? ------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stere0 Mitglied
Beiträge: 41 Registriert: 29.11.2012 Win 10 V20
|
erstellt am: 12. Okt. 2022 11:50 <-- editieren / zitieren --> Unities abgeben: Nur für uger
Da hier im Board Unities das Gold sind, 10 hätte ich davon... Im Anno gibt es unter den Ansichtseigenschaften den Reiter Filter, den meinte ich. Im Drafting kann man sich ja die Elementeinfo anzeigen lassen, da steht die Länge oder der Durchmesser/Radius drin. Darüber könnte man ja ggf. entsprechende Elemente per Makro selektieren und löschen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
r.hoffmann Mitglied Techniker
Beiträge: 127 Registriert: 07.12.2006 OSD 13.2 20.4
|
erstellt am: 13. Okt. 2022 20:37 <-- editieren / zitieren --> Unities abgeben: Nur für uger
Hallo stereO, untenstehendes Makro löscht Kreise mit Radius <=5 (im Makro anpassen). Es kann aber nicht ausgeschlossen werden, dass auch andere Elemente erwischt werden. Deswegen NUR mit einer Kopie ausprobieren!! Speichere den untenstehenden Text als eva_dsc.mac in z.B. C:\temp ab. Nach Laden der Zeichnung dann das Makro laden INPUT'c:\temp\eva_dsc.mac' und danach aufrufen mit eva_dsc Gruß Robert {#########################################################################} {### Datei eva_dsc.mac ###} {### Aus Zeichnungen automatisch kreise löschen ###} {### die einen Mindestradius haben oder unterschreiten ###} {### ### ACHTUNG ### ### ACHTUNG ### ### ACHTUNG ### ###} {### es kann auch irrtümlich andere Geometrie gelöscht werden ###} {### Erstelldatum: 12.10.2022 ###} {### (c) 2022 by E.V.A. Robert Hoffmann ###} {### ###} {### Änderungsdatum: 12.10.2022 ###} {### Art der Änderung: Neuerstellung ###} {### ###} {### Änderungsdatum: ###} {### Art der Änderung: ###} {### ###} {### Änderungsdatum: ###} {### Art der Änderung: ###} {### ###} {### Änderungsdatum: ###} {### Art der Änderung: ###} {### ###} {### Kürzel _va -> Vorderansicht ###} {### Kürzel _sa -> Seitenansicht ###} {### Kürzel _ds -> Draufsicht ###} {### Kürzel _ut -> Unterteil ###} {### Kürzel _ot -> Oberteil ###} {### Kürzel _mt -> Mittelteil ###} {### ###} {### Zeit: ###} {### Erforderliche Makros: ###} {### Verzeichnis C:/TEMP muss existieren ###} {#########################################################################} { input 'd:\eva_me10_macros\share_source\eva_dsc.mac' } DEFINE eva_dsc LOCAL Ap LOCAL Apx LOCAL Apy LOCAL Pe (* Punkt auf Element für Text*) LOCAL Pex LOCAL Pey LOCAL R (* Radius *) LOCAL Anzahl LOCAL bearbeitet LOCAL eind LOCAL Fehler
store all del_old 'c:/temp/sicherung.mi' OPEN_OUTFILE 1 DEL_OLD ('c:/temp/eva_dsc.txt') WRITE_FILE 1 ('eva_dsc') LET Zaehler 1 LET bearbeitet 0 INQ_SELECTED_ELEM SELECT GLOBAL ALL CONFIRM END LET Anzahl (INQ 14) WRITE_FILE 1 (Anzahl) LOOP LET Fehler 0 EXIT_IF (INQ 14=0) IF (INQ 403=CIRCLE) LET eind (INQ 309) LET Radius (INQ 3) LET Pe (INQ 101 + PNT_RA Radius 45) LET Pex (X_OF Pe) LET Pey (Y_OF Pe) LET Ap (INQ 101) LET Apx (X_OF Ap) LET Apy (Y_OF Ap) {############# anpassen #############################} IF (Radius <= 5) LET bearbeitet (bearbeitet+1) delete (PNT_XY PEx Pey) end WRITE_FILE 1 ('{ Zaehler '+(STR(Zaehler))+'}') WRITE_FILE 1 ('Radius '+(STR (Radius))) WRITE_FILE 1 ('Mitte '+(STR (Ap))) WRITE_FILE 1 ('PE '+(STR (PE))) WRITE_FILE 1 ('CIRCLE ' +(STR (Apx)) +',' +(STR (Apy)) +' ' +(STR (Radius)) +' END' ) END_IF {####################################################} ELSE LET Fehler 1 { DISPLAY_NO_WAIT ("unbekanntes Element erwischt: " + STR (INQ 403)) WAIT 0.1 } END_IF IF (Fehler=0) LET Zaehler (Zaehler+1) END_IF LET Fehler 0 INQ_NEXT_ELEM EXIT_IF (INQ 403= END) END_LOOP CLOSE_FILE 1 { edit_file ('c:/temp/eva_dsc.txt') } DISPLAY (STR (bearbeitet) + ' von ' + STR (Anzahl) + ' geloescht') END_DEFINE
------------------ Homepage: www.me10-makros.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
r.hoffmann Mitglied Techniker
Beiträge: 127 Registriert: 07.12.2006 OSD 13.2 20.4
|
erstellt am: 15. Okt. 2022 14:24 <-- editieren / zitieren --> Unities abgeben: Nur für uger
Hallo noch einmal, bei inaktiven Teilen löscht er das ganze Teil!! delete global (PNT_XY PEx Pey) end Das global in obiger Zeile verhindert das. Evtl besser ist folgende Methode unter Benutzunng von POINTER: {############# anpassen #############################} IF (Radius <= 5) LET bearbeitet (bearbeitet+1) DELETE GLOBAL POINTER (INQ 2) END { delete global (PNT_XY PEx Pey) end } WRITE_FILE 1 ('{ Zaehler '+(STR(Zaehler))+'}') WRITE_FILE 1 ('Radius '+(STR (Radius))) WRITE_FILE 1 ('Mitte '+(STR (Ap))) WRITE_FILE 1 ('PE '+(STR (PE))) WRITE_FILE 1 ('CIRCLE ' +(STR (Apx)) +',' +(STR (Apy)) +' ' +(STR (Radius)) +' END') END_IF {####################################################} Gruß Robert Hoffmann ------------------ Homepage: www.me10-makros.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
friedhelm at work Mitglied Techniker Aluminium Profile
Beiträge: 882 Registriert: 01.04.2003 Creo Elements Direct /Drafting 17+20.x ui classic-Tablett + Ribbon, Modeling 17-20.0,.2,.4,.5 Lizenz auf USB-Netzwerkadapter PE-Express 8 Win 10 Enterprise 64 @work Win 10 Pro 64 @home Notepad++,IrfanView,eDrawings, ....
|
erstellt am: 16. Okt. 2022 09:17 <-- editieren / zitieren --> Unities abgeben: Nur für uger
Hallo zusammen möchte gerne noch was nachreichen. Ab der v16 sollte man anstelle von POINTER (INQ 2) POINTER (INQ 332) verwenden. Vor allem wenn man mit einem 64bit System unterwegs ist. Macht man das nicht, kommt dann bei einem Trace WARNING - following number token is a valid elem2d pointer. This is unsafe on Win64. zum Vorschein. Ist keine Fehlermeldung mit Abbruch sondern nur eine Warnung, aber wenn man schon undokumentierte Funktionen verwendet sollte man diese zumindest beachten. (Das müsste ich eigentlich Montag mal in der 20.x testen. Lange nicht mehr gemacht.) Ansonsten wie immer ein super Macro Robert, vor allem lässt es sich durch ein paar zusätzliche Zeilen auf ARC und LINE aufmotzen. Vieleicht auch noch FILLET obwohl das bei DXF oder DWG Import normalerweise nicht vorkommt. Dann lässt man das Macro nicht umsonst alle Elemente durchlaufen. INQ_SELECTED_ELEM SELECT GLOBAL ALL CONFIRM END Bin gespannt wie viel Gold du bekommst, Unities sind ja Mangelware geworden, meine sind unterwegs ------------------ Gruss Friedhelm Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
r.hoffmann Mitglied Techniker
Beiträge: 127 Registriert: 07.12.2006 OSD 13.2 20.4
|
erstellt am: 16. Okt. 2022 17:23 <-- editieren / zitieren --> Unities abgeben: Nur für uger
|
friedhelm at work Mitglied Techniker Aluminium Profile
Beiträge: 882 Registriert: 01.04.2003 Creo Elements Direct /Drafting 17+20.x ui classic-Tablett + Ribbon, Modeling 17-20.0,.2,.4,.5 Lizenz auf USB-Netzwerkadapter PE-Express 8 Win 10 Enterprise 64 @work Win 10 Pro 64 @home Notepad++,IrfanView,eDrawings, ....
|
erstellt am: 16. Okt. 2022 19:18 <-- editieren / zitieren --> Unities abgeben: Nur für uger
Hallo Robert der "Themenaufwärmer" ist stere0. Bei ihm in der Info steht Win 10 + V20. Mir war auch noch eingefallen dass die ACAD-cadler gerne mit Polylines hantieren. Was passiert wenn das zum Löschen passende Element dazu gehört. Wird dann die gesammte Kontur gelöscht? Wollte das auch morgen checken. So, genug. Gleich gibts Fritten (Pommes wie ihr sagt ) und danach Marvels Avengers Endgame ------------------ Gruss Friedhelm Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stere0 Mitglied
Beiträge: 41 Registriert: 29.11.2012 Win 10 V20
|
erstellt am: 17. Okt. 2022 11:15 <-- editieren / zitieren --> Unities abgeben: Nur für uger
Hallo ihr beiden, danke dir Robert für das Macro, werde versuchen es heute mal auszuprobieren. Hatte letzte Woche sogar mal auf deiner Webseite nach Macros gesucht die ich vll. umschreiben kann mit meinem begrenzten Wissen. Aber da warst du schneller Zu den Polylinien, die sind an sich auch zu haufe vorhanden. Allerdings habe ich MI-Clean aus dem FACE drüber laufen lassen, das löst die an sich schon auf, sollte daher kein Problem sein, zumindest bei mir. ME10 in V20 passt... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stere0 Mitglied
Beiträge: 41 Registriert: 29.11.2012 Win 10 V20
|
erstellt am: 17. Okt. 2022 14:59 <-- editieren / zitieren --> Unities abgeben: Nur für uger
Sooo, habe es jetzt mal an einem Teil meines Layouts getestet (Hallengrundriss). Funktioniert soweit auch ganz gut. Habe es sowohl mit circle sowohl als auch mit arc getestet. Hat in beiden Fällen entsprechende Elemente gelöscht. Im meinem Fall ein paar hundert Kreise, was auch "relativ" schnell ging, und knapp 30.000 Bögen von gut 150.000 Elementen. Das hat allerdings schon etwas gedauert und ich dachte Zeitweise das ME10 wäre komplett weg gewesen. Das "Logging" rauszunehmen bringt zumindest keinen zeitlichen Vorteil. Ich wollte das auch mit Line ausprobieren, allerdings kommen mir da ein paar ??? auf. Der Radius wird ja mit INQ 3 abgefragt und ich habe jetzt geschaut, ob es auch eine entsprechende Abfrage für die Länge gibt. Die Element-info, die beim Rechtsklick zu sehen ist (zumindest mit FACE), gibt die Länge bei einer Linie ja auch aus. Allerdings finde ich in der Dokumentation nichts, nur 101 und 102 für Anfangs- und Endpunkt. Müsste man sich wahrscheinlich errechnen, oder? Da hörts dann aber auch schon bei mir auf von dem was ich selber hinbekomme. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
r.hoffmann Mitglied Techniker
Beiträge: 127 Registriert: 07.12.2006 OSD 13.2 20.4
|
erstellt am: 17. Okt. 2022 15:42 <-- editieren / zitieren --> Unities abgeben: Nur für uger
Hallo stereO, unten noch einmal das Makro mit Kreisen und Linien. Du musst das Makro erweitern, indem du mit ELSE_IF (INQ403....) die weiteren Abfragen einfügst. {#########################################################################} {### Datei eva_dsc.mac ###} {### Aus Zeichnungen automatisch kreise löschen ###} {### die einen Mindestradius haben oder unterschreiten ###} {### ### ACHTUNG ### ### ACHTUNG ### ### ACHTUNG ### ###} {### es kann auch irrtümlich andere Geometrie gelöscht werden ###} {### Erstelldatum: 12.10.2022 ###} {### (c) 2022 by E.V.A. Robert Hoffmann ###} {### ###} {### Änderungsdatum: 12.10.2022 ###} {### Art der Änderung: Neuerstellung ###} {### ###} {### Änderungsdatum: ###} {### Art der Änderung: ###} {### ###} {### Änderungsdatum: ###} {### Art der Änderung: ###} {### ###} {### Änderungsdatum: ###} {### Art der Änderung: ###} {### ###} {### Kürzel _va -> Vorderansicht ###} {### Kürzel _sa -> Seitenansicht ###} {### Kürzel _ds -> Draufsicht ###} {### Kürzel _ut -> Unterteil ###} {### Kürzel _ot -> Oberteil ###} {### Kürzel _mt -> Mittelteil ###} {### ###} {### Zeit: ###} {### Erforderliche Makros: ###} {### Verzeichnis C:/TEMP muss existieren ###} {#########################################################################} { input 'd:\eva_me10_macros\share_source\eva_dsc.mac' } DEFINE eva_dsc LOCAL Ap LOCAL Apx LOCAL Apy LOCAL Ep LOCAL Epx LOCAL Epy LOCAL Pe (* Punkt auf Element für Text*) LOCAL Pex LOCAL Pey LOCAL R (* Radius *) LOCAL Anzahl LOCAL Laenge LOCAL bearbeitet LOCAL eind LOCAL Fehler LOCAL P
store all del_old 'c:/temp/sicherung.mi' OPEN_OUTFILE 1 DEL_OLD ('c:/temp/eva_dsc.txt') WRITE_FILE 1 ('eva_dsc') LET Zaehler 1 LET bearbeitet 0 INQ_SELECTED_ELEM SELECT GLOBAL ALL CONFIRM END LET Anzahl (INQ 14) WRITE_FILE 1 (Anzahl) LOOP LET Fehler 0 EXIT_IF (INQ 14=0) IF (INQ 403=CIRCLE) LET eind (INQ 309) LET Radius (INQ 3) LET Pe (INQ 101 + PNT_RA Radius 45) LET Pex (X_OF Pe) LET Pey (Y_OF Pe) LET Ap (INQ 101) LET Apx (X_OF Ap) LET Apy (Y_OF Ap) {############# anpassen #############################} IF (Radius <= 5) {############# anpassen Ende ########################} LET bearbeitet (bearbeitet+1) DELETE GLOBAL POINTER (INQ 2) END WRITE_FILE 1 ('{ Zaehler '+(STR(Zaehler))+'}') WRITE_FILE 1 ('Radius '+(STR (Radius))) WRITE_FILE 1 ('Mitte '+(STR (Ap))) WRITE_FILE 1 ('PE '+(STR (PE))) WRITE_FILE 1 ('CIRCLE ' +(STR (Apx)) +',' +(STR (Apy)) +' ' +(STR (Radius)) +' END') END_IF ELSE_IF (INQ 403=LINE) LET Ap (INQ 101) LET Apx (X_OF Ap) LET Apy (Y_OF Ap) LET Ep (INQ 102) LET Epx (X_OF Ep) LET Epy (Y_OF Ep) LET Pe (Ap+(0.5*(EP-AP))) LET Laenge (Ep-Ap) {############# anpassen #############################} IF (ABS (Laenge) <= 1) {############# anpassen Ende ########################} LET bearbeitet (bearbeitet+1) DELETE GLOBAL POINTER (INQ 2) END WRITE_FILE 1 ('{ Zaehler '+(STR(Zaehler))+'}') WRITE_FILE 1 ('Linie') WRITE_FILE 1 ('Anfangspunkt '+(STR (Ap))) WRITE_FILE 1 ('Endpunkt '+(STR (Ep))) WRITE_FILE 1 ('Laenge '+(STR (Laenge))) WRITE_FILE 1 ('LINE ' +(STR (Ap)) +' ' +(STR (Ep)) +' END') END_IF ELSE LET Fehler 1 { DISPLAY_NO_WAIT ("unbekanntes Element erwischt: " + STR (INQ 403)) WAIT 0.1 } END_IF IF (Fehler=0) LET Zaehler (Zaehler+1) END_IF LET Fehler 0 INQ_NEXT_ELEM EXIT_IF (INQ 403= END) END_LOOP CLOSE_FILE 1 { edit_file ('c:/temp/eva_dsc.txt') } DISPLAY (STR (bearbeitet) + ' von ' + STR (Anzahl) + ' geloescht') END_DEFINE Gruß Robert
------------------ Homepage: www.me10-makros.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE6+8@home ● W10 Pro Build19044.2006 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1 ● @Scirotec201804
|
erstellt am: 18. Okt. 2022 20:46 <-- editieren / zitieren --> Unities abgeben: Nur für uger
Zitat: Original erstellt von r.hoffmann: unten noch einmal das Makro mit Kreisen und Linien.
Ihr habt das ja schon gut im Griff... Aber performance technisch .. vielleicht paar Lücken.. Daher zwei 'einstreusel'
Code: INQ_SELECTED_ELEM SELECT GLOBAL ALL CONFIRM END
Der ist SCHWEINE Teuer und selektiert ja auch alle Bemassungen, Texte, und und und Vorschlag: Code: INQ_SELECTED_ELEM SELECT GLOBAL GEO ALL CONFIRM END
lasst uns mal C_GEO draussen lassen ... ich denke auch Code: DELETE GLOBAL POINTER (INQ 2) END
ist teuer. Weil. Das ist jedesmal ein redraw im VP Vorschlag:
Code: {in der loop} ADD_ELEM_INFO "this_element_will_be_deleted_in_few_milliseconds" GLOBAL POINTER (INQ 332) END {nach der loop} DELETE GLOBAL INFOS "this_element_will_be_deleted_in_few_milliseconds" END
Den info text definierst Du am besten als lokale Makro Variable mit einem (STR (RND)) hinten dran. Dann sollte es zum Schluss nur einen Redraw geben, wenn alles auf einen Schlag gelöscht wird. Ich würde makros NUR noch mit (INQ 332) codieren. Wenn denn Nachzügler mit Asbach Alter Software unterwegs sind sollen DIE sich melden. Aber der Standard sollten die aktuell supporteten Versionen sein (also 20.5 / 20.4) . --------------------------------------- @stere0 Dir ist schon bewusst das dir mit dem Löschen von Geometrie auch Schraffuren verloren gehen, weil die Kontur nicht mehr geschlossen ist? ------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● [Diese Nachricht wurde von der_Wolfgang am 18. Okt. 2022 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
r.hoffmann Mitglied Techniker
Beiträge: 127 Registriert: 07.12.2006 OSD 13.2 20.4
|
erstellt am: 19. Okt. 2022 20:12 <-- editieren / zitieren --> Unities abgeben: Nur für uger
|
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE6+8@home ● W10 Pro Build19044.2006 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1 ● @Scirotec201804
|
erstellt am: 20. Okt. 2022 17:45 <-- editieren / zitieren --> Unities abgeben: Nur für uger
|
r.hoffmann Mitglied Techniker
Beiträge: 127 Registriert: 07.12.2006 OSD 13.2 20.4
|
erstellt am: 20. Okt. 2022 19:06 <-- editieren / zitieren --> Unities abgeben: Nur für uger
OPEN_OUTFILE 1 DEL_OLD ('c:/temp/eva_dsc.txt') .... WRITE_FILE 1 ('Laenge '+(STR (Laenge))) ..... In obiger Datei werden ja die Ergebnisse gespeichert von den zutreffenden Elementen. Dies entspricht ja in etwa deinem Vorschlag der Protokolldatei. Hätte man mal die Datei eva_dsc.txt aufgerufen, wäre zu sehen, dass bei der Länge ZWEI Werte standen statt des einen für die Länge. Dummerweise ist mir das auch erst nach dem Posten aufgefallen. ------------------ Homepage: www.me10-makros.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE6+8@home ● W10 Pro Build19044.2006 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1 ● @Scirotec201804
|
erstellt am: 21. Okt. 2022 16:53 <-- editieren / zitieren --> Unities abgeben: Nur für uger
|
friedhelm at work Mitglied Techniker Aluminium Profile
Beiträge: 882 Registriert: 01.04.2003 Creo Elements Direct /Drafting 17+20.x ui classic-Tablett + Ribbon, Modeling 17-20.0,.2,.4,.5 Lizenz auf USB-Netzwerkadapter PE-Express 8 Win 10 Enterprise 64 @work Win 10 Pro 64 @home Notepad++,IrfanView,eDrawings, ....
|
erstellt am: 21. Okt. 2022 20:23 <-- editieren / zitieren --> Unities abgeben: Nur für uger
Zitat: Original erstellt von der_Wolfgang: BTW: Systeminfo: OSD 13.2?? Echt??Ich würde makros NUR noch mit (INQ 332) codieren. Wenn denn Nachzügler mit Asbach Alter Software unterwegs sind sollen DIE sich melden. Aber der Standard sollten die aktuell supporteten Versionen sein (also 20.5 / 20.4) .
Kleines Fettnäpfchen. Wie wäre es damit? LOCAL Versi { Nicht vergessen wenn man keine Globale Variable wünscht. } LOCAL Doppel-Wumms { 'Neues Modewort' Nicht vergessen wenn man keine Globale Variable wünscht. } Am Anfang des Macros INQ_ENV 0 LET Versi (INQ 2) IF ((Versi < 16) and (Versi > 10)) { Habe irgendwo gelesen, dass POINTER erst ab v11 richtig arbeitet. } LET Doppel-Wumms 'ADD_ELEM_INFO "this_element_will_be_deleted_in_few_milliseconds" GLOBAL POINTER (INQ 2) END' ELSE_IF (Versi > 16) LET Doppel-Wumms 'ADD_ELEM_INFO "this_element_will_be_deleted_in_few_milliseconds" GLOBAL POINTER (INQ 332) END' ELSE BEEP DISPLAY ('Deine ME10 ist Version '+Versi+' da sollte die undokumentierte Funktion POINTER eigentlich nicht funktionieren.') DISPLAY 'Du kannst aber gerne mal probieren. Gut wäre ein Backup deiner Zeichnung :-). Abbruch ESC ; weiter ENTER' LET Doppel-Wumms 'ADD_ELEM_INFO "this_element_will_be_deleted_in_few_milliseconds" GLOBAL POINTER (INQ 2) END' END_IF { rem So jetzt 2 Möglichkeiten zum Auslösen des Strings 'Doppel-Wumms' anstelle von Wolfgangs 'ADD_ELEM_INFO "this_element_will_be_deleted usw. -Im Macro, aber das ist auch wieder Versionsabhängig: EXECUTE_STRING Doppel-Wumms Ach, hätte man damals doch alle Versionen die "Helps" gespeichert - oder Zusatzmacro, wobei man prüfen sollte ob es nicht schon vorhanden ist ist ;-) LIST_MACRO_NAMES ALL DEFINE Execute PARAMETER Statement LET Statement (VAL Statement) Statement END_DEFINE Aufruf im Kill-macro Execute Doppel-Wumms Habs jetzt leider nicht testen können, aber ich lese es ja denn ------------------ Gruss Friedhelm Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE6+8@home ● W10 Pro Build19044.2006 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1 ● @Scirotec201804
|
erstellt am: 23. Okt. 2022 11:19 <-- editieren / zitieren --> Unities abgeben: Nur für uger
Zitat: Original erstellt von friedhelm at work: LET Doppel-Wumms 'ADD_ELEM_INFO "this_element_will_be_deleted_in_few_milliseconds" GLOBAL POINTER (INQ 2) END' EXECUTE_STRING Doppel-Wumms
Erst nen String zusammen bauen und den dann über eine string evaluation auszuführen ist (nicht nur performance technisch) arg Öööörggss.. Variante:
Code: LOCAL Versi LOCAL GlobalPtrNo INQ_ENV 0 LET Versi (INQ 2)LET GlobalPtrNo 0 IF (Versi > 10) LET GlobalPtrNo 2 END_IF IF (Versi > 16) LET GlobalPtrNo 332 END_IF { vor der loop } IF (GlobalPtrNo == 0) exit confirm { upppss } END_IF { in der loop } ADD_ELEM_INFO "this_element_will_be_deleted_in_few_milliseconds" GLOBAL POINTER (INQ GlobalPtrNo) END
Aufmerksame Leser:Innen der Dokumentation mögen nun einwenden das (INQ 2) ja eine Number ist und (INQ 332) ein String. Dem Select Global Pointer ist das aber egal, der kann (AFAIR) beides. Macht man andere Dinge mit dem Pointer muss man vielleicht einmal mehr nachdenken. ------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
r.hoffmann Mitglied Techniker
Beiträge: 127 Registriert: 07.12.2006 OSD 13.2 20.4
|
erstellt am: 23. Okt. 2022 20:49 <-- editieren / zitieren --> Unities abgeben: Nur für uger
Hier noch einmal die bereinigte Version mit Wahl, ob protokolliert werden soll, einer eindeutigen Info für ADD_ELEM_INFO und abhängig von der Version wird POINTER 2 bzw. 322 verwendet. {#########################################################################} {### Datei eva_dsc.mac ###} {### Aus Zeichnungen automatisch Elemente löschen ###} {### die einen Mindestwert haben oder unterschreiten ###} {### ###} {### Erstelldatum: 12.10.2022 ###} {### (c) 2022 by E.V.A. Robert Hoffmann ###} {### ###} {### Änderungsdatum: 12.10.2022 ###} {### Art der Änderung: Neuerstellung ###} {### ###} {### Änderungsdatum: 23.10.2022 ###} {### Art der Änderung: Versionsabfrage und Wahl ob Protokoll ###} {### ###} {### Änderungsdatum: ###} {### Art der Änderung: ###} {### ###} {### Änderungsdatum: ###} {### Art der Änderung: ###} {### ###} {### Kürzel _va -> Vorderansicht ###} {### Kürzel _sa -> Seitenansicht ###} {### Kürzel _ds -> Draufsicht ###} {### Kürzel _ut -> Unterteil ###} {### Kürzel _ot -> Oberteil ###} {### Kürzel _mt -> Mittelteil ###} {### ###} {### Zeit: ###} {### Erforderliche Makros: ###} {### Verzeichnis C:/TEMP muss existieren ###} {#########################################################################} DEFINE eva_dsc LOCAL Ap LOCAL Apx LOCAL Apy LOCAL Ep LOCAL Epx LOCAL Epy LOCAL Radius LOCAL Anzahl LOCAL Laenge LOCAL bearbeitet LOCAL Fehler LOCAL Info_eindeutig LOCAL Versi LOCAL GlobalPtrNo LOCAL Withprotocol LET Withprotocol 0 {### 1=Protokoll wird geschrieben, 0=Protokoll wird nicht geschrieben ###} LET GlobalPtrNo 0 {### Pointer wird nicht unterstützt ###} INQ_ENV 0 LET Versi (INQ 2) IF (Versi > 10) LET GlobalPtrNo 2 END_IF IF (Versi > 16) LET GlobalPtrNo 332 END_IF IF (GlobalPtrNo = 0) display ('POINTER wird nicht unterstuetzt, Abbruch mit ESC, weiter mit OK') END_IF IF (Withprotocol =1) store all del_old 'c:/temp/sicherung.mi' OPEN_OUTFILE 1 DEL_OLD ('c:/temp/eva_dsc.txt') WRITE_FILE 1 ('eva_dsc') END_IF LET bearbeitet 0 INQ_SELECTED_ELEM SELECT GLOBAL GEO ALL CONFIRM END LET Anzahl (INQ 14) IF (Withprotocol =1) WRITE_FILE 1 ('Anzahl: ' + (STR (Anzahl))) END_IF LET Info_eindeutig ('eva_dsc_info'+DATE) LOOP LET Fehler 0 EXIT_IF (INQ 14=0) IF (INQ 403=CIRCLE) LET Radius (INQ 3) LET Ap (INQ 101) LET Apx (X_OF Ap) LET Apy (Y_OF Ap) {############# anpassen #############################} IF (Radius <= 5) {############# anpassen Ende ########################} LET bearbeitet (bearbeitet+1) ADD_ELEM_INFO Info_eindeutig GLOBAL POINTER (INQ GlobalPtrNo) END IF (Withprotocol =1) WRITE_FILE 1 (' ') WRITE_FILE 1 ('Radius '+(STR (Radius))) WRITE_FILE 1 ('Mitte '+(STR (Ap))) WRITE_FILE 1 ('CIRCLE ' +(STR (Apx)) +',' +(STR (Apy)) +' ' +(STR (Radius)) +' END') END_IF END_IF ELSE_IF (INQ 403=LINE) LET Ap (INQ 101) LET Apx (X_OF Ap) LET Apy (Y_OF Ap) LET Ep (INQ 102) LET Epx (X_OF Ep) LET Epy (Y_OF Ep) LET Laenge (LEN(Ep-Ap)) {############# anpassen #############################} IF (ABS (Laenge) <= 1) {############# anpassen Ende ########################} LET bearbeitet (bearbeitet+1) ADD_ELEM_INFO Info_eindeutig GLOBAL POINTER (INQ GlobalPtrNo) END IF (Withprotocol =1) WRITE_FILE 1 (' ') WRITE_FILE 1 ('Anfangspunkt '+(STR (Ap))) WRITE_FILE 1 ('Endpunkt '+(STR (Ep))) WRITE_FILE 1 ('Laenge '+(STR (Laenge))) WRITE_FILE 1 ('LINE ' +(STR (Ap)) +' ' +(STR (Ep)) +' END') END_IF END_IF { ELSE LET Fehler 1 IF (Fehler = 1) END_IF } END_IF INQ_NEXT_ELEM EXIT_IF (INQ 403= END) END_LOOP DELETE GLOBAL INFOS Info_eindeutig END IF (Withprotocol =1) CLOSE_FILE 1 END_IF DISPLAY (STR (bearbeitet) + ' von ' + STR (Anzahl) + ' geloescht') END_DEFINE
------------------ Homepage: www.me10-makros.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stere0 Mitglied
Beiträge: 41 Registriert: 29.11.2012 Win 10 V20
|
erstellt am: 25. Okt. 2022 09:07 <-- editieren / zitieren --> Unities abgeben: Nur für uger
Sieht gut aus, danke euch zweien vieren! Das hätte ich nicht hinbekommen. Es werden zwar komischerweise nicht immer alle Elemente gelöscht, obwohl sie unter die Bedingungen fallen, aber die Menge an Elementen hält sich in Grenzen. Habe mir jetzt noch zwei Anpassungen gemacht. Zum einen werden die Größenangaben, die bis jetzt im Makro fix hinterlegt sind, beim Aufruf abgefragt. Und ich habe noch eine Boxauswahl hinzugefügt um ggf. auch nur gewisse Bereiche entsprechend zu bereinigen. Code hinzu unterhalb der Variablen deklarierung
Code: LOCAL L_input LOCAL R_input LOCAL P1 LOCAL P2 READ NUMBER 'Radius eingeben bis zu dem geloescht wird' R_input READ NUMBER 'Laenge eingeben bis zu der geloescht wird' L_input READ PNT 'Eckpunkt oben links des Rahmens waehlen' P1 READ PNT 'gegenueberliegenden Eckpunkt des Rahmens waehlen' RUBBER_BOX P1 P2
BOX hinzu anstatt ALL bei der Geometrieauswahl
Code: LET bearbeitet 0 INQ_SELECTED_ELEM SELECT GLOBAL GEO BOX P1 P2 CONFIRM END LET Anzahl (INQ 14)
Fixe Abmessungen durch Variablen ersetzt
Code: IF (Radius <= R_input) ... IF (ABS (Laenge) <= L_input)
--Edit-- Ups, hab noch vergessen die R_input und L_input mit aufzuführen. ist jetzt im ersten Codeblock mit drin...
--Edit 2-- Musste nach Hinweis feststellen das ich doch glatt zwei Leute vergessen habe die mitgeholfen haben Behoben... [Diese Nachricht wurde von stere0 am 25. Okt. 2022 editiert.] [Diese Nachricht wurde von stere0 am 27. Okt. 2022 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kotom-Eng Mitglied
Beiträge: 2 Registriert: 18.11.2022
|
erstellt am: 21. Dez. 2022 12:22 <-- editieren / zitieren --> Unities abgeben: Nur für uger
Hallo, Bitte entschuldigen Sie mich zunächst: Ich spreche nicht gut Deutsch. Alles, was ich hier geschrieben habe, wurde mit Google Translate übersetzt. Ich möchte Ihnen vorschlagen, ein sehr schnelles Werkzeug zu verwenden, um kleine Elemente (Linien, Kreise und Bögen) zu entfernen. Die Größe ist benutzerdefiniert. Dieses Tool finden Sie hier: http://kotom.eng.free.fr/cse.php?lu=en Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |