Сообщество программистов Autodesk в СНГ

ADN Club => Revit API => Тема начата: Legantmar от 15-05-2017, 10:28:01

Название: Как создать новый Graphics Style ?
Отправлено: Legantmar от 15-05-2017, 10:28:01
Виктор!
2 вопроса:
1) можно ли переименовать сущ. пользовательский стиль линии ? (например, название стиля линии с Red на Green, не нашел ничего похожего в Revit API)
2) можно ли создать пользовательский стиль линии ? (имя, цвет, вес, паттерн) (про цвет, вес и немного про паттерн есть информация в Revit API)
Название: Re: Как создать новый Graphics Style ?
Отправлено: shss от 15-05-2017, 14:04:07
Я, конечно, не Виктор, но может мой ответ и подойдет.
1. Я бы просто клонировал нужный мне стиль линии и задал бы новое имя.
2. http://thebuildingcoder.typepad.com/blog/2016/10/how-to-create-a-new-line-style.html
Название: Re: Как создать новый Graphics Style ?
Отправлено: Legantmar от 15-05-2017, 16:33:08
shss, спасибо.
хорошие советы.
но как я понял прямого переименования через API нет!?
Название: Re: Как создать новый Graphics Style ?
Отправлено: Виктор Чекалин от 15-05-2017, 17:51:09
но как я понял прямого переименования через API нет!?
Класс GraphicStyle наследуется от класса Element, у которого есть свойство Name. Вот его то нужно и попробовать изменить
Название: Re: Как создать новый Graphics Style ?
Отправлено: DenisR от 16-05-2017, 08:25:21
но как я понял прямого переименования через API нет!?
Класс GraphicStyle наследуется от класса Element, у которого есть свойство Name. Вот его то нужно и попробовать изменить
Добрый День Виктор,
Спасибо вам за совет! Вкратце о конечно цели - http://dynamobim.ru/wp-content/uploads/bpfed/1-5.png (http://dynamobim.ru/wp-content/uploads/bpfed/1-5.png). У нас есть object style, который содержит различные подкатегории линий. Если линии системные, то в Revit нельзя произвести с ними операции (переименовать, удалить). Но если они созданные пользователем, как на примере выше, то мы можем произвести с ними данные операции.
Я воспользовался вашим советом и попробовал изменить имя через наследование от класса Element. У класса GraphicStyle я нашел два типа, какой из них мне нужен я не знаю, поэтому решил попробовать произвести замену имени для всех типов внутри GraphicStyle. На что он мне выдал ошибку, что я не могу изменить ему имя.
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fs010.radikal.ru%2Fi313%2F1705%2F90%2Fd8b9eb90b575t.jpg&hash=ca5e2a767efa83baa43c300cbcebf989)
Я решил, что возможно дело в том, что у нас есть системные элементы, и когда он натыкается на них, то не может произвести операцию и "падает". Тогда я задал цикл try, как итог он у меня не изменил не одного имени.
Ниже прилагаю скрипт:
https://www.dropbox.com/s/1pxbeagkcrzvszg/Change_SubCategories_import_to_Revit.v1.0.dyn?dl=0 (https://www.dropbox.com/s/1pxbeagkcrzvszg/Change_SubCategories_import_to_Revit.v1.0.dyn?dl=0)
Буду благодарен, если сможете помочь делом или советом!



Название: Re: Как создать новый Graphics Style ?
Отправлено: DenisR от 16-05-2017, 08:27:27
Я, конечно, не Виктор, но может мой ответ и подойдет.
1. Я бы просто клонировал нужный мне стиль линии и задал бы новое имя.
2. http://thebuildingcoder.typepad.com/blog/2016/10/how-to-create-a-new-line-style.html
Спасибо вам за совет, но у меня сразу возникает вопрос - если мы копируем линии со всеми свойствами, а потом удалим замененные линии, не возникнит ли конфликта внутри revit для старых элементов, которые уже содержали эти линии. Или они просто заменяться?
Название: Re: Как создать новый Graphics Style ?
Отправлено: shss от 16-05-2017, 10:56:26
если мы копируем линии со всеми свойствами, а потом удалим замененные линии, не возникнит ли конфликта внутри revit для старых элементов, которые уже содержали эти линии. Или они просто заменяться?
Они точно не заменятся. Но, что мешает перебрать все объеты, с используемым стилем и заменить его на созданный?
Название: Re: Как создать новый Graphics Style ?
Отправлено: DenisR от 16-05-2017, 12:52:04
если мы копируем линии со всеми свойствами, а потом удалим замененные линии, не возникнит ли конфликта внутри revit для старых элементов, которые уже содержали эти линии. Или они просто заменяться?
Они точно не заменятся. Но, что мешает перебрать все объеты, с используемым стилем и заменить его на созданный?
Суть данной задачи состоит в том, что мы имеем множество элементов с большим количеством различных стилей, т.е. нужно много времени для решения данной задачи. Поэтому требуется автоматизация данного процесса.
Плюс к данной ситуации заключается в том, что все, что нашел до этого в ру сегменте интернета и зарубежных форумах - это максимум вытаскивают оболочку из категорий - т.е. стринги, такие как Name. А все операции проводятся только с элементами.
Виктор выше предложил решение данной проблемы, в теории все должно было получится, но на практике не получилось - поэтому прошу помочь в этом вопросе, у кого есть идеи или мысли, как заменить параметры существующих линий. Или возможно найдете неточночти в коде, вообщем буду рад любой помощи.