Привет всем.
Как многие, наверно, понимают, применение переменной GLOB_CONTEXT позволяет представлять объект в разных обличиях для разных окон программы.
Но нужно правильно понимать условия в которых эта переменная работает. Поскольку эти условия не описаны в "GDL Reference Guide", приходиться познавать их опытным путем. Что же нам подсказывает "сын ошибок трудных"?
Вот мои наблюдения.
Во-первых, GLOB_CONTEXT исправно работает во всех CONTEXTах, как для 2D, так и для 3D-скрипта.
Во-вторых, значение 7 применимо как для окна "Деталь", так и для окна "Рабочий лист". Поэтому, говоря "Деталь" буду подразумевать и "Рабочий лист".
В-третих, именно для этих окон GLOB_CONTEXT избирательно работает для разных подтипов библ. элементов.
Вы наверно понимаете особенности отображения элементов в этих окнах. Если нет, смотрите тему
Инструмент "Деталь". Или вот выдержка из Справки:
"Взгляды детали, создаваемые из существующих элементов проекта, являются 2D-копиями этих элементов." Поэтому правильно будет подразделять библ. элементы на отображаемые и вставленные в окне "Деталь".
Отображаемые библ. элементы превращаются в 2D-примитивы (линии и штриховки). Не подвержены превращению в примитивы только маркеры разрезов и фасадов, а также маркеры "Рабочего листа" в окне "Деталь" и маркеры "Детали" в окне "Рабочий лист". Для них GLOB_CONTEXT=7 исправно работает. Все остальные подтипы библ. элементов декомпозируются, и GLOB_CONTEXT=7 для них не работает.
Во вставляемых библ. элементах, GLOB_CONTEXT=7 работает исправно.
А теперь перейду к пожеланию
Sebastien.
Исходя из выше описанного наблюдения, можно его сформулировать следующим образом:
Было бы полезно, если бы программа обрабатывала команду с GLOB_CONTEXT перед тем, как элемент будет разбит на примитивы в окне "Деталь". Или, еще лучше, если бы в окне настройки библ. элемента была команда запрещающая декомпозировать объект в окне "Деталь". А если пойти дальше, то можно добавить и команду разрешающую обратное редактирование. Т.е., если изменились размеры библ. элемента в окне "Деталь", то они должны измениться и в исходном модельном окне.Это пожелание можно опубликовать на ArchiCAD-Talk, переведя его на английский. Но пожелание нужно еще подкрепить хорошими аргументами.
Что же касается сиюминутного решения задачи, над которой ломает голову
Sebastien, то посоветую использовать переменную GLOB_SCALE. Команда с GLOB_SCALE как раз обрабатывается перед тем, как элемент будет разбит на примитивы в окне "Деталь". Ведь, по сути, в это окно мы помещаем те фрагменты, которые хотим показать в более крупном масштабе. Вот вам для примера скрипт:
RECT2 0, 0, A, B
IF GLOB_SCALE <= 50 THEN
LINE2 0, 0, A, B
LINE2 0, B, A, 0
ENDIF
Удачи!