МЕНЮ


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

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


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

    АТРИБУТЫ (о чем свидетельствует горящее посреди экрана сообщение “Не

    вижу pdf-файла”). Если pdf- файл доступен, то при выборе этого пункта

    меню начинается его анализ : за скоростью этого процесса пользователь

    может следить по процентной линии, отображаемой на экране.

    [pic]

    Внизу экрана отображается общее количество найденных на плате

    элементов а так-же сообщение о результате поиска контура платы на слое

    KONTUR.

    После завершения анализа платы программа выбирает габариты

    элементов из файла gabarits.dbf по их названию, а если не находит

    нужного, то выполняет поиск pdf-файла злемента (для prt, обработанного

    pdifout.exe) в подкаталоге PDF (который должен находиться в том-же

    каталоге что и программа). При успешном поиске она анализирует этот

    файл, находит в нем габариты элемента и заносит их в базу gabarits.dbf.

    Т.е. если на анализируемой плате есть элементы со стандартным названием,

    но не стандартными (обнавленными) габаритами, то необходимо удалить

    gabarits.dbf, а в подкаталог PDF скопировать все .pdf-файлы элементов

    платы, и тогда габариты всех элементов платы просканируются и файл

    подготовится заново. (В существующей версии каждый элемент по размерам

    округляется до параллелограмма, т.е. шар например станет кубом. Для

    точной графической передачи элементов в трехмерном виде требуется

    создание специальной графической библиотеки в формате T-FLEX, чему будет

    посвящена следующая версия программы.) Габариты элемента помещаются в

    базу gabaritrs.dbf. Т.е. если элемент встречался хотя-бы раз в какой-

    либо плате, то во всех последующих платах данные на него будут браться

    из базы без повторной обработки его PRT-файла.

    Если контур платы был обнаружен, то при создании файлов

    для T-FLEX в них передадутся габаритные размеры платы, со слоя KONTUR,

    округленные по форме до прямоугольника (существующая версия не

    обрабатывает сложные контуры). Если-же контур найден не был то

    программой создается собственный прямоугольный контур платы по условию:

    расстояние от края платы до граничных элементов равно 10 мм.

    После этого предлагается меню компоновки:

    [pic]

    - Выход (или ESC) — выход в предыдущее (главное) меню, если этот

    пункт выбирается первым, то при выходе происходит отказ от создания

    файлов платы в формате T-FLEX;

    - Трехмерная компоновка — при выборе этого пункта начинается процесс

    создания файлов изображения платы в трехмерном виде в формат T-FLEX.

    На экране отображается количество элементов, созданных в файлах T-

    FLEX , соответственно на нижнй и верхней стороне платы. При этом

    создаются 3-и файла в формате T-FLEX: *****top.frg-файл элементов

    верхней стороны платы, *****bot.frg-файл элементов нижней стороны

    платы, *****plt.frg-файл контура платы (символом ***** обозначаются

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

    которые пользователь редактирует по своему усмотрению в пункте Имя

    файла). После завершения автоматически предлагается меню компановки

    и пользователь, по жланию, может либо создать какой-либо другой вид

    платы, либо выйти в главное меню;

    - Имя файла — при выборе этого пункта курсор переходит в окно с

    именм файла и позволяет изменить его по своему усмотрению;

    [pic]

    - Описание — при выборе этого пункта создается стандартный dbf-

    файл, содержащий перечень всех элементов анализируемой платы.

    - Двумерная компановка — при выборе этого пункта предлагается меню с

    различными двумерными видами платы : спереди (F), сзади (A), слева

    (L), справа (R). Под каждым пунктом нарисована плата и стрелкой

    показано направление взгляда на неё.

    [pic]

    При выборе нужного пункта происходит создание файлов двумерного

    изображения, соответствующего вида, в формате T-FLEX (создается файл

    *****2d#.frg , где ***** - имя задаваемое пользователем при выборе

    пункта “имя”, а # - символ признак вида : F, A, L, R).

    После этого вновь предлагается меню компановки.

    Алгоритм и описание программы.

    Программа разработана и написана в СУБД CLIPPER 5.2 с

    использованием стандартных форматов файлов баз данных.

    Учитывая объем программы и сложность алгоритма,

    использовались методы структурированного программирования и текст

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

    функции, таким образом, чтобы их легко было редактировать во время

    отладки.

    1. Основная программа содержится в файле dbfill.prg, которая

    в своей работе использует процедуры и функции, описанные во

    вспомогательных программных файлах.

    На первом шаге выполнения программа считывает имя pdf-файла,

    заданного в командной строке, делает текущим каталог в котором она

    находится, создает переменные, необходимые в работе как её, так и другим

    подпрограммам:

    PARAMETERS fname //считать параметры командной строки

    PUBLIC

    higt,higtd,pnow:=0,filelen,exit:='',attr:='',desc,bufer:=SPACE(65000),

    ; compon[0,9],nomcomp:=0

    PUBLIC

    koef:=0.1,str,stolb,parts,znak,kontur[0],verkont:=0,parametr

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

    об ошибках

    PRIVATE razm,filend,not,L,p1,str2,colo

    PUBLIC tlplat:=7 //толщина платы

    set cursor off

    cls

    colo:=setcolor('g+/b')

    tmppat:=dirname() //делает текущим каталог в котором

    наход.

    pat:=LOWER(exename()) //исполняемый файл

    c1:=RAT('tel',pat)

    pat:=LEFT(pat,c1-2)

    DIRCHANGE (pat)

    Далее вызывается функция, активизирующая главное меню

    программы, которая, в зависимости от выбранного пункта, передает

    управление той или иной процедуре:

    IF fname<>NIL

    cls

    setboxgrow(3)

    wbox(0)

    set date format 'dd:mm:yyyy'

    //открытие основного окна

    ZAGOL('ОБРАБОТКА PDF-ФАЙЛА '+DTOC(DATE()))

    SETCOLOR('N/G')

    wmenu:=wind(1,2,maxrow()-3,maxcol()-3,'Главное меню',5)

    perv:=1

    SHOWTIME(0,72,'G/G')

    attrtmp:='DEMO '

    higttmp:=30.00

    higtdtmp:=30.00

    exittmp:=' out'

    GL() //выов фкнкции главного меню

    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)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)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])))(kwad(maxx-tx[4])+kwad(tx[5]))})

    ASORT(compon,,, tx[5]))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')

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


    Приглашения

    09.12.2013 - 16.12.2013

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

    09.12.2013 - 16.12.2013

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




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