Pietrovich
26.05.2002, 19:18
Задача:
//ну типа дипломная работа (и это на кафедре которая к программированию никак не отностися, разве что на одном с ними ФАКультете !!!)
написать программу, иллюстрирующую работу РТК (типа Роботизированный Технологический комплекс),
с возможностью рассчета оптимального алгоритма работы (в рамках технологической последовательности обработки детали) и моделирования в риалтайме работы РТК....
загвоздки:
1. структура РТК задается методом драг-енд-дропа, т.е. изначально не известно что попытается задать юзер :(
2. писать под РТ да еще и с анимацией... короче кроме флеша я ничего более удобного не нашел :(
алгоритмы я уже написал, правда проверялись на Паскале, т.е. математика уже есть, осталось перебить ее на ФЛЕШ (желательно 5 или 6)
Вот тут и начинаются проблемы!!!!
кусок кода на паскале (описание типов, чисто тестовый код для проверки алгоритмов)
=======================================================
type
_flags = object
working :boolean;
finished :boolean;
empty :boolean;
finishtime :integer;
end;
_tools = object (_flags)
origin :string;
zCounter :byte;
WorkTime :integer;
MoveTo :integer;
Install :integer;
Insert :integer;
Eject :integer;
procedure TstartNewJOB;
procedure TfinishJOB;
procedure Tejecting;
procedure TpassTime;
end;
_robot = object (_flags)
worktime :integer;
count :byte; {count of serving tools}
point :array [0..20] of _tools;
moveTable :array [0..20,0..20] of integer;
outs :array [0..100] of integer;
sJob :boolean;
outCounter :byte;
inCounter :byte;
timer :integer;
position :byte;
zID :byte; {etap obrobki detali}
target :byte;
unloading :byte;
loading :byte;
procedure rPassTIME;
procedure rInit;
function rFindTarget:byte;
procedure rStartNewJOB(startTarget:byte);
procedure rDieHard;
end;
=======================================================
обратите внимание на свойство point у типа _robot это список обслуживаемых роботом железяк (станки конвеееры и т.п.)
для решения данной задачи выгодно разбить сложный многороботный РТК на кучку простых - однороботных
т.е. я создаю объект робот1 2,3, ... и т.д. который собственными методами решает свои задачи, остается только синхронизировать работу всех роботов...
при попытке сделать то-же самое на Флешевых объектах происходит грандиозный облом:
//описание первых 2х типов пропускаю, методов тоже...
_tools =
{
outFile :null,
working :false,
finished :false,
empty :false,
finishTime :null,
origin :null, //string
zCounter :null, //byte
WorkTime :null, //integer
MoveTo :null, //integer
tInstall :null, //integer
tInsert :null, //integer
tEject :null, //integer
TstartNewJob : function ()
{
this.finished = false;
this.workinf=true;
this.finishtime = this.workTime;
this.empty=false;
this.zCounter++;
},
TfinishJob : function ()
{
this.finished=true;
this.working=false;
this.finishTime=0;
this.empty=false;
},
TEjecting : function ()
{
this.finished=false;
this.working=false;
this.finishtime=0;
this.empty=true;
}
}
_robot =
{
WorkTime :null, //integer
count :null, //byte количество обслуживаемых единиц оборудования
point :new array(), //вариант new Array(_tools) вообще не проходит...
moveTable :new array([null],[null]),
outs :new array(null),
sJob :null, //boolean
outCounter :null, //byte
inCounter :null, //byte
timer :null, //integer
cPosition :null, //byte
zID :null, //byte, etap obrobki detali
rTarget :null, //byte
unloading :null, //byte
loading :null, //byte
}
// теперю попітаемся проверить что получилось:
robot1 = new Object(_robot);
robot2 = new Object(_robot);
//трабл первый и не последний
robot1.count = "robot 1"; //пофиг типы. главное - трабл
robot2.count = "robot 2";
trace (robot1.count);
!!!!!!!!!!!!!!!!!!!!!!
видим robot 2
та что? robot1 b robot2 не разные объекты ?!
причем появляется еще и хитрый _robot который == robot2 :((
мне нужны отдельные, полностью независымые экземпляры, а вместо них я получаю тупые ссылки на прототип :((
можно решить эту проблему ???
в принципе устрит и вариант каждый новый объект генерить с нуля, но как тогда задавать имена этих объектов???
//трабл 2
или как залабать массив объектов ???
qqq = new Array(_tools);
и обращения типа
qqq[2].origin="станок" не проходят :(
а вариант типа
mA = new Array();
t = new Object(_tools);
t.origin="sdfsdfs";
mA[1]=t;
t.origin="wete;lrjoyjthjltyhltjholjtojhtoyh";
mA[2]=t;
приводит к траблу №1, т.е. mA[1].origin== "wete;lrjoyjthjltyhltjholjtojhtoyh" :(
хелп!!! может я чего-то не понимаю, но ООП чуть-чуть отличается от простого расставления "."
З.Ы. в принципе я могу использовать и мувики вместо математической модели, но тогда прога так тормозит... :((
//ну типа дипломная работа (и это на кафедре которая к программированию никак не отностися, разве что на одном с ними ФАКультете !!!)
написать программу, иллюстрирующую работу РТК (типа Роботизированный Технологический комплекс),
с возможностью рассчета оптимального алгоритма работы (в рамках технологической последовательности обработки детали) и моделирования в риалтайме работы РТК....
загвоздки:
1. структура РТК задается методом драг-енд-дропа, т.е. изначально не известно что попытается задать юзер :(
2. писать под РТ да еще и с анимацией... короче кроме флеша я ничего более удобного не нашел :(
алгоритмы я уже написал, правда проверялись на Паскале, т.е. математика уже есть, осталось перебить ее на ФЛЕШ (желательно 5 или 6)
Вот тут и начинаются проблемы!!!!
кусок кода на паскале (описание типов, чисто тестовый код для проверки алгоритмов)
=======================================================
type
_flags = object
working :boolean;
finished :boolean;
empty :boolean;
finishtime :integer;
end;
_tools = object (_flags)
origin :string;
zCounter :byte;
WorkTime :integer;
MoveTo :integer;
Install :integer;
Insert :integer;
Eject :integer;
procedure TstartNewJOB;
procedure TfinishJOB;
procedure Tejecting;
procedure TpassTime;
end;
_robot = object (_flags)
worktime :integer;
count :byte; {count of serving tools}
point :array [0..20] of _tools;
moveTable :array [0..20,0..20] of integer;
outs :array [0..100] of integer;
sJob :boolean;
outCounter :byte;
inCounter :byte;
timer :integer;
position :byte;
zID :byte; {etap obrobki detali}
target :byte;
unloading :byte;
loading :byte;
procedure rPassTIME;
procedure rInit;
function rFindTarget:byte;
procedure rStartNewJOB(startTarget:byte);
procedure rDieHard;
end;
=======================================================
обратите внимание на свойство point у типа _robot это список обслуживаемых роботом железяк (станки конвеееры и т.п.)
для решения данной задачи выгодно разбить сложный многороботный РТК на кучку простых - однороботных
т.е. я создаю объект робот1 2,3, ... и т.д. который собственными методами решает свои задачи, остается только синхронизировать работу всех роботов...
при попытке сделать то-же самое на Флешевых объектах происходит грандиозный облом:
//описание первых 2х типов пропускаю, методов тоже...
_tools =
{
outFile :null,
working :false,
finished :false,
empty :false,
finishTime :null,
origin :null, //string
zCounter :null, //byte
WorkTime :null, //integer
MoveTo :null, //integer
tInstall :null, //integer
tInsert :null, //integer
tEject :null, //integer
TstartNewJob : function ()
{
this.finished = false;
this.workinf=true;
this.finishtime = this.workTime;
this.empty=false;
this.zCounter++;
},
TfinishJob : function ()
{
this.finished=true;
this.working=false;
this.finishTime=0;
this.empty=false;
},
TEjecting : function ()
{
this.finished=false;
this.working=false;
this.finishtime=0;
this.empty=true;
}
}
_robot =
{
WorkTime :null, //integer
count :null, //byte количество обслуживаемых единиц оборудования
point :new array(), //вариант new Array(_tools) вообще не проходит...
moveTable :new array([null],[null]),
outs :new array(null),
sJob :null, //boolean
outCounter :null, //byte
inCounter :null, //byte
timer :null, //integer
cPosition :null, //byte
zID :null, //byte, etap obrobki detali
rTarget :null, //byte
unloading :null, //byte
loading :null, //byte
}
// теперю попітаемся проверить что получилось:
robot1 = new Object(_robot);
robot2 = new Object(_robot);
//трабл первый и не последний
robot1.count = "robot 1"; //пофиг типы. главное - трабл
robot2.count = "robot 2";
trace (robot1.count);
!!!!!!!!!!!!!!!!!!!!!!
видим robot 2
та что? robot1 b robot2 не разные объекты ?!
причем появляется еще и хитрый _robot который == robot2 :((
мне нужны отдельные, полностью независымые экземпляры, а вместо них я получаю тупые ссылки на прототип :((
можно решить эту проблему ???
в принципе устрит и вариант каждый новый объект генерить с нуля, но как тогда задавать имена этих объектов???
//трабл 2
или как залабать массив объектов ???
qqq = new Array(_tools);
и обращения типа
qqq[2].origin="станок" не проходят :(
а вариант типа
mA = new Array();
t = new Object(_tools);
t.origin="sdfsdfs";
mA[1]=t;
t.origin="wete;lrjoyjthjltyhltjholjtojhtoyh";
mA[2]=t;
приводит к траблу №1, т.е. mA[1].origin== "wete;lrjoyjthjltyhltjholjtojhtoyh" :(
хелп!!! может я чего-то не понимаю, но ООП чуть-чуть отличается от простого расставления "."
З.Ы. в принципе я могу использовать и мувики вместо математической модели, но тогда прога так тормозит... :((