|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Конвертировать множество обьекты в полилинии.
студент МГТУ им. Баумана
Москва
Регистрация: 16.04.2010
Сообщений: 6
|
||
Просмотров: 4843
|
|
||||
Цитата:
2 ACarin В подобных ситуациях не следует пытаться обработать всё сразу. Следует программно выделять маленькими партиями и обрабатывать их. Например в цикле обрабатывать одну колонку. После того, как колонку обработаете - сбрасываете выбранный набор, дабы он не рос как снежный ком и берётесь за следующую. Это будет долго, но, скорее всего, на данный алгоритм памяти вашему компьютеру должно хватить. Ради интереса я попробовал запустить команды расчленения и конвертации в полилинии сразу для всех объектов вашего массива - получилось, но при этом комп скушал все 6 Гигов памяти + на конвертацию и последующую отмену выбора ушло почти пол часа (пока я завтракал). Задать толщину линии равной 0.003 вы не сможете, т.к. у автокада существует чётко определённый набор допустимых толщин линий и 0.003 в него не входит. Если же у вас имеется массив, содержащий информацию о том, какие именно квадраты в исходном квадрате должны отсутствовать (как это сделано в вашей матрице), то тогда проще изначально создавать матрицу по совету Profan с последующим удалением лишних объектов (опять же - обрабатывая информацию порциями, дабы перестраховаться от случая нехватки памяти). И последнее - если не секрет, что это вообще такое? Просто "от балды" надуманная преподавателем проблема на тему "сферического коня в вакууме"? Последний раз редактировалось hwd, 21.04.2010 в 09:12. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Представленный код обработал весь массив в течении примерно 2 минут. AutoCAD 2008 Eng + SP1, Windows XP Pro 32 bit SP3, 2GB RAM.
Код:
Код не универсальный и многие вещи может обработать неверно (так, например, не учитывается вариант "поворота" квадрата). Для немировых систем координат не проверял.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
|
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
А как Вы пытались конвертировать? Там пол миллиона квадратиков - не такая и большая.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
В коде, который сделал я, есть некоторое количество принципиальных ошибок. Интересно, кто-нибудь их озвучит?
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Не вижу там ничего принципиального, кроме как излишне сложное получение точек вершин полилиний!
Вот так: Код:
![]() Кстати, entget дважды выполняется - один раз в функции получения координат, второй раз запоминается в переменной elist. Можно было б переделать, чтоб единожды выполнялось. А, вот еще что, если уж мы используем точку в WCS, то, по-хорошему, при построении полилинии ее надо как-то перевести обратно в СК полилинии (это которая mid). Но опять же, для представленного чертежа это не принципиально... Цитата:
![]() |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
ну и это тоже
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
У меня 2010 проснулся черезнесколько секунд - но вопрос не в этом - завист-то он из-за того что пытался ваше "выделение" отобразить - это действительно дольше нежили преобразовать их (как это на первый взгляд не странно - но прикинте сами скольеко нужно расчетов для преобразования, а сколько для отображения ручек на каждом). "тупое" ssget "_a" создает набор за секунды (вместе с переводом в список - оттуда я и узнал сколько элементов), а дальше простой mapcar (он императивный и память жрать не будет, хотя в нормальных реализациях лиспа (не авто лиспа) и рекурсивно все пройдет) справиться на ура.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Новые команды для работы с полилинией | VVA | Программирование | 647 | 18.09.2023 11:16 |
lisp: Длина по полилинии до точки | vosh | LISP | 19 | 15.07.2013 15:10 |
выноски к полилинии | gizmo_zx | Программирование | 6 | 01.03.2010 12:17 |
Выделение и удаление обьектов внутри замкнутой полилинии. Как? | DTwice | AutoCAD | 5 | 18.05.2009 14:31 |