Пожалуйста, не блокируйте рекламу!

0 Пользователей и 1 Гость просматривают эту тему.

*

Sebastien

GLOB_CONTEXT=???
« : Марта 03, 2008, 14:13:11 »

Test

Помогите разобраться с этой переменной. Есть потребность отоброжения библ. элемента в разных окнах по разному. Ну, например, чтоб на плане отображася квадратик, а в окне деталей как то по другому(более подробно). Я так понял, что это должно выглядеть как то так:
в окне 2D скрипт пишу:
if GLOB_CONTEXT=2 then
rect2 0,0,a,b
else
if GLOB_CONTEXT=7 then
(все что мне нужно пишу)
endif
endif
Почему то ничего не происходит и в окне деталей то же рисуется квадратик, а не то что в скрипте описал, не пойму, что не так?

*

Оффлайн Mike_B

  • *****
  • 680
  • Репутация: +78/-2
  • Пол: Мужской
Re: GLOB_CONTEXT=???
« Ответ #1 : Марта 03, 2008, 14:22:21 »
Сам по себе объект не измениться при переходе из плана в разрез. Чтобы чудо произошло нужно скопировать его из плана в разрез, либо вставить заново. Таким "чудесным свойством" обладают элементы сетки.

ЗЫ: попробуйте
if GLOB_CONTEXT=2 then
  rect2 0,0,a,b
endif

if GLOB_CONTEXT=7 then
 (все что мне нужно пишу)
endif

*

Sebastien

Re: GLOB_CONTEXT=???
« Ответ #2 : Марта 03, 2008, 14:26:49 »
А какой тогда вооще смысл в этой переменной?
В хелпе написано:

GLOB_CONTEXT context of appearance
1-library part editor, 2-floor plan, 3-3D view, 4-section/elevation, 5-settings dialog, 6-list, 7 - detail drawing, 8 - layout, 22 - feedback mode from the floor plan, 23 - feedback mode
from a 3Dview, 24 - feedback mode from a section/elevation, 28 - feedback mode from a layout, 43 - generating as an operator from a 3D view, 44 - generating as an operator from a
section/elevation, 46 - generating as an operator from a list
Что же это означает?
P/S Так тоже пробовал
P(P/S) Когда копирую с плана в деталь, то работает ^-^, но тогда теряется связь, получается как бы независимая деталь, а хотелось бы чтоб они связаны между собой были, т.е. если поменял чото на плане, то и в окне детали тоже менялось, или так нельзя? :'(
« Последнее редактирование: Марта 03, 2008, 15:32:19 от Sebastien »

*

Оффлайн ALAKK

  • *****
  • 625
  • Репутация: +55/-7
  • Пол: Мужской
  • Он спорил с модером...
Re: GLOB_CONTEXT=???
« Ответ #3 : Марта 03, 2008, 15:44:02 »
C глобальными переменными все не так просто.
Прицепи объект в аттач. Только в архив заверни

*

Sebastien

Re: GLOB_CONTEXT=???
« Ответ #4 : Марта 03, 2008, 15:55:45 »
Прицепи объект в аттач. Только в архив заверни???
Чо то я не очень понял, если можно поподробней немного

*

Оффлайн Mike_B

  • *****
  • 680
  • Репутация: +78/-2
  • Пол: Мужской
Re: GLOB_CONTEXT=???
« Ответ #5 : Марта 03, 2008, 17:05:12 »
Цитировать
хотелось бы чтоб они связаны между собой были, т.е. если поменял чото на плане, то и в окне детали тоже менялось

А это уже делает add-on. Одним gdl тут не обойтись.

Хотите по-экспериментировать, откройте элемент сетки в gdl и вставьте в 2д скрипт ваш код. (Остальное можно даже убрать). В плане рисует прямоугольник, в разрезе (у меня) окружность. В данном случае за этим следит адд-он сетки.

if glob_context=2 then
  rect2 0,0,a,b
endif

if glob_context<>2 then
circle2 0,0,a
endif
« Последнее редактирование: Марта 03, 2008, 17:33:44 от Mike_B »

*

Sebastien

Re: GLOB_CONTEXT=???
« Ответ #6 : Марта 03, 2008, 17:35:38 »
Я тоже об этом догадывался, ну вот случайно наткнулся на GLOB_CONTEXT, подумал, что через нее получиться,  мне интересно кто нибудь делал эти аддоны от начала до конца, я просто скачал с сайта API Development Kit 11.21, С++ вроде немного знаю, ну как то руки не доходят до изучения этого API Development Kit, а здесь на сайте информации не очень много про Аддоны, кто нибудь смог во всем этом разобраться и написать готовый Аддон или это очень сложно и только для профессиональных программистов?

*

Оффлайн ALAKK

  • *****
  • 625
  • Репутация: +55/-7
  • Пол: Мужской
  • Он спорил с модером...
Re: GLOB_CONTEXT=???
« Ответ #7 : Марта 03, 2008, 22:25:01 »
Заархивируй свой объект и выложи здесь как приложение к сообщению. Тогда и помощи дождешься

2 Mike_B
Я что-то не могу представить себе объект, который дает такое сечение (объекты находятся в проекционной связи?) Или о чем этот пост?

*

Оффлайн Mike_B

  • *****
  • 680
  • Репутация: +78/-2
  • Пол: Мужской
Re: GLOB_CONTEXT=???
« Ответ #8 : Марта 04, 2008, 09:39:49 »
Никакой проекции. Просто в плане рисуется прямоугольник, а в разрезе окружность.

*

Sebastien

Re: GLOB_CONTEXT=???
« Ответ #9 : Марта 04, 2008, 11:41:38 »
откройте элемент сетки в gdl
А можете объяснить как это сделать, чото не догоняю :o
это надо написать что то типа
MESH a, b, m, n, mask,
z11, z12, ... z1m,
z21, z22, ... z2m,
...
zn1, zn2, ... znm
или я вооще не про то подумал?

*

Оффлайн Mike_B

  • *****
  • 680
  • Репутация: +78/-2
  • Пол: Мужской
Re: GLOB_CONTEXT=???
« Ответ #10 : Марта 04, 2008, 13:56:39 »
Есть такой адд-он "Инструмент Сетка" к-й находится в папке Дополнительные расширения (Гудисы). Этот аддон создает свой уникальный инструмент - элемент сетки (оси всмысле, поверхности здесь нипричем). Этот элемент сетки похож на обычный объект, но с интерфесом только под него. Так вот, надо проводить вышеперечисленные проецедуры с этим объектом.

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +634/-14
  • Пол: Мужской
Re: GLOB_CONTEXT=???
« Ответ #11 : Марта 09, 2008, 15:50:00 »
Привет всем.

Как многие, наверно, понимают, применение переменной 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

Удачи!