Автоматизация, алгоритмы и autolisp
|
|
A
Boss
Сообщений: 418
Это тема будет интересна тем, кто чертит паттерны и схемы.
Часто рисуя паттерны ( я целых 2 раза рисовал ) мы сталкиваемся с разным количеством рутины, которую можно было бы автоматизировать.
Эту задачу я буду решать с помощью автокада и встроенного в него языка программирования - AutoLisp. Autolisp я использую уже больше 7 дней, поэтому все это делается очень медленно и не особо красиво. Но кое-что уже работает.
Если вам не нравится рисовать стрелки и биссектрисы, не любите долго строить всякие боксо-хексо-плетинги на сетке 80х80 и может быть знаете пару алгоритмов, которые не мешало бы доверить машине, то в этой теме вы все это можете обсудить.
Ну и про особенности работы а автокаде можете поспрашивать.
|
A
Boss
Сообщений: 418
Немного теории. Вернее немного об очевидных вещах, о них тоже полезно говорить.
Допустим на листе или где-нибудь в середине паттерна сталкиваются 3 прямые складки:
Если они не лежат на одной прямой и углы между ними меньше 180 градусов, то они могут сложиться в плоскость. Можете на листе сразу проверить.
Чтобы получилась плоская модель помимо трех прямых складок должна быть еще одна складка обратная. И она может пойти в одном из трех направлений.
Сложить легко, а как узнать точно под каким углом красную складку чертить?
На самом деле геометрия следующая:
Если из вершины провести окружность, то "Долины" (красные отрезки) будут проходить через точки касания описанного многоугольника, а "Горы" (синие отрезки) будут проходить через его вершины. И соответственно каждая линия "горы" будет являться биссектрисой между двумя потенциальными линиями "долины".
Это условие для плоской модели должно соблюдаться для произвольного количества линий "Гор"
Если многоугольник не строится, значит "что-то пошло не так" и модель не сложится.
Как строить такие многоугольники легко и непринужденно в автокаде я напишу позже.
Прикрепленный файл:
6195501.png
(3.0 Kb)
·
9392913.png
(5.0 Kb)
·
1379371.png
(6.4 Kb)
·
3295370.png
(6.1 Kb)
·
2276679.png
(9.2 Kb)
|
A
_
Сообщений: 1048
Цитата Chameleon ( ) не любите долго строить всякие боксо-хексо-плетинги на сетке 80х80 Кстати, Inkscape сам строит любые сетки - и квадратные, и треугольные, и даже такие, которые ведомы только Андрею А вот может ли он их автоматически обводить, не помню.
Вообще тема про это уже была. Может, объединить? http://oriart.ru/forum/6-84-2
Галерея на фликре
|
A
Boss
Сообщений: 418
Объединять не нужно. Inkscape как любой графический редактор имеет возможность писать скрипты, но если судить по его базовым возможностям, это в разы сложнее. Я бы разделил все программы для рисования на векторные графичекие редакторы для дизайнеров (Corel, Inkscape, Illustrator...) и Cad-ы для инженеров (Autocаd, Компас, Nanocad, DraftSight и т п) Последние хороши в точных построениях и расчетах, первые - для того, чтобы сделать красиво.
|
A
Boss
Сообщений: 418
Продолжаю.
Я не буду пояснять, как строить эти узлы из прошлого сообщения базовыми средствами автокада. Это можно, но неудобно: строим касательные в точках пересечения долин, потом обрезаем при пересечении гор, получаем многоугольник. В автокаде есть для этого все возможности, но если попробуйте это сделать хотя бы раз 10, вам надоест.
Прежде всего должен быть установлен Autocad. У меня установлен Autocad 2011 En. С другими версиями проблем возникать не должно, но проверять у меня нет возможности. Точно не подойдет любая версия Autocad LT - она более дешевая и урезаная, из нее вырезана возможность использовать сторонние скрипты, что делает Автокад бесполезным.
К сообщению прикреплен zip-архив. В нем есть 2 файла. Открываете файл Demo.dwg Затем перетаскиваете на окно автокада лисп-файл oriart.lsp . Это сделает возможным запускать написанные в этом файле скрипты.
Первая команда ND . Рисует вокруг окружности многоугольник в зависимости от наличия внутри него отрезков Valley или Mountain.
Далее на картинке (лучше сразу на нее смотрите) показано , как рисуется круг (команда C), затем рисуется три отрезка гор (команда MN ), они проходят через центр окружности, затем выделяется окружность и набирается команда ND.
Далее показано как строить, если внутри окружности оказались 2 линии гор и одна долина. Сначала с помощью команды MIL (или более долгой MIRROR) строятся две симметрии отрезка долины, затем командой BIS строится биссектриса (короче смотрите ниже на гифке).
Еще одна команда INVERT - меняет горы и долины местами. На гифке видно, что если горы и долины поменять местами, то узел совсем не получится. Но если окружность будет в слое ori-REVNODE (обратный узел), то команда ND будет воспринимать горы как долины, а долины как горы. Это нужно, если вершина узла на паттерне идет от нас.
Любую команду в автокаде можно повесить на кнопку или назначить ей алиас (более короткую команду). Если будет нужно, распишу подробнее.
Прикрепленный файл:
oriart_v1.0.zip
(39.1 Kb)
|
M
Crease Master
Сообщений: 1484
Прикольно!) А чего Тримэйкер не юзаешь? Он все это на автомате делает...
Делай, что должен и будь, что будет!!!!))
|
A
Boss
Сообщений: 418
Во-первых алгоритмы тримейкера (если их все знать) можно и на базе любого када реализовать, будет также работать.
Во-вторых, я без понятия как его полезно использовать. Дерево и паттерн я сколько не строил, сложить из этого что-то вменяемое не смог. Да и не удобно точки все в ручном режиме вводить, потом закреплять, связи добавлять. Долго все очень. Тут без полноценного графического редактора никак.
А эти многоугольники они не только для дерева, они в принципе для проверки любого узла, хоть для створки, хоть для мозайки.
|
M
Crease Master
Сообщений: 1484
|
A
Boss
Сообщений: 418
Я не знаю правил, если честно. Просто столкнулся с проблемой построения, когда отошел от сетки, и эту проблему для себя решил. Эта тема для этого и создана - упрощение построений.
|