Реклама i
Стань нашим партнером - зарабатывай с нами!
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Программное соединение конца одного отрезка с другим отрезком

Программное соединение конца одного отрезка с другим отрезком

Ответ
Поиск в этой теме
Непрочитано 07.11.2011, 10:25 #1
Программное соединение конца одного отрезка с другим отрезком
Frigate
 
КИП, АСУ ТП, слаботочка
 
Москва-Тюмень
Регистрация: 02.09.2010
Сообщений: 422

Приветствую всех

В процессе работы над своей программой по автоматизации плана трасс столкнулся с проблемой:

в плане с кабельными эстакадами (эстакады обозначаются отрезками на определенном слое) иногда при пересечении отрезков вот таким образом "Т" (конец одного отрезка лежит на другом отрезке) выясняется, что реального соединения нет, т.е. соединение было выполнено без включенных привязок. При максимальном увеличении чертежа видно, что есть просвет между конечной точкой одного отрезка и линией другого. Хотя это расстояние настолько незначительно, что линейка в панели "сведения" показывает расстояние 0,000. Но команда автолиспа inters не находит соединения отрезков.
Теперь сам вопрос - нужен алгоритм, подсказка или может часть кода - все, что поможет "довести" отрезок до точки пересечения.
А если нет пересечения, то команда формирования матрицы для автотрассировки не сможет сработать корректно.

Первое, что приходит на ум - использовать функцию inters c lдоп. аргументом

Код:
[Выделить все]
(inters pt1 pt2 pt3 pt4 nil)
ТОгда будет определена точка пересечения прямых, а не отрезков. Затем с некоторым допуском сравнивать точки концов отрезков с полученной точкой пересечения. Если какая-то конточка двух отрезков совпадает (equal) с точякеой пересечения в пределах допуска, то приравниваем ее точке пересечения, удаляем исходный отрезок и рисуем новый, с уже исправленными координатами конточки.

МОжет кто-нибудь предложит более простой вариант? Даже может есть стандартная команда автокада для "доведения" конца одного отрезка до пересечения с другим? Команду "удлинить _extend" не предлагать - сотни линий таким способом соединять нереально )))
Просмотров: 3762
 
Непрочитано 07.11.2011, 10:31
#2
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Да напиши свой inters с допуском.
з.ы. Можем конкурс забацать - у кого красивей получится.
з.з.ы Мой вариант таков:
Код:
[Выделить все]
 (defun inters1(pt1 pt2 pt3 pt4 dpu)
  (apply 'inters
         (mapcar '(lambda (ptf ptt)
                    (polar ptf (angle ptt ptf) dpu))
                 (list pt1 pt2 pt3 pt4)
                 (list pt2 pt1 pt4 pt3))))
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 07.11.2011 в 10:49.
Дима_ вне форума  
 
Автор темы   Непрочитано 07.11.2011, 11:11
#3
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422


Дима_,

большое спасибо

очень рационально и емко

все тему можно закрывать

Последний раз редактировалось Frigate, 07.11.2011 в 11:24.
Frigate вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Программное соединение конца одного отрезка с другим отрезком

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить координаты начала и конца отрезка, координаты центра окружности? voverrr Программирование 6 20.01.2011 20:10
Несущие стены или колонны? Приимущества одного перед другим? Wlady Конструкции зданий и сооружений 23 17.01.2009 07:26
NanoСПДС gest Другие CAD системы 401 15.07.2008 14:50