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

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

*

Оффлайн iviivi81

  • *
  • 10
  • Репутация: +0/-0

Test

Всем доброго времени суток. Осваиваю GDL не так давно. Пытаюсь написать для себя объектик для построения раскладки теплого пола (нагревательный мат в виде лесенки). Изменение длинны объекта привязал к HOTSPOT-ам. Хочу реализовать возможность изменения длины объекта с двух концов. Для этого считаю что нужно как то определять в 2d-скрипте направление растягивания объекта. Планировал для этого использовать знак у параметра length т.к. при отрисовке длинна отображается то как положительная то как отрицательная в зависимости от того за какую сторону тянем, но на деле условие (IF SGN(length)=-1 THEN...) почему то не выполняется? Что то видимо недопонимаю. Пожалуйста помогите?

*

Оффлайн Vachik

  • *****
  • 4758
  • Репутация: +734/-4
  • Пол: Мужской
Чтобы тянулось с двух концов, одного параметра, не нужно особых премудростей. Нужно к идентификатору базовой точки добавить 256.
HOTSPOT2    0,  0, 1, A, 1 +256
HOTSPOT2    A, 0, 2,  A, 2
HOTSPOT2    -0.1, 0, 3, A, 3

*

Оффлайн iviivi81

  • *
  • 10
  • Репутация: +0/-0
Я предполагал что идентификатор это что то типа имени переменной, на поведение точки не влияет нужен только для обращения к ней. Спасибо, попробую позже. Где можно прочесть про это? Располагаю только только руководством по GDL а там все сухо и кратко без теоретической смазки ) просто написан что "unID" полезен только если в скрипте имеется переменное кол-во узловых точек.

*

Оффлайн iviivi81

  • *
  • 10
  • Репутация: +0/-0
А может ли unID быть отрицательным ?

*

Оффлайн Vachik

  • *****
  • 4758
  • Репутация: +734/-4
  • Пол: Мужской
А может ли unID быть отрицательным ?
Нет, отрицательным быть не может.
Я предполагал что идентификатор это что то типа имени переменной, на поведение точки не влияет нужен только для обращения к ней.
Ну может я не правильно выразился, не идентификатор, а флаг. А идентификатор действительно не влияет. Флаг это тот что в конце, а идентификатор по середине.
Где можно прочесть про это? Располагаю только только руководством по GDL а там все сухо и кратко без теоретической смазки ) просто написан что "unID" полезен только если в скрипте имеется переменное кол-во узловых точек.
Конкретно про флаг написано в руководстве GDL. А ещё читай Cookbook-и, их не так много. Еще были книжка Титова и Книжка Ланцева.
Ну и здесь есть люди которые помогают.
PS
Я тебя очень прошу, не начинай беседу с "Доброе время суток". Можно Здравствуйте, Привет.

*

Оффлайн iviivi81

  • *
  • 10
  • Репутация: +0/-0
Цитировать
Я тебя очень прошу, не начинай беседу с "Доброе время суток".Хорошо.
Приму к сведению :)
Спасибо, все получилось. Так гораздо проще :)
Тогда получается чтоб реализовать такое редактирование нужен следующий набор
точек: одна базисная, две перемещаемых и две ссылочных ?

*

Оффлайн iviivi81

  • *
  • 10
  • Репутация: +0/-0
Может ли длинна принимать отрицательные значения в 2d-скрипте? Хочу как то прикрутить контроль координат HOTSPOT-ов, чтоб не рисовалось шиворот на выворт.

*

Оффлайн iviivi81

  • *
  • 10
  • Репутация: +0/-0
Можно ли в 2d-скрипте использовать объект стандартной библиотеки "Документирования" размер, ну например через CALL? Оч хочется добавить отрисовку текущей длинны.

*

Оффлайн iviivi81

  • *
  • 10
  • Репутация: +0/-0
Народ, так я правильно мыслю ? Подскажите пожалуйста, можно ли вызвать в своем объекте как макрос "Линейный размер" из "Документирования" или правильно отрисовать размер ну например через LINE и RICHTEXT ? Если бы знал где он лежит в недрах ArchiCAD и как он там называется (если он реализован как макрос) то уже бы давно проверил, а не приставал с вопросами :)

*

Оффлайн Kuvbur

  • ^_^
  • ****
  • 368
  • Репутация: +69/-0
  • Пол: Мужской
Нет, стандартный размер вызвать нельзя,  нужно писать свой. Вот пример,  для АС20

*

Оффлайн iviivi81

  • *
  • 10
  • Репутация: +0/-0
Нет, стандартный размер вызвать нельзя,  нужно писать свой. Вот пример,  для АС20

Не получается открыть в AC16.  В принципе открыл блокнотом только уж очень все не отформатировано читается :) Спасибо.

*

Оффлайн iviivi81

  • *
  • 10
  • Репутация: +0/-0
Нет, стандартный размер вызвать нельзя,  нужно писать свой. Вот пример,  для АС20

Данный макрос может считать длину  криволинейной фигуры? Я это к применению массива внутри сoord_razm_t (так с ходу не въехал зачем он там)

*

Оффлайн Kuvbur

  • ^_^
  • ****
  • 368
  • Репутация: +69/-0
  • Пол: Мужской
Нет, это обычный линейный размер.

*

Оффлайн iviivi81

  • *
  • 10
  • Репутация: +0/-0
Нет, это обычный линейный размер.
Из того что вижу (открыл просто в notepad) немного не понимаю откуда берутся значения nt и inx_razm для цикла инициализации массива coord_razm? Вы не могли бы пояснить?

*

Оффлайн bImaginaire

  • **
  • 36
  • Репутация: +5/-1
  • Пол: Мужской
Насчет unID в хотспот. Если unID не присвоен, Архикад будет выставлять свой unID в процессе генерации модели или чертежа. Размеры привязываются к точкам именно через эти unID - какой-нибудь размер будет знать что он привязан к точке номер 1 и 2. Но если по каким-то причинам unID при последующей генерации скрипта будет присваиваться в другом порядке (в случае если объект сложный, там много разных точек и IF) - то размер, так как он знает всего лишь этот номер точки - может привязаться к другим точкам, которые получили эти номера. Чтобы избежать такую кашу с размерами - лучше всегда присваивать unID (то есть дословно "уникальная идентификация") всем точкам в скрипте.
Я не совсем уверен насчет следующего: но, кажется, что если не присваивать unID к командам HOTLINE и HOTARC - эти команды работать не будут. HOTLINE и HOTARC позволяют курсору "чувствовать" линию или дугу и, например, делить ее пополам - как это происходит с обычными линиями и дугами.

 

Похожие темы

  Тема / Автор