RSS    

   Реферат: Разработка программного обеспечения

 WINCLOSE()

 SETCOLOR(colo)

 cls

ELSE

SETCOLOR(colo)

cls

@ 3,0 SAY 'Не введено имя pdf файла!'

ENDIF

 SETCOLOR(colo)

 DIRCHANGE (tmppat) //возвращает сохраненный текущий каталог

 SETCOLOR('g/n')

 @ MAXROW()-1,15 SAY 'Shurasoft 1997 Mihail & Alexandr Company'

 SETCOLOR(colo) //возвращение текущего цвета при выходе

 ?' '

RETURN

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

FUNCTION GL() //главное меню

 CLEAR GETS

 cglold:=setcolor('n/rg')

 @ 11,5 CLEAR TO maxrow()-2,maxcol()-6

 @ 11,5 TO maxrow()-2,maxcol()-6 DOUBLE

 set cursor off

 set scoreboard off

 readexit(.F.)

 set cursor on

 set date format to 'dd.mm.yyyy'

 setpos(12,(maxcol()/2)-4)

 dispout(' АТРИБУТЫ ','g+/b')

 @ 13,7 say "Имя комплекта................................" color ('W+/rg') get attrtmp color('rg+/rg,n/w')

 @ 14,7 say "Ограничение по высоте сверху в mm............" color ('W+/rg') get higttmp picture '@B 999.99' color('gr+/rg,n/w')

 @ 15,7 say "Ограничение по высоте снизу в mm............." color ('W+/rg') get higtdtmp picture '@B 999.99' color('gr+/rg,n/w')

 setcolor(cglold)

 set cursor off

 mas:={{'Атрибуты', 'Компоновка', 'Выход'},{"Редактирование атрибутов файла", "Скомпоновать файл в формате T-FLEX", "Выход в DOS"}}

 str:=MENU (mas,14,perv)

 perv=str

 str1:=10

 IF str=1 //если выбран пункт АТРИБУТЫ- запустить меню , //позволяющее изменить атрибуты

 set cursor on

 read

 set cursor off

 ELSEIF str=2 //если выбран пункт КОМПОНОВКА- запустить //процедуру анализа pdf- файла

 WSELECT(0)

 SETCOLOR('n/bg')

 PUBLIC pnow:=0,filelen,desc,bufer:=SPACE(65000),compon[0,9],nomcomp:=0

 PUBLIC kontur[0],verkont:=0,parametr

 PUBLIC errfile[0] // массив сообщений об ошибках

 CREATDB()

 wzapis:=wind(2,3,maxrow()-7,maxcol()-6,"Компоновка",5)

 higt:=higttmp

 higtd:=higtdtmp

 attr:=alltrim(attrtmp)

 CONT()

 winclose()

 wselect(wmenu)

 ELSEIF str=0 //если не выбран не один пункт

 perv=4

 ENDIF

 IF str<>3

 wselect(wmenu)

 GL()

 ENDIF

RETURN

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

FUNCTION CONT() //функция анализу\ирующая pdf- файл

 PUBLIC kolkomp,koltop:=0,kolbot:=0,dx,dy //выделенме параметров эле-//ментов

 //dx,dy -поправка на 0

 desc:=FOPEN(fname)

 filelen:=FSEEK(desc,0,2)

 prflen:=filelen

 FSEEK(desc,0,0)

 CLS

 ?'ИДЕТ ПОИСК КОМПОНЕНТ...'

 not:=SEARCHCOMP(@koef) //вызов функции которая выполняет всю работу по анализу текста pdf- айла , находит имена, обозначения, габариты всех элементов, находящихся на плате и упаковывает их в виде файла базы данных

 kolkomp:=0

 IF len(not)>0

 kolkomp:=not[1]

 koltop:=not[2]

 kolbot:=not[3]

 ENDIF

 FCLOSE(desc) //закрытие pdf файла

//*****ОБРАБОТКА ПАРАМЕТРОВ У НАЙДЕННЫХ ЭЛЕМЕНТОВ****

 IF kolkomp>0

 AUTOKONTUR(kolkomp) //выделение контура платы по максимальным габаритам элементов на ней

 ENDIF

//*******ВЫБОР ВИДА ПЛАТЫ******************************

exit:=alltrim(exittmp)

CLEAR GETS

st:=1

cls

DO WHILE (st<>4) //Предлагается меню, где можно выбрать направление взгляда на плату

 cglold:=setcolor('n/rg')

 @ 9,12 CLEAR TO 11,maxcol()-13

 @ 9,12 TO 11,maxcol()-13 DOUBLE

 set cursor off

 set scoreboard off

 readexit(.F.)

 set cursor on

 @ 10,14 say "Имя получаемоемого файла......" color ('w+/rg') get exittmp picture 'NNNNN' color('gr+/gr,n/w')

 setpos(10,50)

 dispout('.frg','w+/gr')

 setcolor(cglold)

 mas:={{'Двумерная','Трехмерная ','Имя файла','Выход'},{"Создание файла вида сбоку(двумерное изображение)","Создание файла вида со стороны(трехмерное изображение)",'Изменить имя получаемоемого файла','Выход в главное меню'}}

 st:=MENU (mas,13,st)

 IF st=1

 @ 9,0 CLEAR TO maxrow(),maxcol()

 set cursor off

 TO2D(kolkomp) //пересчет точек привязки в трехмерные координаты

 PRINTINFO()

 ERRF()

 inkey(6)

 cls

 ELSEIF st=2

 @ 9,0 CLEAR TO maxrow(),maxcol()

 set cursor off

 TO3D(kolkomp) //пересчет точек привязки в трехмерные

 координаты

 PRINTINFO()

 ERRF()

 inkey(6)

 cls

 ELSEIF st=3

 set cursor on

 read

 exit:=alltrim(exittmp)

 set cursor off

 ELSEIF st=0

 st=4

 ENDIF

ENDDO

RETURN

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

FUNCTION INP(dl,pods,typ) //вспомогательная функция для ввода

данных с клавиатуры

oldcol:=col()

oldrow:=row()

er:=space(maxcol()-col())

IF typ<>'n'

 FOR L=1 TO 2

 ACCEPT pods TO tmp

 IF LEN(tmp)<1

 L=1

 @ oldrow+1,oldcol SAY er

 SETPOS(oldrow,oldcol)

 ELSEIF LEN(tmp)>dl

 L=1

 @ oldrow+1,oldcol SAY er

 SETPOS(oldrow,oldcol)

 ELSE

 tmp=ALLTRIM(tmp)

 L=2

 ENDIF

 NEXT

ELSEIF typ='n'

 FOR L=1 TO 2

 ACCEPT pods TO tmp

 IF LEN(tmp)<1

 L=1

 @ oldrow+1,oldcol SAY er

 SETPOS(oldrow,oldcol)

 ELSEIF VAL(tmp)=0

 L=1

 @ oldrow+1,oldcol SAY er

 SETPOS(oldrow,oldcol)

 ELSE

 L=2

 ENDIF

 NEXT

ENDIF

RETURN tmp

 //*******печать информации о найденных элементах******

FUNCTION PRINTINFO() //функция, печатающая на экране результатысоздания TFLEX-файлов и результаты анализа

 

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

 SETPOS(MAXROW()-4,0)

 ?'ДЛИНА PDF-ФАЙЛА:',prflen,' байт'

 ?'КОЛИЧЕСТВО НАЙДЕННЫХ ЭЛЕМЕНТОВ:',ALLTRIM(STR(kolkomp))

 ?'ЭЛЕМЕНТОВ НА ВЕРХНЕЙ СТОРОНЕ:',ALLTRIM(STR(koltop))

 ?'ЭЛЕМЕНТОВ НА НИЖНЕЙ СТОРОНЕ:',ALLTRIM(STR(kolbot))

RETURN

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

FUNCTION ERRF() //функция, создающая файл ERROR.TXT и записы//вающая туда имена компонентов, на которые не //найдены габаритные размеры

IF len(errfile)<>0

desk:=fcreate('error.txt')

fwrite(desk,"Не найдены файлы:"+chr(13)+chr(10))

for k:=1 to len(errfile)

fwrite(desk,errfile[k])

fwrite(desk,chr(13)+chr(10))

next

fclose(desk)

ENDIF

RETURN

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

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

габаритные размеры элементов в трехмерную модель

 cos30:=0.5*SQRT(3)

 cos60:=0.5

 FOR L:=1 TO st0

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

 compon[l,5]=compon[l,5]+dy

 compon[l,4]=compon[l,4]+cos60*compon[l,5] //пересчет координат в //3D

 compon[l,5]=compon[l,5]*cos30

 IF compon[L,2]='bot'

 compon[L,5]=compon[L,5]-compon[L,3] //для эл. нижней стороны

 ENDIF

 NEXT

 maxy:=kontur[4]

 maxx:=kontur[3]

tx[5])*(maxy-tx[5])))<(((maxx-tx[4])*(maxx-tx[4]))+((maxy-tx[5])*(maxy-ty[5])))})

tx[4])+kwad(tx[5]))>(kwad(maxx-tx[4])+kwad(tx[5]))})

 ASORT(compon,,,(tx[4]*tx[4]+(maxy*2-tx[5])*(maxy*2-tx[5]))<(ty[4]*ty[4]+(maxy*2-ty[5])*(maxy*2-ty[5])))

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

 IF kolkomp>0

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

 SETPOS(MAXROW()-1,0)

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

 nn:=FILECR3D(kolkomp,'bot','bot')

 ??nn

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

 SETPOS(MAXROW()-1,0)

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

 nn:=FILECR3D(kolkomp,'top','top')

 ??nn

 PLATCR() //создание файла контура платы

 ENDIF

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

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

 IF compon[L,2]='bot'

 compon[L,5]=compon[L,5]+compon[L,3] //для эл. нижней стороны

 ENDIF

 compon[l,5]=compon[l,5]/cos30

 compon[l,4]=compon[l,4]-cos60*compon[l,5]

 compon[l,5]=compon[l,5]-dy

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

 NEXT

RETURN

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

FUNCTION TO2D(st0)// функция, пересчитывающая координаты и //габаритные размеры элементов в двумерную //модель

 wzapis:=wind(3,4,maxrow()+2,maxcol()+3,"Двумерная компоновка",5)

 mas:={{'Спереди','Сзади ','Слева','Справа'},{"Создание файла вида спереди","Создание файла вида сзади","Создание файла вида слева","Создание файла вида справа"}}

 xkor:=4

 strel:={chr(24),chr(25),chr(26),chr(27)} //Прорисовка видов плат

 col2d:=setcolor('r+/bg')

 For k=1 To 4

 setcolor('r/bg')

 @ 5,xkor to 5+2,xkor+10

 setcolor('n/bg')

 @ 5+3,xkor-1 say '0,0'

 xkor=xkor+16

 next

 setcolor('g+/bg')

 @ 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,,,)

 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 //для эл. нижней

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


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.