ME10-Zeichnungen in das DXF-Format konvertieren ----------------------------------------------- Gerade Ingenieurbueros stehen oft vor der Aufgabe, mit ME10 fuer einen Kunden zu arbeiten, der selbst mit AutoCAD (oder einem kompatiblen Programm) arbeitet. Verlangt der Kunde nun, dass die Konstruktionszeichnungen in seinem Fomat zu erstellen sind, so stellt sich die Frage, wie eine ME10-Zeichnung AutoCAD-kompatibel gestaltet werden kann. Tatsaechlich ist dies weitgehend moeglich. Man kann eine Layerstruktur erzeugen, ja sogar den Layern Farben zuweisen! Wie man den Layern eine Linienart zuordnen kann, habe ich nicht herausfinden koennen. Meiner Ansicht nach ist dies bis zur Version 7.00 nicht moeglich. Die Vorgehensweise: Zunaechst erstellt man die Zeichnung mit ME10 wie gewohnt, also mit Teilestruktur in seinen eigenen Farben. Dann wird die Zeichnung konvertiert. Im ersten Schritt werden die Farben angepasst. Dann wird die Layerstruktur erzeugt. Im dritten Schritt schliesslich werden den Layern Farben zugeordnet. Hier ein Beispiel zum ersten Schritt. Die Dummy-Linien sind notwendig, damit das Macro nicht mit einer Fehlermeldung abbricht, falls eine bestimmte Linienart/Farbe nicht in der Zeichnung existiert. Die Schleife zum Aendern der Masslinien braucht man, da die Farben der Masse bzw. Masslinien nicht global geaendert werden koennen. { Macro zum Aendern der Zeichnungsfarben } DEFINE Neue_farben LOCAL i { Schleifenvariable } EDIT_PART TOP INIT_PART 'Neue_farben' { fuer Dummylinien } LINETYPE SOLID { Vollinie 0,5 } COLOR [meine_farbe_05] LINE (0,0) (0,10) END LINETYPE DOT_CENTER { Mittellinie } COLOR [meine_farbe_mittellin] LINE (0,0) (0,10) END ... CHANGE_COLOR [kunden_farbe_05] SELECT GLOBAL [meine_farbe_05] CONFIRM CHANGE_COLOR [kunden_farbe_mittel] SELECT GLOBAL DOT_CENTER AND GLOBAL [meine_farbe_mittellin] CONFIRM CHANGE_HATCH_COLOR [kunden_farbe_schraffur] SELECT GLOBAL HATCHING ALL CONFIRM . . . INQ_ENV 8 { Aendert in allen Teilen die Masslinien auf Gruen } LET i (INQ 5) WHILE (i>0) TRAP_ERROR EDIT_PART ('~'+(STR i)) IF (NOT CHECK_ERROR) CHANGE_DIM_COLOR GREEN ALL END_IF LET i (i - 1) END_WHILE DELETE 'Neue_farben' { Dummylinien wieder loeschen } END END_DEFINE Im zweiten Schritt ist nun die Layerstruktur zu erzeugen. Hierzu muessen wieder Dummy-Linien wie im ersten Beispiel erzeugt werden. Dann werden Schichten erzeugt, bzw. die Schicht-Info an die entsprechenden Elemente angehaengt. { Transformationsmakro ME10 zu AutoCad - (gmg) 10/96 } DEFINE Layerstruktur EDIT_PART TOP INIT_PART 'Autocad_farben' { fuer Dummylinien } { Dummylinien } CHANGE_ELEM_INFO 'LAYER: *' 'LAYER: Sichtbare_050' SELECT GLOBAL RED AND GLOBAL SOLID CONFIRM CHANGE_ELEM_INFO 'LAYER: *' 'LAYER: Mittellinie' SELECT GLOBAL DOT_CENTER AND GLOBAL WHITE CONFIRM CHANGE_ELEM_INFO 'LAYER: *' 'LAYER: Bemassung' SELECT GLOBAL DIMENSIONS ALL CONFIRM . . . SHOW GLOBAL INFOS 'LAYER: Sichtbare_050' RED END EDIT_PART TOP DELETE 'Autocad_farben' { Dummylinien wieder loeschen } END END_DEFINE Der DXF-Translator wird nun beim Uebersetzen vom MI- in das DXF-Format die Layer erzeugen. Notwendig hierzu ist, das in der DXF.CON der Schalter KEEP BLOCKLAYER INFORMATION auf ON gesetzt wird! Im dritten Schritt werden nun noch die Linienfarben der Layer gesetzt. Hierzu steuert man den DXF-Translator ueber die Variable ACAD_LAYER_COLOR_[Layername]_[Farbnummer]. Diese Angabe 'heftet' man als Info an den TOP. z.B.: ADD_ELEM_INFO 'ACAD_LAYER_COLOR_MITTELLINIE_7' SELECT PARTS '~1' CONFIRM END Dieses Beispiel setzt den Layer 'Mittellinie' (siehe oben) auf die Farbe weiss (7). Wegen des eineindeutigen Teilenamens funktioniert dies natuerlich nicht bei aelteren ME10-Versionen als 6.0! (gmg) 05/97