|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Требуется помощь, дабы написать на лиспе программу проверяющую топологию
Регистрация: 19.08.2008
Сообщений: 52
|
||
Просмотров: 8008
|
|
||||
Проектировщик СС Регистрация: 24.06.2008
Минск
Сообщений: 134
![]() |
Последний раз редактировалось Donhuan, 15.10.2008 в 19:26. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Куда конкретней-то?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Немного подумав понял что ту же работу можно сделать быстрее в количество раз примерно равное количеству проверяемых элементов (то есть если эл-тов 10000, то и выполняться будет в 10000 раз бытрее):
Код:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Грубо говоря в первом варианте он проверял кажый элемент к каждому - то есть если 5 эл-тов то проверялось 1-2,1-3,1-4,1-5,2-3,2-4,2-5,3-4,3-5,4-5 - итого 10 проверок, во втором он проверяет каждый элемент по 1 разу. Сама проверка (1 цикл) более долгая, но их количество гораздо меньше.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Цитата:
1. Прямоугольники ведь не являются настоящими габаритами блоков. Есть блоки-окружности, есть - почти треугольники, есть разной сложной формы. При габаритах-прямоугольниках в одних случаях не найдутся слишком близко расположенные блоки-подписи, а в других случая пометятся реально не пересекающиеся блоки-подписи. (Для подписей прямоугольных габаритов, наверное, достаточно). Т.е. нужно находить и анализировать не прямоугольные, а реальные габариты блоков - линией, очерчивающей все входящие в блоки элементы. 2. Допуск на пересечение-наложение желательно дать возможность определять самому пользователю. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Есть сильное желание объединить эту тему и http://forum.dwg.ru/showthread.php?t=46571
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Цитата:
В дополнение к #12: 3. При повторных запусках хорошо бы удалять предыдущие габариты пересекающихся блоков-подписей. Последний раз редактировалось АлексЮстасу, 23.01.2011 в 23:45. |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Представь блок - три кружочка расположенные как углы равностороннего треугольника - а теперь скажи где проходят его "реальные габариты".
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
|
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Поверь мне на слово - термины "реальные габариты", "габариты близкие к реальным", "чтоб было красиво", "причесать" и пр. - для автокада далекие понятия. Попробуй описать задачу более конкретными выражениями - "пересекает", "совпадает" - только не торопись - семь раз отмерь...
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Цитата:
Я увлекся предложениями "из любви к искусству". Хорошо поставил ты вопрос - теперь мучаюсь. ![]() Шаг, которым можно обобщать габариты - 0.2 рабочих единицы. Найти самые удаленные от центра блока точки, и соединить? А прямоугольные габариты относительно чего определяются? |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
2. Самая удаленная точка может быть одна (если несколько - то только в случае что они равноудаленны от центра - какой смысл их соединять). 3. Берутся самые нижняя, верхняя, лева и правая точки - и строится прямоугольник высший У-левейший Х, высший У-правейший Х, нижайший У-правейший Х, нижайший У-левейший Х. Когда созреет идея (алгоритм) попробуй сам (или попроси коллегу) сделать пару манипуляций строго по ней - сразу станет понятно. p.s. пойми правильно - я ни грамма не прикалываюсь, просто общаемся мы немного на разных языках.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Цитата:
С учетом заданного допуска на пересечения. Причем, учитывает и штриховки (Hatch), оставшиеся без границ, и динамические блоки, и их атрибуты, полилинии с переменной шириной, и т.п. Судя по всему, габариты строятся всегда выпуклым контуром, что для данных блоков (их размеры сравнимы с размерами допусков) вполне приемлемо. Видно, что габариты упрощены ("обобщены") с некоторым шагом (здесь - примерно 0.3). Но как такой принцип построения габаритов описать правильными словами - я пока не придумал. |
||||
![]() |