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