Разработка программного обеспечения
Рефераты >> Программирование и компьютеры >> Разработка программного обеспечения

стороны

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

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'

2. Файл 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


Страница: