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

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

*

Оффлайн ALAKK

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

Test

Недавно в очередной раз залетел на койку в больницу и от нечего делать стал думать, что, кстати, не мешало бы делать чаще. Думать, естественно, а не валяться на койке.


Так вот.
Думать стал, конечно, о ГДЛ, т.к. о женщинах уже все понял, а о выпивке в больнице даже думать противопоказано – давление поднимается, здоровье ухудшается.

Вопрос был поставлен так: почему так трудно пишутся объекты сложной геометрической формы? Как облегчить этот титанический труд? Думал долго. Целых 15 минут. На 8 минуте пришел к выводу, что надо использовать подсобный инструмент, малую механизацию, так сказать. Но где и как?

Стал рассматривать процесс программирования как многостадийный и потому блочный. На 14 минуте до меня дошло, что максимум времени требует вычисление координат точек абриса проекции.

Обоснование:
Как правило, в большинстве случаев используются различные варианты призмы, да и во всех других описаниях геометрии объектов требуется ввод координат, что трудоемко и времяемко. Именно поэтому многие поднимают правую руку (некоторые даже левую) и резко ее опускают, сопровождая это нехитрое действо несколькими вполне внятными словами, забывая надолго программирование объектов.

Таким образом, надо было как-то маломеханизировать процесс получения координат на плоскости… Что-ж… Была бы цель поставлена!

Когда-то давно написал объект «Отметка высоты». Изюминка его была в том, что он выдавал расстояние от нуля проекта до точки клика мышки. Объект был написан для того, чтоб можно было разрез или фасад объекта из его окна скопировать и перенести на план этажа, причем в любое его место и проставленные на разрезе высотные отметки не изменяли  бы своего значения. Там были всякие оформительские примочки, приятный 2Д вид и прочий хлам, но самое нужное сейчас было то, что объект мог хранить вычисленное значение при перемещении его в любое место чертежа и не менял его до новой команды на замер, сохраняя свой внешний вид.  Это уже стало немного греть душу, т.к. по натуре я лентяй, а тут, глядишь, уже половина дела сделана: одну координату мы уже имеем! Значительно напрягшись, я оторвал седалище от койки и пересел к столу, где за продолжительное время (около 7 минут – включая перемещение моей тушки к буке, включение, загрузку и проч. по списку) получил вторую координату…  Объект стал выдавать обе координаты (Х & Y).

Вот тут я уже загрустил совсем и стал даже всхлипывать от избытка отрицательных эмоций: надо было получить вид сбоку программируемого объекта. Делать нечего… Нашел серию и врукопашную построил этот вид. На это ушло некоторое время, которое не засекал, т.к. был перерыв на обед, на общение с доктором, еще куда-то оно ушло, не припомню все. Но в итоге к вечеру отпраздновал победу стаканом кефира. Дальше все просто. На 2Д виде просто тыкаем тупо по всем точкам построения объекта (там же линии – не надо хотспоты добавлять), и прилагаемый объект выдает во всей красе координаты этих точек, которые потом вставляем во фразу призмы в 3Д скрипте. Нужно, правда, позагибать пальцы на руках и ногах, чтоб понять количество точек замеров. Не хватит – загибай у соседа, как пришлось делать мне (пришлось его привязать к койке – не мог, поросенок, понять важности процесса). Окружности и дуги превращаем в отрезки прямых с требуемым приближением к дуге по кривизне – можно поделить на 36, если вычислить всю ее длину. Тоже врукопашную, но имея оргазм от того, что не считаем вообще ничего, как это было раньше. В общем, есть разные варианты построения, но этот самый примитивный, а, значит, будет работать всегда.

Именно таким образом была сделана «Балка решетчатая 18м», которую выложил на прошлой неделе. У кого есть желание попробовать объект в действии, может добавить в него и балку 24 м. Это элементарно.

Начав думать уже не мог остановиться и понял, что прилагаемый объект может быть полезен и генпланистам, и многим другим, кому надо определить координаты объекта относительно нуля проекта. Объект, кстати, работает и как отметка высоты. Там есть переключатель режимов в окне параметров.

Всем удачи
« Последнее редактирование: Января 22, 2010, 19:08:39 от GAG »

*

Оффлайн siddy

  • ***
  • 126
  • Репутация: +18/-1
  • Пол: Мужской
Re: В помощь коллегам-программерам ГДЛ
« Ответ #1 : Января 22, 2010, 12:34:59 »
   Объект не попробовал еще, но за литературу +1 ;D
   Здоровья автору!

*

Оффлайн ALAKK

  • *****
  • 625
  • Репутация: +55/-7
  • Пол: Мужской
  • Он спорил с модером...
Re: В помощь коллегам-программерам ГДЛ
« Ответ #2 : Января 22, 2010, 14:09:56 »
Премного мерсибо. :D

*

Оффлайн Witalii

  • ***
  • 79
  • Репутация: +1/-0
  • Пол: Мужской
Re: В помощь коллегам-программерам ГДЛ
« Ответ #3 : Января 23, 2010, 11:38:58 »
Спасибо. Хотел написать "не болей больше", но задумался, что если больничная койка помогает такому мыслительному процессу, то иногда полезно и полежать. :-*

*

Оффлайн ALAKK

  • *****
  • 625
  • Репутация: +55/-7
  • Пол: Мужской
  • Он спорил с модером...
Re: В помощь коллегам-программерам ГДЛ
« Ответ #4 : Января 23, 2010, 14:10:06 »
Лучше бы написал "Думай больше, болей меньше". Это было бы ближе к пониманию вопроса, хотя болеть всегда погано, но слова эти приятны для души. А так... В любом случае: скучно болеть, сэр. Но спасибо за понимание

Кстати:! Спешу довести до понимающих и заинтересованных лиц ответ на вопрос,  заданный в личной переписке.

Вопросант спрашивает: что за система координат и почему его призма не строится ваааащщще?

Ответ: Если описывыаешь фигуру, то большой жирный крестик есть начало координат для этой фигуры. Если начал описывать другую фигуру - передвинь весь чертеж так, чтоб большой жирный крестик совпадал с любой точкой фигуры. Не забывай при этом об add. Есть такая скучная фраза...
« Последнее редактирование: Января 23, 2010, 14:51:45 от ALAKK »

*

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

  • ****
  • 412
  • Репутация: +78/-0
  • Архитектор
Re: В помощь коллегам-программерам ГДЛ
« Ответ #5 : Января 26, 2010, 16:43:45 »
Координаты.. гм... да, это интересно... надо и взаправду бы задуматься над этим..

1 вариант - самый простой: Обводим штриховкой, выделяем штриховку и сохраняем как объект GSM. Откыв его получаем командой POLY2 все координаты, да не надо пальцы загибать. (правда округлить цифры придется)
2 вариант - если руки дойдут (очень попросить, либо кто-то сам это сделает). Я напишу объект на основе своей ломанной кривой. Он будет сразу выдавать текстом "PRISM 2,5,0.2, ... и т.д", указав предварительно нужную комманду GDL из списка. А нам останется скопировать текст из ячейки и вставить его в свой скрипт. Своего рода - вспомогалка.

Это, что первое в голову пришло.

*

Оффлайн ALAKK

  • *****
  • 625
  • Репутация: +55/-7
  • Пол: Мужской
  • Он спорил с модером...
Re: В помощь коллегам-программерам ГДЛ
« Ответ #6 : Января 27, 2010, 04:28:04 »
2 Александр Ани
Что ж. Если есть еще варианты - флаг в руки и барабан на шею. Любые улучшения только приветствуются

1. Со штриховкой вариант дохлый - много телодвижений, выигрыша по сравнению с предложенным мной нет
2. Автомат выдачи текстовки - неплохо. Напиши, плз. Только конкатенация тут будет проблемой. Магическое число 256... Можно, конечно, их тоже складывать, но проблем тут.... В свое время, давно, конечно, и на другом языке, писал цикл с определением конечного числа вложений. Для преодоления этого чертового числа.... Я этим не буду заниматься
« Последнее редактирование: Января 27, 2010, 04:49:18 от ALAKK »

*

SergeyAB

Re: В помощь коллегам-программерам ГДЛ
« Ответ #7 : Июля 09, 2010, 11:45:32 »
а решение на самом деле на поверхности, нужно просто сложить то что сказано и вычесть то что не нужно(завязку на абс. (0,0)).
Итак, нужна сложная геометрия?
1. Задаем число аппроксимирующих точек, пусть N
2. Формируем массив Editable-hotspot's размерности [N]
3. Отрисовываем то, что предложил Ани штриховкой, или чем удобнее. Просто в плане. Т.н. прототип.
4. Двигаем наши хотспоты на шаблон(полученный в п.3).
5. Лезем в интерфейс и жмем булевый параметр под кодовым названием "выполнить полезность этого объекта(да)/отображать лекало(нет)" Да/нет? После чего объект предстает во всей своей красе ибо уже работает ветка скрипта "выполнить полезность этого объекта?" а по этой ветке хоть Полю2, хоть Меш, хоть чего захочется колдуем.

Ну и на п.3 пригодится учебник по геометрии за 8 класс, или когда там треугольники изучают  :wink:

*

Оффлайн ALAKK

  • *****
  • 625
  • Репутация: +55/-7
  • Пол: Мужской
  • Он спорил с модером...
Re: В помощь коллегам-программерам ГДЛ
« Ответ #8 : Июля 11, 2010, 17:45:52 »
Блииииин.... Какой же ты, Серега, умный....   :laugh: :D

*

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

  • ****
  • 412
  • Репутация: +78/-0
  • Архитектор
Re: В помощь коллегам-программерам ГДЛ
« Ответ #9 : Декабря 08, 2010, 11:51:20 »
Тут работал я над редактором полигонов для своей Библиотеки Ани, да решил добавить ту самую функцию, что по теме.

специально для...  :rolleyes:помощник GDL :-* - дополнительная функция в редакторе полигонов Ани.  :D
сохраняет готовую команду со всеми параметрами в текстовый файл. Откройте WordPad и скопируйте её в свой Библ.Элемент!
http://narod.ru/disk/1007643001/Poligon%20Editor%20Ani%201_0.7z.html

Сам редактор оперирует с полигонами, сохраняя их и открывая как заготовки для будущих элементов классических ограждений - на сегодня эту часть мы не затрагиваем. нам нужен только помощник GDL:

1. Открываем визуальное меню редактирования элемента:
2. жмем кнопку "изменить" возле пути к папке с полигонами, открывая файловый менеджер Ани (новый алгоритм выбора папок в библиотечных элементах)
3. выбираем конечную папку для работы с полигонами. затем ОК. (Папка с Редактором полигонов содержит несколько примеров заготовок. Конечная папка не должна содержать внутренние папки.)
4. Теперь нам открывается возможность сохранять и открывать полигоны в формате Ани в эту папку одним щелчком.
5. Выберите тип полигона - "помощник GDL"
6. Выберите команду, например POLY_ или REVOLVE.
7. нажмите "сохранить". В папке создается текстовый файл с командой и многочисленными точками вашего полигона.
обратите внимание: дополнительные статусы полилиний используются. (в окружностях)

теперь открываем файл .txt в WordPad либо любом текстовом редакторе.
(NotePad неправильно воспринимает разбивку)


PS: сам полигон не забудьте на плане вычертить!
Ну и если есть ошибки результата, сообщайте в эту тему..
« Последнее редактирование: Декабря 09, 2010, 16:41:44 от Александр Ани »

*

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

  • ****
  • 412
  • Репутация: +78/-0
  • Архитектор
Re: В помощь коллегам-программерам ГДЛ
« Ответ #10 : Декабря 09, 2010, 16:36:52 »
Кстати, если кто знает, каким запросом в GLD определить путь к папке, к которой принадлежит библ элемент, то систему поиска папки в помощнике GDL можно было бы упростить..

*

Оффлайн lsr

  • *****
  • 1268
  • Репутация: +247/-6
  • Пол: Мужской
  • http://sl-gdl.com
Re: В помощь коллегам-программерам ГДЛ
« Ответ #11 : Декабря 10, 2010, 07:30:52 »
Открывать можно не только в WordPad, сделал скрины, а потом обнаружил, что не внимательно прочитал, да и к тому же в самом элементе об этом говориться.
Бегло посмотрел, может опять не внимательно, есть пара предложений:
На том что я пробовал  Resol выводиться постоянным и = 64, есть ли возможность сделать его переменным?
На малых радиусах= 25мм Resol- 64 не оправдано, а на больших, в несколько метров - не достаточно.
Не нашел как изменить:
Цитировать
обратите внимание: дополнительные статусы полилиний используются. (в окружностях)


Можно ли в интерфейсе вывести настраиваемый параметр маскирования (на усмотрение пользователя), чтоб не создавалось лишних линий, если отбросить не видимые и оставить возможность присвоения значений статусов с 8 по 15, ну или все коды было бы лучше
Я стараюсь создавать элементы у которых один код=15, другое ребро- 13.  Ну это так...   наверное чересчур жирно будет.
В общем и целом штука полезная.

*

SergeyAB

Re: В помощь коллегам-программерам ГДЛ
« Ответ #12 : Декабря 10, 2010, 08:43:33 »
Блииииин.... Какой же ты, Серега, умный....   laugh Cheesy
Да я та ладно... ;D Тут смотри какие темы задвигают!
:D Твое здоровье! И с наступающим Вас, господа инженеры, архитекторы, дизайнеры и им сочувствующие.

*

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

  • ****
  • 412
  • Репутация: +78/-0
  • Архитектор
Re: В помощь коллегам-программерам ГДЛ
« Ответ #13 : Декабря 10, 2010, 09:45:52 »
Открывать можно не только в WordPad, сделал скрины, а потом обнаружил, что не внимательно прочитал, да и к тому же в самом элементе об этом говориться.
Бегло посмотрел, может опять не внимательно, есть пара предложений:
На том что я пробовал  Resol выводиться постоянным и = 64, есть ли возможность сделать его переменным?
На малых радиусах= 25мм Resol- 64 не оправдано, а на больших, в несколько метров - не достаточно.
Не нашел как изменить:

Можно ли в интерфейсе вывести настраиваемый параметр маскирования (на усмотрение пользователя), чтоб не создавалось лишних линий, если отбросить не видимые и оставить возможность присвоения значений статусов с 8 по 15, ну или все коды было бы лучше
Я стараюсь создавать элементы у которых один код=15, другое ребро- 13.  Ну это так...   наверное чересчур жирно будет.
В общем и целом штука полезная.

Т.к. это побочный продукт (намекну, что классический тип ограждения будет состоять из этих балясин и перил, да включать Полигон Редактор),
то статусы, наверно, излишни. Можно добавить переменный массив, что при сохранении будет статус менять. Но для каждой команды статусы свои - имхо быстрее самому в тексте. Самое нужное координаты.

Resol, я думаю, появится как переменная, попозже. Я вставил только для того, чтобы не забывали - предполагается, что в GDL доп. параметры все-равно сам дописываешь.

*

Оффлайн lsr

  • *****
  • 1268
  • Репутация: +247/-6
  • Пол: Мужской
  • http://sl-gdl.com
Re: В помощь коллегам-программерам ГДЛ
« Ответ #14 : Декабря 10, 2010, 10:18:53 »
Ну раз редактор пойдет макросом к классическим ограждениям, то коды статусов...
Хотя и всеж таки могут быть. А Resol полезен, чтоб не только круглые, но и 6-8 гранные без доп. редактирования скрипта.

 

Похожие темы

  Тема / Автор