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

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

Команда inters или подобная

Ответ
Поиск в этой теме
Непрочитано 09.09.2010, 15:31 #1
Команда inters или подобная
Zaghim
 
Регистрация: 01.07.2010
Сообщений: 521

Есть такая штука, как inters, находит точку пересечения двух линий, НО у этих двух линий нужно знать точки начала и конца, а как найти точку пересечения, если я пущу линию из точки и буду знать точки начала и конца только одного отрезка...а какой она пересечет второй понятия не имею, но хочу узнать. Как быть? Помогите!


Ну хоть скажите можно так сделать или нет?

Последний раз редактировалось Zaghim, 09.09.2010 в 16:14.
Просмотров: 8009
 
Непрочитано 09.09.2010, 16:47
#2
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Что значит "пущу"? Начерчу на экране?
Profan вне форума  
 
Непрочитано 09.09.2010, 16:58
#3
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,917
<phrase 1=


Должно быть включено отслеживание (OTRACK), и включены привязки Endpoint, остальное думаю сами догадаетесь.
ps в процессе нельзя менять масштаб.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Автор темы   Непрочитано 09.09.2010, 21:26
#4
Zaghim


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


А можно пример в студию...?
Пущу значит сделаю (polar точка1 угол1 1000000000)
Поставил я точку гетпоинтом, дальше пустил линию на 1000000 вверх (линия пересечения может быть где угодно) и как узнать, где она встретит эту вторую линию???
Zaghim вне форума  
 
Непрочитано 09.09.2010, 21:48
#5
Кулик Алексей aka kpblc
Moderator

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


Да бога ради:
Код:
[Выделить все]
(defun test (ent base ang make / res)
;;; ent -> указатель на отрезок
;;; base -> точка, откуда надо брать
;;; ang -> угол поворота
;;; make -> ставить точку на пересечении (t) или нет (nil)
  ;|
* Пример вызова
(test (car (entsel)) (setq pt (getpoint "\nBase point : ")) (getangle pt "\nAngle : ") t)
|;
  (if (and ent
           (= (type ent) 'ename)
           (= (cdr (assoc 0 (setq ent (entget ent)))) "LINE")
           base
           ang
           ) ;_ end of and
    (progn
      (setq res (inters (cdr (assoc 10 ent)) (cdr (assoc 11 ent)) base (polar base ang 10.) nil))
      (if (and res make)
        (entmakex (list (cons 0 "POINT")
                        (cons 10 res)
                        ) ;_ end of list
                  ) ;_ end of entmakex
        ) ;_ end of if
      ) ;_ end of progn
    ) ;_ end of if
  res
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 10.09.2010, 09:45
#6
Zaghim


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


У меня не работает, пишет мало аргументов(((
Можно это оформить как кусочек уже внутри когда, где мне уже известно: начальная точка, и все углы
Zaghim вне форума  
 
Непрочитано 10.09.2010, 09:53
#7
Кулик Алексей aka kpblc
Moderator

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


Zaghim, я же привел пример вызова! Нарисуй отрезок, потом вызывай
Код:
[Выделить все]
(test (car (entsel)) (setq pt (getpoint "\nBase point : ")) (getangle pt "\nAngle : ") t)
Будет тебе пример.
P.S. Код проверял только в мировой системе координат и только в режиме "вид сверху".
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 10.09.2010, 10:03
#8
Zaghim


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


В общем не так ты все понял.
Во-первых ты эту линию получаешь вначале тыкая на нее...а я не должен тыкать, я должен тыкнуть только один раз - указав базовую точку, а не объект.
Во-вторых, если ты укажешь полилинию - работать не будет...а нужно в основном для работы с полилинией...
Zaghim вне форума  
 
Непрочитано 10.09.2010, 10:10
#9
Кулик Алексей aka kpblc
Moderator

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


Во-первых, что просил, то и получил:
Цитата:
Сообщение от Zaghim Посмотреть сообщение
я пущу линию из точки и буду знать точки начала и конца только одного отрезка...а какой она пересечет второй понятия не имею
Во-вторых, проанализируй код - там всего одна ключевая строка.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 10.09.2010, 10:21
#10
Zaghim


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


По-моему в заголовке темы все понятно написано...
А что там анализировать...? Есть у тебя базовая точка, и точка, которую ты отложил поларом...а вторые две точки получил ентгетом и выдрал координаты... Ну и следом интерс по 4 точкам....

А с привязками хорошая идея, но не работает(((

Последний раз редактировалось Zaghim, 10.09.2010 в 10:30.
Zaghim вне форума  
 
Непрочитано 10.09.2010, 10:40
#11
Дима_

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


Цитата:
Сообщение от Zaghim Посмотреть сообщение
По-моему в заголовке темы все понятно написано...
Offtop: Лично мне нечетра не понятно. Хотя с автокадом, да и с лиспом, я по крайней мере знаком.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 10.09.2010, 10:58
#12
CB

Конструирование в области нефтеразведки
 
Регистрация: 10.02.2006
Гомель
Сообщений: 321


Лично мне не понятно тоже...
Цитата:
вторые две точки получил ентгетом
Каким образом получил указатель на имя линии/плинии, из которого выдрал координаты?
Цитата:
нужно в основном для работы с полилинией
Про это нигде не было сказано...
CB вне форума  
 
Автор темы   Непрочитано 10.09.2010, 11:01
#13
Zaghim


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


Короче говоря нужен какой-то механизм, который будет работать на подобие команды inters. Inters не подходит тем, что в нем нужно знать координаты начала и конца двух отрезков. А я знаю только одного - точку ставлю тыкая на экран - начальная точка отрезка 1, точка 2 отрезка 1 определяю polar'ом. Мне нужно найти пересечение этого отрезка с другим, который был ранее нарисован на чертеже, его координаты я НЕ МОГУ получить entget'ом тыкая по этому отрезку. Сейчас думаю понятно...

Нужно найти точку пересечения двух отрезков (координату), зная координаты только одного отрезка.

Последний раз редактировалось Zaghim, 10.09.2010 в 11:06.
Zaghim вне форума  
 
Непрочитано 10.09.2010, 11:09
#14
CB

Конструирование в области нефтеразведки
 
Регистрация: 10.02.2006
Гомель
Сообщений: 321


Цитата:
который был ранее нарисован на чертеже
А если их там несколько - как определить с каким нужно искать пересечение?
CB вне форума  
 
Автор темы   Непрочитано 10.09.2010, 11:18
#15
Zaghim


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


Нужно узнать самый первый с которым столкнется...
Zaghim вне форума  
 
Непрочитано 10.09.2010, 12:12
#16
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Offtop: К 15 посту более-менее понятно становится, чего хочется автору
Do$ вне форума  
 
Автор темы   Непрочитано 10.09.2010, 12:31
#17
Zaghim


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


Осталось только понять, как это реализовать!

Вообще вся эта штуковина нужна для того, что бы:
1) узнать расстояние от точки 1 до отрезка 2.
2) вытащить некоторые свойства отрезка 2.

Последний раз редактировалось Zaghim, 10.09.2010 в 12:40.
Zaghim вне форума  
 
Непрочитано 10.09.2010, 12:38
1 | #18
TararykovDG

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


Zaghim, а если по указанным точкам для первого отрезка построить примитив (тот же "LINE"), а потом _extend (удлинить) его до всех примитивов чертежа, то он по идеи должен сам удлиниться до ближайшего в нужном направлении, вот точка пересечени, или нет?
TararykovDG вне форума  
 
Автор темы   Непрочитано 10.09.2010, 12:41
#19
Zaghim


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


TararykovDG, вроде как ничего идейка, щас попробую))) Спасибо за наводку.
Нет, не подходит так. Если стоит маленький отрезок между двумя линиями, то, что бы сделать Extend нужно выбрать этот маленький отрезок и две соседние линии, а выбрать я их не могу))

Последний раз редактировалось Zaghim, 10.09.2010 в 12:50.
Zaghim вне форума  
 
Непрочитано 10.09.2010, 13:02
#20
TararykovDG

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


Zaghim, Зачем что-то выбирать
Пусть
pnt0 - 1-я точка известного отрезка
pnt1 - 2-я точка известного отрезка
eps = 0.1 (или еще меньше)
Код:
[Выделить все]
 (vl-cmdf "_.extend" "_All" "" "_Fence" pnt1 (polar pnt1 (angle pnt0 pnt1) eps) "" "")
Обязательно отключить привязку
TararykovDG вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Команда inters или подобная



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 272 06.06.2021 23:12
Печать из модели по выбору объекта zenon Программирование 192 04.05.2017 09:41
Преобразование полей в текст YuraVel AutoCAD 17 14.04.2015 14:30
ACAD-2002. Глюк начальной загрузки ЛИСП? ===AAA=== LISP 27 31.08.2005 07:58