LISP. Как определить внешнюю область полилинии?
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Как определить внешнюю область полилинии?

LISP. Как определить внешнюю область полилинии?

Ответ
Поиск в этой теме
Непрочитано 31.07.2012, 16:09 #1
LISP. Как определить внешнюю область полилинии?
молодой человек
 
Регистрация: 14.11.2007
Сообщений: 159

Это нужно для команды _offset. Чтобы программа сама определяла точку наружной области полилинии.
И строила подобную полилинию во внешней области.

Миниатюры
Нажмите на изображение для увеличения
Название: Снимок.JPG
Просмотров: 83
Размер:	34.0 Кб
ID:	84741  

Просмотров: 2331
 
Непрочитано 31.07.2012, 16:23
1 | #2
ытя


 
Регистрация: 23.09.2005
СПб
Сообщений: 428


Построй обе, сравни длину и удали корткую.
ытя вне форума  
 
Автор темы   Непрочитано 31.07.2012, 16:44
#3
молодой человек


 
Регистрация: 14.11.2007
Сообщений: 159


В общем-то я так и делаю, просто думал есть какое-то более красивое решение.
молодой человек вне форума  
 
Непрочитано 31.07.2012, 16:49
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Есть, но оно не универсальное.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 31.07.2012, 22:57
#5
молодой человек


 
Регистрация: 14.11.2007
Сообщений: 159


Позабыл совсем векторную алгебру( Как найти координаты точек по разные стороны полилинии?
Помню только уравнение прямой и нормальный вектор этой прямой. Дальше ступор(((
молодой человек вне форума  
 
Непрочитано 31.07.2012, 23:27
#6
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Если полилиния в форме буквы s, то с какой стороны у нее внешняя?
gomer вне форума  
 
Автор темы   Непрочитано 31.07.2012, 23:34
#7
молодой человек


 
Регистрация: 14.11.2007
Сообщений: 159


s- гарантированно не будет. считаем, что полилиния состоит из 2-х отрезков
молодой человек вне форума  
 
Непрочитано 01.08.2012, 00:27
1 | #8
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от молодой человек Посмотреть сообщение
s- гарантированно не будет. считаем, что полилиния состоит из 2-х отрезков
Для полилинии состоящей из двух отрезков нет понятия внутренний и внешней области. Понятие внутренней и внешней есть у замкнутой несамопересекающейся полилинии. Всё остальное от лукавого...
Александр Ривилис вне форума  
 
Непрочитано 01.08.2012, 08:49
1 | #9
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


Если
Цитата:
Сообщение от молодой человек Посмотреть сообщение
s- гарантированно не будет. считаем, что полилиния состоит из 2-х отрезков
то можно, например так
Код:
[Выделить все]
 
;p1 - первая точка полилинии
;p2 - вторая точка полилинии
(polar p1 (angle p1 p2) (* 1.5 (distance p1 p2))) - точка "наружной" области полилинии.
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 01.08.2012, 12:19
#10
5hev

roads
 
Регистрация: 22.12.2010
msk
Сообщений: 121
<phrase 1= Отправить сообщение для 5hev с помощью Skype™


В свое время делал проверку на error-meggage при vla-offset сначала с положительным заведомо большим значением, и если её не следовало, то значит, все верно - внешняя сторона. Иначе нужно отрицательное значение.
5hev вне форума  
 
Непрочитано 01.08.2012, 12:34
#11
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


5hev[ru], это означает создание новых примитивов. Не всегда гуд.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.08.2012, 12:37
#12
5hev

roads
 
Регистрация: 22.12.2010
msk
Сообщений: 121
<phrase 1= Отправить сообщение для 5hev с помощью Skype™


Кулик Алексей aka kpblc, согласен. К тому же, в общем случае угол излома полилинии может быть настолько мал, что пороговое значение по моему варианту станет огромным или вообще недостижимым
Однако, с замкнутыми контурами, как у меня и было, работало просто на ура.
5hev вне форума  
 
Автор темы   Непрочитано 01.08.2012, 15:01
#13
молодой человек


 
Регистрация: 14.11.2007
Сообщений: 159


В общем родился такой лиспик:

Код:
[Выделить все]
 ;;;(kos-pline-offset-max (car(entsel)) 30)
;;;Нахождение максимальной длины  полилинии подобной входной полилинии
(defun kos-pline-offset-max (en dist /  pln1 pln2) 
  (vla-Offset (vlax-ename->vla-object en) (* dist -1))
  (setq pln1 (entlast))
  (vla-Offset (vlax-ename->vla-object en) dist)
  (setq pln2 (entlast))
  (if (> (vla-get-Length (vlax-ename->vla-object pln1)) (vla-get-Length (vlax-ename->vla-object pln2)))
    (progn
      (ENTDEL pln2)
      pln1
    )
    (progn
      (ENTDEL pln1)
      pln2
    )
  )
)
Функция vla-Offset значительно проще, чем стандартная. Спасибо 5hev[ru]
молодой человек вне форума  
 
Непрочитано 01.08.2012, 15:04
#14
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


А теперь заблокируй текущий слой и слой примитива. Выполни снова лиспик. Или попытайся обработать примитив внутри блока / внешней ссылки.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Как определить внешнюю область полилинии?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Простановка площадей внутри полилинии. Klo LISP 26 14.12.2018 17:43
lisp: Длина по полилинии до точки vosh LISP 19 15.07.2013 15:10
Определить путь к файлу LISP Leo_fmf LISP 3 27.01.2012 10:36
LISP. Как найти точку пересечения полилинии и сплайна или другой полилинии? LastGraff LISP 11 09.09.2011 13:23
LISP. Как определить вставку блока с xclip? Apelsinov LISP 4 18.02.2009 14:03