home *** CD-ROM | disk | FTP | other *** search
/ Enter 1998 December / ENTER12_1.iso / Dema / Cad_Proj.ekt / Mega48t / CC / ADDPOLY.C_ / ADDPOLY.C
Encoding:
C/C++ Source or Header  |  1995-01-10  |  2.9 KB  |  93 lines

  1. /**********************************************************************/
  2. #include "std.h"
  3. #include "megatyp.h"
  4. #include "megacad.h"
  5.  
  6. # define MAXPOLYPTS 30  // maximale Anzahl der Polylinienpunkte
  7. /********************************************************************/
  8. static void SetDlg(
  9.                     t_dlgdta *t,
  10.                     char *text,
  11.                     uchar typ,
  12.                     void *val)
  13. {
  14.     strcpy(&t->text[0],text);
  15.     t->type = typ;
  16.     t->val = val;
  17.     return;
  18. }
  19. /********************************************************************/
  20. short main(
  21.         char *filename,
  22.         char *args )
  23. {
  24.     short mret,dret;
  25.     double px,py,mpd, *pmpd;
  26.     t_dlgdta tg[6]; // Array der Dialogfeldbeschreiber
  27.     t_polyln poly;  // Polylinienstruktur
  28.     t_polypt polypt[MAXPOLYPTS]; // Platz für 30 Polylinepunkte
  29.  
  30.     // zuweisen des Pointers für die Polylinepunkte
  31.     poly.ppt = polypt;
  32.  
  33.     // px, py und num vorinitialisieren
  34.     px = 0.0;
  35.     py = 0.0;
  36.     poly.num = 0;
  37.  
  38.     // setzen der Dialogfelder
  39.     SetDlg(&tg[0],"Lücke",DLG_BUT,NULL);
  40.     SetDlg(&tg[1],"Linie",DLG_BUT,NULL);
  41.     SetDlg(&tg[2],"Kreisbg.",DLG_BUT,NULL);
  42.     SetDlg(&tg[3],"X - Wert",DLG_LEN,&px);
  43.     SetDlg(&tg[4],"Y - Wert",DLG_LEN,&py);
  44.     SetDlg(&tg[5],"mpd :",DLG_LEN,&mpd);
  45.  
  46.     mret = 1;
  47.     while(mret != 0)
  48.     {
  49.         mret = DlgInput(5,"Polylinie",tg);
  50.  
  51.         if(mret == 1) // Lücke, mpd auf NULL setzen
  52.             pmpd = NULL;
  53.         else
  54.             pmpd = &mpd;
  55.         if(mret == 2) // Linie, mpd auf 0.0 setzen
  56.             mpd = 0.0;
  57.         if(mret == 3) // Kreisbogen, Scheitelpunkt abfragen
  58.         {
  59.             // Dialog mit nur einem Feld um mpd einzugeben
  60.             dret = DlgInput(1,"Scheitelpunkt angeben",&tg[5]);
  61.             if(dret == 0) // Abbruch, neue Eingabe
  62.                 continue;
  63.         }
  64.  
  65.         if(mret) // nicht zurück gewählt, Polylinepunkt hinzufügen
  66.         {
  67.             dret = AddPolylnPt(&poly,pmpd,px,py);
  68.             if(dret == 0) // maximale Anzahl von POLYLN_MAX überschritten
  69.             {             // darf in diesem Beispiel nicht passieren.
  70.                 Message("Anzahl von POLYLN_MAX übershritten !","",
  71.                         NULL,NULL,"OK",3);
  72.                 mret = 0;
  73.             }
  74.             else
  75.             {
  76.                 if(poly.num == MAXPOLYPTS) // max Anzahl Punkte erreicht
  77.                 {
  78.                     Message("Die Punktliste ist voll!",
  79.                             "mehr Punkte können nicht eingegeben werden !",
  80.                             NULL,NULL,"OK",3);
  81.                     mret = 0;
  82.                 }
  83.             }
  84.         }
  85.     }
  86.     CreateEntity(E_POLYLN,NULL,&poly); // Polylinienelement erzeugen
  87.  
  88.     savecount(); // Element in UNDO /REDO Liste eintragen
  89.  
  90.     return(0);
  91. }
  92. /********************************************************************/
  93.