|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
нарисовать полилинию из списка с координатами точек (lisp)
проектирование противооползневых сооружений
Yalta
Регистрация: 06.04.2007
Сообщений: 50
|
||
Просмотров: 25652
|
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Еще примеры
Код:
Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
проектирование противооползневых сооружений Регистрация: 06.04.2007
Yalta
Сообщений: 50
![]() |
Вот этот код - то что надо, но у меня не получается свой список в него вписать. У меня просто уже создан список (присвоен переменной), а как его применить относительно этого кода - непонятно. Список состоит из точечных пар, то есть первый элемент списка выглядет примерно так: (18820.53521278781,12841.22697685545) и таких элементов в списке от 20ти до 50ти. Можно ли его как то привязать к вышеуказанному коду?
PS VVA за код с созданием объекта - спасибо, но это для моего понимания слишком сложно, а то что я не понимаю, стараюсь не использовать. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
А понимать не обязательно, можно просто использовать
Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
проектирование противооползневых сооружений Регистрация: 06.04.2007
Yalta
Сообщений: 50
![]() |
Цитата:
|
|||
![]() |
|
||||
опа... а что это за функция такая, а то я её описание ни где не нашёл, ни в тырнете, ни у Полещука, не то чтобы сама функция была мне интересна, я пользуюсь ru-pline-entmake в общих случаях и тупо (entmake) в частных.
Может там ещё много чего интересного в ACET-ах есть?
__________________
Почему все вдруг становятся умными, когда уже не надо? |
||||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
|
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Sample\VisualLISP\activex\al-tst.lsp Sample\VisualLISP\activex\vla-tst.lsp Sample\VisualLISP\activex\vla-tst.prj Каждый может попробовать. Можно и ent-функции проверить. Можно и в компилированном виде. Я когда-то проверял. . Эти программы выполняют одинаковую работу (рисуют 2000 полилиний, изменяют их цвет и удаляют), но разными методами, с фиксацией затраченного времени. AL-TST использует функции command и entmod, а VLA-TST — функции ActiveX. Результаты (конечно, разные на различных компьютерах) показывают, что функции ActiveX работают значительно быстрее. На очень "слабом" компьютере, специально используемом нами для тестирования, получены результаты: AL-TST — 206.8 сек (13.141 сек на "хорошем" компьютере) VLA-TST — 143.79 сек. (5.61 сек на "хорошем" компьютере) При замене в al.lsp (command "_.PLINE"…) на (entmake…) получаем результаты: AL-TST — 115.95 сек (6.812 сек на "хорошем" компьютере) Естественно, что вариант с функцией command показывает худшие результаты. Иного и не могло быть, так как AutoCAD должен анализировать (неизвестный заранее) поток данных, передаваемый в виде аргументов функции. При использовании функции entmake передаются уже известные структуры данных, близкие к внутреннему представлению, и процесс идет гораздо быстрее. При использовании объектной модели данные передаются в виде уже совсем близком к внутреннему представлению (через Visual LISP) и в "готовом к употреблению" виде при использовании VBA. Некоторое замедление дает цепочка посредников при передаче данных через интерфейсы различных объектов. Именно это дает действительное или кажущееся отставание. На высокопроизводительных машинах накладные расходы будут менее заметны. В использование ActiveX дает выигрыш в производительности. Ну, и если уж стали демонстрировать разные коды, показывают тот, который всегда использую: Код:
Есть и аналогичная (ru-3d-pline-add points is_closed lineweight ltype). Отличается только использованием vla-add3dpoly Последний раз редактировалось ShaggyDoc, 12.02.2011 в 16:45. |
|||
![]() |
|
||||
Цитата:
Код:
Код:
__________________
Почему все вдруг становятся умными, когда уже не надо? |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,377
|
Ну, чтобы окончательно запутать ситуацию, можно еще посмотреть http://autolisp.ru/2009/09/22/programming-style/ - я там тоже некоторые "исследования" проводил
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Вот еще интересно как влияет на быстродействие версия када на одной системе...
Попробовал вот такую функцию, найденную в инете, на звкаде, впал в уныние... entmake в несколько раз быстрее, чем vla- Код:
Цитата:
Последний раз редактировалось gomer, 13.02.2011 в 00:57. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Так многое зависит от методики и от правильности самой тестовой программы. Например, если в цикле делается несколько вызовов
Код:
Код:
А зачем, например, vla-get-Block вставлен? Конечно, такой вызов будет работать медленнее, чем простенький entmake. Ну и вообще тесты делаются, чтобы доказать желаемый для себя результат, а не найти истину. |
|||
![]() |
|
||||
В свое время, я так же делал обширные тесты по быстродействию различных методов. Результаты были еще интереснее, некоторые методы быстрее через vla, а некоторые через entmak, entmod... Т.е нет идеального выбора. В своей практике, я пошел по упрощенному пути выбора - если необходимо просто создать объект, без изменений свойств, например линию в текущем слое, текущего цвета итд, то я частенько использую vla-add*, если же необходимо еще и добавить новый слой и в него вставить линию, изменить цвет, тип линии - я уже иду через entmakex - так быстрее, короче по коду и нагляднее в программе.
Самый наглядный пример, это серия функций vlax-curve*. В справке написано, что они работают только с vla объектами, но это не правда! В эти функции можно передавать ename представление элементов. Самое интересное, что если передавать именно ename, то скорость вырастает в разы... Мой совет, хотите найти самый быстрый путь - все проверяйте. Нет однозначного ответа на этот вопрос. ps. Я выбрал мешанину из обоих путей, т.е в одной программе, у меня используются оба метода.
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны. /Сунь Цзы/ |
||||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP - 2D полилинию в 3D | Andrej | LISP | 22 | 25.04.2019 11:40 |
Как с помощью LISP нарисовать окно линиями? | Aндрeй | LISP | 13 | 24.06.2011 14:37 |
Как имея массив точек создать полилинию по ним? | emilko | AutoCAD | 9 | 19.06.2009 23:15 |
Lisp: Обработка объектов и получение списка свойств (координаты точек) | Nanotronic | LISP | 2 | 23.04.2009 23:07 |
нарисовать полилинию и запустить макрос VBA | gizmo_zx | Программирование | 8 | 24.12.2008 08:47 |