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

Вернуться   Форум DWG.RU > Программное обеспечение > Другие CAD системы > Tekla > Аналог команды "contains" в шаблонах.

Аналог команды "contains" в шаблонах.

Ответ
Поиск в этой теме
Непрочитано 23.05.2019, 08:27 #1
Аналог команды "contains" в шаблонах.
Yuzer
 
Мозговой штурм
 
Рідна ненька - Україна, Харків
Регистрация: 26.10.2008
Сообщений: 5,705

В общем в чем суть проблемы: есть набор атрибутов для покраски и всевозможные комбинации этих значений. Нужно, чтобы выводилось в шаблоне примечание по принципу "contains" ( содержит ). Т.е. если встречается такое значение в комбинации - вывести строку.
Через фильтр выбора в модели это сделать просто, а как это реализовать через шаблон ?
Просмотров: 2289
 
Непрочитано 23.05.2019, 10:02
1 | #2
dreamerone


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


Здравствуйте!
match(GetValue("атрибут"),"*ключевое_слово*") дает 1 если "ключевое_слово" встречается вне зависимости от наличия доп знаков пробелов и прочего, но регистр если не ошибаюсь тоже влияет. Можно написать сложные условия для конкретных строк шаблона с объединениями && или ||, для сочетания двух атрибутов будет формула для вывода строки:
if match(GetValue("атр1"),"*ключ1*")&&match(GetValue("атр2"),"*ключ2*") then
Output()
else
StepOver()
endif

В строчку соответствующую нужные вам слова заносите.

Как вариант, тоже можно настроить без шаблонов через подробные настройки уровня объекта для вида, но это именно для меток-выносок
dreamerone вне форума  
 
Автор темы   Непрочитано 23.05.2019, 10:45
#3
Yuzer

Мозговой штурм
 
Регистрация: 26.10.2008
Рідна ненька - Україна, Харків
Сообщений: 5,705


Спасибо, я как-то пропустил детальное описание в справке.
Цитата:
Функция =match(P1, "PL100*10") возвращает значение 1.

Принимает все профили с именем, начинающимся с PFC: =match(P4, "PFC*")

Принимает профили с именем, начинающимся с PFC, и значением высоты, начинающимся с 2, 3, 4 или 5: =match(P4, "PFC[2345]*")

Принимает профили с именем, начинающимся с PFC, значением высоты 200, 300, 400 или 500 и значением ширины, начинающимся с 7: =match(P4, "PFC[2345]00?7")
Yuzer вне форума  
 
Автор темы   Непрочитано 25.05.2019, 08:21
#4
Yuzer

Мозговой штурм
 
Регистрация: 26.10.2008
Рідна ненька - Україна, Харків
Сообщений: 5,705


Что-то у меня не срабатывает.
Вроде все правильно. Строка - ДЕТАЛЬ. В правиле ошибок не выдает. Делал через редактор.
Через равно ловит без проблем, через match не срабатывает.

Цитата:
if match("GetValue("FINISH")","*IJKL*") then
Output()
else
StepOver()
endif

Последний раз редактировалось Yuzer, 25.05.2019 в 08:27.
Yuzer вне форума  
 
Непрочитано 25.05.2019, 09:59
1 | #5
CuPo>I<a

Металлоконструкции
 
Регистрация: 28.02.2009
Златоуст
Сообщений: 480


а так?
Код:
[Выделить все]
 if match(GetValue("FINISH"),"*IJKL*")==1 then 
Output()
else
StepOver()
endif

Последний раз редактировалось CuPo>I<a, 27.05.2019 в 06:30.
CuPo>I<a вне форума  
 
Автор темы   Непрочитано 27.05.2019, 08:19
#6
Yuzer

Мозговой штурм
 
Регистрация: 26.10.2008
Рідна ненька - Україна, Харків
Сообщений: 5,705


Цитата:
Сообщение от CuPo>I<a Посмотреть сообщение
а так?
Код:
[Выделить все]
 if match(GetValue("FINISH"),"*IJKL*")==1 then 
Output()
else
StepOver()
endif
Путем проб и страданий получилось следующее:

Цитата:
if match(GetValue("FINISH"),"*I*") == 1 then
Output()
else
if match(GetValue("FINISH"),"*J*") == 1 then
Output()
else
if match(GetValue("FINISH"),"*K*") == 1 then
Output()
else
if match(GetValue("FINISH"),"*L*") == 1 then
Output()
else
StepOver()
endif
endif
endif
endif
Если прописывать в одну строку все 4 типа, то не работает.
Yuzer вне форума  
 
Непрочитано 27.05.2019, 12:55
#7
CuPo>I<a

Металлоконструкции
 
Регистрация: 28.02.2009
Златоуст
Сообщений: 480


ну-ка напиши первый вариант!
CuPo>I<a вне форума  
 
Автор темы   Непрочитано 27.05.2019, 13:31
#8
Yuzer

Мозговой штурм
 
Регистрация: 26.10.2008
Рідна ненька - Україна, Харків
Сообщений: 5,705


Цитата:
Сообщение от CuPo>I<a Посмотреть сообщение
ну-ка напиши первый вариант!
Первый вариант не срабатывает.
Yuzer вне форума  
 
Непрочитано 27.05.2019, 14:37
#9
CuPo>I<a

Металлоконструкции
 
Регистрация: 28.02.2009
Златоуст
Сообщений: 480


напиши, посмотрим чего там
CuPo>I<a вне форума  
 
Автор темы   Непрочитано 27.05.2019, 15:04
#10
Yuzer

Мозговой штурм
 
Регистрация: 26.10.2008
Рідна ненька - Україна, Харків
Сообщений: 5,705


Цитата:
Сообщение от CuPo>I<a Посмотреть сообщение
напиши, посмотрим чего там
Я c этого сегодня утром начинал
Открыл чертеж с "L" - пусто. Оставляю свой вариант - срабатывает (причем в различных комбинациях).
Шаблон - она строка PART.

Миниатюры
Нажмите на изображение для увеличения
Название: 2019-05-27_150127.jpg
Просмотров: 67
Размер:	73.4 Кб
ID:	214550  

Последний раз редактировалось Yuzer, 27.05.2019 в 15:15.
Yuzer вне форума  
 
Непрочитано 28.05.2019, 06:41
1 | #11
CuPo>I<a

Металлоконструкции
 
Регистрация: 28.02.2009
Златоуст
Сообщений: 480


в обработке записана одна из этих букв? Если да, то все правильно, что не работает. Ищется полное соответствие же. То есть в обработке должно быть записано IJKL, либо IJKLННН, либо РРРIJKL, либо ... ну ты понял
Попробуй
Код:
[Выделить все]
 
if match(GetValue("FINISH"),"*I*") == 1 || match(GetValue("FINISH"),"*J*") == 1 || match(GetValue("FINISH"),"*K*") == 1 || match(GetValue("FINISH"),"*L*") == 1
then Output() 
else StepOver()
endif
ЗЫ не помню почему, но я для себя решил, что нужно сначала условие писать для StepOver(), потом для Output(). То есть
Код:
[Выделить все]
 
if match(GetValue("FINISH"),"*I*") != 1 || match(GetValue("FINISH"),"*J*") != 1 || match(GetValue("FINISH"),"*K*") != 1 || match(GetValue("FINISH"),"*L*") != 1
then StepOver()
else Output() 
endif
CuPo>I<a вне форума  
 
Автор темы   Непрочитано 28.05.2019, 08:09
#12
Yuzer

Мозговой штурм
 
Регистрация: 26.10.2008
Рідна ненька - Україна, Харків
Сообщений: 5,705


Цитата:
Сообщение от CuPo>I<a Посмотреть сообщение
в обработке записана одна из этих букв? Если да, то все правильно, что не работает. Ищется полное соответствие же. То есть в обработке должно быть записано IJKL, либо IJKLННН, либо РРРIJKL, либо ... ну ты понял
Я думал, что по аналогу из примера №3 будет искать все совпадения по этим буквам .
С квадратными скобками тоже как-то не получалось.
Yuzer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Другие CAD системы > Tekla > Аналог команды "contains" в шаблонах.

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как добавить в динамический блок уже нарисованные элементы чертежа (или аналог команды _refedit)? sasha_lif Динамические блоки 6 17.01.2019 13:38
Есть ли аналог команды Wipeout? kpd_110 AutoCAD 7 29.04.2012 23:49
C# .NET AC2012 Аналог команды Очистить(PURGE) xsakabsx .NET 2 07.09.2011 18:24
Аналог команды Slice в Solid Taracka SolidWorks 12 24.09.2010 23:50