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

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

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

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

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

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

Для работы макроса, первую деталь нужно расфиксировать.
Раза три перемещений на 1000 градаций и машина зависает. Для Компаса это наверное жестоко.
Code
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
29
# 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()
___
В тексте сообщения убираются пробелы, рабочий вариант в приложении.
Вложения
Тип файла: zip step3D2.zip (2.1 Кб, 31 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.03.2015, 11:16
Ответы с готовыми решениями:

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

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

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

3
9 / 9 / 3
Регистрация: 24.01.2015
Сообщений: 79
Записей в блоге: 6
24.03.2015, 12:34  [ТС]
Сборка. Чтение координат в таблицу и перестроение по измененным координатам
На основе примера "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()
Вложения
Тип файла: zip Сборка Движняк.zip (2.1 Кб, 27 просмотров)
0
9 / 9 / 3
Регистрация: 24.01.2015
Сообщений: 79
Записей в блоге: 6
16.04.2015, 13:43  [ТС]
Компас 14. Сборка. Вращение. Перемещение.
На примере шагающего робота.

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

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

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


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

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

Затем можно нажать отмена и продолжать работу, но машина все равно тормозит и нужно снимать Компас Диспетчером.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.04.2015, 01:16
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru