Программно выбирать код и наименования документа

Автор Alex152, 29.01.18, 21:00:52

« предыдущая - следующая »

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

Alex152

29.01.18, 21:00:52 Последнее редактирование: 31.01.18, 07:46:29 от Starik
Все здравствуйте!

В компасе есть такая полезная функция (см. картинку) как  выбор кода и наименования документа! где он автоматически в штампе прописывает код (это СБ, ГЧ и т.д) и наименование документа (Сборочный чертеж, Габаритный чертеж)

Руками могу все это прописать через IStamp stamp; stamp.Text["Код ячейки"l].Str = .....

А как сделать это программно используя функцию "Коды и наименования"? без выбора диалога!!
Прошу дать подсказку куда копать!!



Вират Лакх

30.01.18, 08:13:56 #1 Последнее редактирование: 31.01.18, 07:47:18 от Starik
Если бы это было в 3D, то вам надо было бы копать в сторону таких ключевых слов:
IEmbodimentsManager, SetEmbodimentMarking, ksVariantMarkingTypeEnum

Alex152

30.01.18, 12:11:09 #2 Последнее редактирование: 31.01.18, 07:47:36 от Starik
Цитата: Вират Лакх от 30.01.18, 08:13:56
Если бы это было в 3D, то вам надо было бы копать в сторону таких ключевых слов:
IEmbodimentsManager, SetEmbodimentMarking, ksVariantMarkingTypeEnum

Эти функции я уже смотрел, и как верно вы заметили они есть в 3D. А мне надо бы в 2D!

Slaviation

31.01.18, 07:30:45 #3 Последнее редактирование: 31.01.18, 07:48:34 от Starik
ЦитироватьА как сделать это программно используя функцию "Коды и наименования"? без выбора диалога!!

См. прилагаемый пример.

Вират Лакх

31.01.18, 11:04:56 #4 Последнее редактирование: 31.01.18, 12:54:50 от Вират Лакх
Traceback (most recent call last):
File "test.pyw", line 4, in <module>
from win32com.client import Dispatch, gencache, VARIANT
ImportError: cannot import name VARIANT

upd. Еще вопрос:
Зачем system_settings = kompas_api7_module.ISystemSettings(application.SystemSettings)
Разве system_settings = application.SystemSettings не одно и то же? Адресами или как их там отличаются.

Как разобраться VARIANT есть наброски.
А вот в источник записать такое обозначение не проканывает :(

system_settings.EnablesAddSystemDelimersInMarking = True
iSourcePart7Params.SourceMarking = oboznBase + "$|-$|" + oboznIsp + "$|$|$|$|"
system_settings.EnablesAddSystemDelimersInMarking = False

Мне надо локальные детали добить, чтобы исполнения в правильное место вписывать.
При считывании добавляет, но при записи просто всё в базовое обозначение толкает.

Slaviation

Добрый день.
ЦитироватьЗачем system_settings = kompas_api7_module.ISystemSettings(application.SystemSettings)

Согласен.

ЦитироватьА вот в источник записать такое обозначение не проканывает

Может
property_keeper = kompas_api7_module.IPropertyKeeper(local_part)
и далее как в примере с чертежом.

Вират Лакх

01.02.18, 02:31:12 #6 Последнее редактирование: 01.02.18, 05:34:55 от Вират Лакх
Вот так раскладывает куда надо, но это свойства компонента, а не источника. Снимает галку Источник.
Без этого "system_settings.EnablesAddSystemDelimersInMarking = True" работают разделители.
property_keeper = kompas_api7_module.IPropertyKeeper(iPart7)
property_mng = kompas_api7_module.IPropertyMng(application)
iProperty = property_mng.GetProperty(iDocument, 4.0)
property_keeper.SetPropertyValue(iProperty, oboznBase + "$|-$|" + oboznIsp, True)
Для локальной детали не напишешь её iDocument, приходится писать сборку.
iPart7 может как-то хитро задать через редактирование на месте... Но сколько пробовал - не получается.

upd. Внесение текста с разделителями работает без EnablesAddSystemDelimersInMarking и в объектах спецификации:
Objects.Item(i).Columns.Column(4, 1, 0).Text.Str = Str2+"$|$|$|$|$| $|"+sb
iSpc.ksSetSpcObjectColumnText(4, 1, 0, Str2+"$|$|$|$|$| $|"+sb)
По ходу эта настройка только для считывания информации нужна для дальнейшей обработки в программе.