Официальный форум российского программного комплекса T-FLEX PLM


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1 2 3 След.
Базы, переменные, строки
 
Доброго времени суток, коллеги!
Помогите решить один вопрос, пожалуйста.

Опишу две ситуации:

1. Создаем переменную S, присваиваем ей значение 40. Создаем
переменную $Str, присваеваем ей значение "Толщина {S} мм". На поле
чертежа создаем однострочный текст, выводим в него {$Str}. Видим на поле
в результате: "Толщина 40 мм".

2. Создаем переменную S, присваиваем ей значение 40. Создаем
переменную $Str, значение ее считываем из базы, куда записано значение
"Толщина {S} мм". На поле чертежа создаем однострочный текст, выводим в
него {$Str}. Видим на поле в результате: "Толщина {S} мм".

Вопрос очевиден: как во втором случае добиться результата, аналогичному первому?
Заранее спасибо!
Изменено: Иванов Иван - 05.09.2015 17:26:03
 
Нет нужды создавать строковую переменную. Достаточно в тексте написать "Толщина {S} мм". И уже не важно как получается переменная S.
S.png (115.01 КБ)
 
Спасибо за ответ.
Но прикол как раз в том, чтобы использовать запись в базе как шаблон для вывода на чертеж. Например одна запись в базе для переменной $Str может быть такой: "Толщина - {S} мм", а другая: "{S} мм - необходимая толщина" и т.д. И вот в эти шаблоны и должно подставляться значение переменной S.
 
Тогда давайте задачи конкретнее, потому что как Вы хотите не прокатит) Если шаблоны разные, делайте на них базу, но число вставляйте вне базы, формируйте переменную и по условию она будет меняться.
 
Вот простой примерчик одного из вариантов решения примерной задачи, как я понял.
 
Цитата
Sila Musli написал:
Вот простой примерчик одного из вариантов решения примерной задачи, как я понял.
Ну вариант с логическими операторами понятен и даже реализован. Но при увеличении количества вариантов становится он несколько громоздким. Хочется порешать поизящнее. :)
Забавно, что конструкции типа [[... ~ ...]] или <<... ~ ..>>, считанные из базы, tf воспроизводит правильно, а вот с фигурными скобками не проходит. Может неспроста?
Изменено: Иванов Иван - 05.09.2015 22:50:58
 
Вставить в базу переменную можно, но не с текстом совместно, пока все мои просьбы сделать в базах нормальную параметризацию особо не продвинулись так что имеем, что имеем.
 
Вот переменная в базе.
 
Хотя там можно складывать текстовые переменные тоже, так что ща) Не ничего особо не даёт, ещё на мой взгляд дольше и сложнее получается.
Изменено: Sila Musli - 05.09.2015 23:11:35
 
Вот так получается.
 
Цитата
Sila Musli написал:
Вот переменная в базе.
Не то. :(
Вообще тыкаюсь сейчас в редакторе переменных, варианты всякие пробую и вижу, что с этими скобками фигурными засада.
Например, вот результаты выполнения строковых операторов:
"{"+"a"="{a"
"a"+"}"="a}"
"{"+"a"+"|"="{a|"
"|"+"a"+"}"="|a}"
"{"+"a"+"}"=ошибка
Это при том, что переменная а существует.
 
Значит смотрите пример выше там вроде то что Вам нужно, но мне больше нравиться предыдущий вариант)
 
Цитата
Sila Musli написал:
Вот так получается.
Это финт интересный, кстати. Я про такое не знал. Запомню на будущее.
Но в моем случае вряд ли применим - база внешняя по ссылке, расшаренная к многим файлам.
Поищем и еще пути. Может че-нить с кодировками символов можно сотворить? Хотя запись скобок через юникод ничего не дает - проверено.
Продолжу завтра. На Урале уже 2 ночи. Спокойной ночи, спасибо за попытку помочь.
Изменено: Иванов Иван - 05.09.2015 23:58:18
 
Цитата
Иванов Иван написал:
база внешняя по ссылке
По этому я и говорю - давайте полную картину и получите ответ, ну или хотя бы что так низя, но на мой взгляд точно подойдёт первый вариант, как самый простой, но я не знаю задачу до конца))) Может всё гораздо проще и решать нужно в другом направлении.
 
Цитата
Sila Musli написал:
По этому я и говорю - давайте полную картину и получите ответ
Ну давайте попробую.
По роду деятельности приходится много работать с деталями/сборками из проката. Имеется достаточно обширная наработанная библиотека профилей. И все в ней хорошо, да что-то не хорошо. А именно - заполнение материала в основной надписи и других местах. Есть 100500 способов решить этот вопрос, но хочется же получить окончательное решение.
В результате мне видится удобным следующий вариант:
1. Базы данных профилей оформляются как внешние.
2. Для работы с профилями делается специальный прототип, к которому заранее подключаются базы.
3. При создании документа, вы выбираете параметры сортамента и материала, при этом на автомате выбираются соответствующие ГОСТы (естественно).
4. Из специальной базы (внешней) для выбранных ГОСТов в соответствующие переменные считываются шаблоны записи материала в:
- основную надпись;
- спецификацию единичную/групповую на 10 исп. (для бч-шек);
- спецификацию на 3 исп. (для бч-шек опять же);
- другие, если надо.
5. В переменные с шаблонами подставляются определенные в документе переменные материла и сортамента.
6. Переменные с шаблонами отображаются в тех местах, для которых созданы.
Win! :)

В принципе все вышеописанное уже реализовано. Затык только со строковыми шаблонами в которые не желают подставляться переменные.
Мелочь (говорю же: есть 100500 способов заполнить материал от полностью ручного, до полуавтомата), но хочется же сделать один раз и забыть.
Я наверное ленивый? :oops:
Изменено: Иванов Иван - 06.09.2015 09:09:38
 
А может файлом второй вариант выложить попробуйте (в файле только данную ситуацию реализуйте), может тогда получиться разобраться в предложить решение.
Цитата
Иванов Иван написал:
...

2. Создаем переменную S, присваиваем ей значение 40. Создаем
переменную $Str, значение ее считываем из базы, куда записано значение
"Толщина {S} мм". На поле чертежа создаем однострочный текст, выводим в
него {$Str}. Видим на поле в результате: "Толщина {S} мм".

Вопрос очевиден: как во втором случае добиться результата, аналогичному первому?
Заранее спасибо!
 
Цитата
Иванов Иван написал:
В принципе все вышеописанное уже реализовано. Затык только со строковыми шаблонами в которые не желают подставляться переменные.

Вы можете разделить строки в базе данных, например:
Таблица: S1
- ID
- Str1
- Str2

Код
DB_ID = rec($SDB==S1.ID)
S = 100
$StrResult = val(DB_ID, S1.Str1) + ftoa(S) + val(DB_ID, S1.Str2)
T-FLEX CAD 17.1.6.0
 
Цитата
Денис Пользователь написал:
А может файлом второй вариант выложить попробуйте (в файле только данную ситуацию реализуйте), может тогда получиться разобраться в предложить решение.
Очень просто. В файле обе ситуации. Нужно чтобы обе переменные ($Str_01 и $Str_02) отображались бы одинаково - как $Str_01.
 
Цитата
Vite написал:
Вы можете разделить строки в базе данных, например:
Таблица: S1
- ID
- Str1
- Str2
Писал уже: вариант реализации через синтез в редакторе переменных возможен, но не оптимален. Это - запасной (и уже имеющийся) вариант.
 
Цитата
Иванов Иван написал:
Писал уже: вариант реализации через синтез в редакторе переменных возможен, но не оптимален. Это - запасной (и уже имеющийся) вариант.

Если я правильно понимаю, Вы хотите добавить токены {S} в строки базы данных, и заменить на значение переменной. Чем не подходит вариант, который предложил @Sila Musli?
То что Вы хотите сделать, не будет работать, поскольку токен переменной {S} находится в не пределов видимости редактора переменных.
T-FLEX CAD 17.1.6.0
Страницы: 1 2 3 След.