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

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

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

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

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

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

Прочитать наименование колонок спецификации

Автор /|exa_in_da_house, 16.02.22, 08:41:22

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

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

/|exa_in_da_house

Снова здравствуйте! Пытаюсь написать универсальный код (для разных стилей спецификации), чтобы получить список наименований колонок спецификации. В SDK прочитал, что можно получить интерфейс колонок через SpecificationStyle.Columns
app = api.Application
doc = app.ActiveDocument
spcDescriptions = doc.SpecificationDescriptions
spcDescription = spcDescriptions.Active
spcStyle = spcDescription.SpecificationStyle
columns = spcStyle.Columns
Но мне всегда возвращает None. Также в примерах SDK интерфейс колонок всегда получают от iObject. Неужели действительно колонки можно получить только от объекта? А что если спецификация пока пуста?

Slaviation

Добрый день.
Допишите в конце

print(columns, columns.Count)
for column in columns:
    print(column)

У меня
None 7
<win32com.gen_py.69AC2981-37C0-4379-84FD-5DD2F3C0A520x0x1x0.ISpecificationColumnStyle instance at 0x3017540546864>
<win32com.gen_py.69AC2981-37C0-4379-84FD-5DD2F3C0A520x0x1x0.ISpecificationColumnStyle instance at 0x3017540546960>
<win32com.gen_py.69AC2981-37C0-4379-84FD-5DD2F3C0A520x0x1x0.ISpecificationColumnStyle instance at 0x3017540546864>
<win32com.gen_py.69AC2981-37C0-4379-84FD-5DD2F3C0A520x0x1x0.ISpecificationColumnStyle instance at 0x3017540546960>
<win32com.gen_py.69AC2981-37C0-4379-84FD-5DD2F3C0A520x0x1x0.ISpecificationColumnStyle instance at 0x3017540546864>
<win32com.gen_py.69AC2981-37C0-4379-84FD-5DD2F3C0A520x0x1x0.ISpecificationColumnStyle instance at 0x3017540546960>
<win32com.gen_py.69AC2981-37C0-4379-84FD-5DD2F3C0A520x0x1x0.ISpecificationColumnStyle instance at 0x3017540546864>
+ Благодарностей: 1

Вират Лакх

#2
Цитата: /|exa_in_da_house от 16.02.22, 08:41:22Но мне всегда возвращает None.
Питон не отображает интерфейс коллекции. По крайней мере через print.
Предлагаю использовать во всяких сомнительных случаях получения интерфейса вот такую функцию перебора и отображения всех свойств:
def printprop(i):
for prop in sorted(i._prop_map_get_):
print(prop, getattr(i, prop))
Тогда можно написать printprop(columns) и увидеть тот самый Count 7 и Type 10062 (Коллекция стилей колонок спецификации).

upd.
Цитата: /|exa_in_da_house от 16.02.22, 08:41:22Также в примерах SDK интерфейс колонок всегда получают от iObject. Неужели действительно колонки можно получить только от объекта? А что если спецификация пока пуста?
iObject - это универсальная запись в SDK, а не какой-то конкретный IObject. В компасе всё является объектом и сам компас является объектом или экземпляром класса. Пустая спецификация - это тоже объект.
То есть речь не про объект спецификации, а про саму спецификацию.
+ Благодарностей: 1

/|exa_in_da_house

Спасибо большое, работает отлично, теперь застрял дальше: пытаюсь получить наименование колонки через columns.Item(0).Name. Других методов в SDK как добраться до наименования не вижу. В ответ получаю
ISpecificationColumnStyle instance at 0x1895027329400>' object has no attribute 'Item'

/|exa_in_da_house

А нет, всё, вопрос снимается, вся вина в моей невнимательности. Большое спасибо Slaviation и Вират Лакх