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

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

22.03.2015, 11:16. Показов 9438. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru