|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
19.08.2008, 21:02 | #1 | |
Лисп присадки мебельной фурнитуры
конструктор
Москва
Регистрация: 29.08.2007
Сообщений: 55
|
||
Просмотров: 5014
|
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Если хочеться побыстрее - то отказ от командных методов, то есть либо DXF либо VLA - в первом случае размер кода выростет соответсвенно производительности, про второй не знаю, в моем представлении код выростет не очень сильно, но будет побыстрее - насколько не знаю.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,853
|
Помимо этого: не возвращаются значения системных переменных; нет обработчика ошибок; нет меток начала и конца отмены.
Если честно, я бы задумался о том, чтобы помещать, например, панели на один слой, фурнитуру - на другой. И формировать запросы соответственно с фильтрацией по слоям. Постарался бы не использовать _.explode - нет в ней такой уж сильной необходимости, как мне кажется...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
конструктор Регистрация: 29.08.2007
Москва
Сообщений: 55
|
Нет, _.explode нужен, так как мне удобно работать с блоками в 3D. Насчёт обработчиков ошибок, точек отката, это всё понятно. Интерисует алгоритм и скорость работы. Если я установлю точку отката это повысит производительность?
__________________
Продумано до мелочей |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,853
|
А не надо работать с блоками в 3Д и при этом их разбивать Вот код получения vla-указателей на элементы, входящие в блок:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
конструктор Регистрация: 29.08.2007
Москва
Сообщений: 55
|
Ненадо ничего указывать, всё должно быть на автомате. А при таком способе возможно вычесть из 3D Панели блок, а сформировать список фурнитуры с признаком по слою? Повтаряю, нужен быстрый алгоритм. А чем так плох _.explode ? У меня это очень быстро происходит. Раз и всё взорвалось
__________________
Продумано до мелочей |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Тем и плох, что медленный, попробуй вместо него процедурку свою написать - сразу быстрее будет, ведь по сути command эмулирует юзера.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,853
|
А кто тебе мешает получать набор, и потом уже из набора (без разбития) получать указатели? Это раз. Второе. Выполнение _.explode приводит к образованию новых примитивов и выделению под них хендлов (количество которых хотя и велико, но не бесконечно).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
конструктор Регистрация: 29.08.2007
Москва
Сообщений: 55
|
Основную работу делает команда _.SUBTRACT потеря времени происходит в формирование копии набора через команду _.COPY По сравнению с этим всё остальное просто ерунда и ни стоит того, чтобы над этим думать.
__________________
Продумано до мелочей Последний раз редактировалось Скулачёв А., 22.08.2008 в 10:40. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,853
|
А, до меня только что "дошло". Я пас
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Очень странно, у меня работает, попробуй замени:
(ssadd (dxfcopy (ssname v2 j)) v5) на (ssadd (entmakex (cdr (entget (ssname v2 j)))) v5) а функцию dxfcopy убрать - хотя если и так не работает??? Вторым этапом - замена subtracta - тут боюсь не осилить будет, надо у знатоков vla спросить.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
конструктор Регистрация: 29.08.2007
Москва
Сообщений: 55
|
Цитата:
__________________
Продумано до мелочей |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
на твоей тумбе нет - я нетерпеливый, нарисовал из нескольких простых примитивов и блоков - отработало. Скорее всего на вход каким-то образом nil попадает - так что как вариант:
(if (ssname v2 j) (ssadd (entmakex (cdr (entget (ssname v2 j)))) v5) )
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
конструктор Регистрация: 29.08.2007
Москва
Сообщений: 55
|
Цитата:
__________________
Продумано до мелочей |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Проверь еще раз - может компьютер паралельно чем нибудь занят был, только что сравнивал
(repeat 1000 (entmakex (cdr (entget (entlast))))) и (repeat 1000 (command "_copy" (entlast) "" '(0 0) '(0 0))) разница почти в 1,5 раза в пользу первого. p.s. - не по поводу ускорения - а зачем ты блоки взрываешь а потом копируешь, может лучше наоборот сделать, тогда у тебя на выходе блоки останутся?
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
конструктор Регистрация: 29.08.2007
Москва
Сообщений: 55
|
Цитата:
__________________
Продумано до мелочей |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,853
|
Если у кого хватит терпения разобраться и попробовать добить:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Лисп =выноска+поле | Pave1 | LISP | 56 | 29.06.2021 12:18 |
Интересно где работают ЛИСП программисты? | dextron3 | LISP | 114 | 17.12.2017 13:53 |
Ищу библиотеку мебельной фурнитуры | dek | Поиск литературы, чертежей, моделей и прочих материалов | 0 | 07.08.2008 16:50 |
Лисп для копирования данных нескольких мтекстов по принципу расположения. | Red Nova | LISP | 14 | 18.06.2008 22:08 |
Нужен лисп (пронизыватель лайаутов) | dextron3 | LISP | 91 | 25.07.2007 07:37 |