Штриховка

Автор Miranda, 20.10.08, 17:17:51

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

Miranda

подскажите пожалуйста, как выполнить штриховку!
желательно по-подробнее с объявлениями, потому что хелп-файлы не могу открыть, тк их формат игнорируется вистой
штриховать нужно сложные контуры, местами криволинейные =(

Taro

 //втулка
//razrez - если равен 1, чертим разрез, 0 - главный вид
void OtrisVtul(int razrez)
{
unsigned short nl=1;
double L=60, D=30, d=20;
double Ssh=3,San=45;//шаг и угол штриховки

                       LineSeg(-1,0,L+1,0,3);
/*внешний контур детали*/
         LineSeg(0,-D/2+TanD(30),0,D/2-TanD(30),nl);
         LineSeg(L,-D/2+TanD(30),L,D/2-TanD(30),nl);
         LineSeg(0,-D/2+TanD(30),1,-D/2,nl);
         LineSeg(0,D/2-TanD(30),1,D/2,nl);
         LineSeg(L,-D/2+TanD(30),L-1,-D/2,nl);
         LineSeg(L,D/2-TanD(30),L-1,D/2,nl);
         LineSeg(1,-D/2,L-1,-D/2,nl);
         LineSeg(1,D/2,L-1,D/2,nl);

         if(razrez)//чертим разрез
         {
            LineSeg(0,d/2,L,d/2,nl);
            LineSeg(0,-d/2,L,-d/2,nl);

            Hatch(0/*металл*/,San,Ssh,0,0,0 );//начало штриховки
/*Между операторами Hatch и EndObj вписываем контур, по которой будет строиться штриховка (в т.ч. Bezier). */

            LineSeg(0,d/2,0,D/2-TanD(30),nl);
            LineSeg(0,D/2-TanD(30),1,D/2,nl);
            LineSeg(L,D/2-TanD(30),L-1,D/2,nl);
            LineSeg(1,D/2,L-1,D/2,nl);
            LineSeg(L,d/2,L,D/2-TanD(30),nl);
            LineSeg(0,d/2,L,d/2,nl);

            LineSeg(0,-d/2,0,-D/2+TanD(30),nl);
            LineSeg(0,-D/2+TanD(30),1,-D/2,nl);
            LineSeg(L,-D/2+TanD(30),L-1,-D/2,nl);
            LineSeg(1,-D/2,L-1,-D/2,nl);
            LineSeg(L,-d/2,L,-D/2+TanD(30),nl);
            LineSeg(0,-d/2,L,-d/2,nl);

            EndObj();//конец штриховки
         }
         else//чертим главный вид
         {
            LineSeg(1,D/2,1,-D/2,nl);
            LineSeg(L-1,D/2,L-1,-D/2,nl);
         }
}

Miranda

Спасибо огромное, все получается =)