МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Разработка программного обеспечения

    @ 8,9 say strel[1]

    @ 4,25 say strel[2]

    @ 6,35 say strel[3]

    @ 6,63 say strel[4]

    setcolor(col2d)

    st:=MENU (mas,13,st)

    IF st=1

    ASORT(compon,,,x,y)

    FOR L:=1 TO st0

    compon[l,4]=compon[l,4]+dx

    // compon[l,5]=0

    // compon[l,8]=0

    IF compon[L,2]='bot'

    compon[L,5]=compon[L,5]-compon[L,3]-tlplat //для эл.

    нижней

    стороны

    ENDIF

    NEXT

    tkont2:=kontur[2]

    tkont4:=kontur[4]

    kontur[2]=-10

    kontur[4]=kontur[2]

    //*******СОЗДАНИЕ ФАЙЛОВ-ФРАГМЕНТОВ************

    IF kolkomp>0

    SETPOS(MAXROW()-1,0)

    ?'Идет создание файла элементов на нижней стороне:'

    dlin:=ALLTRIM(STR(kontur[3]-kontur[1]))

    nn:=FILECR2D(kolkomp,'top',dlin)

    ??nn

    ENDIF

    FOR L:=1 TO st0 //обратный пересчет координат для

    приведения

    // массива габаритов в

    исходный вид

    IF compon[L,2]='bot'

    compon[L,5]=compon[L,5]+compon[L,3]+tlplat //для эл.

    нижней

    стороны

    ENDIF

    compon[l,4]=compon[l,4]-dx

    NEXT

    kontur[2]=tkont2

    kontur[4]=tkont4

    ELSEIF st=2

    TO2DZAD(st0)

    ELSEIF st=3

    ELSEIF st=4

    ENDIF

    winclose()

    RETURN

    //****************************************************

    FUNCTION AUTOKONTUR(L1) // выделение контура платы по

    максимуму

    minY:=compon[1,5]

    maxY:=minY

    minX:=compon[1,4]

    maxX:=minX

    IF verkont=0

    PUBLIC kontur[4]

    FOR L:=2 TO L1

    IF compon[L,4]>maxX

    maxX:=compon[L,4]

    ELSEIF compon[L,4]maxY

    maxY:=compon[L,5]

    ELSEIF compon[L,5]LEN(st1)

    ?'Ошибка при записи файла'

    ELSE

    ??' OK'

    ENDIF

    FCLOSE(fil)

    RETURN

    ///***************************************************

    FUNCTION CREATDBF(nom2) //функция создающая пустую базу

    данных

    PUBLIC nfill1:='COMP', nfill2:='SIDE', nfill3:='attr',

    nfill4:="X",nfill5:="Y"

    PRIVATE struct [5,4],nom

    struct[1,1]=nfill1

    struct[1,2]="C"

    struct[1,3]=18

    struct[1,4]=0

    struct[2,1]=nfill2

    struct[2,2]="C"

    struct[2,3]=5

    struct[2,4]=0

    struct[3,1]=nfill3

    struct[3,2]="N"

    struct[3,3]=10

    struct[3,4]=0

    struct[4,1]=nfill4

    struct[4,2]="N"

    struct[4,3]=10

    struct[4,4]=5

    struct[5,1]=nfill5

    struct[5,2]="N"

    struct[5,3]=10

    struct[5,4]=5

    parametr:=exit

    DBCREATE(parametr,struct) //создание базы данных

    USE

    USE ¶metr //открытие б.д.

    FOR nom=1 TO nom2

    APPEND BLANK

    REPLACE &nfill1 WITH compon[nom,1]

    REPLACE &nfill2 WITH compon[nom,2]

    REPLACE &nfill3 WITH compon[nom,3]

    REPLACE &nfill4 WITH compon[nom,4]

    REPLACE &nfill5 WITH compon[nom,5]

    NEXT

    USE //закрытие б.д.

    RETURN

    //***************************************************************

    FUNCTION TO2DZAD(st0) // функция, пересчитывающая координаты и

    габаритные размеры элементов в

    двумерную модель вида сзади

    dlin:=ALLTRIM(STR(kontur[3]-kontur[1]))

    ASORT(compon,,, x[5]0

    SETPOS(MAXROW()-1,0)

    ?'Идет создание файла элементов на нижней стороне:'

    dlin:=ALLTRIM(STR(kontur[3]-kontur[1]))

    nn:=FILECR2D(kolkomp,'top',dlin)

    ??nn

    ENDIF

    kontur[2]=tkont2

    kontur[4]=tkont4

    FOR L:=1 TO st0 //обратный пересчет координат для

    приведения

    массива габаритов в исходный

    вид

    IF compon[L,2]='bot'

    compon[L,5]=compon[L,5]+compon[L,3]+tlplat //для

    эл. Нижней

    стороны

    ENDIF

    compon[l,4]=-compon[l,4]+kontur[3]-

    kontur[1]+compon[l,7]

    compon[l,4]=compon[l,4]-dx

    NEXT

    RETURN

    //***************************************************************

    FUNCTION kwad(argum) //функция возведения в квадрат

    newarg:=argum*argum

    RETURN newarg

    //****************************************************

    //подключение файлов с вспомогательными программами

    #include 'CH\ssear.ch'

    #include 'CH\swind.ch'

    #include 'CH\smenu.ch'

    #include 'CH\sfilcr3d.ch'

    #include 'CH\sfilcr2d.ch'

    Файл swind.prg содержит в себе текст подпрограммы, организующей оконный

    интерфейс:

    FUNCTION WIND(top,left,bot,rigt,zag,speed,centr) //создание окна

    setboxgrow(speed)

    //переменные:верх,лево,низ,право,

    wsetshadow(-1) //текст

    заголовка,скорость распахивания,центрирование

    n:=wopen(top,left,bot,rigt,.F.)

    wbox(0)

    wsetshadow('N+/N') //текст

    заголовка,скорость распахивания,центрирование

    n:=wopen(top,left,bot,rigt,.F.)

    setboxgrow(0)

    //переменные:верх,лево,низ,право,

    wbox(0)

    IF centr<>nil

    IF centr='centr'

    WCENTER(.T.)

    ENDIF

    ENDIF

    ZAGOL(zag)

    RETURN n

    FUNCTION WINCLOSE() //функция закрывающая окно

    wclose()

    wclose()

    RETURN

    FUNCTION RUSSLOW(st)

    FOR k:=1 to len(russl)

    st:=strtran(st,russl[k],russs[k])

    NEXT

    RETURN st

    FUNCTION ZAGOL(L1) //делает надпись окна

    l2:=len(L1)

    l3:=maxcol()

    l4:=(l3-l2)/2

    @ -1,l4 SAY ' '+l1+' '

    RETURN

    3. Файл smenu.prg содержит в себе текст подпрограммы для

    организации на экране меню:

    FUNCTION MENU(k,razm,res)

    olcurs:=setcursor(0)

    set wrap on //к-2-массив пунктов и подсказок,razm-

    длина 1-го пункта

    olrow:=ROW() //res-начальный пункт

    olcol:=COL()

    ol:=setcolor('GR+/B,gr+/R')

    dl:=len(k[1])

    zmes:=0

    FOR nom:=1 to dl

    IF len(k[1,nom])/2=INT(len(k[1,nom])/2) .AND. razm/2=INT(razm/2)

    k[1,nom]=center(k[1,nom],razm,' ',.T.)

    ELSEIF len(k[1,nom])/2<>INT(len(k[1,nom])/2) .AND.

    razm/2<>INT(razm/2)

    k[1,nom]=center(k[1,nom],razm,' ',.T.)

    ELSE

    k[1,nom]=center(k[1,nom],razm-1,' ',.T.)

    ENDIF

    zmes:=zmes+len(k[1,nom])

    NEXT

    ots:=maxcol()-zmes

    ots:=ots/(dl+1)

    col:=ots

    ten:=''

    tc:=ntocolor(screenattr(2,0),.T.)

    tc:=substr(tc,at('/',tc)+1,7)

    tc:=left(tc,len(tc)-1)

    tn:=''

    FOR nom:=1 to dl

    ten:=padright(tn,len(k[1,nom]),chr(223))

    k[2,nom]=center(k[2,nom],maxcol()+1,' ',.T.)

    @ 1,col PROMPT k[1,nom] MESSAGE k[2,nom]

    trow:=row()

    tcol:=col()

    dispout(chr(220),'n/'+tc) //г78_---

    setpos(2,col()-len(k[1,nom]))

    dispout(ten,'n/'+tc)

    setpos(trow,tcol)

    col:=col+len(k[1,nom])+ots

    NEXT

    SET MESSAGE TO maxrow() CENTER

    MENU TO res

    IF res<>0 //эффект нажатия кнопки

    razm:=len(k[1,res])

    dol:=0

    FOR o:=1 to res

    dol:=dol+len(k[1,o])

    NEXT

    dol:=dol-razm

    setpos(2,1+ots+dol+(ots)*(res-1))

    dispout(space(razm+1),tc+'/'+tc)

    setpos(1,ots+dol+(ots)*(res-1))

    dispout(' ',tc+'/'+tc)

    dispout(k[1,res],'GR+/R')

    inkey(0.1)

    setpos(1,1+ots+dol+(ots)*(res-1))

    dispout(space(razm+1),tc+'/'+tc)

    setpos(1,ots+dol+(ots)*(res-1))

    dispout(k[1,res],'GR+/R')

    dispout(chr(220),'n/'+tc) //г78_---

    setpos(2,col()-razm)

    ten:=padright(tn,len(k[1,res]),chr(223))

    dispout(ten,'n/'+tc)

    inkey(0.1)

    ENDIF

    setcolor(ol)

    setpos(olrow,olcol)

    setcursor(olcurs)

    RETURN res

    4. Файл ssear.prg содержит в себе текст подпрограммы, которая

    выполняет весь анализ pdf файла, находит имена, габариты, и координаты

    всех элементов, содержащихся в этом pdf файле, а так-же ищет для всех

    вновь встреченных элементов их преобразовнные prt- файлы, берет оттуда

    габариты и помещает их в базу данных габаритов элементов (файл

    gabarits.dbf):

    FUNCTION SEARCHCOMP(koef)

    lastseek:=0

    olsear:=setcolor('n/gb')

    set cursor off

    //******** Выделение элементов из pdf-файла и занесение их в массив

    compon[0,9] *****

    // compon[n,1]-название элемента(строка)

    // compon[n,2]-сторона установки('top' или 'bot')

    // compon[n,3]-высота элемента(число)

    // compon[n,4]-координата х-точки привязки(число)

    // compon[n,5]-координата у-точки привязки(цифра)

    // compon[n,6]-поворот элемента(число от 0 до 3)

    // compon[n,7]-ширина элем.(число)

    // compon[n,8]-длина элем.(число)

    // compon[n,9]-обозначение элемента(строка)

    tmz1:=SEAR()

    setcolor(olsear)

    RETURN tmz1

    FUNCTION INSERTCOMP() //выделение параметров элементов из

    строки текста

    USE 'gabarits.dbf' //открытие базы данных с размерами элементов

    FOR L=1 TO LEN(compon) //выделение координат точки привязки

    элемента

    IF compon[L,1]=NIL

    L=LEN(compon)

    kolkomp:=L-1

    ELSE

    kolkomp:=len(compon)

    str2=ALLTRIM(compon[l,4])

    IF compon[l,2]<>'bot'

    koltop=koltop+1

    ELSEIF compon[l,2]='bot'

    kolbot=kolbot+1

    ENDIF

    p1=At(' ',str2)

    compon[l,4]=VAL(SUBSTR(str2,0,p1-1))*koef //выделение

    х точки привязки

    str2=LTRIM(SUBSTR(str2,p1,30))

    p1=At(' ',str2)

    IF p1=0

    p1=AT('}',str2)

    ENDIF

    compon[l,5]=VAL(SUBSTR(str2,0,p1-1))*koef //выделение

    у точки привязки

    SCROLL(10,0,MAXROW(),MAXCOL(),1)

    st0:=compon[l,1]+compon[l,2]+' X='+STR(compon[l,4])+'

    Y='+STR(compon[l,5])+' Ro='+str(compon[l,6])

    gab:=GABARIT(compon[L,1],L) //вызов данных о размерах

    элемента

    ENDIF

    NEXT

    USE //закрытие базы данных с размерами элементов

    RETURN {kolkomp,koltop,kolbot}

    //****************************************************

    FUNCTION GABARIT(st0,nn) // определение габаритов элемента по его

    имени

    PRIVATE naiden:=0,gabar:={0,0,0} //по заданному имени элемента

    возвращает массив из 3 чисел

    /ширина/длина/высота/

    WHILE naiden=0

    LOCATE FOR name=st0+SPACE(10-LEN(st0))

    IF FOUND()=.T.

    gabar[1]:=SHIR*koef

    gabar[2]:=DLIN*koef

    IF compon[nn,3]=0

    compon[nn,3]=Vis*koef

    IF Vis=0

    compon[nn,3]=90*koef

    ENDIF

    ENDIF

    EXIT

    ELSE

    gabar[1]=0

    gabar[2]=0

    gabar[3]=0

    hcomp:=0

    dat:=POISK(st0) //поиск данных о новом элементе и

    занесение его

    // в базу

    IF VALTYPE(dat)<>'C'

    APPEND BLANK

    REPLACE NAME WITH st0

    REPLACE SHIR WITH gabar[1]/koef

    REPLACE DLIN WITH gabar[2]/koef

    REPLACE VIS WITH hcomp/koef

    REPLACE X WITH dat[1]/koef

    REPLACE Y WITH dat[2]/koef

    gabar[1]:=SHIR*koef

    gabar[2]:=DLIN*koef

    IF compon[nn,3]=0

    compon[nn,3]=Vis*koef

    ENDIF

    ELSE

    EXIT

    ENDIF

    ENDIF

    ENDDO

    ROT(X*koef,Y*koef,gabar[1],gabar[2],nn)

    RETURN gabar

    //****************************************************

    FUNCTION ROT(a,b,shc,dlc,L) //функция учитывающая поворот эле

    мента относительно оси и произво

    дящая соответствующий пересчет

    его координат

    IF compon[L,6]=0 //учет поворота

    элемента

    IF compon[L,2]='bot'

    compon[L,4]=compon[L,4]+shc-a

    compon[L,5]=compon[L,5]-b

    ELSE

    compon[L,4]=compon[L,4]+a

    compon[L,5]=compon[L,5]-b

    ENDIF

    compon[L,7]=shc

    compon[L,8]=dlc

    ELSEIF compon[L,6]=1

    IF compon[L,2]='bot'

    compon[L,4]=compon[L,4]+b

    compon[L,5]=compon[L,5]-a

    ELSE

    compon[L,4]=compon[L,4]+b

    compon[L,5]=compon[L,5]+a-shc

    ENDIF

    compon[L,7]=dlc

    compon[L,8]=shc

    ELSEIF compon[L,6]=2

    IF compon[L,2]='bot'

    compon[L,4]=compon[L,4]+a

    compon[L,5]=compon[L,5]+b-dlc

    ELSE

    compon[L,4]=compon[L,4]-a+shc

    compon[L,5]=compon[L,5]+b-dlc

    ENDIF

    compon[L,7]=shc

    compon[L,8]=dlc

    ELSEIF compon[L,6]=3

    IF compon[L,2]='bot'

    compon[L,4]=compon[L,4]-b+dlc

    compon[L,5]=compon[L,5]+a-shc

    ELSE

    compon[L,4]=compon[L,4]-b+dlc

    compon[L,5]=compon[L,5]-a

    ENDIF

    compon[L,7]=dlc

    compon[L,8]=shc

    ENDIF

    RETURN

    //****************************************************

    //Функция которая последовательно считывает pdf- файл кусками по

    65000 байт (т.е. после анализа 1-го куска в 65000 байт считывается

    следующий и т.д.

    FUNCTION READF() //чтение куска файла 65000 с текущей

    позиции

    PRIVATE bait:=CHR(10),seek,contr,sost:=' ',buf

    bufer=SPACE(65001)

    contr:=FREAD(desc,@bufer,65000)

    IF contr0

    ends=1

    ENDIF

    c0=AT('{ANNOTATE',bufer)

    IF c0<>0

    bufer:=LTRIM(RIGHT(bufer,LEN(bufer)-(c0+5)))

    Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.