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

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

*

Barmaley

Test

Делается библиотека мебели в ArchiCAD 12 на GDL. В одном элементе программируются сразу много изделий (например столы разных размеров и форм и т.д.). При изменении свойств модели через интерфейс параметров, можно проследить изменения и соотвтственно изменить модель. Но есть проблема - при изменении модели через редактор самой программы, скрипт не ловит эти изменения. Например есть аимметричный стол в правом и левом исполнении. При изменении через интерфейс параметров, отслеживается правое или левое исполнение и соотвтственно меняется Артикул изделия (Артикул прописан в скрипте параметров), который потом выводиться в 2D скрипте. А при редактировании через редактор (команда Зеркальное отражение), это изменение можно уловить только в 2D скрипте, но в нем я ни как не могу изменить Параметры модели (то есть Артикул)... Подскажите как из 2D скрипта изменить параметры или как вообще к конкретной модели запретить команду Зеркального отражения, чтобы заставить пользователя лезть в интерфейс модели...

*

Оффлайн pavelzb

  • ***
  • 116
  • Репутация: +29/-1
  • Пол: Мужской
  • Охотник на зебр.
Re: Зеркальное отражение (изменение параметров)
« Ответ #1 : Октября 09, 2008, 10:11:17 »
Для того чтобы в скриптах отследить зеркало существует глобальная переменная: SYMB_MIRRORED=0 или 1 (в окне свойств библ. объекта горит соответствующая галочка) на сколько я понял по вашему вопросу вы это и так знаете (см. справку GDL глобальные переменные).
А вот запретить эту команду, наверное, вряд ли. Т.к. на глобальные переменные пользователь через GDL скрипты, кажется, не влияет.

Чтобы изменить параметры есть дополнительная команда в СКРИПТЕ ПАРАМЕТРОВ (не в 2Д скрипте)
PARAMETERS ArtiCUL=«Стол 1»
Например:
if  SYMB_MIRRORED=1 then
PARAMETERS ArtiCUL=«Стол 1»
else
PARAMETERS ArtiCUL=«Стол 2»
endif

*

Оффлайн ufo

  • ****
  • 398
  • Репутация: +85/-0
  • Пол: Мужской
Re: Зеркальное отражение (изменение параметров)
« Ответ #2 : Октября 09, 2008, 10:19:29 »
Есть также старый избитый прием "запрета зеркального отражения" к примеру в 2Д скрипте он выглядит так:
mul2 1, 1-2*SYMB_MIRRORED
Тоесть элемент хоть и отражается но в скрипте командой мул его отражает еще раз в результате он не отразится

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +634/-14
  • Пол: Мужской
Re: Зеркальное отражение (изменение параметров)
« Ответ #3 : Октября 09, 2008, 10:21:08 »
Можно "запретить" зеркальное отражение. Т.е., пользователь зеркалит объект, а он не зеркалится.
Как это прописать в скрипте, расказано в теие "Библиотека "секретов" по GDL-программированию!".

П.С. Пока писал, ufo уже показал этот скрипт.

*

Barmaley

Re: Зеркальное отражение (изменение параметров)
« Ответ #4 : Октября 09, 2008, 11:23:20 »
Спасибо за ответы. В основном разобрался.
"Запрет зеркального" в виде команды "mul2 1, 1-2*SYMB_MIRRORED" не устроил, так как это как я понял запрет перерисовки только в 2D графике (на плане этажа).
Выкрутился таким образом - в скрипте параметров все оставил как было (с отслеживанием V~), а в скрипте 2D делаю как бы повторное отслеживание "Зеркала" и выводом Артикула через новую переменную:

art2=art
if V~=1 and art2="Арт_Правый" then
   art2="Арт_Левый"
else:if V~=0 and art2="Арт_Левый" then
   art2="Art_Правый"
endif:endif

и вывод переменной "art2" на план.
« Последнее редактирование: Октября 10, 2008, 10:35:55 от Barmaley »

 

Похожие темы

  Тема / Автор