Форум программистов, компьютерный форум, киберфорум
Компас 3D
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
9 / 9 / 3
Регистрация: 24.01.2015
Сообщений: 79
Записей в блоге: 6
1

Компас. Сборка. Чтение координат и перемещение Макросом (можно в цикле)

22.03.2015, 11:16. Просмотров 3860. Ответов 3
Метки нет (Все метки)

Получение координат деталей на сборке без Макросов по-моему проблема.

Доработанный Макрос может позволить прочитать координату любой детали и переместить на нужное расстояние, как в Solid.

В примере SDK "step3D2.a3m" , четвертым пунктом есть пример чтения координат первой детали и перемещения на новое место.
Если добавить цикл, деталь перемещается при включении макроса.

Для работы макроса, первую деталь нужно расфиксировать.
Раза три перемещений на 1000 градаций и машина зависает. Для Компаса это наверное жестоко.
Код
# coding: cp1251
# 3D-API|step3D2 - сборка

import Kompas6API5, LDefin3D, LDefin2D
Kompas, doc3d = start3d()

example = 4
print example

read(example='0.Пример')


if example == 4:        # получить и изменить место расположения детали в сборке
    iPart = Kompas6API5.ksPart(doc3d.GetPart(0))       # первая деталь в сборке
    iplac = Kompas6API5.ksPlacement(iPart.GetPlacement())            # ksPlacement
    x=y=z=0
    ok,x,y,z = iplac.GetOrigin(x, y, z)
    # выводит координаты первой детали сборки   
    #Kompas.ksMessage( ' '.join( map( unicode, ["x = " , x , " y = " , y , " z = " , z] ) ) )
    
    it = iter(range(688))

    for i in it:
         
         #iplac.SetOrigin(x, y, i)
         iplac.SetOrigin(110, 111, i)
         iPart.SetPlacement(iplac)
         iPart.UpdatePlacement()
         iPart.Update()
___
В тексте сообщения убираются пробелы, рабочий вариант в приложении.
0
Вложения
Тип файла: zip step3D2.zip (2.1 Кб, 8 просмотров)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.03.2015, 11:16
Ответы с готовыми решениями:

Как запустить Компас-3D макросом python через PythonWin
Здравствуйте! Не получается запустить макрос через PythonWin. Макросы должны строить 3D модель в...

КОМПАС 3D сборка
Необходимо присоединить 1 деталь к другой. Пробовал, однако при присоединении к верхней...

Перемещение в системе координат
День добрый! я в программировании на языке С++, новечек. изучаю самостоятельно обложившись книгами...

Плавное перемещение координат
Здравствуйте, уважаемые посетители форума! очень нуждаюсь в вашей помощи! Суть вопроса в...

3
9 / 9 / 3
Регистрация: 24.01.2015
Сообщений: 79
Записей в блоге: 6
24.03.2015, 12:34  [ТС] 2
Сборка. Чтение координат в таблицу и перестроение по измененным координатам
На основе примера "step3D2.a3m" пункт четыре.

Исходная информация: Сборка с компонентами.

Макрос "Zapis_Koord.a3m" считывает координаты компонент и записывает их в два файла:
"Sborka_Koord.txt" и
"Sborka_Koord_TABL1.txt".
Формат: Номер,x,y,z. Разделитель две табуляции, с одной пустой строкой.
Координаты в файле "Sborka_Koord_TABL1.txt", можно корректировать.

Информации по реальному количеству компонент пока нет, поэтому поставили 1000 и обход исключений.


Макросы:
"Chtenie_Koord.a3m"
"Chtenie_Koord_TABL1.a3m"
читают координаты компонент из файлов и перестраивают сборку.

Практически работать можно так:
На панели "Компас Макро" включаем "Макросы"
Нажимаем "Добавить" и заносим в список три макроса.
Наводим на нужный макрос м нажимаем "Изменить".
Дальше "File Run" или "Go", треугольник вверху.
Сборка перестроится по координатам таблиц, или запишутся координаты в таблицу.

Код макроса "Chtenie_Koord.a3m"
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import Kompas6API5, LDefin3D, LDefin2D
Kompas, doc3d = start3d()
 
m=[]
t=[]
f1 = open("C:\Sborka_Koord.txt", "r")
for   line in f1.readlines():
      m.append(line)
for   line in m:
      if line<>'\n':
          t=line.split("\t")
 
          nom=t[0]
          iPart = Kompas6API5.ksPart(doc3d.GetPart(nom))       # первая деталь в сборке
          iplac = Kompas6API5.ksPlacement(iPart.GetPlacement())            # ksPlacement
          x=y=z=0
          ok,x,y,z = iplac.GetOrigin(x, y, z)
 
          x=t[3]
          y=t[6]
          z=t[9]
 
          iplac.SetOrigin(x, y, z)
          iPart.SetPlacement(iplac)
          iPart.UpdatePlacement()
          iPart.Update()
 
f1.close()
0
Вложения
Тип файла: zip Сборка Движняк.zip (2.1 Кб, 8 просмотров)
9 / 9 / 3
Регистрация: 24.01.2015
Сообщений: 79
Записей в блоге: 6
16.04.2015, 13:43  [ТС] 3
Компас 14. Сборка. Вращение. Перемещение.
На примере шагающего робота.

Функция вращения в сборке есть в 15 версии, но и в 14 версии есть все для Макро.
В примере робот скатывается назад и шагает на исходную.

Ожидаемое торможение машины подтвердилось, пока снимаем диспетчером Компас.
Варианты решения: останавливать процессы и интерфейсы, отключение пересчета массы (синхронизации).
В данном примере с квадратными ногами может будет меньше тормозить.
Вариант уменьшения торможения выключением визуализации (Компас почти везде исчезает) запрещен, т.к. нужна анимация.

Для макроса таблица координат деталей берется с диска "С:"
Макрос работает с режима редактирования макросов.
0
Миниатюры
Компас. Сборка. Чтение координат и перемещение Макросом (можно в цикле)  
Вложения
Тип файла: zip Robot.zip (226.6 Кб, 5 просмотров)
9 / 9 / 3
Регистрация: 24.01.2015
Сообщений: 79
Записей в блоге: 6
18.04.2015, 01:16  [ТС] 4
Компас 14. Ускорение работы под управлением Макро.


Исходное:
Робот из предыдущего примера.
За 1.25 минуты возвращается на исходные координаты.

Если после начала движения нажать крестик закрывающий окно Компаса, появляется окно с предложением сохранить изменения.
Но самое интересное. время возврата на исходные координаты 0,25 минуты и соответствующая плавность движения.

Затем можно нажать отмена и продолжать работу, но машина все равно тормозит и нужно снимать Компас Диспетчером.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2015, 01:16

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Компас 3D и С++. Начало работы. Запуск Компас-3D используя функцию С++. Ошибка компиляции
Добрый день, уважаемые форумчане! Осваиваю программирование С++ для Компас-3D. Раньше никогда не...

Конвертирование чертежей Компас V16 в Компас V12
Помогите пожалуйста перевести файлы в Компас 12.

Перемещение в сторону отрицательных координат в ScrollViewer
Есть ScrollViewer и в нём Canvas с различными элементами. Если элементы перетаскиваются за границы...

Перемещение объекта от одних координат к другим
Вот допустим даны точки: x1 = -128 y1 = 0 x2 = -64 y2 = -64 Как сделать перемещение объекта...

Перемещение осей координат и масштабирование в Canvas(Delphi 7)
Здраствуйте. У меня возник такой вопрос: Какие функции отвечают за перемещение осей начала...

Компиляция, сборка и выполнение в цикле программы
Как в работающем цикле по наступлению определённого события сделать следующее - из текстового файла...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.