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
Wrap
C/C++ Source or Header
|
1995-09-01
|
6KB
|
137 lines
/* LEKCJA08.C
//---------------------------------------------------------------------------
Temat:
Definiowanie elementu WYMIAROWANIE
//---------------------------------------------------------------------------
Funkcje:
EXT(217) void GetDimVal(
EXT(218) void PrintDimVal(
//---------------------------------------------------------------------------
Wymiarowanie wydaje si⌐ na poczÑtku trudnym przedsi⌐wzi⌐ciem, jednak╛e po
zrozumieniu mo╛liwoÿci jakie dajÑ funkcje pomocnicze 'GetDimVal' i
'PrintDimVal' otwiera si⌐ caêa paleta zastosowaΣ.
typedef struct _dimension
{
t_txtval val; // atrybuty tekstu (opisane wczeÿniej)
double tx; // wspóêrz⌐dna poczÑtku wartoÿå X
double ty; // wspóêrz⌐dna poczÑtku wartoÿå Y
double dx1; // wektor linii podstawowej wartoÿå X
double dy1; // wektor linii podstawowej wartoÿå Y
double dx2; // wektor nachylenia wartoÿå X
double dy2; // wektor nachylenia wartoÿå Y
double x1; //
double y1; // 1. punkt
double x2; //
double y2; // 2. punkt
double x3; //
double y3; // 3. punkt
double x4; //
double y4; // 4. punkt
double a_hig; // wysokoÿå strzaêki wymiarowej
double a_wid; // szerokoÿå strzaêki wymiarowej
double a_len; // dêugoÿå strzaêki wymiarowej
double value; // zmierzona wartoÿå
uchar nins; // czy bez linii przy wymiarze zewn⌐trznym?
uchar plft; // czy 1 strzaêka jest kóêkiem ?
uchar prgt; // czy 2 strzaêka jest kóêkiem ?
uchar tpen; // numer pisaka plotera dla wymiarowania
uchar vpos; // pozycja pionowa (lewa, prawa, ÿrodek, dowolna)
uchar hpos; // pozycja pozioma (lewa, prawa, ÿrodek, dowolna)
uchar reli; // które linie wymiarowe majÑ byÿ przedstawione
uchar str2; // obydwie wartoÿci tolerancji ?
uchar para; // czy tekst ma byå równolegêy do linii wymiarowej
uchar edit; // czy edytowano wartoÿå wymiaru ?
uchar xyon; // typ wymiaru wspóêrz⌐dnych (0-2)
uchar insd; // wymiar wewn⌐trzny ?
uchar mpfl; // typ strzaêki (1 - 7)
uchar mbox; // E_T_DIM z prostokÑtem ?
char _far *str; // tekst
} t_dimension;
//---------------------------------------------------------------------------
EXT(217) void GetDimVal( //
ushort type, // typ wymiarowania
ushort init, // inicjalizacja
t_dimension *dim);// dane tekstu
Opis:
Funkcja uêatwiajÑca wczytanie ustawionych parametrów wymiarowania.
Zmienna 'init' mo╛e przyjmowaå nast⌐pujÑce wartoÿci:
(init & 1) - wczatanie aktualnych wartoÿci wraz ze strzaêkÑ wymiarowÑ
(init & 2) - ustawienie tekstu wymiarowego
(init&4) - wczytanie tylko wartoÿci strzaêki wymiarowej
(init&0) - przeliczenie prostokÑta tekstu
Przykêad wywoêania:
GetDimVal(E_H_DIM,7,&dim);
//---------------------------------------------------------------------------
Funkcja uêatwiajÑca wpisanie danych do wymiarowania - tworzenie tekstu
wymiarowania.
EXT(218) void PrintDimVal( //
double value, // zmierzona wartoÿå wymiaru
char *str, // bufor tekstowy
char *tol1, // 1. tekst tolerancji (góra)
char *tol2); // 2. tekst tolerancji (dóê)
Opis:
Zmienna 'str' musi byå wczeÿniej zdefiniowana.
Zmienne 'tol1' i 'tol2' mogÑ zawieraå maksimum po 40 znaków.
Zmienne 'tol1' i 'tol2' mogÑ byå puste: "" , ale nie NULL !
Przykêad wywoêania:
PrintDimVal(dim.value,str,"","");
*/
//---------------------------------------------------------------------------
#include "std.h"
#include "megatyp.h"
#include "megacad.h"
//---------------------------------------------------------------------------
short main(char *filename, char *args )
{
double y;
t_entity ent;
t_dimension dim;
char str[255];
SetFuncText("Wymiar poziomy linii");
MouseHelp("wska╛ lini⌐","powrót",HLP_INV(RED,WHITE,0));
// wczytanie wartoÿci wskazanego elementu typu E_LINE
while(ClickEntity((1<<E_LINE),&dim.x1,&ent,NULL,0))
{
// poczÑtek linii jest poczÑtkiem wymiaru
dim.x1 = ent.data.lin.x1;
// znalezienie wy╛szego koΣca linii
y = ent.data.lin.y2;
if(ent.data.lin.y1 > ent.data.lin.y2) y = ent.data.lin.y1;
dim.y1 = y;
// koniec linii jest koΣcem wymiaru
dim.x2 = ent.data.lin.x2;
dim.y2 = y;
// podniesienie linii wymiarowej o 5 jednostek do góry
dim.x3 = dim.x1;
dim.y3 = dim.y1 + 5;
dim.x4 = dim.x2;
dim.y4 = dim.y1 + 5;
// wartoÿå wymiaru
dim.value = fabs(dim.x2 - dim.x1);
// przekazanie wartoÿci do bufora tekstu
dim.str = str;
// teksty tolerancji pozostajÑ niezdefiniowane - puste
PrintDimVal(dim.value,str,"","");
// wczytanie wartoÿci definiujÑcych wymiar poziomy
GetDimVal(E_H_DIM,7,&dim);
CreateEntity(E_H_DIM,NULL,&dim);
savecount();
}
}
//---------------------------------------------------------------------------