• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Регистрация будет доступна с 8:00 (мск) 12 января.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

API PYTHON Как Детали и подсборки «Взять в документ» (сделать локальными)

Автор beergamot, 05.02.26, 08:04:25

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Вират Лакх

Вот так я создавал локальные с нуля:
iParts7Sb = iTopSb.Parts
iPart7Loc = iParts7Sb.CreateDocument(4, True, False) # DocumentTypeEnum, Local, Redraw
iPart7Loc.Marking = markloc
iPart7Loc.Name = nameloc
iPart7Loc.Update()
У CreateSubAssembly нет на входе локальности. Поэтому придётся временный создавать, например, в папке темп:
from os import path, remove
FilePartTemp = path.expandvars('$temp\\') + 'бла-бла.a3d'
iPart7 = iParts7Sb.CreateSubAssembly(myParts, FilePartTemp) # Так вроде
if (KompasVersion == 16 and SP >= 1) or KompasVersion > 16:
    iPart7.IsLocal = True # Локальная деталь. Нужен iPart7.Update() или нет?
else:
    SelectionManager.Select(iPart7)
    KompasObject.ksExecuteKompasCommand(40860, True) # Взять в документ
remove(FilePartTemp)
+ Благодарностей: 2

dimak222

Два года назад задался таким же вопросом и ради эксперимента сделал себе такую программу "KLocal".

Сейчас проверил - работает. Если вдруг и правда пригодится, в свободное время могу доработать её, сейчас уже научился делать нормальный интерфейс и наверняка там будут какие-то ошибки.

P.S. Как помню, тестировал сохранение больших сборок, открытие сборки с локальными элементами занимало больше времени чем обычной.

СВ

 Дмитрий, как вы думаете, а если в эту программу добавить схожую (в чём-то*) функцию Взять в документ (и чтобы она могла брать всё одним кликом, разве что отделяла Стандартные в свою группу), будет лучше?
- - -
* - схожую в том, что Сборка станет проектом с одним файлом, что есть удобство в некоторых случаях. Особенно в случаях, когда нужно переслать на форум.

dimak222

Так и сейчас можно, если включить в настройках (txt файл) "include_det = True" и "include_SB = True" и запустить программу, она сохранит все дет. и подсборки в одну главную сборку (та что была открыта в окне КОМПАСа). Дальше не меняя настроек можно повторять с другими открытыми сборками.
Если конечно я правильно понял что это хотели.

СВ

 Ну да, что те, что эти - они берутся в Сборку и получается один файл. Просто свойства у локальных и у "взятых" немного разные.
(Если конечно я правильно понял ваше пояснение.)

dimak222

Ааааа, понял. Я под "локальными" и подразумеваю функцию "Взять в документ", т.к. иконка одинаковая и сама операция в API так называется "iPart7.IsLocal = True # сделать дет./СБ локальной".
А какие св-ва отличаются? И какие ещё варианты "локальных" дет. есть?

СВ

Да не проблема почитать в Справке - локальная деталь, там много всего.
(Например: Преобразование объектов в деталь или локальную деталь нельзя отменить. Также после преобразования становится невозможной отмена операций, выполненных в модели до преобразования.)
Локальную для получения чертежа нужно преобразовывать в Деталь - лишняя работа. (Вроде бы так; не великий специалист в этом деле, могу и заблуждаться.).
А ежели это не локальная деталь, то и волноваться нечего.
Также нечего волноваться, если "Взять в документ" как раз и создаёт локальную деталь.
-  -  -  -
Ну вот я и договорился: нашёл доказательства
"Компонент исходного исполнения модели может быть преобразован в локальную модель с помощью команды Управление — Взять в документ."
Дмитрий, приношу извинения!

dimak222

Цитата: СВ от 10.02.26, 10:49:53(Например: Преобразование объектов в деталь или локальную деталь нельзя отменить. Также после преобразования становится невозможной отмена операций, выполненных в модели до преобразования.)
Ну в этом случае - да, отменить нельзя (CTRL+Z), но сохранив её как деталь - получаете тоже самое что и было.

Цитата: СВ от 10.02.26, 10:49:53Локальную для получения чертежа нужно преобразовывать в Деталь - лишняя работа.
Если выбрать локальную дет. и нажать правой кнопкой, в выпадающем списке есть кнопка "Создать чертеж" и в этом чертеже будет только эта дет. Другой вопрос при добавлении новых дет. в сборку, будут ли они появляться в чертеже детали...

Цитата: СВ от 10.02.26, 10:49:53Ну вот я и договорился: нашёл доказательства
"Компонент исходного исполнения модели может быть преобразован в локальную модель с помощью команды Управление — Взять в документ."
Дмитрий, приношу извинения!
Главное разобрались=)

beergamot

Цитата: Вират Лакх от 10.02.26, 04:47:18iPart7.IsLocal = True # Локальная деталь.
Отлично работает как надо спасибо!

Цитата: Вират Лакх от 10.02.26, 04:47:18KompasObject.ksExecuteKompasCommand(40860, True) # Взять в документ
А вот код 40860 в Компас API найти не получается.

Вират Лакх