#include "std.h" #include "megatyp.h" #include "megacad.h" typedef struct { t_entity ent; short colour; } tDat; ulong line_IDs[500]; // Platz für 500 Element ID's short line_count; //Zähler für Anzahl der Linien ulong wrongelements_IDs[500]; // Platz für 500 "falsche = nicht Linien" Element ID's short wrong_count; //Zähler für "falsche" Elemente //Funktion fürs Blinken short DoDraw( void *ptr ) { DrawEntities(wrongelements_IDs,wrong_count); return(0); } //Zählfunktion short LineCount(void *argptr ) { // Message("Das ist LineCount","",NULL,NULL,"ok",3); tDat *p = (tDat*)argptr; if ( p->ent.attr.col== p->colour) { if (p->ent.type==E_LINE) { line_IDs[line_count] = p->ent.id; line_count++; } else { wrongelements_IDs[wrong_count] = p->ent.id; wrong_count++; } } if(line_count == 500 || wrong_count == 500) { Message("Überprüfung der Elemente ist abgebrochen","es wurden zuviele Elemente gezählt (500)",NULL,NULL,"ok",3); return(BREAK_LOOP); } else return(CONTINUE_LOOP); } void LineCheck() { tDat dat; ulong filter; t_mat44 ecs; Message("In Funktion LineCheck","",NULL,NULL,"ok",3); dat.colour = 13; //Farbe 13 = hellmagenta line_count = 0; //Linien Element zähler auf 0 setzen wrong_count = 0; //andere Elemente Zähler auf 0 setzen filter = 0xffffffff; // Selektionskriterium -> alle Elemente erlaubt EntityLoop(filter,filter,LineCount,&dat,GetVarPtr(),&ecs,VD_CNT); MegaCMD("AZoomAll"); char Meldung[50]; if (wrong_count==0) { sprintf(Meldung, "Es gibt %d Linien in der Farbe Hellmagenta",line_count); Message(Meldung,"",NULL,NULL,"ok",3); } else { sprintf(Meldung, "Es gibt %d Elemente in hellmagenta, welche nicht vom Typ Linie sind",wrong_count); Message(Meldung,"",NULL,NULL,"ok",3); Blink(DoDraw,NULL); //falsche Elemente Blinken } } extern "C" short MegaMain(char *file,char *args) { LineCheck(); return(0); }