Revit 2019.Создание логическая формулы с Параметром по "Типу" и тип данных "Текст"
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Прочее ПО от Autodesk > Revit > Revit 2019.Создание логическая формулы с Параметром по "Типу" и тип данных "Текст"

Revit 2019.Создание логическая формулы с Параметром по "Типу" и тип данных "Текст"

Ответ
Поиск в этой теме
Непрочитано 12.11.2024, 12:09 #1
Revit 2019.Создание логическая формулы с Параметром по "Типу" и тип данных "Текст"
Vintorez
 
Конструктор
 
Бельцы_Молдавия
Регистрация: 03.01.2011
Сообщений: 904

Добрый день. Работаю, в не очень гибкой организации, в которой Бимщики не хотят добавить Параметр (как пример) "Назначение элемента", что бы на сечении (на Стадии П ) на верт. элементах было "Стена" или "Пилон", говорят есть же Параметр "ДСК1_Марка конструкций", а в нём либо "Ст" или "П" (Скрин1). Приходится аннотацией вручную (до коле!!:/) писать Стена или Пилон, а можно и прошляпить (Скрин2). Хочу создать аннотационную марку "Нескольких категорий" так как участвуют категория стен и Несущие колоны. К сожалению Параметр "ДСК1_Марка конструкций" тип данных "Текст" (Скрин3). Можно ли создать такую марку с логической формулой, если в данном Параметре прописано "Ст" , а в марке будет Стена, если НЕТ, то Пилон ..по типу if (ДСК1_Марка Конструкций="Ст", "Стена", Пилон) (Скрин4). Возможно, ли такую марку соорудить?? Заранее , благодарю..

Миниатюры
Нажмите на изображение для увеличения
Название: Скрин1.jpg
Просмотров: 54
Размер:	418.8 Кб
ID:	265452  Нажмите на изображение для увеличения
Название: Скрин2.jpg
Просмотров: 51
Размер:	156.4 Кб
ID:	265453  Нажмите на изображение для увеличения
Название: Скрин3.jpg
Просмотров: 51
Размер:	147.3 Кб
ID:	265454  Нажмите на изображение для увеличения
Название: Скрин4.jpg
Просмотров: 45
Размер:	134.0 Кб
ID:	265455  

Просмотров: 1145
 
Непрочитано 13.11.2024, 11:31
| 1 #2
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


С текстовым параметром фокус с формулой не пройдет. А нельзя использовать существующие параметры? Например, "Комментарии к типоразмеру", забить "Стена"/"Пилон" для соответствующих типоразмеров. И в марке вывести его.
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 14.11.2024, 20:43
| 1 #3
extraneous

Не верблюд
 
Регистрация: 07.06.2010
Москва
Сообщений: 1,179


Vintorez, к сожалению, в формулах использовать в условии "Текст" нельзя.
Можете создать второй параметр и заполнять его автоматизированно.
Попробуйте этот макрос:
Код:
[Выделить все]
public void StartMarkText()
{
	//задайте имена параметров и префиксы
	//обрабатываются только текстовые параметры
	//будут обработаны все выделенные элементы,
	// например можно выделить через спецификацию
	string sourceParamName = "ДСК1_Марка конструкций";
	string targetParamName = "Назначение";
	Dictionary<string, string> dict = new Dictionary<string, string> {
		{"Ст", "Стена"},
		{"П", "Пилон"},
	};
	
	int counter = 0;
	int errorsCount = 0;
	HashSet<string> errors = new HashSet<string>();
	Document doc = this.ActiveUIDocument.Document;
	
	Selection sel = this.ActiveUIDocument.Selection;
	ICollection<ElementId> selIds = sel.GetElementIds();
	if(selIds.Count == 0)
	{
		TaskDialog.Show("Ошибка", "Выберите элементы для обработки");
		return;
	}
	
	using(Transaction t = new Transaction(doc))
	{
		t.Start("Marks and prefixes");
		foreach(ElementId selId in selIds)
		{
			Element e = doc.GetElement(selId);
			Parameter sourceParam = e.LookupParameter(sourceParamName);
			if(sourceParam == null || !sourceParam.HasValue)
			{
				errorsCount++;
				errors.Add("Не удалось найти параметр или не задано значение: " + sourceParamName);
				continue;
			}
			
			string prefix = sourceParam.AsString();
			
			if(!dict.ContainsKey(prefix))
			{
				errorsCount++;
				errors.Add("Префикс не найден в словаре: " + prefix);
				continue;
			}
			
			Parameter targetParam = e.LookupParameter(targetParamName);
			if(targetParam == null || targetParam.IsReadOnly)
			{
				errorsCount++;
				errors.Add("Не удалось записать параметр: " + targetParamName);
				continue;
			}
			
			string value = dict[prefix];
			
			targetParam.Set(value);
			counter++;
		}
		t.Commit();
	}

	
	string msg = "Успешно обработано: " + counter;
	if(errorsCount > 0)
	{
		msg += System.Environment.NewLine + "Ошибок: " + errorsCount;
		msg += System.Environment.NewLine + string.Join("; ", errors);
	}
	TaskDialog.Show("Info", msg);
}
Макрос по значению одного параметра находит в словаре соответствующий текст и вписывает во второй параметр.
Перед запусков выделить нужные элементы (например через вспомогательную спецификацию с отключенной группировкой и фильтром).
В начале укажите имена ваших параметров и нужные тексты.
Как подключить макрос.
Миниатюры
Нажмите на изображение для увеличения
Название: марка префикс пилон.png
Просмотров: 23
Размер:	10.8 Кб
ID:	265496  
__________________
Мой блог по Revit
extraneous вне форума  
 
Непрочитано 14.11.2024, 23:04
1 | #4
Hydrobizon


 
Регистрация: 27.10.2016
Сообщений: 59


Формула if сработает только на параметр типа '' число'' или '' да/нет''. Можно попробовать накинуть на стены общий параметр типа да/нет под названием ДСК_Пилон. А в формуле уже по условию if (ДСК_Пилон, "Пилон",'' Стена'' )
Hydrobizon вне форума  
 
Автор темы   Непрочитано 15.11.2024, 12:57
#5
Vintorez

Конструктор
 
Регистрация: 03.01.2011
Бельцы_Молдавия
Сообщений: 904


Спасибо , парни. Получается в любом случае никак, без добавочного Общего параметра не обойтись. Надеялся, что бы только в аннотационной марке, текст менялся
Vintorez вне форума  
 
Непрочитано 15.11.2024, 14:29
#6
iliorik


 
Регистрация: 03.10.2009
Сообщений: 733


Что то мне кажется лучше бы макросом такое провернуть. Тем более вам готовый макрос дали. Все эти условия в параметрах как по мне хуже работают.
__________________
Черточки и точки на плоскости - лишь посредник между идеей проекта и его физическим воплощением
iliorik вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Прочее ПО от Autodesk > Revit > Revit 2019.Создание логическая формулы с Параметром по "Типу" и тип данных "Текст"



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рассылка в word - получение данных из нескольких вкладок excel zenija2007 Прочее. Программное обеспечение 3 21.11.2016 17:54
Правильное оформление Общих данных отдельным документом Ilez Организация проектирования и оформление документации 12 24.08.2016 12:50
Балки в Revit MEP. Revit и СПДС Минька Revit 1 25.04.2011 05:51