Vismach (3d симуляция) добавление функционала?
-
umerov
- Кандидат
- Сообщения: 83
- Зарегистрирован: 18 янв 2012, 21:22
- Репутация: 21
- Откуда: Украина
- Контактная информация:
Vismach (3d симуляция) добавление функционала?
Vismach очень удобен при отладке не стандартной кинематике станка.
С помощью него можно просимулировать полность поведение станка. Как можно добавить функционал в модуль vismach?
1. Чтоб можно было стирать пройденую траекторию инструмента. (решено пост № 14)
2. Можно было менять вид на ортогональный (вид сверху, сбоку, снизу)
3. Можно было скрывать или делать прозрачными некоторые части станка
4. Вращать камеру не только относительно начала сцены, а и относительно указателя мышки
5. Встроить vismach в интерфейс axis в отдельную закладку с помощью gladeVCP
С помощью него можно просимулировать полность поведение станка. Как можно добавить функционал в модуль vismach?
1. Чтоб можно было стирать пройденую траекторию инструмента. (решено пост № 14)
2. Можно было менять вид на ортогональный (вид сверху, сбоку, снизу)
3. Можно было скрывать или делать прозрачными некоторые части станка
4. Вращать камеру не только относительно начала сцены, а и относительно указателя мышки
5. Встроить vismach в интерфейс axis в отдельную закладку с помощью gladeVCP
Последний раз редактировалось umerov 30 дек 2015, 00:16, всего редактировалось 2 раза.
-
1240
- Мастер
- Сообщения: 972
- Зарегистрирован: 25 янв 2013, 17:11
- Репутация: 278
- Откуда: Украина, Харьков.
- Контактная информация:
Re: Vismach (3d симуляция) добавление функционала?
Тема по Vismach уже была.
http://www.cnc-club.ru/forum/viewtopic. ... it=Vismach
но, как мне кажется, она до конца не раскрыта.
http://www.cnc-club.ru/forum/viewtopic. ... it=Vismach
но, как мне кажется, она до конца не раскрыта.
-
umerov
- Кандидат
- Сообщения: 83
- Зарегистрирован: 18 янв 2012, 21:22
- Репутация: 21
- Откуда: Украина
- Контактная информация:
Re: Vismach (3d симуляция) добавление функционала?
я ее видел, там нет ничего что можно было бы использовать..., например 1. стереть пройденую траекторию инструмента.
Я не большой специалист по програмированию на питоне, но знаю что там можно все сделать, вот например сам модуль vismach https://github.com/jepler/linuxcnc-mirr ... vismach.py строка 755 "class O(rs274.OpenGLTk.Opengl):......." там есть процес перерисовки и стриние траектории при достижении "...self.plotlen = 4000...." как мне сделать чтоб пройденая траектория стриалась при авктивации hal пина?
Я не большой специалист по програмированию на питоне, но знаю что там можно все сделать, вот например сам модуль vismach https://github.com/jepler/linuxcnc-mirr ... vismach.py строка 755 "class O(rs274.OpenGLTk.Opengl):......." там есть процес перерисовки и стриние траектории при достижении "...self.plotlen = 4000...." как мне сделать чтоб пройденая траектория стриалась при авктивации hal пина?
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Vismach (3d симуляция) добавление функционала?
vismach не планировался для работы с HAL. Прикрутить-то можно, но могут быть преблемы в неожиданных местах...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
umerov
- Кандидат
- Сообщения: 83
- Зарегистрирован: 18 янв 2012, 21:22
- Репутация: 21
- Откуда: Украина
- Контактная информация:
Re: Vismach (3d симуляция) добавление функционала?
У меня с HAL проблем нет - там все нормально. Неудобство только в недостаке функционала.
Я vismach использую, для отладки сложной кинематики и постпроцессора для CAM.
В vismach отчетливо видно траектория движение кончика фрезы и осей станка.
Я vismach использую, для отладки сложной кинематики и постпроцессора для CAM.
В vismach отчетливо видно траектория движение кончика фрезы и осей станка.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Vismach (3d симуляция) добавление функционала?
С HAL или с "import hal"? 
Если второе, то просто создаёшь пин и обработчик к нему...
Если второе, то просто создаёшь пин и обработчик к нему...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
umerov
- Кандидат
- Сообщения: 83
- Зарегистрирован: 18 янв 2012, 21:22
- Репутация: 21
- Откуда: Украина
- Контактная информация:
Re: Vismach (3d симуляция) добавление функционала?
управляю через "import hal"
проблема в обработчике, как упавлять отобажением траектории (ее стереть), смотреть через ортогональные оси (сверху, сбоку, спереди..)
проблема в обработчике, как упавлять отобажением траектории (ее стереть), смотреть через ортогональные оси (сверху, сбоку, спереди..)
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Vismach (3d симуляция) добавление функционала?
Что-то я там не вижу кода для удаления траектории...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
umerov
- Кандидат
- Сообщения: 83
- Зарегистрирован: 18 янв 2012, 21:22
- Репутация: 21
- Откуда: Украина
- Контактная информация:
Re: Vismach (3d симуляция) добавление функционала?
В том то и дело, если я правильно понял там есть только код автоматического стирания траектории - нет стирариня принудительно
строка 816
строка 816
Код: Выделить всё
........
self.plotdata = []
self.plotlen = 4000
........
if len(self.plotdata) == self.plotlen:
del self.plotdata[:self.plotlen / 10]
point = [ wx, wy, wz ]
if not self.plotdata or point != self.plotdata[-1]:
self.plotdata.append(point)
-
umerov
- Кандидат
- Сообщения: 83
- Зарегистрирован: 18 янв 2012, 21:22
- Репутация: 21
- Откуда: Украина
- Контактная информация:
Re: Vismach (3d симуляция) добавление функционала?
вот использую vismach для симуляции
https://www.youtube.com/watch?v=1JzuyvvDWzc
https://www.youtube.com/watch?v=1JzuyvvDWzc
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Vismach (3d симуляция) добавление функционала?
Этот код удаляет из массива векторов последние 400 штук (10%) и добавляет новые. Сама перерисовка похоже вот тут делается https://github.com/jepler/linuxcnc-mirr ... ch.py#L861 т.е. стирается всё и рисуется заново только то, что надо.umerov писал(а):строка 816
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Vismach (3d симуляция) добавление функционала?
его же и использовать:UAVpilot писал(а):Этот код удаляет из массива векторов последние 400 штук (10%) и добавляет новые.
Код: Выделить всё
if наш_пин == 1:
del self.plotdata[:self.plotlen]-
umerov
- Кандидат
- Сообщения: 83
- Зарегистрирован: 18 янв 2012, 21:22
- Репутация: 21
- Откуда: Украина
- Контактная информация:
Re: Vismach (3d симуляция) добавление функционала?
где это код использовать - в самом файле gui_vismach или в vismach.py?
если добавить в gui_vismach - то не запускается,выдает ошибку
если добавить в gui_vismach - то не запускается,выдает ошибку
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Vismach (3d симуляция) добавление функционала?
создаешь свой пин очистки :
добавляешь в функцию отрисовки условие:
уже так работает))
очищает,когда пин выставляешь в True
Код: Выделить всё
import hal
c = hal.component("v2gui")
#pin v2gui.cl_pl
c.newpin("cl_pl", hal.HAL_BIT, hal.HAL_IN)
c.ready()Код: Выделить всё
if c['cl_pl'] == 1:
del self.plotdata[:self.plotlen]-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Vismach (3d симуляция) добавление функционала?
ага,в конце функции "вернем" наш пин в False:
итого весь файл:
https://www.youtube.com/watch?v=happCUR-uvo
Код: Выделить всё
c['cl_pl'] = 0
Последний раз редактировалось nkp 29 дек 2015, 17:44, всего редактировалось 1 раз.
-
umerov
- Кандидат
- Сообщения: 83
- Зарегистрирован: 18 янв 2012, 21:22
- Репутация: 21
- Откуда: Украина
- Контактная информация:
Re: Vismach (3d симуляция) добавление функционала?
Теперь понятно, спасибо
-
umerov
- Кандидат
- Сообщения: 83
- Зарегистрирован: 18 янв 2012, 21:22
- Репутация: 21
- Откуда: Украина
- Контактная информация:
Re: Vismach (3d симуляция) добавление функционала?
Стирание траектории работает отлично.
Как можно поменять камеру на ортогональный вид( сверху, спереди, сбоку, снизу)?
В vismach импортируется библеотека glnav . В ней есть фунции (set_view_x, set_view_y, setview_z). Я так понимаю это и есть то что надо, как их
использовать в vismach.py для установления вида?
glnav.py
Как можно поменять камеру на ортогональный вид( сверху, спереди, сбоку, снизу)?
В vismach импортируется библеотека glnav
Код: Выделить всё
import glnavиспользовать в vismach.py для установления вида?
glnav.py
Код: Выделить всё
......
def set_view_x(self):
self.reset()
glRotatef(-90, 0, 1, 0)
glRotatef(-90, 1, 0, 0)
mid, size = self.extents_info()
glTranslatef(-mid[0], -mid[1], -mid[2])
self.set_eyepoint_from_extents(size[1], size[2])
self.perspective = False
self.lat = -90
self.lon = 270
self._redraw()
......
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Vismach (3d симуляция) добавление функционала?
один из вариантов - просто вращать всю сборку на нужный угол(0,90,180,270)...umerov писал(а):Как можно поменять камеру на ортогональный вид( сверху, спереди, сбоку, снизу)?
покажу на все том же примере:
Код: Выделить всё
model = Collection([link1, base, floor, work])
model1 = Collection([link1, base, floor, work])
model2 = Collection([link1, base, floor, work])
model = HalRotate([model], c,"joint4",1,1,0,0)
model1 = HalRotate([model1],c,"joint5",1,0,1,0)
model2 = HalRotate([model2],c,"joint6",1,0,0,1)
main(model, tooltip, work ,size=1000, hud=0, rotation_vectors=None, lat=0, lon=0)у нас была наша конечная коллекция model (вся модель)
мы ее "дублируем" еще два раза:
model1 = HalRotate([model1],c,"joint5",1,0,1,0)
model2 = HalRotate([model2],c,"joint6",1,0,0,1)
первый раз мы вращаем ее значением пина "joint4" вокруг оси x(model = HalRotate([model], c,"joint4",1,1,0,0))
второй раз мы вращаем ее значением пина "joint5" вокруг оси y(model1 = HalRotate([model1], c,"joint5",1,0,1,0))
третий раз мы вращаем ее значением пина "joint6" вокруг оси z(model2 = HalRotate([model2], c,"joint6",1,0,0,1))
изменяем направление вращения ,прописывая множитель -1(например model = HalRotate([model2], c,"joint6",-1,0,0,1)
=================================
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Vismach (3d симуляция) добавление функционала?
для "правильной" работы кнопок(которые будут менять виды) ,необходимо чтоб каждая кнопка изменяла значения сразу трех пинов...
например нажатие button1(видX) одновременно "посылает":
в "joint4" значение 90
в "joint5" значение -270
в "joint6" значение 0
все значения написал произвольно ,только для примера...
например нажатие button1(видX) одновременно "посылает":
в "joint4" значение 90
в "joint5" значение -270
в "joint6" значение 0
все значения написал произвольно ,только для примера...
-
umerov
- Кандидат
- Сообщения: 83
- Зарегистрирован: 18 янв 2012, 21:22
- Репутация: 21
- Откуда: Украина
- Контактная информация:
Re: Vismach (3d симуляция) добавление функционала?
Понятно, буду пробывать