1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

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

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

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

Закрыто

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

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

Сообщение limbir »

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

Madwolf
знаток Eplan
знаток Eplan
Сообщения: 1454
Зарегистрирован: 17 окт 2012, 11:24
Имя: Виталий
Страна: Беларусь
город/регион: Минск
Благодарил (а): 60 раз
Поблагодарили: 181 раз

Re: Скрипты и API

Сообщение Madwolf »

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

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

Re: Скрипты и API

Сообщение limbir »

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

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

Re: Скрипты и API

Сообщение limbir »

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

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

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

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

Re: Скрипты и API

Сообщение limbir »

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

Madwolf
знаток Eplan
знаток Eplan
Сообщения: 1454
Зарегистрирован: 17 окт 2012, 11:24
Имя: Виталий
Страна: Беларусь
город/регион: Минск
Благодарил (а): 60 раз
Поблагодарили: 181 раз

Re: Скрипты и API

Сообщение Madwolf »

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

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

Re: Скрипты и API

Сообщение limbir »

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

Madwolf
знаток Eplan
знаток Eplan
Сообщения: 1454
Зарегистрирован: 17 окт 2012, 11:24
Имя: Виталий
Страна: Беларусь
город/регион: Минск
Благодарил (а): 60 раз
Поблагодарили: 181 раз

Re: Скрипты и API

Сообщение Madwolf »

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

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

Re: Скрипты и API

Сообщение limbir »

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

Madwolf
знаток Eplan
знаток Eplan
Сообщения: 1454
Зарегистрирован: 17 окт 2012, 11:24
Имя: Виталий
Страна: Беларусь
город/регион: Минск
Благодарил (а): 60 раз
Поблагодарили: 181 раз

Re: Скрипты и API

Сообщение Madwolf »

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

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

Re: Скрипты и API

Сообщение limbir »

madwolf_by, помогли, спасибо!
Закрыто

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