|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Автоматическая трассировка по существующему скелету для Autocad (оптимизируем код общими усилиями)
Инженер СКС
г. Домодедово МО
Регистрация: 21.08.2009
Сообщений: 72
|
||
Просмотров: 23522
|
|
||||
Регистрация: 21.07.2008
Луцьк
Сообщений: 179
|
zamtmn, разница в цене между чистым акадом и мапом 10%, и почти все прибамбасы мапа пригодятся любому чертежнику
NEDIS, если есть возможность установить мап, то посмотри здесь http://www.theswamp.org/index.php?to...6521#msg366521 функция SolveLabyrinth ищет кратчайший маршрут по выбранным линиям |
|||
![]() |
|
||||
Инженер СКС Регистрация: 21.08.2009
г. Домодедово МО
Сообщений: 72
|
Так ... 13 просмтров архива и ниодного отголоска чего и как, у всех то работают команды? И как быстро?
Цитата:
Последний раз редактировалось NEDIS, 15.09.2010 в 15:11. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
![]() Чисто по коду, не вникая в алгоритмы. 1. В целом написано грамотно, работа большая проделана, интересная. Разделены функции и команды. Но: 2. Режут глаз многочисленные последовательные setq. "Хочется рвать и метать, рвать и метать!" (С). Это делает код плохочитаемым (на глаз "лиспера", а не "сиониста" или "басикиста"). Кроме того, последовательный вызов setq замедляет работу. Это каждый раз загрузка, разбор аргументов и прочее. В обычных программах это некритично, а в такой, да еще с многочисленными вложенными циклами, значительно влияет на скорость. Сравним Код:
Код:
3. Запросы с помощью get-функций надо защищать от прерывания или неправильного ввода. Если пользователь введет что-то не то, не так или не введет - будут ошибки и всё псу под хвост. Или коту. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
Код:
Эта конструкция "без потерь" меняется на Код:
p.s. дальше рассказывать не буду т.к. тут затрагиваються гораздо более "глубокие вещи" в целом, повторюсь, совсем не плохо. p.p.s У тебя прослеживаеться "неправильный" для лиспа императивный подход - работать с ПЕРЕМЕННОЙ в ЦИКЛЕ, оба понятия "аттавизм" в лиспе почитай что такое функциональное программирование, аргументы и рекурсия.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
![]() Жалко, куда то sir Alaspher пропал. Вот уж он любит код оптимизировать! И по алгоритму. Не вникал. Но матрицы у меня вызывают подозрение. Это "вузовский" подход. Но в практике часто оказывается, что и без них гораздо проще обойтись, особенно если обработку приходится самому писать. Особенно на LISP Вот мой любимый пример шедевра Лиспа: Цитата:
|
|||
![]() |
|
||||
Инженер СКС Регистрация: 21.08.2009
г. Домодедово МО
Сообщений: 72
|
Цитата:
Цитата:
![]() Цитата:
Суть идеи следующая: Создается набор примитивов, этот набор обрабатывается и создается несколько списков 1- всех вершин и 2 – «разрешения» узлов, где можно «сворачивать», далее все это компонуется в матрицу Флойда (сам его случайно в инете нашел), эта матрица решается и выдает результат из какой точки в какую можно попасть по кротчайшему пути если не возможно то элементу присваивается «NO» если возможно то присваивается длина трассы между этими точками. Требуется наставления как уменьшить время расчетов (или заменить алгоритм (какой) или его как-то оптимизировать(как?)). Задача сводится прочерчиванию полилиний от блока к блоку расставленных по этажам в разных местах по существующим линиям закладных устройств автоматически. Последний раз редактировалось NEDIS, 16.09.2010 в 13:06. |
|||
![]() |
|
||||
Даже с представленным чертежом не могу понять, что делают программы NEDIS-input-system-for-tracing и NEDIS-tracing-point-to-point
![]() Как работать с программой ясно, похоже, только автору... Что указывать при запросах программы? Я пару раз попробовал наугад что-то указывать, вводить единички и двоечки - один раз напрочь повесил автокад, во второй раз программа прервалась ошибкой. Помогли бы делу подробное руководство по эксплуатации (буквально по буковкам: на запрос такой-то указываем то-то и то-то, вводим в командную строку то-то и т.д.), а лучше пример работы с программой (видео или пошаговые скриншоты). Пока этого нет, разобираться с работой программы нужно долго и нудно, методом проб и ошибок - а на это нет времени. |
||||
![]() |
|
||||
Инженер СКС Регистрация: 21.08.2009
г. Домодедово МО
Сообщений: 72
|
Цитата:
Вечером сделаю видео ![]() P.S. NEDIS-input-system-for-tracing - рамка, необходимо выделить этаж после расчета выполняется трассировка командой NEDIS-tracing-point-to-point ввод 1 или 2 взависимости от предлогаемого условия трассировки. P.S.S. А с анализаторами ошибок я вообще не работал еще, мне бы вычисления ускорить. Последний раз редактировалось NEDIS, 16.09.2010 в 13:47. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Все примеры я привел в книге САПР на базе AutoCAD - как это делается. Для любого ввода делается специальная функция, которая работает абсолютно надежно. Например, если требуется ввод обязательной точки используется функция Код:
Код:
Код:
Но, для начала, при использовании get-функций необходимо приучиться использовать initget. |
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
>>Автоматическая трассировка по существующему скелету для Autocad (оптимизируем код общими усилиями)
оптимизировать тут нужно не код, а алгоритм. что NEDIS-input-system-for-tracing делает такого, что результата ее работы невозможно дождаться на исходных данных чуть сложнее чем в примере? |
|||
![]() |
|
||||
Инженер СКС Регистрация: 21.08.2009
г. Домодедово МО
Сообщений: 72
|
Цитата:
![]() ShaggyDoc В будующем учту, сейчас все таки больше меня мучает скорость решения матрицы. Последний раз редактировалось NEDIS, 16.09.2010 в 16:28. |
|||
![]() |
|
||||
Инженер СКС Регистрация: 21.08.2009
г. Домодедово МО
Сообщений: 72
|
|
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
А любая "тетка" безо всякой науки сразу отбросит заведомо ненужное и будет перебирать только несколько вариантов. Менять надо алгоритм. Забыть вообще про матрицу и действовать простыми методами. Вообще про "математические методы" забыть. PS. Несколько лет назад форумчанин Lexa разработал программу автоматической трассировки кабелей в 3D. Задавались фиксированные точки в пространстве ("хомуты") в виде окружностей, через центр которых должна была оптимально пройти трасса. И не просто точки отбирались, а трасса вычерчивалась, да еще с учетом радиуса гнутья кабеля и "запретных" мест. Всё работало достаточно точно и быстро. Никакой "высшей математики", только "арихметика Магницкого". Так как подобные задачи могут не иметь оптимального решения (просто длина маршрута не всегда главный показатель), во время работы её можно было "направить". Чтоб не искала путь из Иркутска на Камчатку через Бердичев. К сожалению, Lexa теперь Автокадом не занимается... |
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
>>Обсалютно точно - создает матрицу которая содержит информацию из какой точки (любой) в какую (любую) и через какие можно быстро попасть.
Такой подход будет оправдан если потом пользователь укажет очень много трасс (больше чем всего вариантов), в том числе повторяющихся. если будет затребовано всего несколько маршрутов - искать все варианты заранее пустая трата времени. Вообще, сама по себе задача поиска оптимального маршрута по различным критериям довольно проста. Есть сложность в описании "склета" и критериев - каждый раз выбирать примитивы для скелкта не удобно. также рисовать полилинии для соединений - тоже лишнее, они вобщемто ненужны вполне достаточно запоминать длину соединений и где оно проходит |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание форм и шрифтов для AutoCAD | Shoorup | AutoCAD | 6 | 25.01.2013 17:43 |
Информация по идентификационным кодам программ в сетевых лицензиях Autodesk | KSI | AutoCAD | 1 | 14.09.2009 15:59 |