mirror of
http://gitlab.expertsoft.com.ua/git/expertcad
synced 2026-01-11 22:45:39 +02:00
130 lines
6.4 KiB
Plaintext
130 lines
6.4 KiB
Plaintext
{\rtf1\ansi\ansicpg1254\deff0\deflang1055{\fonttbl{\f0\fmodern\fprq1\fcharset162{\*\fname Courier New;}Courier New TUR;}{\f1\fswiss\fprq2\fcharset162{\*\fname Arial;}Arial TUR;}{\f2\fnil\fcharset162 Tahoma;}}
|
||
{\colortbl ;\red0\green0\blue128;\red0\green0\blue0;}
|
||
\viewkind4\uc1\pard\lang1031\b\f0\fs24 //******Fliesen zeichnen******************************\par
|
||
\cf1\b0\i\fs20\par
|
||
// Zeichnen einer Wand mit Fiesen\cf2\i0\par
|
||
\par
|
||
\b var\b0 \par
|
||
\cf1\i // h\'f6he und breite der wand, h\'f6he und Breite der Fliese\cf2\i0\par
|
||
hoehe,Breite,fliesenhoehe,fliesenbreite:Integer;\par
|
||
resthoehe,restBreite,rrfliesenhoehe,rrfliesenbreite:Integer;\par
|
||
\cf1\i //Ma\'dfstab und breite der Fugen\cf2\i0\par
|
||
masstab,fugenbreite :Integer;\par
|
||
\cf1\i //Fl\'e4che der Fliesen\cf2\i0\par
|
||
fl :double;\par
|
||
\cf1\lang2057\i //Hilfsvariablen\cf2\i0\par
|
||
row,col:Duoble;\par
|
||
x,y,i:Double;\par
|
||
\lang1036 x1,x2,y1,y2:Double; \par
|
||
\lang1031\b begin\b0\par
|
||
clear(\cf1 0\cf2 );\par
|
||
\cf1\i // Wandgr\'f6\'dfe, Fliesengr\'f6\'dfe,\cf2\i0\par
|
||
\cf1\i //Ma\'dfstab und Fugenbreite abfragen\cf2\i0\par
|
||
hoehe := strtoint(inputbox(\cf1 'Wandh\'f6he'\cf2 ,\cf1 'Wie hoch(lang)ist die Fl\'e4che in mm?'\cf2 ,\cf1 ''\cf2 ));\par
|
||
Breite:= strtoint( inputbox(\cf1 'Wandbreite'\cf2 ,\cf1 'Wie breit ist die Fl\'e4che in mm?'\cf2 ,\cf1 ''\cf2 ));\par
|
||
fliesenhoehe :=strtoint(inputbox(\cf1 'Fliesenh\'f6he'\cf2 ,\cf1 'Wie hoch(lang)ist Fliese in mm?'\cf2 ,\cf1 ''\cf2 ));\par
|
||
fliesenbreite:= strtoint(inputbox(\cf1 'Fliesenbreite'\cf2 ,\cf1 'Wie breit ist die Fliese in mm?'\cf2 ,\cf1 ''\cf2 ));\par
|
||
masstab := strtoint(inputbox(\cf1 'Ma\'dfstab'\cf2 ,\cf1 'In welchem ma\'dfstab m\'f6chten Sie zeichnen 1 x '\cf2 ,\cf1 '50'\cf2 ));\par
|
||
fugenbreite := strtoint(inputbox(\cf1 'Fugenbreite'\cf2 ,\cf1 'Wie breit sollen die Fugen sein(mm)?'\cf2 ,\cf1 '3'\cf2 ));\par
|
||
\cf1\i //masstab setzten\cf2\i0\par
|
||
mapscale:=masstab; \par
|
||
\cf1\i // Wand oder Fl\'e4che zeichnen\cf2\i0\par
|
||
x1:= \cf1 10\cf2 ;\par
|
||
y1:= \cf1 10\cf2 ;\par
|
||
x2:= \cf1 10\cf2 +(breite/masstab);\par
|
||
y2:=\cf1 10\cf2 +(hoehe/masstab);\par
|
||
\lang2057 Rectangle(\cf1 0\cf2 ,x1,y1,x2,y2,\cf1 1\cf2 ,pssolid,clblack,bssolid,clgray,false);\par
|
||
\cf1\lang1031\i // erste Fliese zeichnen\cf2\i0\par
|
||
x1:=\cf1 10\cf2 +(fugenbreite/masstab);\par
|
||
y1:=\cf1 10\cf2 +(fugenbreite/masstab);\par
|
||
x2:= \cf1 10\cf2 +((fugenbreite+fliesenbreite)/masstab);\par
|
||
\lang2057 y2:=\cf1 10\cf2 +((fugenbreite+fliesenhoehe)/masstab);\par
|
||
\par
|
||
Rectangle(\cf1 0\cf2 ,x1,y1,x2,y2,\cf1 1\cf2 ,psclear,clred,bssolid,clred,true);\par
|
||
\par
|
||
\cf1\lang1031\i // Anzahl der ganzen fliesen in breite berechnen\cf2\i0\par
|
||
col := ((breite - fugenbreite)/ (fliesenbreite+fugenbreite));\par
|
||
\cf1\lang2057\i //runden\cf2\i0\par
|
||
i:=StrtoInt(FormatFloat(\cf1 0\cf2 ,col));\par
|
||
\cf1\lang1031\i // zu viele spalten dann eine abschneiden, format rundet nur auf!!!\cf2\i0\par
|
||
\lang2057\b if\b0 i> col \b then\b0\par
|
||
col:=i-\cf1 1\cf2\par
|
||
\lang1031\b else\b0\par
|
||
col:=i;\par
|
||
\par
|
||
\cf1\i //Anzahl der ganzen Fliesen in Spalte berechnen\cf2\i0\par
|
||
// zur Kontrolle showmessage(col);\par
|
||
row := ((hoehe - fugenbreite)/ (fliesenhoehe+fugenbreite));\par
|
||
\cf1\lang2057\i // runden\cf2\i0\par
|
||
i:=strtoint(formatfloat(\cf1 0\cf2 ,row));\par
|
||
\cf1\lang1031\i // zu viele Zeilen dann eine abschneiden, format rundet nur auf!!!\cf2\i0\par
|
||
\lang2057\b if\b0 i> row \b then\b0\par
|
||
row:=i-\cf1 1\cf2\par
|
||
\lang1031\b else\b0\par
|
||
row:=i;\par
|
||
// zur Kontrolle showmessage(row);\par
|
||
\cf1\i //Fl\'e4che der ganzen Fliesen berechnen in qm\cf2\i0\par
|
||
\lang2057 fl:= Fliesenhoehe * fliesenbreite * col*row/\cf1 100\cf2 ;\par
|
||
ArrayRectSelection((fliesenbreite +fugenbreite)/masstab,(fliesenhoehe+fugenbreite)/masstab,col,row); \par
|
||
\cf1\lang1031\i //Restfliesen berechen\cf2\i0\par
|
||
\par
|
||
restbreite:= breite-((fliesenbreite + fugenbreite)*col);\par
|
||
resthoehe:= hoehe-((fliesenhoehe+fugenbreite)*row);\par
|
||
\par
|
||
\cf1\i // Fliesen f\'fcr die letzte Spalte berechen\cf2\i0\par
|
||
rrfliesenhoehe := fliesenhoehe;\par
|
||
rrfliesenbreite := restbreite-(\cf1 2\cf2 *fugenbreite);\par
|
||
\cf1\i //Anfangspunkt f\'fcr letzte Spalte\cf2\i0\par
|
||
// zur Kontrolle showmessage(rrfliesenbreite);\par
|
||
\b if\b0 rrfliesenbreite > \cf1 0\cf2 \b then\b0\par
|
||
\b begin\b0\par
|
||
x1:= \cf1 10\cf2 +(col *(fliesenbreite+fugenbreite))+fugenbreite;\par
|
||
y1:= \cf1 10\cf2 +fugenbreite;\par
|
||
\par
|
||
x2:= x1+(rrfliesenbreite/masstab);\par
|
||
y2:= y1+(rrfliesenhoehe/masstab);\par
|
||
\cf1\i //alle selektionen aufheben\cf2\i0\par
|
||
deselectall(\cf1 0\cf2 );\par
|
||
\cf1\i //erstes Muster f\'fcr Restfliese zeichnen\cf2\i0\par
|
||
\lang2057 Rectangle(\cf1 0\cf2 ,x1,y1,x2,y2,\cf1 1\cf2 ,psclear,clred,bssolid,clred,true);\par
|
||
\cf1\lang1031\i // duplizieren\cf2\i0\par
|
||
ArrayRectSelection((rrfliesenbreite+fugenbreite)/masstab,(rrfliesenhoehe+fugenbreite)/masstab,\cf1 1\cf2 ,row); \par
|
||
\b end\b0 ;\par
|
||
\cf1\i // Fliesen f\'fcr die letzte Zeile berechen\cf2\i0\par
|
||
rrfliesenhoehe := resthoehe - (\cf1 2\cf2 *fugenbreite);\par
|
||
rrfliesenbreite := fliesenbreite;\par
|
||
\par
|
||
\cf1\i //Anfangspunkt f\'fcr letzte Zeile\cf2\i0\par
|
||
// zur Kontrolle showmessage(rrfliesenhoehe);\par
|
||
\lang2057\b if\b0 rrfliesenhoehe > \cf1 0\cf2 \b then\b0\par
|
||
\b begin\b0\par
|
||
x1:= \cf1 10\cf2 +fugenbreite;\par
|
||
\lang1031 y1:= \cf1 10\cf2 + row *(fugenbreite+fliesenhoehe)+fugenbreite;\par
|
||
x2:= x1+(rrfliesenbreite/masstab);\par
|
||
y2:= y1+(rrfliesenhoehe/masstab);\par
|
||
\cf1\i //alle selektionen aufheben\cf2\i0\par
|
||
deselectall(\cf1 0\cf2 );\par
|
||
\cf1\i //erstes Muster Zeile f\'fcr Restfliese zeichnen\cf2\i0\par
|
||
\lang2057 Rectangle(\cf1 0\cf2 ,x1,y1,x2,y2,\cf1 1\cf2 ,psclear,clred,bssolid,clred,true);\par
|
||
\cf1\i // duplizieren\cf2\i0\par
|
||
ArrayRectSelection((rrfliesenbreite+fugenbreite)/masstab,(rrfliesenhoehe+fugenbreite)/masstab,col,\cf1 1\cf2 ); \par
|
||
\lang1031\b end\b0 ;\par
|
||
\par
|
||
\cf1\i // letzte fliese zeichnen\cf2\i0\par
|
||
\par
|
||
\b if\b0 ((resthoehe > fugenbreite) \b and\b0 (restbreite >fugenbreite)) \b then\b0\par
|
||
\b begin\b0\par
|
||
rrfliesenhoehe := resthoehe - (\cf1 2\cf2 *fugenbreite);\par
|
||
rrfliesenbreite := restbreite-(\cf1 2\cf2 *fugenbreite);\par
|
||
x1:= \cf1 10\cf2 +(col *(fliesenbreite+fugenbreite))+fugenbreite;\par
|
||
y1:= \cf1 10\cf2 + row *(fugenbreite+fliesenhoehe)+fugenbreite;\par
|
||
x2:= x1+(rrfliesenbreite/masstab);\par
|
||
y2:= y1+(rrfliesenhoehe/masstab);\par
|
||
\lang2057 Rectangle(\cf1 0\cf2 ,x1,y1,x2,y2,\cf1 1\cf2 ,psclear,clred,bssolid,clred,false);\par
|
||
\lang1031\b end\b0 ;\par
|
||
\par
|
||
refresh;\par
|
||
\b end\b0 .\f1\par
|
||
\pard\cf0\lang1055\f2\fs16\par
|
||
}
|
||
|