На форуме обязательно:
  1. Заполнить свой профиль НА РУССКОМ ЯЗЫКЕ КИРИЛИЦЕЙ. См. Правила, п.2.d.
  2. Не писать свой вопрос в первую попавшуюся тему, а вместо этого создать свою. См. Правила, п.3.a.

Рекламу мы не размещаем ни на каких условиях.

API. Как добраться до свойств отображения свойств символов

Сценарии / Модули API

Модератор: специалисты по Eplan

Закрыто

Автор темы
limbir
здесь недавно
здесь недавно
Сообщения: 36
Зарегистрирован: 12 фев 2014, 07:13
Имя: Сергей
Благодарил (а): 1 раз

API. Как добраться до свойств отображения свойств символов

Сообщение limbir » 23 апр 2014, 11:50

Здравствуйте!
Подскажите, пожалуйста, как можно добраться до свойств отображения свойств символов или других элементов? Например, как программно изменить цвет ОУ?
Я так понимаю копаться надо в свойствах функций.

Аватара пользователя

Madwolf
знаток Eplan
знаток Eplan
Сообщения: 1131
Зарегистрирован: 17 окт 2012, 10:24
Имя: Виталий
Благодарил (а): 31 раз
Поблагодарили: 95 раз

Re: Скрипты и API

Сообщение Madwolf » 23 апр 2014, 13:46

Нужно использовать класс PropertyPlacement, каждое отображаемое свойство функции будет представлено записью с соотв. индексом, например PropertyPlacement[0]. Также перед внесением изменений нужно вызвать метод SwitchLocalPropertyPlacements(true).


Автор темы
limbir
здесь недавно
здесь недавно
Сообщения: 36
Зарегистрирован: 12 фев 2014, 07:13
Имя: Сергей
Благодарил (а): 1 раз

Re: Скрипты и API

Сообщение limbir » 23 апр 2014, 14:02

спасибо, получилось! я квадратные скобки не доглядел в описании


Автор темы
limbir
здесь недавно
здесь недавно
Сообщения: 36
Зарегистрирован: 12 фев 2014, 07:13
Имя: Сергей
Благодарил (а): 1 раз

Re: Скрипты и API

Сообщение limbir » 22 май 2014, 06:28

Всем привет!
Новая проблемка возникла.
Требуется изменить свойство отображения символа, например, цвет текста гравировки. Делаю таким образом:

Код: Выделить всё

oFunc.PropertyPlacements[0].TextColorId = 5;
Но работает это только если до этого вручную изменить какое-нибудь свойство (тот же цвет). А если я только вставил символ из базы, и программно меняю цвет текста гравировки, то Eplan выдаёт такое сообщение:
Объект не был заблокирован перед обращением для записи.
Стоит что-то изменить в свойствах текста гравировки, так всё работает как надо.
Как бы мне программно разблокировать свойства отображения этого символа?


Автор темы
limbir
здесь недавно
здесь недавно
Сообщения: 36
Зарегистрирован: 12 фев 2014, 07:13
Имя: Сергей
Благодарил (а): 1 раз

Re: Скрипты и API

Сообщение limbir » 22 май 2014, 07:04

Понял, что работает, когда порядок свойств "Определ. пользователем". Теперь надо понять как его таковым сделать.

Аватара пользователя

Madwolf
знаток Eplan
знаток Eplan
Сообщения: 1131
Зарегистрирован: 17 окт 2012, 10:24
Имя: Виталий
Благодарил (а): 31 раз
Поблагодарили: 95 раз

Re: Скрипты и API

Сообщение Madwolf » 22 май 2014, 09:01

Посмотрите внимательно мой пост за 23 апреля.


Автор темы
limbir
здесь недавно
здесь недавно
Сообщения: 36
Зарегистрирован: 12 фев 2014, 07:13
Имя: Сергей
Благодарил (а): 1 раз

Re: Скрипты и API

Сообщение limbir » 22 май 2014, 09:08

madwolf_by, в очередной раз благодарю! Не послушал я тогда умного совета)

Аватара пользователя

Madwolf
знаток Eplan
знаток Eplan
Сообщения: 1131
Зарегистрирован: 17 окт 2012, 10:24
Имя: Виталий
Благодарил (а): 31 раз
Поблагодарили: 95 раз

Re: Скрипты и API

Сообщение Madwolf » 22 май 2014, 19:36

Правда в случае с обзором модели такая функция не работала, но и не ругалась. Также столкнулся с особенностью, что иногда чтобы передвинуть графику нужно заблокировать объект с помощью метода LockObject().


Автор темы
limbir
здесь недавно
здесь недавно
Сообщения: 36
Зарегистрирован: 12 фев 2014, 07:13
Имя: Сергей
Благодарил (а): 1 раз

Re: Скрипты и API

Сообщение limbir » 28 май 2014, 15:17

Хочу изменить отображение определённого свойства (например текст гравировки). Все свойства отсоединены друг от друга, в списке расставлены в определённом порядке, чтобы можно было обратиться к конкретному свойству через PropertyPlacement[], но при запуске кода свойства сортируются по порядку номера свойства (тот номер что пишется в <...> после наименования свойства), и изменяется не то свойство, что хотелось бы.
Можно, конечно, расставить свойства в этом порядке и заранее, но вот если надо обработать разные символы с разным набором и количеством свойств, то нужного результата не получить.
Можно ли как-нибудь отменить эту сортировку или обращаться к свойству через какое-то условие, например, если имя свойства "текст гравировки", то его цвет красный? Не получается только определить имя свойства из списка PropertyPlacement.

Аватара пользователя

Madwolf
знаток Eplan
знаток Eplan
Сообщения: 1131
Зарегистрирован: 17 окт 2012, 10:24
Имя: Виталий
Благодарил (а): 31 раз
Поблагодарили: 95 раз

Re: Скрипты и API

Сообщение Madwolf » 28 май 2014, 18:01

Не знаю почему у Вас они путаются, у меня они в том порядке как нужно. Если нужно, то имя свойства можно узнать из
...PropertyPlacements[ ].DisplayedProperty.Definition.Name - тип string.
Можно узнать ID свойства через ...PropertyPlacements[ ].DisplayedProperty.AsInt, а индекс ...PropertyPlacements[ ].DisplayedProperty.Index


Автор темы
limbir
здесь недавно
здесь недавно
Сообщения: 36
Зарегистрирован: 12 фев 2014, 07:13
Имя: Сергей
Благодарил (а): 1 раз

Re: Скрипты и API

Сообщение limbir » 29 май 2014, 04:36

madwolf_by, помогли, спасибо!

Закрыто

Вернуться в «Eplan API»