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

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

*

Оффлайн Kuvbur

  • ^_^
  • ****
  • 368
  • Репутация: +69/-0
  • Пол: Мужской
Первые шаги в GDL
« Ответ #225 : Августа 19, 2016, 22:15:41 »

Test

Такие сообщения всегда были, но их как-то можно отключить.
Архикад хочет, чтоб сравнение выглядело так:

EPS = 0.001
if L_LINE - defult < EPS then

Дескать - неровен час ошибка округления возникнет.  Ни разу не возникала.

*

Оффлайн ValeriyP

  • архитектор
  • ****
  • 498
  • Репутация: +64/-1
  • Пол: Мужской
  • ArchiCad Coral Draw Artlantis
Первые шаги в GDL
« Ответ #226 : Августа 19, 2016, 22:22:47 »
Не получается рисунок вставить. Ругается именно на оператор >= . И в мануале по GDL про это не записано. Чудеса какие-то)
https://drive.google.com/file/d/0Bz2O7fDkbvFKTU9oTkgwRW5EaDQ/view?usp=sharing
Если не сложно - не могли бы вы скинуть объект, в котором такое используется? Очень интересно разобраться.
Параметр  sty не активен. Для активации- пересохраните закладку параметр скрипт.
Живой кусок скрипта
IF sty="width" THEN
IF ang1 <=1 THEN PARAMETERS ang1=1
IF ang1>=179 THEN PARAMETERS ang1=179
IF ang2<=1 THEN PARAMETERS ang2=1
IF ang2>=179 THEN PARAMETERS ang2=179
!LU
angL=-ang1
DobL=tan(angL-90)*hb
IF ang1>=90 THEN DobL=0
!PU
angP=-ang2
DobP=tan(angP-90)*hb
IF angP>=90 THEN DobP=0
ENDIF
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
IF sty="height" THEN
IF ang1 <=1 THEN PARAMETERS ang1=1
IF ang1>=179 THEN PARAMETERS ang1=179
IF ang2<=1 THEN PARAMETERS ang2=1
IF ang2>=179 THEN PARAMETERS ang2=179
!LU
angL=ang1
DobL=tan(angL-90)*hc
IF angL<=90 THEN DobL=0
!PU
angP=ang2
DobP=tan(angP-90)*hc
IF angP<=90 THEN DobP=0
ENDIF

PS
Алексей- да не обращайте внимания на предупреждения про типов real . Где то разрабы очевидно напутали с обращениями- вот теперь эта хрень и гуляет по версиям )))
« Последнее редактирование: Августа 19, 2016, 23:03:20 от ValeriyP »

*

Оффлайн Kuvbur

  • ^_^
  • ****
  • 368
  • Репутация: +69/-0
  • Пол: Мужской
Первые шаги в GDL
« Ответ #227 : Августа 19, 2016, 22:28:04 »
IF ang1>=179 THEN PARAMETERS ang1=179
Вот, теперь нормально. А то я уже architalk начал перекапывать - может и правда операторы сравнения вместо присвоения с Parameters можно применять.

*

Оффлайн SIMFF

  • *****
  • 2299
  • Репутация: +194/-4
  • Пол: Мужской
Первые шаги в GDL
« Ответ #228 : Августа 19, 2016, 22:38:34 »
EPS = 0.001
if L_LINE - defult < EPS then
А вот на этом, вообще засада возникает,  получил ошибку всего скрипта. Перед какой строкой нужно вставить эту кманду
if L_LINE - defult < EPS then
Все, спасибо. Нашел...
if L_LINE - defult < EPS then
   VALUES 'L_LINE' RANGE [L_MIN,L_MAX]
else
   VALUES 'L_LINE' RANGE [L_MIN,L_MAX]
endif
« Последнее редактирование: Августа 19, 2016, 23:22:24 от SIMFF »

*

Оффлайн ValeriyP

  • архитектор
  • ****
  • 498
  • Репутация: +64/-1
  • Пол: Мужской
  • ArchiCad Coral Draw Artlantis
Первые шаги в GDL
« Ответ #229 : Августа 19, 2016, 22:48:27 »

Вот, теперь нормально. А то я уже architalk начал перекапывать - может и правда операторы сравнения вместо присвоения с Parameters можно применять.
 Мой загон.. пардон.  ( скрипт написал навскидку, поленился ArchiCAD открыть ) Подшаманил- всё работает
VALUES "sty" "TYPE1", "TYPE2"
IF sty="TYPE1" THEN
IF L_MIN<0.5 THEN PARAMETERS L_MIN=0.5
IF L_MAX> 1.50 THEN PARAMETERS L_MIN=1.5
endif
IF sty="TYPE2" THEN
IF L_MIN<0.75 THEN PARAMETERS L_MIN=0.75
IF L_MAX> 2.80 THEN PARAMETERS L_MIN=2.8
endif

*

Оффлайн SIMFF

  • *****
  • 2299
  • Репутация: +194/-4
  • Пол: Мужской
Первые шаги в GDL
« Ответ #230 : Августа 19, 2016, 23:15:49 »
ValeriyP, переписал команды по предложенному вами варианту. Если все верно понял, то это так выглядит:
IF sty="TYPE1" THEN
   IF L_MIN >= 0.5  THEN PARAMETERS L_MIN = 0.50
   IF L_MAX >= 1.5  THEN PARAMETERS L_MAX = 1.50
endif
IF sty="TYPE2" THEN
   IF L_MIN >= 0.75  THEN PARAMETERS L_MIN = 0.75
   IF L_MAX >= 2.80  THEN PARAMETERS L_MAX = 2.80
endif
Но в чем преимущество такой записи, что получаем в итоге?
Итог не "поступает", не отражается в Параметрах в  L_MIN и L_MAX,  и  VALUES 'L_LINE' RANGE [L_MIN,L_MAX]  - совсем перестала работать

*

Оффлайн Kuvbur

  • ^_^
  • ****
  • 368
  • Репутация: +69/-0
  • Пол: Мужской
Первые шаги в GDL
« Ответ #231 : Августа 19, 2016, 23:42:11 »
Но в чем преимущество такой записи, что получаем в итоге?
Итог не "поступает", не отражается в Параметрах в  L_MIN и L_MAX,  и  VALUES 'L_LINE' RANGE [L_MIN,L_MAX]  - совсем перестала работать
В этом случае VALUES 'L_LINE' RANGE [L_MIN,L_MAX] не нужен - параметр L_LINE просто не получится вывести за пределы. Более коротко, но RANGE ... STEP уже не сработает.

*

Оффлайн SIMFF

  • *****
  • 2299
  • Репутация: +194/-4
  • Пол: Мужской
Первые шаги в GDL
« Ответ #232 : Августа 19, 2016, 23:53:27 »
 Более коротко, но RANGE ... STEP уже не сработает.
Эх... а мне как раз STEP очень нужен. Но к счастью, предложенный вами вариант очень помог. Спасибо.
Вы писали, что экспериментировали с параметром L_MAX. Можно ли установить в итог параметра L_LINE значение максимальное, а не минимальное, и как это сделать? 

*

Оффлайн Kuvbur

  • ^_^
  • ****
  • 368
  • Репутация: +69/-0
  • Пол: Мужской
Первые шаги в GDL
« Ответ #233 : Августа 19, 2016, 23:57:46 »
Вместо
defult = L_MIN
вписать
defult = L_MAX

*

Оффлайн SIMFF

  • *****
  • 2299
  • Репутация: +194/-4
  • Пол: Мужской
Первые шаги в GDL
« Ответ #234 : Августа 20, 2016, 00:00:11 »
Вместо
defult = L_MIN
вписать
defult = L_MAX
ОТЛИЧНО!!! То что нужно. Спасибо. :laugh:

*

Оффлайн SIMFF

  • *****
  • 2299
  • Репутация: +194/-4
  • Пол: Мужской
Первые шаги в GDL
« Ответ #235 : Августа 22, 2016, 11:00:59 »
Помогите разобраться с ШАГОМ изменения параметра.
 Есть изменяемый параметр в пределах :
L_MIN = 5.0
L_MAX = 20.
Есть параметры шага изменения параметра:
step_start_value = 0.0
step_value         = 1.0
Изменяемый параметр:
VALUES 'L_LINE' RANGE [L_MIN,L_MAX]  STEP  step_start_value,  step_value
Для наглядности все цифровые параметры Действительное число 

Изменяю значение step_value на 3.0 (step_value = 3.0), тут же изменяется значение L_LINE на 7.0 (не позволяет применить значение L_MIN = 5.0).
Изменение step_value в диапазонное от 1.0 до 2.0 на изменение  L_LINE НЕ влияет, изменение >2, начинает изменять значение 
Почему изменение шага влияет на сам параметр, и как избавится этого влияния?
Какую функцию выполняет step_start_value? 

*

Оффлайн Kuvbur

  • ^_^
  • ****
  • 368
  • Репутация: +69/-0
  • Пол: Мужской
Первые шаги в GDL
« Ответ #236 : Августа 22, 2016, 12:08:54 »
Какую функцию выполняет step_start_value?
Дефолтное значение. Попробуйте step_start_value = defult

*

Оффлайн SIMFF

  • *****
  • 2299
  • Репутация: +194/-4
  • Пол: Мужской
Первые шаги в GDL
« Ответ #237 : Августа 22, 2016, 13:08:50 »
Дефолтное значение. Попробуйте step_start_value = defult
Спасибо! Все получилось. И тут промежуточный параметр defult выручил !

*

Оффлайн Rad

  • *****
  • 697
  • Репутация: +34/-1
  • Пол: Мужской
Первые шаги в GDL
« Ответ #238 : Сентября 07, 2016, 14:27:04 »
Очень полезный материал Язык GDL в ARCHICAD. Спасибо автору.

*

Оффлайн SIMFF

  • *****
  • 2299
  • Репутация: +194/-4
  • Пол: Мужской
Первые шаги в GDL
« Ответ #239 : Сентября 07, 2016, 16:51:15 »
Rad, Спасибо. Хороший материал.

 

Похожие темы

  Тема / Автор