Форум пользователей ПО АСКОН

Профессиональные вопросы => Программирование приложений => Python и КОМПАС-Макро => Тема начата: rain от 14.11.23, 21:55:34

Название: Создание исполнений сборки
Отправлено: rain от 14.11.23, 21:55:34
Здравствуйте!
может быть у кого-то завалялся макрос, который мог бы создать мне определенное количество исполнений 3D-сборки и присвоил соответствующие наименования?
конкретная задача: есть сборка с обозначением АБВГ.555555.111 и наименованием Прибор. При запуске макроса должно создаваться определенное количество исполнений с присваиванием к обозначению -01, -02 и т.д., а к наименованию в соответствии с номером исполнения прилеплять -24В, -12В, 120DC и т.д.

ищу что-то похожее, или может пнете в нужном направлении
Название: Re: Создание исполнений сборки
Отправлено: Nipal от 15.11.23, 03:59:46
Ищите IEmbodimentsManager - интерфейс менеджера исполнений, примеры на форуме есть.
Название: Re: Создание исполнений сборки
Отправлено: Валерий Изранов от 15.11.23, 06:35:01
У Прибора разных исполнений должны быть разные электрические схемы и конструкции.
Это может сделать только человек а не макрос.
По ГОСТ у всех зависимых исполнений должно быть одно и то же Наименование.
И прилеплять к Наименованию ничего нельзя.
Название: Re: Создание исполнений сборки
Отправлено: Nipal от 15.11.23, 06:41:08
Цитата: Валерий Изранов от 15.11.23, 06:35:01У Прибора разных исполнений должны быть разные электрические схемы и конструкции.
Это может сделать только человек а не макрос.
По ГОСТ у всех зависимых исполнений должно быть одно и то же Наименование.
И прилеплять к Наименованию ничего нельзя.
Уважаемый, тут про программирование (https://forum.ascon.ru/index.php?board=4.0), а не о том, что можно или нельзя.
Название: Re: Создание исполнений сборки
Отправлено: Warlock-72 от 15.11.23, 08:08:08
Цитата: Валерий Изранов от 15.11.23, 06:35:01У Прибора разных исполнений должны быть разные электрические схемы и конструкции...
Ложное высказывание - см. ГОСТ 2.113, п. 4.1.16:
"4.1.16. На чертеже таблицу исполнений не помещают, если между исполнениями имеются только
такие различия, которые подлежат указанию в других документах.
Если графическое изображение схемы для нескольких исполнений одинаково, то различия ис­
полнениями могут быть отражены в самостоятельных документах другого вида (например, в перечнях
элементов к принципиальной схеме)."

Цитата: Валерий Изранов от 15.11.23, 06:35:01... По ГОСТ у всех зависимых исполнений должно быть одно и то же Наименование.
И прилеплять к Наименованию ничего нельзя.
Ложное высказывание - см. ГОСТ 2.113, п. 3.2:
"3.2. Если разным исполнениям присвоены разные условные наименования (коды, типы, услов­
ные обозначения, например,  ПК-1Н, ПК-IT,  ПК-2Н и др.), то:
в основной надписи и на титульном листе групповых и базовых документов наименования изде­
лий, как правило, дополняют общей частью условных наименований исполнений, например: Пуска­
тель ПК (приложение 8);
в основной надписи и на титульном листе документов исполнения следует записывать наимено­
вание изделия и полное условное наименование исполнения (например: Пускатель ПК-1Н);
на поле или в тексте групповых документов в числе переменных данных при необходимости в
графе «Код» указывают полные условные наименования исполнений (приложения 8 и 9)."
Название: Re: Создание исполнений сборки
Отправлено: Валерий Изранов от 15.11.23, 08:18:59
В очередной раз похвалю Warlock-72 как лучшего на Форуме знатока ГОСТ.
Вот только автор темы мечтает все это сделать с помощью макроса.
А я думаю, что у него не получится.
Название: Re: Создание исполнений сборки
Отправлено: Nipal от 15.11.23, 08:19:41
Цитата: Nipal от 15.11.23, 06:41:08Уважаемый, тут про программирование (https://forum.ascon.ru/index.php?board=4.0), а не о том, что можно или нельзя.
На первый второй, рассчитайтесь и создайте себе отдельную тему.
Название: Re: Создание исполнений сборки
Отправлено: rain от 15.11.23, 08:50:18
Цитата: Валерий Изранов от 15.11.23, 08:18:59В очередной раз похвалю Warlock-72 как лучшего на Форуме знатока ГОСТ.
Вот только автор темы мечтает все это сделать с помощью макроса.
А я думаю, что у него не получится.

почему? такая сложная задача - в сборке с единственным вариантом исполнений создать еще несколько зависимых - c измененными наименованиями?
что помешает мне это сделать?
Название: Re: Создание исполнений сборки
Отправлено: Михаил88 от 15.11.23, 09:46:09
Получится, Валерий наверное шутит.
Название: Re: Создание исполнений сборки
Отправлено: rain от 15.11.23, 11:11:03
покопался на форуме, нашел похожую задачу, обсасываемую не раз.
повторил у себя, вроде что-то шевелится, для исполнений можно задать номера.
далее нашел метод AddEmbodiment, но не разобрался с синтаксисом, в результате никакого нового исполнения пока не создается и питон пишет мне что-то такое (см. скрин 02)

и остался-таки еще вопрос, каким методом можно присвоить Наименование для исполнения
Название: Re: Создание исполнений сборки
Отправлено: Михаил88 от 15.11.23, 11:15:30
iEmbodimentsManager.AddEmbodiment(0, True, 'АБВГ.555555.111', str('01'), '')

AddEmbodiment это метод и туда нужно передать аргументы
Название: Re: Создание исполнений сборки
Отправлено: rain от 15.11.23, 11:19:19
Цитата: Михаил88 от 15.11.23, 11:15:30iEmbodimentsManager.AddEmbodiment(0, True, 'АБВГ.555555.111', str('01'), '')

Вот спасибо!!! сам бы я наверно еще долго пытался добиться результата)
а насчет наименований исполнений не знаете какого-либо метода?
Название: Re: Создание исполнений сборки
Отправлено: dimak222 от 15.11.23, 11:20:21
Цитата: rain от 14.11.23, 21:55:34может быть у кого-то завалялся макрос, который мог бы создать мне определенное количество исполнений 3D-сборки и присвоил соответствующие наименования?
Есть макрос KCreateEmbodiment.7z, создаёт зависимые и независимые исп., но наименование берёт с нулевого исп.

Есть вариант создания исп. средствами КОМПАСа:
1. Для наглядности создаём несколько исп. и сохраняем табл. исп. СБ/дет. в формате xls (Рис. 1);
2. Редактируем xls, меняя исп. и наименование (Рис. 2);
3. Загружаем табл. исп., предварительно удалив все предыдущие исп. (Рис. 3).
Название: Re: Создание исполнений сборки
Отправлено: Михаил88 от 15.11.23, 11:23:09
для примера

part7 = kompas_document_3d.TopPart
# получить наименование
name = part7.Name
# установить наименование
part7.Name = 'Прибор-12В'
Название: Re: Создание исполнений сборки
Отправлено: Михаил88 от 15.11.23, 11:30:26
Вы можете создать словарь
dict_name = {'01': '-24В', '02': '-12В', '03': '120DC'}
Потом его дополнить, как вам нужно

далее циклом for пройтись по словарю

создать исполнение и подставлять данные из словаря в метод AddEmbodiment

только нужно будет получить part7 от текущего исполнения
присвоить новое наименование исполнению через part7.Name
и вызвать метод part7.Update()


dict_name = {'01': '-24В', '02': '-12В', '03': '120DC'}

part7 = kompas_document_3d.TopPart
marking = part7.Marking
name = part7.Name

for item in dict_name.items():
    embodiments_manager.AddEmbodiment(0, True, marking, str(item[0]), '')
    part7 = kompas_document_3d.TopPart
    part7.Name = str(name) + str(item[1])
    part7.Update()

IEmbodimentsManager.gif
Название: Re: Создание исполнений сборки
Отправлено: rain от 15.11.23, 11:41:46
ругается на name = IPart7.Name
простите, если я очень туплю, просто к программированию имею самое малое отношение (пока что)

насчет словаря спасибо! обязательно разберусь с этим и буду использовать
Название: Re: Создание исполнений сборки
Отправлено: Михаил88 от 15.11.23, 11:43:21
name = part7.Name

пересмотрите 14 сообщение там все написано
Название: Re: Создание исполнений сборки
Отправлено: rain от 15.11.23, 11:53:06
Цитата: Михаил88 от 15.11.23, 11:43:21name = part7.Name

пересмотрите 14 сообщение там все написано

прошу прощения, Ipart - это уже я так, менял, чтобы посмотреть, что изменится. с part7 такое же сообщение вылазит
сейчас вот ругается на marking = part7.Marking
Название: Re: Создание исполнений сборки
Отправлено: Михаил88 от 15.11.23, 11:55:54
просто у меня свои имена переменных а у вас свои

так поменяйте
part7 = iKompasDocument3D.TopPart

где имена ваших переменных не сходятся с моими там просто переименуйте и все будет работать
Название: Re: Создание исполнений сборки
Отправлено: Nipal от 15.11.23, 12:20:54
Цитата: rain от 15.11.23, 11:53:06прошу прощения, Ipart - это уже я так, менял, чтобы посмотреть, что изменится. с part7 такое же сообщение вылазит
сейчас вот ругается на marking = part7.Marking
Выучите язык - основы и всё у Вас наладится.
Название: Re: Создание исполнений сборки
Отправлено: Михаил88 от 15.11.23, 12:26:36
Цитата: Nipal от 15.11.23, 12:20:54Выучите язык - основы и всё у Вас наладится.

поддерживаю
Название: Re: Создание исполнений сборки
Отправлено: rain от 15.11.23, 13:16:19
Цитата: Михаил88 от 15.11.23, 11:55:54просто у меня свои имена переменных а у вас свои

так поменяйте
part7 = iKompasDocument3D.TopPart

где имена ваших переменных не сходятся с моими там просто переименуйте и все будет работать

Михаил, огромное вам спасибо! все получилось и работает))
конечно буду теперь что-то менять, чтобы скрипт обрастал своими тонкостями, но самая основа получена и вроде даже как-то все понятно.

еще хотел уточнить, данный код создает в обозначении разделители "$", как можно сделать так, чтобы они не создавались?
Название: Re: Создание исполнений сборки
Отправлено: Михаил88 от 15.11.23, 13:32:53
скиньте сюда ваш макрос я посмотрю
Название: Re: Создание исполнений сборки
Отправлено: rain от 15.11.23, 13:35:57
прикрепил

и он еще как-то странно сортирует исполнения, сначала, например, создает исп. -203, затем -202, потом 205, после него -204.
это такая логика цикла for?
Название: Re: Создание исполнений сборки
Отправлено: Михаил88 от 15.11.23, 13:41:33
у меня отрабатывает нормально, скиньте еще вашу сборку
Название: Re: Создание исполнений сборки
Отправлено: Михаил88 от 15.11.23, 13:43:49
так вы эти знаки удалите у базового исполнения (исходной сборки)

Screenshot_1.bmp

P.S.
чтобы словарь не был длинной строкой его можно переносить
Screenshot_2.bmp
Название: Re: Создание исполнений сборки
Отправлено: rain от 15.11.23, 13:46:54
Цитата: Михаил88 от 15.11.23, 13:43:49так вы эти знаки удалите у базового исполнения (исходной сборки)

Screenshot_1.bmp

изначально их нет у базового исполнения, получается, что в момент срабатывания скрипта, сначала эти символы добавляются к базовому исполнению, а потом уже и во все исполнения наследуются
Название: Re: Создание исполнений сборки
Отправлено: Михаил88 от 15.11.23, 13:48:54
Screenshot_3.bmp

отрабатывает нормально, попробуйте еще раз на той сборке, которую вы мне скинули
Название: Re: Создание исполнений сборки
Отправлено: rain от 15.11.23, 13:51:23
Цитата: Михаил88 от 15.11.23, 13:48:54Screenshot_3.bmp

прикольно)) у вас и символов нет, и сортирует все по порядку)
видимо что-то не так у меня, потому что все как-то криво)
Название: Re: Создание исполнений сборки
Отправлено: rain от 15.11.23, 13:56:30
я перезапустил компас и символы перестали добавляться! зря я вас напрягаю получается))
только сортировка так и осталась -203; -202; -205; -204
Название: Re: Создание исполнений сборки
Отправлено: Михаил88 от 15.11.23, 14:08:18
попробуйте добавить в словарь 201 исполнение
Название: Re: Создание исполнений сборки
Отправлено: Михаил88 от 15.11.23, 14:13:19
У вас какой питон стоит 3.2.5, который шел вместе с компасом?
Название: Re: Создание исполнений сборки
Отправлено: rain от 15.11.23, 14:16:25
Цитата: Михаил88 от 15.11.23, 14:08:18попробуйте добавить в словарь 201 исполнение
думал об этом, но в таком случае у меня базовым исполнением будет 001-75, а дальше создаются 001-75.201, .202 и т.д.
а по идее 001-75.201 уже должно быть базовым. т.е. в момент присваивания обозначений новым исполнениям нужно как бы отрезать от базового ".201" и дальше уже лепить .202, .203 и т.д.

питон да, шел с компасом, 3.2.5
Название: Re: Создание исполнений сборки
Отправлено: Михаил88 от 15.11.23, 14:17:41
Цитата: rain от 15.11.23, 14:16:25питон да, шел с компасом, 3.2.5

тогда причина понятна, я сейчас немного переделаю код
Название: Re: Создание исполнений сборки
Отправлено: Михаил88 от 15.11.23, 14:25:08
Так попробуйте

до python 3.6 словари рандомизированные структуры. Поэтому и порядок исполнений у вас получался такой.


В Python 3.6 и более поздних версиях словари являются упорядоченными структурами данных, что означает, что они хранят свои элементы в том же порядке, в котором они были созданы.

Сейчас переписал на итерацию по кортежу.
Название: Re: Создание исполнений сборки
Отправлено: rain от 15.11.23, 14:37:17
ура! все работает, огромнейшее спасибо!
т.е. вся разница в синтаксисе создания словаря, правильно понимаю?
Название: Re: Создание исполнений сборки
Отправлено: Михаил88 от 15.11.23, 14:43:08
Это не словарь, а уже кортеж.

Если установите python 3.6 то и словарем будет отрабатывать нормально
Название: Re: Создание исполнений сборки
Отправлено: rain от 15.11.23, 14:46:07
спасибо, буду знать)
вы просто нереально помогли, теперь на основе этого кода хотя бы начал понимать, о чем пишут в SDK))
Название: Re: Создание исполнений сборки
Отправлено: Михаил88 от 15.11.23, 15:05:22
Цитата: Nipal от 15.11.23, 12:20:54Выучите язык - основы и всё у Вас наладится.

Вот здесь вам Nipal дал очень правильный совет.
Название: Re: Создание исполнений сборки
Отправлено: rain от 15.11.23, 15:11:58
согласен, есть куда расти
Название: Re: Создание исполнений сборки
Отправлено: Валерий Изранов от 16.11.23, 06:24:49
Warlock-72, у вас не работает почтовый ящик для личных сообщений?
Название: Re: Создание исполнений сборки
Отправлено: Slaviation от 16.11.23, 09:26:16
Добрый день.

ЦитироватьПри запуске макроса должно создаваться определенное количество исполнений с присваиванием к обозначению -01, -02 и т.д., а к наименованию в соответствии с номером исполнения прилеплять -24В, -12В, 120DC и т. д.

В архиве пример макроса и сборка в формате КОМПАС-3D v20.
Макрос можно запускать на активной сборке из PyKompasMacro (https://slaviationsoft.blogspot.com)