PUBLIC oFont, oPS := oStatic:lockPs()Auge_Ohr wrote:hi,
i wonder how it work with oPS while you have not assign it ?p.s. SetPixel "draw" into hDC not Presentationspace.Code: Select all
line 288 graSetAttrLine( oPS, aAttr )
Code: Select all
FUNCTION GraTest( oStatic )
PUBLIC oFont, oPS := oStatic:lockPs()
oFont := XbpFont():new( oPS ):create()
oFont:configure('16.Arial Bold')
GraSetFont( oPS, oFont )
****** Задать атрибуты линии
*aAttr := Array( GRA_AL_COUNT ) // Массив для атрибутов линии
*aAttr [ GRA_AL_TYPE ] := GRA_LINETYPE_DEFAULT
*aAttr [ GRA_AL_COLOR ] := GRA_CLR_RED // Задать цвет линии
*aAttr [ GRA_AL_WIDTH ] := 3 // Задать толщину линии
*graSetAttrLine( oPS, aAttr )
*GraBox( oPS, {30,80}, {200,130 } )
*GraLine( oPS, {30,80}, {200,130 } )
*GraStringAt( oPS, {50,100}, 'This is a test' )
*oStatic:unlockPs()
RETURN nil
Code: Select all
***********************************************************************************************************
******** Геокогнитивная система. Преобразует 2D Excel-таблицу с именем "Inp_map.xls" в файл "Inp_data.xls",
******** содержащий координаты X,Y,Z точек и их признаки (модель описательной информации картографической
******** базы данных). Визуализирует 2D Excel-таблицу или итоговые результаты распознавания (данные из БД:
******** "Rsp_it.dbf") в картографической форме с применением триангуляции Делоне
***********************************************************************************************************
FUNCTION F4_8(mTitle)
PUBLIC GetList[0], GetOptions, oSay, hDC1, hDC2, oStatic, oStatic1, aPixel
*DC_IconDefault(1000)
IF M_KodAdmAppls = 0 // Выйти из системы если нет авторизации
LB_Warning("Вы не авторизовались в системе (режим 1.1) и не можете ей пользоваться!")
RETURN NIL
ENDIF
****** Узнать разрешение экрана и не показывать изображений большой размерности ****************
nWidth := AppDeskTop():currentSize()[1] // current screen size width in pixels
nHeight := AppDeskTop():currentSize()[2] // current screen size height in pixels
IF nWidth < 1800
aMess := {}
AADD(aMess, "Для правильного отображения графической формы")
AADD(aMess, "необходимо разрешение экрана 1800 pix по горизонтали,")
AADD(aMess, "а фактически установлено: "+ALLTRIM(STR(nWidth))+" pix")
LB_Warning(aMess )
ReTURN NIL
ENDIF
IF nHeight < 850
aMess := {}
AADD(aMess, "Для правильного отображения графической формы")
AADD(aMess, "необходимо разрешение экрана 850 pix по вертикали,")
AADD(aMess, "а фактически установлено: "+ALLTRIM(STR(nHeight))+" pix")
LB_Warning(aMess )
ReTURN NIL
ENDIF
************************************************************************************************
*********** Формирование массива точек
mCount = 100000
*PUBLIC aX[100000], aY[100000], aZ[100000] // Координаты X,Y,Z точек облака
PUBLIC TrianglesP1[100000], TrianglesP2[100000], TrianglesP3[100000] // Массивы номеров точек вершин треугольников
PUBLIC RibsP1[100000], RibsP2[100000], RibsSide[100000] // Массивы номеров точек концов ребер
PUBLIC TrianglesCount:=0, RibsCount:=0, PointsCount:=0 // Кол-во треугольников, ребер, точек
PUBLIC mFlagCircle:=.F., mFlagRibs:=.T., mFlagsquare:=.T. // Флаги - рисовать ли окружности, рисовать ли ребра в градиентной цветовой заливке, квадратное ли поле рисования
PUBLIC aTriangleID:={}, mTriangleID, aRibID:={}, mRibID // Массив ID созданных треугольников (ID - рассортированный массив номеров точек вершин) и ребер
*PUBLIC X_MaxW := 1920, Y_MaxW := 910 // Размер графического окна для самого графика в пикселях
PUBLIC X_MaxW := 1800, Y_MaxW := 850 // Размер графического окна для самого графика в пикселях
PUBLIC nXSize := X_MaxW // Размер изображения в пикселях
PUBLIC nYSize := Y_MaxW
StrFile(STR(nXSize,9)+' '+STR(nYSize,9), '_XYSize.txt') // Запись текстового файла с параметрами nXSize, nYSize
*nXSize = VAL(SUBSTR(FileStr('_XYSize.txt'), 1,9)) // Загрузка параметра nXSize из текстового файла
*nYSize = VAL(SUBSTR(FileStr('_XYSize.txt'),11,9)) // Загрузка параметра nYSize из текстового файла
*AFILL(aX,0)
*AFILL(aY,0)
*AFILL(aZ,0)
AFILL(RibsP1,0)
AFILL(RibsP2,0)
AFILL(RibsSide,0)
AFILL(TrianglesP1,0)
AFILL(TrianglesP2,0)
AFILL(TrianglesP3,0)
** Имя графического файла для рисования
DO CASE
CASE FILE('Delone.bmp')
mFileName = 'Delone.bmp'
CASE FILE('Delone.jpg')
mFileName = 'Delone.jpg'
OTHERWISE
LB_Warning( 'В текущей папке системы'+Disk_dir+' должен быть файл: "Delone.bmp" или "Delone.jpg" 1800 x 850 pix', mTitle )
RETURN nil
ENDCASE
*H = 20 // Высота кнопки в pix
H = 1.5 // Высота кнопки
W = 8 // Ширина кнопки
D = 2 // Расстояние между кнопками
@ 0,0 DCSTATIC TYPE XBPSTATIC_TYPE_BITMAP CAPTION mFileName OBJECT oStatic1 ;
PREEVAL {|o|o:autoSize := .t.} EVAL {|o|hDC1 := GetWindowDC(o:getHWnd()), o:motion := {|a,b,o|ShowColorTr( hDC1, a, oSay, o )},;
aPixel := Array(o:caption:xSize,o:caption:ySize), o:paint := {|a,b,o|Gratest(o)}}
*** Группа-2 ***************************
mk1 ='Помощь'
mk2 ='Очистка'
mk3 ='Формирование облака точек'
mk4 ='Триангуляция ("Сетка")'
mk5 ='Триангуляция ("Градиентный цвет")'
mk6 ='Генерация изображений символов'
mk7 ='Цветовое зонирование'
*** Группа-3 ***************************
mk8 ='По пикселям'
mk9 ='По контурам'
*** Группа-4 ***************************
mk10='Помощь'
mk11='Подготовка данных'
mk12='Изображения и спектры объектов'
mk13='Изображения и спектры классов'
gr2 = LEN(mk1+mk2+mk3+mk4+mk5+mk6+Mk7)
gr3 = LEN(mk8+mk9)
gr4 = LEN(mk10+mk11+mk12+mk13)
@ 1,0 DCGROUP oGroup1 CAPTION '' SIZE gr2+gr3+gr4+10.5, 5.0
@ 0.5,1 DCGROUP oGroup2 CAPTION '4.8. Геокогнитивная подсистема системы "Эйдос":' SIZE gr2-0.5, 4.0 PARENT oGroup1
@ 1.5,1 DCPUSHBUTTON CAPTION mk1 SIZE LEN(mk1)+3 , H ACTION {||Help48()} PARENT oGroup2
@ DCGUI_ROW, DCGUI_COL + D DCPUSHBUTTON CAPTION mk2 SIZE LEN(mk2)+2 , H ACTION {||ClearImageTr()} PARENT oGroup2
@ DCGUI_ROW, DCGUI_COL + D DCPUSHBUTTON CAPTION mk3 SIZE LEN(mk3)-1 , H ACTION {||GetPoints()} PARENT oGroup2
@ DCGUI_ROW, DCGUI_COL + D DCPUSHBUTTON CAPTION mk4 SIZE LEN(mk4)-2 , H ACTION {||Triangulation(.T.)} PARENT oGroup2
@ DCGUI_ROW, DCGUI_COL + D DCPUSHBUTTON CAPTION mk5 SIZE LEN(mk5)-4 , H ACTION {||Shading(.T.)} PARENT oGroup2
@ DCGUI_ROW, DCGUI_COL + D DCPUSHBUTTON CAPTION mk6 SIZE LEN(mk6)-3 , H ACTION {||ParGenSimb('Ok')} PARENT oGroup2
@ DCGUI_ROW, DCGUI_COL + D DCPUSHBUTTON CAPTION mk7 SIZE LEN(mk7)-1 , H ACTION {||ColorZone(hDC1,aPixel)} PARENT oGroup2
@ 0.5,gr2+2 DCGROUP oGroup3 CAPTION '4.7. АСК-анализ изображений:' SIZE gr3+gr4+6.5,4.0 PARENT oGroup1
@ 1.5,1 DCPUSHBUTTON CAPTION mk8 SIZE LEN(mk8)+1 , H ACTION {||F4_7()} PARENT oGroup3
@ DCGUI_ROW, DCGUI_COL + D DCPUSHBUTTON CAPTION mk9 SIZE LEN(mk9)+1 , H ACTION {||Contouring(hDC1,aPixel)} PARENT oGroup3
@ 0.5,gr3+4 DCGROUP oGroup4 CAPTION 'По спектрам:' SIZE gr4+0.5, 3.0 PARENT oGroup3
@ 1.0,1 DCPUSHBUTTON CAPTION mk10 SIZE LEN(mk10)+2, H ACTION {||Help47()} PARENT oGroup4
@ DCGUI_ROW, DCGUI_COL + D DCPUSHBUTTON CAPTION mk11 SIZE LEN(mk11)-0, H ACTION {||F2_3_2_5()} PARENT oGroup4
@ DCGUI_ROW, DCGUI_COL + D DCPUSHBUTTON CAPTION mk12 SIZE LEN(mk12)-2, H ACTION {||SpectrView2325()} PARENT oGroup4
@ DCGUI_ROW, DCGUI_COL + D DCPUSHBUTTON CAPTION mk13 SIZE LEN(mk13)-3, H ACTION {||SpectrViewCls()} PARENT oGroup4
******* Отладочные режимы *********************
*@DCGUI_ROW, DCGUI_COL + D DCPUSHBUTTON CAPTION 'Информационные портреты' SIZE 200, H ACTION {||InfPortSimbKon()}
*@DCGUI_ROW, DCGUI_COL + D DCPUSHBUTTON CAPTION 'Создание приложения (2.3.2.2)' SIZE 210, H ACTION {||F2_3_2_2("")}
*@DCGUI_ROW, DCGUI_COL + D DCPUSHBUTTON CAPTION 'Синтез геокогнитивной модели (3.4)' SIZE 220, H ACTION {||F3_4(.T., 0, 0, 0, .T.,"")}
*@DCGUI_ROW, DCGUI_COL + D DCPUSHBUTTON CAPTION 'Распознавание объектов (4.1.2)' SIZE 210, H ACTION {||F4_1_2(4,.T.,"4_8")}
*@DCGUI_ROW, DCGUI_COL + D DCPUSHBUTTON CAPTION 'Поиск 1-го ребра' SIZE 150, H ACTION {||FindFirstRib(.T.)}
*@DCGUI_ROW, DCGUI_COL + D DCPUSHBUTTON CAPTION 'Тест станд.графики' SIZE 160, H ACTION {||Gratest(oStatic1)}
*DCGETOPTIONS PIXEL
DCREAD GUI FIT TITLE mTitle OPTIONS GetOptions ;
EVAL {||GraTest(oStatic1)} SETAPPWINDOW
CLOSE ALL
RETURN NIL
*****************************************************************************
Code: Select all
************************************************************************************************************************
FUNCTION GetPoints()
PUBLIC GetList[0], mRegim := 0, nModel := 1, nRasp := 1, nKrit := 1, mNumColumn := 3, mTrend := 1
PUBLIC PointsCount := 100, TurnovCount := 5, MarkPoints := 1, OutRadius:=100, InnRadius:=10 // Параметры по умолчанию
s = 1
d = 0.85
@0, 0 DCGROUP oGroup1 CAPTION 'Задайте способ формирования базы облака точек: "Points_XYZ"' SIZE 135.0, 22.0
@s, 2 DCRADIO mRegim VALUE 0 PROMPT 'Когнитивные функции, данные из моделей приложения' PARENT oGroup1;s1=s-1;s=s+d // Стереть файлы: _ColumnNames.arx и _482.txt
s=s+d
@s, 2 DCRADIO mRegim VALUE 1 PROMPT 'Генерация случайным образом' PARENT oGroup1;s1=s-1;s=s+d // Стереть файлы: _ColumnNames.arx и _482.txt
@s, 2 DCRADIO mRegim VALUE 2 PROMPT 'Цветовое кольцо (круг)' PARENT oGroup1;s2=s-1;s=s+d // Стереть файлы: _ColumnNames.arx и _482.txt
@s, 2 DCRADIO mRegim VALUE 3 PROMPT 'Цветовая обобщенная спираль Архимеда' PARENT oGroup1;s3=s-1;s=s+d // Стереть файлы: _ColumnNames.arx и _482.txt
@s, 2 DCRADIO mRegim VALUE 4 PROMPT 'Цветовая логарифмическая спираль' PARENT oGroup1;s4=s-1;s=s+d // Стереть файлы: _ColumnNames.arx и _482.txt
s=s+d
@s, 2 DCRADIO mRegim VALUE 5 PROMPT 'Координаты и цвета точек из графического файла' PARENT oGroup1;s5=s-1;s=s+d // Стереть файлы: _ColumnNames.arx и _482.txt
s=s+d
@s, 2 DCRADIO mRegim VALUE 6 PROMPT 'Из 1d Excel-таблицы исходных данных: "Inp_map1.xls"' PARENT oGroup1;s6=s-1;s=s+d // Записать файлы: _ColumnNames.arx и _482.txt
@s, 2 DCRADIO mRegim VALUE 7 PROMPT 'Из распознаваемой 1d Excel-таблицы: "Rsp_map1.xls"' PARENT oGroup1;s7=s-1;s=s+d // Записать файлы: _ColumnNames.arx и _482.txt
s=s+d
@s, 2 DCRADIO mRegim VALUE 8 PROMPT 'Из 2d Excel-таблицы исходных данных: "Inp_map2.dbf"' PARENT oGroup1;s8=s-1;s=s+d // Стереть файлы: _ColumnNames.arx и _482.txt
@s, 2 DCRADIO mRegim VALUE 9 PROMPT 'Из распознаваемой 2d Excel-таблицы: "Rsp_map2.dbf"' PARENT oGroup1;s9=s-1;s=s+d // Стереть файлы: _ColumnNames.arx и _482.txt
s=s+d
@s, 2 DCRADIO mRegim VALUE 10 PROMPT 'Из базы исходных данных: "Inp_data.dbf"' PARENT oGroup1;s10=s-1;s=s+d // Записать файл: _482.txt
@s, 2 DCRADIO mRegim VALUE 11 PROMPT 'Из распознаваемой выборки: "Inp_rasp.dbf"' PARENT oGroup1;s11=s-1;s=s+d // Записать файл: _482.txt
@s, 2 DCRADIO mRegim VALUE 12 PROMPT 'Из итоговых результатов распознавания: "Rsp_IT.dbf"' PARENT oGroup1;s12=s-1;s=s+d // Записать файл: _483.txt
s=s+d
@s, 2 DCCHECKBOX mFlagCircle PROMPT 'Рисовать окружности?' PARENT oGroup1;s=s+d
@s, 2 DCCHECKBOX mFlagRibs PROMPT 'Рисовать ребра в цветовой заливке?' PARENT oGroup1;s=s+d
@s, 2 DCCHECKBOX mFlagsQuare PROMPT 'Квадратное поле рисования (Xmax=Ymax)?' PARENT oGroup1;s=s+d
***** Параметры ****************************************************************************************************************
*-------------------------------------------------------------------------------------------------------------------------------
IF ApplChange("") // Перейти в папку выбранного приложения или выйти из системы
LB_Warning("Необходимо задать (выбрать) хотя бы одно текущее приложение !!!")
RETURN NIL
ENDIF
CLOSE ALL
USE Class_Sc EXCLUSIVE NEW
USE Opis_Sc EXCLUSIVE NEW
SELECT Class_Sc
DBGOTOP() ;mKodClSc1 = Kod_ClSc
DBGOBOTTOM();mKodClSc2 = Kod_ClSc
SELECT Opis_Sc
DBGOTOP() ;mKodOpSc1 = Kod_OpSc
DBGOBOTTOM();mKodOpSc2 = Kod_OpSc
d1 = 48
d2 = 62
PUBLIC mCurrInf := 6
@s1-1,50 DCGROUP oGroup2 CAPTION 'Задайте модель и диапазоны шкал когнитивных функций:' SIZE 83,20.5 HIDE {||.NOT.mRegim=0} PARENT oGroup1
s=1
d=0.85
@ s,2 DCRADIO mCurrInf VALUE 1 PROMPT '1. ABS - частный критерий: количество встреч сочетаний: "класс-признак" у объектов обуч.выборки' EDITPROTECT {||.NOT.mRegim=0} HIDE {||.NOT.mRegim=0} PARENT oGroup2;s=s+d
@ s,2 DCRADIO mCurrInf VALUE 2 PROMPT '2. PRC1 - частный критерий: усл. вероятность i-го признака среди признаков объектов j-го класса ' EDITPROTECT {||.NOT.mRegim=0} HIDE {||.NOT.mRegim=0} PARENT oGroup2;s=s+d
@ s,2 DCRADIO mCurrInf VALUE 3 PROMPT '3. PRC2 - частный критерий: условная вероятность i-го признака у объектов j-го класса ' EDITPROTECT {||.NOT.mRegim=0} HIDE {||.NOT.mRegim=0} PARENT oGroup2;s=s+1.2*d
@ s,2 DCRADIO mCurrInf VALUE 4 PROMPT '4. INF1 - частный критерий: количество знаний по А.Харкевичу; вероятности из PRC1 ' EDITPROTECT {||.NOT.mRegim=0} HIDE {||.NOT.mRegim=0} PARENT oGroup2;s=s+d
@ s,2 DCRADIO mCurrInf VALUE 5 PROMPT '5. INF2 - частный критерий: количество знаний по А.Харкевичу; вероятности из PRC2 ' EDITPROTECT {||.NOT.mRegim=0} HIDE {||.NOT.mRegim=0} PARENT oGroup2;s=s+d
@ s,2 DCRADIO mCurrInf VALUE 6 PROMPT '6. INF3 - частный критерий: Xи-квадрат, разности между фактическими и ожидаемыми абс.частотами ' EDITPROTECT {||.NOT.mRegim=0} HIDE {||.NOT.mRegim=0} PARENT oGroup2;s=s+d
@ s,2 DCRADIO mCurrInf VALUE 7 PROMPT '7. INF4 - частный критерий: ROI (Return On Investment); вероятности из PRC1 ' EDITPROTECT {||.NOT.mRegim=0} HIDE {||.NOT.mRegim=0} PARENT oGroup2;s=s+d
@ s,2 DCRADIO mCurrInf VALUE 8 PROMPT '8. INF5 - частный критерий: ROI (Return On Investment); вероятности из PRC2 ' EDITPROTECT {||.NOT.mRegim=0} HIDE {||.NOT.mRegim=0} PARENT oGroup2;s=s+d
@ s,2 DCRADIO mCurrInf VALUE 9 PROMPT '9. INF6 - частный критерий: разн.усл.и безусл.вероятностей; вероятности из PRC1 ' EDITPROTECT {||.NOT.mRegim=0} HIDE {||.NOT.mRegim=0} PARENT oGroup2;s=s+d
@ s,2 DCRADIO mCurrInf VALUE 10 PROMPT '10.INF7 - частный критерий: разн.усл.и безусл.вероятностей; вероятности из PRC2 ' EDITPROTECT {||.NOT.mRegim=0} HIDE {||.NOT.mRegim=0} PARENT oGroup2;s=s+1.7*d
@ s , 5 DCSAY 'Коды начальной и конечной классификационных шкал:' HIDE {||.NOT.mRegim=0} PARENT oGroup2
@ s ,d1 DCGET mKodClSc1 PICTURE "#########" EDITPROTECT {||.NOT.mRegim=0} HIDE {||.NOT.mRegim=0} PARENT oGroup2
@ s ,d2 DCGET mKodClSc2 PICTURE "#########" EDITPROTECT {||.NOT.mRegim=0} HIDE {||.NOT.mRegim=0} PARENT oGroup2;s=s+1.2*d
@ s , 5 DCSAY 'Код начальной и конечной описательных шкал:' HIDE {||.NOT.mRegim=0} PARENT oGroup2
@ s ,d1 DCGET mKodOpSc1 PICTURE "#########" EDITPROTECT {||.NOT.mRegim=0} HIDE {||.NOT.mRegim=0} PARENT oGroup2
@ s ,d2 DCGET mKodOpSc2 PICTURE "#########" EDITPROTECT {||.NOT.mRegim=0} HIDE {||.NOT.mRegim=0} PARENT oGroup2;s=s+1.7*d
str1 = 'Пояснение по когнитивным функциям'
str2 = 'Ссылки на публикации по когн.функциям'
str3 = 'Подборка публ.по когнит. функциям'
str4 = 'Подборку публ.по управл. знаниями'
@ s, 5 DCPUSHBUTTON CAPTION str1 SIZE LEN(str2), 1.1 HIDE {||.NOT.mRegim=0} PARENT oGroup2 ACTION {||Help48CognFun()}
@ s, 45 DCPUSHBUTTON CAPTION str3 SIZE LEN(str3), 1.1 HIDE {||.NOT.mRegim=0} PARENT oGroup2 ACTION {||DC_SpawnUrl("http://lc.kubagro.ru/Install_Aidos-X/PublCognFun.rar")};s=s+1.3*d
@ s, 5 DCPUSHBUTTON CAPTION str2 SIZE LEN(str2), 1.1 HIDE {||.NOT.mRegim=0} PARENT oGroup2 ACTION {||Publ_CognFun()}
@ s, 45 DCPUSHBUTTON CAPTION str4 SIZE LEN(str4), 1.1 HIDE {||.NOT.mRegim=0} PARENT oGroup2 ACTION {||DC_SpawnUrl("http://lc.kubagro.ru/Install_Aidos-X/PublUprZn.rar")};s=s+1.7*d
a=1
mCognFun = 3
@ s,2 DCGROUP oGroup3 CAPTION 'Какие когнитивные функции отображать:' SIZE 79,4.5 HIDE {||.NOT.mRegim=0} PARENT oGroup2
@ a,2 DCRADIO mCognFun VALUE 1 PROMPT '1. Только позитивные (точки максимума кол-ва информации в знач.аргумента о знач.функции)' EDITPROTECT {||.NOT.mRegim=0} HIDE {||.NOT.mRegim=0} PARENT oGroup3;a=a+d
@ a,2 DCRADIO mCognFun VALUE 2 PROMPT '2. Только негативные (точки минимума кол-ва информации в знач.аргумента о знач.функции)' EDITPROTECT {||.NOT.mRegim=0} HIDE {||.NOT.mRegim=0} PARENT oGroup3;a=a+d
@ a,2 DCRADIO mCognFun VALUE 3 PROMPT '3. И позитивные, и негативные когнитивные функции на одной экранной форме' EDITPROTECT {||.NOT.mRegim=0} HIDE {||.NOT.mRegim=0} PARENT oGroup3;a=a+1.2*d
*-------------------------------------------------------------------------------------------------------------------------------
@s1 ,50 DCGROUP oGroup2 CAPTION 'Количество точек:' SIZE 26, 2.5 HIDE {||.NOT.mRegim=1} PARENT oGroup1
@ 1 , 1 DCSAY "" GET PointsCount PICTURE "##########" EDITPROTECT {||.NOT.mRegim=1} HIDE {||.NOT.mRegim=1} PARENT oGroup2
*-------------------------------------------------------------------------------------------------------------------------------
t1 = "Точек: "
t2 = "Max радиус:"
t3 = "Min радиус:"
@s2 ,50 DCGROUP oGroup2 CAPTION 'Задайте параметры:' SIZE 26, 4.5 HIDE {||.NOT.mRegim=2} PARENT oGroup1
@ 1 , 1 DCSAY t1 GET PointsCount PICTURE "#########" EDITPROTECT {||.NOT.mRegim=2} HIDE {||.NOT.mRegim=2} PARENT oGroup2
@ 2 , 1 DCSAY t2 GET OutRadius PICTURE "#########" EDITPROTECT {||.NOT.mRegim=2} HIDE {||.NOT.mRegim=2} PARENT oGroup2
@ 3 , 1 DCSAY t3 GET InnRadius PICTURE "#########" EDITPROTECT {||.NOT.mRegim=2} HIDE {||.NOT.mRegim=2} PARENT oGroup2
*-------------------------------------------------------------------------------------------------------------------------------
t1 = "Точек: "
t2 = "Витков: "
@s3 ,50 DCGROUP oGroup2 CAPTION 'Задайте параметры:' SIZE 26, 5.5 HIDE {||.NOT.mRegim=3} PARENT oGroup1
@ 1 , 1 DCSAY t1 GET PointsCount PICTURE "#########" EDITPROTECT {||.NOT.mRegim=3} HIDE {||.NOT.mRegim=3} PARENT oGroup2
@ 2 , 1 DCSAY t2 GET TurnovCount PICTURE "#########" EDITPROTECT {||.NOT.mRegim=3} HIDE {||.NOT.mRegim=3} PARENT oGroup2
@ 3 , 2 DCRADIO mTrend VALUE 1 PROMPT 'Возрастание' EDITPROTECT {||.NOT.mRegim=3} HIDE {||.NOT.mRegim=3} PARENT oGroup2
@ 4 , 2 DCRADIO mTrend VALUE 2 PROMPT 'Убывание' EDITPROTECT {||.NOT.mRegim=3} HIDE {||.NOT.mRegim=3} PARENT oGroup2
*-------------------------------------------------------------------------------------------------------------------------------
t1 = "Точек: "
t2 = "Витков: "
@s4 ,50 DCGROUP oGroup2 CAPTION 'Задайте параметры:' SIZE 26, 3.5 HIDE {||.NOT.mRegim=4} PARENT oGroup1
@ 1 , 1 DCSAY t1 GET PointsCount PICTURE "#########" EDITPROTECT {||.NOT.mRegim=4} HIDE {||.NOT.mRegim=4} PARENT oGroup2
@ 2 , 1 DCSAY t2 GET TurnovCount PICTURE "#########" EDITPROTECT {||.NOT.mRegim=4} HIDE {||.NOT.mRegim=4} PARENT oGroup2
*-------------------------------------------------------------------------------------------------------------------------------
@s5 ,50 DCGROUP oGroup2 CAPTION 'Отмечать точки?' SIZE 26, 3.5 HIDE {||.NOT.mRegim=5} PARENT oGroup1
@ 1 , 2 DCRADIO MarkPoints VALUE 1 PROMPT 'Нет' EDITPROTECT {||.NOT.mRegim=5} HIDE {||.NOT.mRegim=5} PARENT oGroup2
@ 2 , 2 DCRADIO MarkPoints VALUE 2 PROMPT 'Да' EDITPROTECT {||.NOT.mRegim=5} HIDE {||.NOT.mRegim=5} PARENT oGroup2
*-------------------------------------------------------------------------------------------------------------------------------
@s6 ,50 DCGROUP oGroup2 CAPTION 'Задайте параметры:' SIZE 26, 5.5 HIDE {||.NOT.mRegim=6} PARENT oGroup1
@ 1 , 2 DCRADIO nModel VALUE 1 PROMPT 'Визуализация знач.шкалы' EDITPROTECT {||.NOT.mRegim=6} HIDE {||.NOT.mRegim=6} PARENT oGroup2
@ 2 , 2 DCRADIO nModel VALUE 2 PROMPT 'Виз.шкалы+синтез модели' EDITPROTECT {||.NOT.mRegim=6} HIDE {||.NOT.mRegim=6} PARENT oGroup2
@ 3.2 ,0.7 DCSAY "" GET mNumColumn PICTURE "#####" EDITPROTECT {||.NOT.mRegim=6} HIDE {||.NOT.mRegim=6} PARENT oGroup2
@ 3.2 ,11 DCSAY "№ отобр. колонки" EDITPROTECT {||.NOT.mRegim=6} HIDE {||.NOT.mRegim=6} PARENT oGroup2
@ 4.2 ,11 DCSAY 'в "Inp_map1.xls"' EDITPROTECT {||.NOT.mRegim=6} HIDE {||.NOT.mRegim=6} PARENT oGroup2
*-------------------------------------------------------------------------------------------------------------------------------
@s7 ,50 DCGROUP oGroup2 CAPTION 'Задайте параметры:' SIZE 26, 5.5 HIDE {||.NOT.mRegim=7} PARENT oGroup1
@ 1 , 2 DCRADIO nModel VALUE 1 PROMPT 'Визуализация знач.шкалы' EDITPROTECT {||.NOT.mRegim=7} HIDE {||.NOT.mRegim=7} PARENT oGroup2
@ 2 , 2 DCRADIO nModel VALUE 2 PROMPT 'Виз.шкалы+распознавание' EDITPROTECT {||.NOT.mRegim=7} HIDE {||.NOT.mRegim=7} PARENT oGroup2
@ 3.2 ,0.7 DCSAY "" GET mNumColumn PICTURE "#####" EDITPROTECT {||.NOT.mRegim=7} HIDE {||.NOT.mRegim=7} PARENT oGroup2
@ 3.2 ,11 DCSAY "№ отобр. колонки" EDITPROTECT {||.NOT.mRegim=7} HIDE {||.NOT.mRegim=7} PARENT oGroup2
@ 4.2 ,11 DCSAY 'в "Rsp_map1.xls"' EDITPROTECT {||.NOT.mRegim=7} HIDE {||.NOT.mRegim=7} PARENT oGroup2
*-------------------------------------------------------------------------------------------------------------------------------
@s8 ,50 DCGROUP oGroup2 CAPTION 'Формировать модель?' SIZE 26, 3.5 HIDE {||.NOT.mRegim=8} PARENT oGroup1
@ 1 , 2 DCRADIO nModel VALUE 1 PROMPT 'Нет' EDITPROTECT {||.NOT.mRegim=8} HIDE {||.NOT.mRegim=8} PARENT oGroup2
@ 2 , 2 DCRADIO nModel VALUE 2 PROMPT 'Да' EDITPROTECT {||.NOT.mRegim=8} HIDE {||.NOT.mRegim=8} PARENT oGroup2
*-------------------------------------------------------------------------------------------------------------------------------
@s9 ,50 DCGROUP oGroup2 CAPTION 'Распознавать?' SIZE 26, 3.5 HIDE {||.NOT.mRegim=9} PARENT oGroup1
@ 1 , 2 DCRADIO nRasp VALUE 1 PROMPT 'Нет' EDITPROTECT {||.NOT.mRegim=9} HIDE {||.NOT.mRegim=9} PARENT oGroup2
@ 2 , 2 DCRADIO nRasp VALUE 2 PROMPT 'Да' EDITPROTECT {||.NOT.mRegim=9} HIDE {||.NOT.mRegim=9} PARENT oGroup2
*-------------------------------------------------------------------------------------------------------------------------------
@s10 ,50 DCGROUP oGroup2 CAPTION 'Задать № отображаемой шкалы:' SIZE 26, 3.5 HIDE {||.NOT.mRegim=10} PARENT oGroup1
@ 1 , 2 DCSAY 'в файле: "Inp_data.dbf"' EDITPROTECT {||.NOT.mRegim=10} HIDE {||.NOT.mRegim=10} PARENT oGroup2
@ 2.2 , 1 DCSAY "" GET mNumColumn PICTURE "##########" EDITPROTECT {||.NOT.mRegim=10} HIDE {||.NOT.mRegim=10} PARENT oGroup2
*-------------------------------------------------------------------------------------------------------------------------------
@s11 ,50 DCGROUP oGroup2 CAPTION 'Задать № отображаемой шкалы:' SIZE 26, 3.5 HIDE {||.NOT.mRegim=11} PARENT oGroup1
@ 1 , 2 DCSAY 'в файле: "Inp_rasp.dbf"' EDITPROTECT {||.NOT.mRegim=11} HIDE {||.NOT.mRegim=11} PARENT oGroup2
@ 2.2 , 1 DCSAY "" GET mNumColumn PICTURE "##########" EDITPROTECT {||.NOT.mRegim=11} HIDE {||.NOT.mRegim=11} PARENT oGroup2
*-------------------------------------------------------------------------------------------------------------------------------
@s12 ,50 DCGROUP oGroup2 CAPTION 'Интегральный критерий:'SIZE 26, 3.5 HIDE {||.NOT.mRegim=12} PARENT oGroup1
@ 1 , 2 DCRADIO nKrit VALUE 1 PROMPT 'Резонанс знаний' EDITPROTECT {||.NOT.mRegim=12} HIDE {||.NOT.mRegim=12} PARENT oGroup2
@ 2 , 2 DCRADIO nKrit VALUE 2 PROMPT 'Сумма знаний' EDITPROTECT {||.NOT.mRegim=12} HIDE {||.NOT.mRegim=12} PARENT oGroup2
********************************************************************************************************************************
DCGETOPTIONS TABSTOP
DCREAD GUI ;
TO lExit ;
FIT ;
OPTIONS GetOptions ;
ADDBUTTONS;
MODAL ;
TITLE '4.8. Геокогнитивная подсистема "Эйдос"'
********************************************************************
IF lExit
** Button Ok
ELSE
RETURN NIL
ENDIF
********************************************************************
************ Проверки на корректность введенных параметров *********
********************************************************************
IF PointsCount < 3
LB_Warning('Число точек должно быть больше 2','4.8. Геокогнитивная подсистема "Эйдос"')
RETURN NIL
ENDIF
IF mNumColumn < 1
LB_Warning( 'Номер отображаемой колонки должен быть не меньше 1','4.8. Геокогнитивная подсистема "Эйдос"' )
RETURN NIL
ENDIF
** Проверка числа колонок на превышение
* IF mRegim = 6 .OR. mRegim = 7 .OR. mRegim = 10 .OR. mRegim = 1
** F480('Inp_map1.', mNumColumn) // Записать файлы: _ColumnNames.arx и _482.txt
** F482('Inp_map1.', mNumColumn) // Записать файлы: _ColumnNames.arx и _482.txt
* aFile =''
* IF mRegim = 6;aFile = 'Inp_map1.xls';ENDIF
* IF mRegim = 7;aFile = 'Rsp_map1.xls';ENDIF
* IF mRegim =10;aFile = 'Inp_data.dbf';ENDIF
* IF mRegim =11;aFile = 'Inp_rasp.dbf';ENDIF
* DIRCHANGE(Disk_dir+"\AID_DATA\Inp_data\")
* IF .NOT. FILE(aFile)
* LB_Warning( 'В папке: '+Disk_dir+'\AID_DATA\Inp_data\ должен быть файл: "'+aFile+'"','4.8. Геокогнитивная подсистема "Эйдос"' )
* RETURN NIL
* ENDIF
* M_NewAppl = M_ApplsPath+"\Inp_data\"
* DIRCHANGE(M_NewAppl)
** MsgBox(M_NewAppl)
* IF AT('xls', aFile) > 0 // ПРЕОБРАЗОВАНИЕ: XLS => DBF
* ENDIF
* bFile = SUBSTR(aFile,1,AT('.', aFile)-1)
* CLOSE ALL
* USE (bFile) EXCLUSIVE NEW
* SELECT(bFile)
* IF mNumColumn > FCOUNT()
* aMess := {}
* AADD(aMess, 'Номер отображаемой колонки: '+ALLTRIM(STR(mNumColumn)))
* AADD(aMess, 'не должен быть больше: '+ALLTRIM(STR(FCOUNT())))
* AADD(aMess, 'числа колонок в файле: '+aFile)
* LB_Warning( aMess, '4.8. Геокогнитивная подсистема "Эйдос"' )
* RETURN NIL
* ENDIF
* ENDIF
******* Вызов функций ************************************************************************
DIRCHANGE(Disk_dir)
IF mFlagsQuare
PUBLIC X_MaxW := 910, Y_MaxW := 910 // Размер графического окна для самого графика в пикселях
ELSE
PUBLIC X_MaxW := 1800, Y_MaxW := 850 // Размер графического окна для самого графика в пикселях
ENDIF
PUBLIC nXSize := X_MaxW-50 // Размер изображения в пикселях
PUBLIC nYSize := Y_MaxW-50
DO CASE
CASE mRegim = 0 // Визуализация когнитивных функций
* MsgBox(STR(M_CurrInf)+STR(mKodClSc1)+STR(mKodClSc2)+STR(mKodOpSc1)+STR(mKodOpSc2))
*** Загрузить базы моделей *******************************************************
IF ApplChange("") // Перейти в папку выбранного приложения или выйти из системы
LB_Warning("Необходимо задать (выбрать) хотя бы одно текущее приложение !!!")
RETURN NIL
ENDIF
ConvTXTtoDBF() // Преобразование Abs, Prc#, Inf# из TXT в DBF
ClearImageTr() // Очистка изображения
********************************************
*** Отображение заданных когнитивных функций
********************************************
IF FILEDATE("Cogn_fun",16) = CTOD("//")
DIRMAKE("Cogn_fun")
Mess = 'В папке текущего приложения: "#" не было директории "Cogn_fun" для когнитивных функций и она была создана!'
Mess = STRTRAN(Mess, "#", UPPER(ALLTRIM(M_PathAppl)))
LB_Warning(Mess, '4.5. Визуализация когнитивных функций системы "Эйдос-Х++"' )
ENDIF
nRun = 0
FOR mOpSc = mKodOpSc1 TO mKodOpSc2
FOR mClSc = mKodClSc1 TO mKodClSc2
nRun++
LC_CognFun(mCurrInf, mOpSc, mClSc, mCognFun, nRun) // Отображение заданной когнитивной функции
NEXT
NEXT
*****************************************************************************************
*****************************************************************************************
*****************************************************************************************
CASE mRegim = 1 // Генерация случайным образом
RndGenPoints() // Стереть файлы: _ColumnNames.arx и _482.txt
CASE mRegim = 2 // Цветовой круг
CircleColor() // Стереть файлы: _ColumnNames.arx и _482.txt
CASE mRegim = 3 // Цветовая спираль Архимеда
ArchimSpiral() // Стереть файлы: _ColumnNames.arx и _482.txt
CASE mRegim = 4 // Цветовая логарифмическая спираль
LogarSpiral() // Стереть файлы: _ColumnNames.arx и _482.txt
CASE mRegim = 5 // Координаты и цвета точек из графического файла
CoordPointsFile() // Стереть файлы: _ColumnNames.arx и _482.txt
CASE mRegim = 6 // Из исходной 1d Excel-таблицы исходных данных: "Inp_map1.dbf"
F480('Inp_map1.', mNumColumn, 6) // Записать файлы: _ColumnNames.arx и _482.txt
CASE mRegim = 7 // Из распознаваемой 1d Excel-таблицы: "Rsp_map1.dbf"
F480('Rsp_map1.', mNumColumn, 7) // Записать файлы: _ColumnNames.arx и _482.txt
CASE mRegim = 8 // Из 2d Excel-таблицы исходных данных: "Inp_map2.dbf" <################################
F481('Inp_map2.') // Стереть файлы: _ColumnNames.arx и _482.txt
CASE mRegim = 9 // Из распознаваемой 2d Excel-таблицы: "Rsp_map2.dbf" <################################
F481('Rsp_map2.') // Стереть файлы: _ColumnNames.arx и _482.txt
CASE mRegim = 10 // Из базы исходных данных: "Inp_data.dbf"
F482('Inp_map1.', mNumColumn, 10) // Записать файлы: _ColumnNames.arx и _482.txt
CASE mRegim = 11 // Из распознаваемой выборки: "Inp_rasp.dbf"
F482('Rsp_map1.', mNumColumn, 10) // Записать файлы: _ColumnNames.arx и _482.txt
CASE mRegim = 12 // Из итоговых результатов распознавания: "Rsp_IT.dbf"
F483(nKrit) // Записать файлы: _ColumnNames.arx и _483.txt <################################
ENDCASE
RETURN NIL