|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Фракталы в AutoLISP
Регистрация: 13.11.2010
Сообщений: 15
|
||
Просмотров: 9459
|
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692
|
Цитата:
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 13.11.2010
Сообщений: 15
|
Код:
Выдает ошибку: неверный тип аргумента: 2D/3D точка: T Скорее всего я неправильно присваиваю ей значение, но кучу всего перепробовал, что-то не выходит нормально... Помогите, пожалуйста. |
|||
![]() |
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 575
|
Нельзя в качестве имени переменной использовать символ T - это зарезервированный символ логических операций (T - true; nil - false)
__________________
cadtools |
|||
![]() |
|
||||
Регистрация: 13.11.2010
Сообщений: 15
|
Исправил название точки и сделал как написано: (setq R (1+ (fix (* 6 (Rng))))), но все равно ошибка, только теперь чуть-чуть другая:
; ошибка: неверный тип аргумента: 2D/3D точка: nil Сама по себе конструкция (Setq Ptt C) должна работать? То есть точка Ptt примет координаты '(200 250) ? |
|||
![]() |
|
||||
Регистрация: 13.11.2010
Сообщений: 15
|
gomer, спасибо большое, произвольные числа вроде заработали, но отрисовки точек все равно нет, значение одной вычисленной точки он выводит в командной строке и успокаивается, добавил строку, чтобы проверить сколько точек он ищет и выяснил, что находит только первую точку, цикл не работает:
Код:
|
|||
![]() |
|
||||
Регистрация: 13.11.2010
Сообщений: 15
|
Поменял название и пошло дело! Но...
Блин, AutoCAD2007 запускает эту прогу, выполняет, точки появляются, но теперь начал горланить что-то про сетевые лицензии, хотя сам нигде не предлагал зарегестрировать продукт, и в настройках когда пытаюсь обновить ошибка вылезает. В AutoCAD2010 точки не появляются... Буду разбираться с этим. Но все же пару раз он успел запуститься в 2007, Странно(а может и не очень), но почему то рандомные вершины почти всегда выбираются 2, 3 или 4, рандом не рандомный... В точке (50.0000, 150.0000, 0.0000) создана линия нулевой длины -пишет AutoCAD2010 и нет точки на экране! Они оказывается и работают по-разному... Последний раз редактировалось Seregarival, 14.11.2010 в 15:52. |
|||
![]() |
|
||||
Регистрация: 03.05.2009
Сообщений: 112
|
Для шестиугольника Серпинского текущая точка P должна находиться
на отрезке, соединяющего случайную вершину шестиугольника Ptt и предыдущую точку O. При этом расстояние между вершиной и текущей точкой - 1/3 длины отрезка. Если будет середина отрезка, то красивой фигуры не получится! Середина - это для треугольника Серпинского. То есть надо исправить: (polar Ptt (angle Ptt O) (/ (DISTANCE Ptt O) 23)). Чтобы из алгоритма не выпала 6-ая вершина F надо исправить: (fix (* 56 (Rng)). Начальную точку внутри шестиугольника и число точек фрактала можно задать через getpoint и getint. Точки фрактала можно нарисовать окружностями радиуса 0.1, а не отрезками нулевой длины. Чтобы была видна начальная точка ее лучше нарисовать с помощью point и если она не выделяется среди точек фрактала - изменить формат отображения точек. Последний раз редактировалось Li6-D, 14.11.2010 в 18:36. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Цитата:
Вообще, шестиугольник Серпинского как фрактал строится рекурсивно и мне непонятно зачем здесь rng и где собственно рекурсия Последний раз редактировалось gomer, 14.11.2010 в 18:04. |
|||
![]() |
|
||||
Регистрация: 03.05.2009
Сообщений: 112
|
Цитата:
rnd требуется только для случайного выбора вершины шестиугольника. Рекурсия в самом внешнем виде фрактала - он подобен своей части. Последний раз редактировалось Li6-D, 14.11.2010 в 18:36. |
|||
![]() |
|
||||
Регистрация: 13.11.2010
Сообщений: 15
|
Спасибо большое за разъяснение, меня тоже смущала картинка, но в найденном описании был приведен пример с треугольником и написано: шестиугольник строится по тому же принципу(что-то я и не подумал что-то в нем изменить)!
Вдруг кого-то заинтересует, вот код: Код:
Последний раз редактировалось Seregarival, 14.11.2010 в 18:56. |
|||
![]() |
|
||||
Регистрация: 13.11.2010
Сообщений: 15
|
Необходимо нарисовать кривую Серпинского (она состоит из линий одинаковой длины, расположенных под определенным углом)
Делать её необходимо рекурсивно, можно сделать половину и отобразить, но до этого еще надо дойти, столкнулся с непредвиденной трудностью, функция POLAR непонятно для меня вычисляет углы, помогите разобраться: Код:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Темы объединены. Seregarival, считай это предупреждением.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 13.11.2010
Сообщений: 15
|
Кулик Алексей aka kpblc, извините, просто эту тему закрыли вроде, я не мог оставлять в ней сообщения, поэтому открыл новую.
Цитата:
А насчет кода из реферата, мне необходимо без графического режима её нарисовать, стандартными средствами AutoCAD, поэтому он не сильно подходит. |
|||
![]() |
|
||||
Регистрация: 13.11.2010
Сообщений: 15
|
Насчет подвисаний: я вчера увидел как виснет КАД после того как в прошлом фрактале поставил 90000 итераций, он рисовал 90000 окружностей радиуса 0.1
![]() Смотрится прикольно, плохо только что он на каждой итерации отрисовывает все, то есть на заднем плане остаются результаты прошлых шагов построения, без них бы мне подошло, а убрать их у меня что-то не получается, придется самому ваять, хотя пока незнаю как это лучше организовать. Код:
И если не сложно подскажите немного по поводу блоков, а-то в методичке поверхностно очень описано как создать блок и потом вставить его под определенным углом... Последний раз редактировалось Seregarival, 15.11.2010 в 13:21. |
|||
![]() |
|
||||
Регистрация: 13.11.2010
Сообщений: 15
|
Извините, пожалуйста, перерыл всю методичку, но так и не нашел как работать с блоками. Они упоминаются только в примерах программ и сразу идет вставка блока с относительными координатами и объектной привязкой... а как создать блок даже в интернете не могу найти.
Подскажите пожалуйста хотя бы саму функцию. |
|||
![]() |
|
||||
Регистрация: 13.11.2010
Сообщений: 15
|
Спасибо, только вот он ошибку выдает:
; ошибка: no function definition: VLAX-GET-ACAD-OBJECT И еще вопрос - всё это для 3d объекта, соответственно, если объект двумерный, то в названиях функций, наверное, поменяется только цифра и станет, например, vlax-2d-point? |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
http://autolisp.ru/2010/06/09/no-fun...t-acad-object/
Цитата:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 13.11.2010
Сообщений: 15
|
А можно вернуться к вопросу, заданному ниже:
Цитата:
Последний раз редактировалось Seregarival, 15.11.2010 в 18:11. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
передача данных из AutoLisp в Excel | Victorovich | LISP | 2 | 03.12.2011 22:28 |
Реализация алгоритма шифрования AES средствами AutoLisp | gomer | LISP | 20 | 09.09.2010 11:55 |
Как отладить нейтив и менеджед код в COM объекте который используется из AutoLISP? | lexluther | LISP | 1 | 12.08.2009 08:37 |
Как выделить примитивы в AutoLISP? | RastaMANNN | LISP | 3 | 10.06.2008 00:37 |
Как из Delphi запустить программу на AutoLISP | Valery | LISP | 1 | 23.09.2005 20:51 |