home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2001 December / pcwk12201b.iso / Reklamy / CAD-Projekt / MegaCAD-4_5 / CC / LEKCJA08.C_ / LEKCJA08.C
C/C++ Source or Header  |  1995-09-01  |  6KB  |  137 lines

  1. /*                      LEKCJA08.C
  2. //---------------------------------------------------------------------------
  3. Temat:
  4.         Definiowanie elementu WYMIAROWANIE
  5. //---------------------------------------------------------------------------
  6. Funkcje:
  7.         EXT(217) void GetDimVal(       
  8.         EXT(218) void PrintDimVal(     
  9. //---------------------------------------------------------------------------
  10.  
  11.    Wymiarowanie wydaje si⌐ na poczÑtku trudnym przedsi⌐wzi⌐ciem, jednak╛e po 
  12.    zrozumieniu mo╛liwoÿci jakie dajÑ funkcje pomocnicze 'GetDimVal' i
  13.    'PrintDimVal' otwiera si⌐ caêa paleta zastosowaΣ.
  14.  
  15. typedef struct _dimension
  16. {
  17.     t_txtval val;        // atrybuty tekstu (opisane wczeÿniej)
  18.     double   tx;         // wspóêrz⌐dna poczÑtku wartoÿå X
  19.     double   ty;         // wspóêrz⌐dna poczÑtku wartoÿå Y   
  20.     double   dx1;        // wektor linii podstawowej wartoÿå X
  21.     double   dy1;        // wektor linii podstawowej wartoÿå Y     
  22.     double   dx2;        // wektor nachylenia wartoÿå X 
  23.     double   dy2;        // wektor nachylenia wartoÿå Y 
  24.     double   x1;         //
  25.     double   y1;         // 1. punkt
  26.     double   x2;         //
  27.     double   y2;         // 2. punkt
  28.     double   x3;         //
  29.     double   y3;         // 3. punkt
  30.     double   x4;         //
  31.     double   y4;         // 4. punkt
  32.     double   a_hig;      // wysokoÿå strzaêki wymiarowej
  33.     double   a_wid;      // szerokoÿå strzaêki wymiarowej  
  34.     double   a_len;      // dêugoÿå strzaêki wymiarowej  
  35.     double   value;      // zmierzona wartoÿå
  36.     uchar    nins;       // czy bez linii przy wymiarze zewn⌐trznym?
  37.     uchar    plft;       // czy 1 strzaêka jest kóêkiem ?
  38.     uchar    prgt;       // czy 2 strzaêka jest kóêkiem ?    
  39.     uchar    tpen;       // numer pisaka plotera dla wymiarowania
  40.     uchar    vpos;       // pozycja pionowa (lewa, prawa, ÿrodek, dowolna)
  41.     uchar    hpos;       // pozycja pozioma (lewa, prawa, ÿrodek, dowolna)
  42.     uchar    reli;       // które linie wymiarowe majÑ byÿ przedstawione
  43.     uchar    str2;       // obydwie wartoÿci tolerancji ?
  44.     uchar    para;       // czy tekst ma byå równolegêy do linii wymiarowej
  45.     uchar    edit;       // czy edytowano wartoÿå wymiaru ?
  46.     uchar    xyon;       // typ wymiaru wspóêrz⌐dnych (0-2)
  47.     uchar    insd;       // wymiar wewn⌐trzny ?
  48.     uchar    mpfl;       // typ strzaêki (1 - 7)
  49.     uchar    mbox;       // E_T_DIM z prostokÑtem ?
  50.     char     _far *str;  // tekst
  51. } t_dimension;
  52. //---------------------------------------------------------------------------
  53.  
  54. EXT(217) void GetDimVal(       // 
  55.              ushort      type, // typ wymiarowania
  56.              ushort      init, // inicjalizacja
  57.              t_dimension *dim);// dane tekstu
  58.  
  59. Opis:
  60.     Funkcja uêatwiajÑca wczytanie ustawionych parametrów wymiarowania.
  61.     Zmienna 'init' mo╛e przyjmowaå nast⌐pujÑce wartoÿci:
  62.     (init & 1) - wczatanie aktualnych wartoÿci wraz ze strzaêkÑ wymiarowÑ
  63.     (init & 2) - ustawienie tekstu wymiarowego
  64.     (init&4) - wczytanie tylko wartoÿci strzaêki wymiarowej
  65.     (init&0) - przeliczenie prostokÑta tekstu
  66.  
  67. Przykêad wywoêania:
  68.     GetDimVal(E_H_DIM,7,&dim);
  69. //---------------------------------------------------------------------------
  70.  
  71.   Funkcja uêatwiajÑca wpisanie danych do wymiarowania - tworzenie tekstu
  72.   wymiarowania.
  73.  
  74. EXT(218) void PrintDimVal(     // 
  75.              double value,     // zmierzona wartoÿå wymiaru
  76.              char   *str,      // bufor tekstowy
  77.              char   *tol1,     // 1. tekst tolerancji (góra)
  78.              char   *tol2);    // 2. tekst tolerancji (dóê)
  79.  
  80. Opis:
  81.     Zmienna 'str' musi byå wczeÿniej zdefiniowana.
  82.     Zmienne 'tol1' i 'tol2' mogÑ zawieraå maksimum po 40 znaków.
  83.     Zmienne 'tol1' i 'tol2' mogÑ byå puste: "" , ale nie NULL !
  84.  
  85. Przykêad wywoêania:
  86.     PrintDimVal(dim.value,str,"","");
  87.  
  88. */
  89. //---------------------------------------------------------------------------
  90. #include "std.h"
  91. #include "megatyp.h"
  92. #include "megacad.h"
  93. //---------------------------------------------------------------------------
  94. short main(char *filename, char *args )
  95. {
  96.    double      y;
  97.    t_entity    ent;
  98.    t_dimension dim;
  99.    char        str[255];
  100.  
  101.    SetFuncText("Wymiar poziomy linii");
  102.    MouseHelp("wska╛ lini⌐","powrót",HLP_INV(RED,WHITE,0));
  103.  
  104.                 // wczytanie wartoÿci wskazanego elementu typu E_LINE
  105.    while(ClickEntity((1<<E_LINE),&dim.x1,&ent,NULL,0))
  106.    {
  107.                 // poczÑtek linii jest poczÑtkiem wymiaru
  108.       dim.x1 = ent.data.lin.x1;
  109.  
  110.                 // znalezienie wy╛szego koΣca linii
  111.       y = ent.data.lin.y2;
  112.       if(ent.data.lin.y1 > ent.data.lin.y2) y = ent.data.lin.y1;
  113.       dim.y1 = y;
  114.  
  115.                 // koniec linii jest koΣcem wymiaru
  116.       dim.x2 = ent.data.lin.x2;
  117.       dim.y2 = y;
  118.  
  119.                 // podniesienie linii wymiarowej  o 5 jednostek do góry
  120.       dim.x3 = dim.x1;
  121.       dim.y3 = dim.y1 + 5;
  122.       dim.x4 = dim.x2;
  123.       dim.y4 = dim.y1 + 5;
  124.                 // wartoÿå wymiaru
  125.       dim.value = fabs(dim.x2 - dim.x1);
  126.                 // przekazanie wartoÿci do bufora tekstu
  127.       dim.str = str;
  128.                 // teksty tolerancji pozostajÑ niezdefiniowane - puste
  129.       PrintDimVal(dim.value,str,"","");
  130.                 // wczytanie wartoÿci definiujÑcych wymiar poziomy
  131.       GetDimVal(E_H_DIM,7,&dim);
  132.       CreateEntity(E_H_DIM,NULL,&dim);
  133.       savecount();
  134.    }
  135. }
  136. //---------------------------------------------------------------------------
  137.