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

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

*

Оффлайн Александр Ани

  • ****
  • 412
  • Репутация: +78/-0
  • Архитектор

Test

Задумал тут создать я библиотечный элемент на основе изменяемого поля многоугольника.
Для начала поставил перед собой решить задачку создание алгоритма самого поля.

изучил темы с изменяемыми массивами
И вот, просмотрев один из примеров “editable path” от Valery W , я не понял алгоритма и решил попробовать с нуля..
мучался пару дней и вот что получилось «поле 4.1.gsm”
понял, что операторов стандартных в ArchiCAD не хватает, посему приходится изловчаться искать момент, когда двигается точка, либо ArchiCAD выдает имя изменяемого массива без конкретного изменяемого параметра..

по сему делу собираю консилиум.

во-первых кто знает алгоритм, отпишитесь.. как
жду обсуждений выложенных файлов

привожу пример своего:

1.создаю массив точек ху
  • [y], за которые можно хватать

   любая из этих точек может являться как углом, так и серединой между углами.
2.создаю массив numbers, в котором описан порядок какие точки углами являются, а какие серединой. (это нужно для того, чтобы при хватании серединной точки она оставалась собой, но в массиве прописывалась принадлежность к угловой)
3.создаю дубляж ху[][]
4.в скрипте параметров при перемещении точки:
- сравниваю все координаты с дубляжом и выявляю измененную точку
- если изменилась середина, то в массиве numbers прописываю её угловой и добавляю еще две серединных xy[][], которые в массиве точек ху[][] прибавляются в конце.
- если изменяется угловая точка, то двигаю за ней серединные точки (при этой операции ArchiCAD выдает последнее изменение серединной точки, посему попутно делается пару кренделей)
- произвожу дубляж координат, для дальнейшего вычисления изменений

Ну и попрошу Valery W , если еще свежо в памяти отписать кратенько систему своего алгоритма.

*

Оффлайн Александр Ани

  • ****
  • 412
  • Репутация: +78/-0
  • Архитектор
для наглядности прилагаю картинку

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +634/-14
  • Пол: Мужской
Александр, алгоритм в выложенном элементе не мой. Элемент брал на archicad-talk. У самого не было надобности в подобном элементе, поэтому, к сожалению, руки не дошли до него.  До выходных, к решению задачи не смогу подключиться.  :-\

*

SergeyAB

Александр, а какая решается задача если не секрет?

*

Оффлайн Александр Ани

  • ****
  • 412
  • Репутация: +78/-0
  • Архитектор
Задача - решить алгоритм изменяемого поля.
В дальнейшем применить на элементах,
например, первая цель - редактируемая площадка со ступеньками,
её можно сделать разными способами, обычно мы делаем пирогом перекрытий, расширяющимся в разные стороны.
хочется, чтобы дергать за точки площадки, указывать количество ступеней, а он сам тиражировал вниз...
я уже тружусь..

а еще много чего можно придумать,
мне просто нравится решать такие задачки в GDL, а потом наслаждаться результатом.

*

Оффлайн crazyASD

  • Самый главный
  • *****
  • 8545
  • Репутация: +518/-25
  • Пол: Мужской
  • iCrazy
Да, идея здравая.

*

Оффлайн ALAKK

  • *****
  • 625
  • Репутация: +55/-7
  • Пол: Мужской
  • Он спорил с модером...
Александр Ани

Если сказать честно, то не понял цели задачи. Разверни цель поподробнее.
Старею, видать... Не успеваю за мыслью  :(

*

Оффлайн Александр Ани

  • ****
  • 412
  • Репутация: +78/-0
  • Архитектор
Выкладываю результат. Всю неделю пропускал обеденное время на этот GDL-чик.

Тестируем - выдаем свое мнение.


В нем выложен первоначальный эксперимент. 3Д пока не решено.

задачи пока следующие:

- предложить вариант использования более точных переменных. ArchiCAD выдает приближенные значения координат (real), посему приходилось отслеживать все значения типа 0.0001 и округлять их, когда стороны горизонтальны. И каким образом через скрипт можно прописывать тип переменных?
данное решение считаю не идеальным и жду предложений.

- в скрипте имеется переменный массив точек с координатами. Известно что для построения 3-Д, например командой PRISM2, нужно постоянное значение количества углов.  Нашел в справочнике построение тел через BODY. Но пока есть ощущение что там тоже с переменными углами не развернешься. команда PGON с постоянным количеством углов. Как быть? Кто спец по 3Д?

- ну, и .. алгоритм ломанных кривых предлагайте еще.. может есть решение попроще?

*

Оффлайн Александр Ани

  • ****
  • 412
  • Репутация: +78/-0
  • Архитектор
Александр Ани

Если сказать честно, то не понял цели задачи. Разверни цель поподробнее.
Старею, видать... Не успеваю за мыслью  :(

цель №1 теперь должна быть понятна..
(превратить элемент в 3Д - и цель будет достигнута)

потом добавить скругляемые углы, кривые линии (по радиусу), и создание объема крыльца, дальнейшее его редактирование упрощается в разы..

*

Оффлайн Александр Ани

  • ****
  • 412
  • Репутация: +78/-0
  • Архитектор
я еще нашел в GDL справочнике описание приложения для работы с многоугольниками..
оно берет массивы точек - вершин разных многоугольников, затем можно проверить их на самопересечение, сложить их, вычесть, обрезать и прочее. на выходе новый массив точек..
Пробовал кто?



ПС: причем, как я понял, в 10-ке этого приложения еще не было...

*

Оффлайн Александр Ани

  • ****
  • 412
  • Репутация: +78/-0
  • Архитектор
Так и не смог придумать чем объем делать.. :(

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +634/-14
  • Пол: Мужской
PUT and USE   :)


*

Оффлайн Александр Ани

  • ****
  • 412
  • Репутация: +78/-0
  • Архитектор
PUT and USE   :)



не понял.. многоугольную призму с переменным количеством углов через USE?



_______________________
есть мысль написать алгоритм разложения многоугольника на треугольники, а там создать цикл по их количеству с построением треугольных PGON-ов, затем общий BODY, и готово

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +634/-14
  • Пол: Мужской
- в скрипте имеется переменный массив точек с координатами. Известно что для построения 3-Д, например командой PRISM2, нужно постоянное значение количества углов. 

Переменный массив координат PUT'ишь. В PRISM USE'ишь или GET'ишь то, что наPUT'ил (стр.218 руководства GDL для АС12).

*

Оффлайн Александр Ани

  • ****
  • 412
  • Репутация: +78/-0
  • Архитектор
Переменный массив координат PUT'ишь. В PRISM USE'ишь или GET'ишь то, что наPUT'ил (стр.218 руководства GDL для АС12).

гм..... мозги зашевелились.....

 

Похожие темы

  Тема / Автор