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

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

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

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

Alex152

Все здравствуйте!

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

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

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



Вират Лакх

#1
Если бы это было в 3D, то вам надо было бы копать в сторону таких ключевых слов:
IEmbodimentsManager, SetEmbodimentMarking, ksVariantMarkingTypeEnum

Alex152

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

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

Slaviation

#3
ЦитироватьА как сделать это программно используя функцию "Коды и наименования"? без выбора диалога!!
См. прилагаемый пример.
+ Благодарностей: 2

Вират Лакх

#4
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)
и далее как в примере с чертежом.

Вират Лакх

#6
Вот так раскладывает куда надо, но это свойства компонента, а не источника. Снимает галку Источник.
Без этого "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)
По ходу эта настройка только для считывания информации нужна для дальнейшей обработки в программе.