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

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

Построение касательной к двум окружностям

Ответ
Поиск в этой теме
Непрочитано 22.08.2006, 04:39 #1
Построение касательной к двум окружностям
Никита В.
 
CAD Operator
 
Samara-Gorodok
Регистрация: 01.11.2005
Сообщений: 389

Задача в следующем: имеется 2 окружности разного диаметра, произвольно расположенные в пространстве, надо провести линию являющуюся касательной к обеим окружностям.

Метод последовательных приближений не предлагать.

П.С. Задача должна быть решена средствами акада в т.ч. и посредством лиспа.
__________________
АвтоКАД это не только электронный кульман,
Но и великий ГЕМОР
Просмотров: 52941
 
Непрочитано 22.08.2006, 06:01
1 | #2
Profan


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


В случае расположения окружностей в одной плоскости можно использовать для начальной и конечной точек отрезка объектную привязку "_tan" ("кас"). Возможность проведения касательной к двум окружностям, произвольно расположенных в ПРОСТРАНСТВЕ, вызывает сомнение.
Profan вне форума  
 
Непрочитано 22.08.2006, 06:21
1 | #3
nmr


 
Регистрация: 22.08.2006
Тартария
Сообщений: 85


1. Имеем две окружности: малая О1, большая О2.
2. Строим отрезок С, соединяющий центры О1,О2.
3. Точку пересечения С и О2 именуем Т1.
4. Откладываем на отрезке С от точки Т1 к центру О2 величину радиуса О1. Это точка Т2.
5. Из центра О2 строим окр. через Т2. Это окружность О3.
6. Из центра О1 проводим касательную K к О2. Точка пересечения К и О3 это Т3.
7. Прводим луч Л из центра О2 и точку Т3. Точка пересечения данного луча с О2 это Т4.
8. Копируем К в точку Т4. Последний примитив и будет касательной к двум окружностям.



проверка правильности построений:
1. Строим перпиндикуляры к отрезку С в его концах.
2. Измеряем углы:
- между С и К;
- между Л и перпиндикуляром к отр. С,
убеждаемся, что они равны.
nmr вне форума  
 
Непрочитано 22.08.2006, 07:34
#4
Святослав

котлостроение
 
Регистрация: 15.04.2005
Екатеринбург
Сообщений: 22
<phrase 1=


Поскольку окружность это плоская фигура, то и касательная должна быть в той же плоскости. т.о. провести касательную к окружностям в разных плоскостях невозможно.
Можно провести касательную к 2 шарам (ну или сферам)
все остальное как написал Profan
Святослав вне форума  
 
Непрочитано 22.08.2006, 10:15
#5
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 4,938


Цитата:
Сообщение от nmr
1. Имеем две окружности: малая О1, большая О2.
2. Строим отрезок С, соединяющий центры О1,О2.
3. Точку пересечения С и О2 именуем Т1.
4. Откладываем на отрезке С от точки Т1 к центру О2 величину радиуса О1. Это точка Т2.
5. Из центра О2 строим окр. через Т2. Это окружность О3.
6. Из центра О1 проводим касательную K к О2. Точка пересечения К и О3 это Т3.
7. Прводим луч Л из центра О2 и точку Т3. Точка пересечения данного луча с О2 это Т4.
8. Копируем К в точку Т4. Последний примитив и будет касательной к двум окружностям.

проверка правильности построений:
1. Строим перпиндикуляры к отрезку С в его концах.
2. Измеряем углы:
- между С и К;
- между Л и перпиндикуляром к отр. С,
убеждаемся, что они равны.
>nmr
Ну ты даешь :P См. что Profan написал, касательная строится в пару щелчков мыши.
asys на форуме  
 
Непрочитано 22.08.2006, 10:34
#6
nmr


 
Регистрация: 22.08.2006
Тартария
Сообщений: 85


это чтоб жизнь медом не казалась
nmr вне форума  
 
Автор темы   Непрочитано 22.08.2006, 10:42
#7
Никита В.

CAD Operator
 
Регистрация: 01.11.2005
Samara-Gorodok
Сообщений: 389


>Asys
Ну ващето nmr все правильно написал (спасибо), но уж очень сложно...........

Тему можно считать закрытой.
__________________
АвтоКАД это не только электронный кульман,
Но и великий ГЕМОР
Никита В. вне форума  
 
Непрочитано 22.08.2006, 13:09
#8
Profan


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


Вот тут сразу и видна разница между кульманом и AutoCAD'ом. На кульмане строить касательную к окружностям - гемор, а в AutoCAD'е - запросто.
Profan вне форума  
 
Непрочитано 22.08.2006, 13:14
#9
nmr


 
Регистрация: 22.08.2006
Тартария
Сообщений: 85


да
nmr вне форума  
 
Непрочитано 22.08.2006, 13:19 Re: Построение касательной к двум окружностям
#10
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,210


Цитата:
Сообщение от Никита В.
Задача должна быть решена средствами акада в т.ч. и посредством лиспа.
Если только средствами Акада - то достаточно _TAN
Если лиспом - то все равно придется высчитывать ориентировочные точки касательных для _TAN. Иначе результаты могут быть непредсказуемы.
А в таком случае проще их (точки) сразу рассчитать лиспом математически. И обойтись без _TAN.
Pilot вне форума  
 
Непрочитано 15.11.2006, 07:23
#11
Pool


 
Регистрация: 18.10.2005
Москва
Сообщений: 60
Отправить сообщение для Pool с помощью Skype™


Вернусь к касательным.
А есть ли возможность построить касательную от окружности просто в произвольно выбранной точке на этой окружности? Имею ввиду - без построения линии от этой точки к центру этой окружности.
И тот же вопрос о перпендикуляре.
Т.е., как построить перпендикуляр ИЗ произвольной точки уже начерченной прямой.

..........................................Павел.
Pool вне форума  
 
Непрочитано 15.11.2006, 08:55 Re: Построение касательной к двум окружностям
#12
Serge Krasnikov

Конструктор, инженер-механик
 
Регистрация: 03.10.2003
Новосибирск
Сообщений: 5,790


Цитата:
Сообщение от Pilot
Цитата:
Сообщение от Никита В.
Задача должна быть решена средствами акада в т.ч. и посредством лиспа.
Если только средствами Акада - то достаточно _TAN
Если лиспом - то все равно придется высчитывать ориентировочные точки касательных для _TAN. Иначе результаты могут быть непредсказуемы.
А в таком случае проще их (точки) сразу рассчитать лиспом математически. И обойтись без _TAN.
Так то оно так, токо вот беда у двух окружностей может быть четыре варианта построения касательных, как ни крути все равно придется выбирать, а если выбирать варианты самому то какой смысл делать лисп?
Serge Krasnikov вне форума  
 
Непрочитано 15.11.2006, 09:50
1 | #13
ВоваН

Дороги, Конструкции, Тоннели
 
Регистрация: 20.05.2004
Сочи
Сообщений: 102
<phrase 1=


РОВНО ЗА 7 ЩЕЛЧКОВ МЫШИ!!!!

1 Нажимаем чертить линию
2 При нажатом CTRL щелкаем правой кнопкой мыши
3 Щелкаем КАСАТЕЛЬНАЯ
4 Щелкаем на 1-й окружности
5 см щелчек 2
6 см щелчек 3
7 Щелкаем на 2-й окружности

Время 10 сек. максимум!!!
ВоваН вне форума  
 
Непрочитано 15.11.2006, 09:58
#14
Владимир Егорьев


 
Сообщений: n/a


Цитата:
Сообщение от ВоваН
РОВНО ЗА 7 ЩЕЛЧКОВ МЫШИ!!!!

1 Нажимаем чертить линию
2 При нажатом CTRL щелкаем правой кнопкой мыши
3 Щелкаем КАСАТЕЛЬНАЯ
4 Щелкаем на 1-й окружности
5 см щелчек 2
6 см щелчек 3
7 Щелкаем на 2-й окружности

Время 10 сек. максимум!!!
Тоже самое что и просто привязка к окружности (такая же точность).Этот вариант не проходит.
Если я правильно понял автора?!!
 
 
Непрочитано 15.11.2006, 14:21
#15
Pool


 
Регистрация: 18.10.2005
Москва
Сообщений: 60
Отправить сообщение для Pool с помощью Skype™


Цитата:
Сообщение от Владимир Егорьев
...Этот вариант не проходит.
Если я правильно понял автора?!!
Именно так.
Нет никаких вторых точек и вторых окружностей.
Нужна просто касательная (неважна её длина и направление от точки на окружности).
В итоге, она предназначена как вспомогательная для определения углов между ней (касательной) и другими линиями.

И по перпендикуляру ОТ прямой - есть способ построения?

...............................................Павел.
Pool вне форума  
 
Непрочитано 15.11.2006, 14:34
#16
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,064


Ещё касательную можно построить след. образом

Команда _xline , указать привязку Tangent (касательная), указать окружность, к которой строится касательная. Далее, обратите внимание, мы при помощи мышки можем перемещать эту прямую, которая обкатывается по окружности
Хмурый вне форума  
 
Непрочитано 15.11.2006, 15:08
#17
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,064


Так-же строится перпендикуляр

_xline, привязка Perpendicular (Перпендикуляр), выбираем прямой участок того, к чему хотим приперпендикуляриться, и , двигая мышкой, выбираем место расположения перепендикуляра
Хмурый вне форума  
 
Непрочитано 15.11.2006, 16:06
#18
Pool


 
Регистрация: 18.10.2005
Москва
Сообщений: 60
Отправить сообщение для Pool с помощью Skype™


Хмурый,
все мои потуги сделать касательную, ну ни к чему не приводят.

Заготовил две произвольные окружности, которые пересекаются между собой (соответственно, в двух точках).
Пытаюсь в одной из точек их пересечения, указанным Вами способом, построить касательную - сначала к одной из них.

Мои действия.

1. Даю команду _xline.
2. Указываю привязку Tangent (касательная)
3. Указываю окружность, к которой строится касательная. Левый щелчёк. Просит точку.
4. Указываю интересующую меня - точку пересечения окружностей (или произвольную точку на окружности). Результат: "Specify through point: *Invalid*"

Аналогично, если указываю точку произвольно, вне (снаружи) окружности (т.е., произвольно щёлкаю левой - так же пишет: " Specify through point: *Invalid*"
А дальше - ничего никуда не обкатывается.
И ничего не строится.

С перпендикуляром всё нормально. Спасибо.

..................................Павел.
Pool вне форума  
 
Непрочитано 15.11.2006, 16:17
#19
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,064


Нужно просто мышкой подвигать вне окружности после п. 3
[ATTACH]1163596619.jpg[/ATTACH]

Перекрестье - вне окружности
Хмурый вне форума  
 
Непрочитано 15.11.2006, 16:26
#20
Pool


 
Регистрация: 18.10.2005
Москва
Сообщений: 60
Отправить сообщение для Pool с помощью Skype™


У меня 2002.
Ничего не строится. Спишу всё не глюк.
После обозначения Tangent (касательной) и вывода курсора вне окружности - никаких _xline посто нет, передвигать нечего.
Вариантов не осталось.

....................................Павел.
Pool вне форума  
 
Непрочитано 15.11.2006, 16:40
#21
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,064


Попробуйте касательную к сплайну
Может будет понятней?

Постройте сплайн, например в виде S
Далее _xline, включение привязки Tangent, указание сплайна .

Водите мышкой. Должно быть видно перекатывание
Хмурый вне форума  
 
Непрочитано 15.11.2006, 17:49
#22
ki

Constructor
 
Регистрация: 28.09.2005
SPb
Сообщений: 695
<phrase 1= Отправить сообщение для ki с помощью Skype™


Привет.

Задача при помощи черчения решается следующим образом:
- рисуется линия через центра окружностей;
- через центра окружностей перепендикулярно предыд. линии рисуются еще две линии;
- откладываются точки на этих линиях, одинаково лежащие от пересечения с окружностью (можно и без этого шага, но так нагляднее);
- через эти точки проводится линия пересекающая обе окружности (т.е. при ее обрезании окружностями, получается две хорды);
- строятся линии проходящие через центр окружности и середину хорды (для каждой окр.);
- точки пересечения этих линий с окружностями и есть точки касательной к обеим окружностям.

По этому алгоритму можно написать лиспик и все будет происходить в авто режиме. В лиспе можно опустить шаг, про который я сказал, что он не обязателен. Просто при проведении линии через точки пересечения перпендикуляров уже можно получить хорды, но они будут маленькие и их трудно было показать на прилагающемся рисунке.
[ATTACH]1163602143.jpg[/ATTACH]
__________________
Для ухода за пожилым программистом требуется приятная женщина, говорящая на FОRTRАN, BАSIС и С++
ki вне форума  
 
Непрочитано 15.11.2006, 17:55
#23
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,064


>ki

Всё уже давно решено самим AutoDesk'ом
См. сообщение №2 от Profan'а в этой теме
Хмурый вне форума  
 
Непрочитано 15.11.2006, 18:06
#24
Pool


 
Регистрация: 18.10.2005
Москва
Сообщений: 60
Отправить сообщение для Pool с помощью Skype™


К сплайну всё строится. Наблюдаю "обкатку" и могу зафиксировать _xline.
Но. Опять-таки, обозначаю на сплайне произвольную точку. Мои попытки провести касательную в этой точке - безуспешны. Линия на S-образном сплайне проводится ЧЕРЕЗ эту точку и по касательной к сплайну - в другом месте.
Если с окружностью, хоть и неудобно, но можно решить вопрос построением радиальной линии + перпендикуляр к ней, то как же быть со сплайном - совершенно не ясно.

.............................................Павел.
Pool вне форума  
 
Непрочитано 15.11.2006, 18:14
#25
ki

Constructor
 
Регистрация: 28.09.2005
SPb
Сообщений: 695
<phrase 1= Отправить сообщение для ki с помощью Skype™


Цитата:
Сообщение от Хмурый
>ki

Всё уже давно решено самим AutoDesk'ом
См. сообщение №2 от Profan'а в этой теме
Век живи - век учись! Гы.
Я отрезками редко пользуюсь и как-то о них не подумал. Спасибо. Ты для меня открыл еще один плюсик этой команды.
__________________
Для ухода за пожилым программистом требуется приятная женщина, говорящая на FОRTRАN, BАSIС и С++
ki вне форума  
 
Непрочитано 15.11.2006, 18:49
#26
Pool


 
Регистрация: 18.10.2005
Москва
Сообщений: 60
Отправить сообщение для Pool с помощью Skype™


Цитата:
Сообщение от ki
Привет.
Задача при помощи черчения решается следующим образом...
Чтой-то засомневался я в правильности Вашего алгоритма.
Почертил, подумал... Алгоритмик-то вышел "битый", не рабочий, не даёт он двух касательных.
Да, расстояния А равны, но, построив по ним линию, расстояния от их середин до окружностей - разные.

............................Павел.
Pool вне форума  
 
Непрочитано 15.11.2006, 19:11
#27
Pool


 
Регистрация: 18.10.2005
Москва
Сообщений: 60
Отправить сообщение для Pool с помощью Skype™


Правильный алгоритм - у nmr.
И то, вкралась опечатка.
Цитата:
Сообщение от nmr писал
...
6. Из центра О1 проводим касательную K к О2. Точка пересечения К и О3 это Т3.
Указанная линия не пересекает ОЗ.
Судя по всему,
Цитата:
Сообщение от следует читать
...
6. Из центра О1 проводим касательную K к О3. Точка пересечения К и О3 это Т3.
........................................Павел.
Pool вне форума  
 
Непрочитано 15.11.2006, 22:35
#28
Pool


 
Регистрация: 18.10.2005
Москва
Сообщений: 60
Отправить сообщение для Pool с помощью Skype™


Итак, в сухом остатке остались непонятыми два вопроса.
Есть ли возможность делать такое вообще??

1. Окружность.
Построение касательной из произвольной точки на окружности. Без построения радиальной линии.

2. Сплайн.
Построение касательной из произвольной точки на сплайне. Любым способом.

.....................................Павел.
Pool вне форума  
 
Непрочитано 16.11.2006, 03:19
#29
Vlad®

розмысл
 
Регистрация: 12.06.2005
Иркутск
Сообщений: 1,968
<phrase 1=


В Компасе есть такая кнопочка - построение касательной к 2 окружностиям. Строит 4 касательные.
[ATTACH]1163636381.gif[/ATTACH]
Vlad® вне форума  
 
Непрочитано 16.11.2006, 03:48
#30
Pool


 
Регистрация: 18.10.2005
Москва
Сообщений: 60
Отправить сообщение для Pool с помощью Skype™


Речь о другом.
Из любой точки, расположенной на кривой, можно провести единственную касательную к этой кривой.
Саму эту точку определяю и задаю я!!!

Как её построить в акаде?
По окружности - без вспомогательных линий, а в сплайне - как угодно.
Pool вне форума  
 
Непрочитано 16.11.2006, 06:21
#31
Serge Krasnikov

Конструктор, инженер-механик
 
Регистрация: 03.10.2003
Новосибирск
Сообщений: 5,790


Экий спор возник из ничаГо
Цитата:
Сообщение от Pool
Итак, в сухом остатке остались непонятыми два вопроса.
Есть ли возможность делать такое вообще??
Дык вродебА как делают
Цитата:
1. Окружность.
Построение касательной из произвольной точки на окружности. Без построения радиальной линии.
Эта возможность была в акадах более старшего поколения. 2.62 однако не помню, а вот в 10 точно была
Цитата:
2. Сплайн.
Построение касательной из произвольной точки на сплайне. Любым способом.
Да. Ведешь отрезок из точки и на касательную к сплайну, ну или бесконечную xline

ЗЫ. Да кстати напрасно ты писал, что xline в 2002 не работает
Serge Krasnikov вне форума  
 
Непрочитано 16.11.2006, 08:25 Построение касательной к двум окружностям
#32
VPUD56

архитектор
 
Регистрация: 23.05.2005
Сообщений: 123


Может я чего не понимаю. В чем проблема.
Выбираешь рисование бесконечной линией (не отрезок) Выбираешь привязку TAN указываешь на окружность, линия вращается вокруг окружности, опять выбираешь tan и указываешь на другую окружность. Она фиксируется в единственных точках.
__________________
vpud
VPUD56 вне форума  
 
Непрочитано 16.11.2006, 08:26
#33
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,783


Блин Хмурый уже все объяснил, че не понятно то. :twisted:
__________________
Шаг 12й......
Мои публикации
DEM вне форума  
 
Непрочитано 16.11.2006, 08:44 Построение касательной к двум окружностям
#34
VPUD56

архитектор
 
Регистрация: 23.05.2005
Сообщений: 123


Отрезок оказывается тоже работает. Полилиния не работает. Привязывается жестко к первой окружности.
__________________
vpud
VPUD56 вне форума  
 
Непрочитано 16.11.2006, 08:44
#35
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,773


Цитата:
Сообщение от Pool
2. Сплайн.
Построение касательной из произвольной точки на сплайне. Любым способом.
1. Чертим произвольный сплайн.
2. Намечаем точку на нем в которой хотим построить касательную (например пересечь отрезоком)
3. Вводим команду Xline, выбираем привязку "перпендикуляр" и щелкаем по сплайну в любом месте. Прямая бегает по сплайну "нормально", вторую точку ставим на той самой точке пересечения сплайна с отрезком.
4. Вводим команду Xline, выбираем привязку "перпендикуляр" и щелкаем по уже построенному Xline в любом месте, второй раз щелкаем по нашей точке. Вот эта Xline и будет касательной к сплайну в заданной точке.
Krieger вне форума  
 
Непрочитано 16.11.2006, 09:17
#36
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,064


Вот здесь обсуждалась тема построения касательной к сплайну
http://www.autocad.ru/cgi-bin/f1/board.cgi?t=27132DG
Хмурый вне форума  
 
Непрочитано 16.11.2006, 09:28
#37
ki

Constructor
 
Регистрация: 28.09.2005
SPb
Сообщений: 695
<phrase 1= Отправить сообщение для ki с помощью Skype™


2 Pool
Алгоритм правильный. Таким образом строится одна касательная (см. рис.). А вторую касательную получаем зеркаля первую относительно центров окр. Если методом черчения надо, то нужно повторить несколько шагов для противоположной стороны.
Да и не актуально это уже. Отрезком все хорошо строится.
__________________
Для ухода за пожилым программистом требуется приятная женщина, говорящая на FОRTRАN, BАSIС и С++
ki вне форума  
 
Непрочитано 16.11.2006, 11:25
#38
Serge Krasnikov

Конструктор, инженер-механик
 
Регистрация: 03.10.2003
Новосибирск
Сообщений: 5,790


Не не в тему
Цитата:
Сообщение от Хмурый
Вот здесь обсуждалась тема построения касательной к сплайну
http://www.autocad.ru/cgi-bin/f1/board.cgi?t=27132DG
Есть некоторая разница в ссылке обсуждается
Цитата:
Каким методом можно в Акаде построить косательную к конкретной точке на сплайне?
Покрайней мере так звучал вопрос, а сдесь касательные из точки к окружности, методы построения разные однако
Serge Krasnikov вне форума  
 
Непрочитано 16.11.2006, 13:56 Re: Построение касательной к двум окружностям
#39
Pool


 
Регистрация: 18.10.2005
Москва
Сообщений: 60
Отправить сообщение для Pool с помощью Skype™


Цитата:
Сообщение от VPUD56
Может я чего не понимаю. В чем проблема.
Выбираешь рисование бесконечной линией (не отрезок) Выбираешь привязку TAN указываешь на окружность, линия вращается вокруг окружности, опять выбираешь tan и указываешь на другую окружность. Она фиксируется в единственных точках.
Я сильно плакаль. Почти рыдал.

НУ НЕТУ НИКАКОЙ ВТОРОЙ ОКРУЖНОСТИ И ВТОРОЙ ТОЧКИ.

ЕСТЬ ТОЛЬКО ОДНА ОКРУЖНОСТЬ И ОДНА ТОЧКА НА НЕЙ.

КАК ИМЕННО В ЭТОЙ ТОЧКЕ (ИЗ ЭТОЙ ТОЧКИ) ПОСТРОИТЬ КАСАТЕЛЬНУЮ, НЕ СТРОЯ РАДИУСНУЮ ЛИНИЮ.
У меня _xline + tan к окружности и линия (любая), и тем более "обкатка" не наблюдаются. Это глюк 2002?

............................................Павел.

ЗЫ Похоже, автокад действительно подглючивает - по сплайну вчера нормаль не строились, сегодня нормаль к сплайну пошла. Вопрос касательной к сплайну снят.


Цитата:
Сообщение от Serge Krasnikov
Цитата:
Сообщение от Pool писал
1. Окружность.
Построение касательной из произвольной точки на окружности. Без построения радиальной линии.
Эта возможность была в акадах более старшего поколения. 2.62 однако не помню, а вот в 10 точно была
А сегодня? Начиная с 2002.
.
.
Pool вне форума  
 
Непрочитано 16.11.2006, 16:10
#40
Syrex


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


Всем здрасти! почитал все что вы тут пишите и не увидел реализацию данной задачи через LISP, я просто щас пытаюсь изучить LISP и неплохобы увидеть пример реализации лисп программы , если можно конечно, заранее спасибо.
ЗЫ: в MDT есть прям такая команда "прямая по касательной к двум окружностями" и чертится в спецслое AM_CL, кроме этого там еще много вспомогательных прямых.
Syrex вне форума  
 
Непрочитано 16.11.2006, 16:36
#41
PSW


 
Регистрация: 12.01.2006
Донецк
Сообщений: 30


;*********************************************************
; Касательная к 2 окружностям
;*********************************************************
(defun C:PSW (/ A A1 A2 A200 B C OB R1 R2 T1 T2 T3 TIP U U1 UA)
;*********************************************************
(prompt "\nКасательная к 2-м окружностям...")
(setq A1 (car(entsel "\nВыбери 1-ую окружность: ")))
(setq A2 (entget A1))
(setq TIP (cdr (assoc 0 A2)))
(setq A200 NIL)
(if (= TIP "CIRCLE")
(progn
(setq T1 (cdr (assoc 10 A2)))
(setq R1 (cdr (assoc 40 A2)))
) ;progn
) ;if
;*********************************************************
(setq A1 (car(entsel "\nВыбери 2-ую окружность: ")))
(setq A2 (entget A1))
(setq TIP (cdr (assoc 0 A2)))
(if (= TIP "CIRCLE")
(progn
(setq T2 (cdr (assoc 10 A2)))
(setq R2 (cdr (assoc 40 A2)))
) ;progn
) ;if
;*********************************************************
(If (> R1 R2)
(progn
(setq TT T1)
(setq RR R1)

(setq T1 T2)
(setq R1 R2)

(setq T2 TT)
(setq R2 RR)
)
)
;*********************************************************
(setq c (distance T1 T2))
(setq b (- R2 R1))
(setq a (sqrt (- (* c c) (* b b))))
;*********************************************************
(setq U (angle T1 T2))
(setq uA (atan b a))

(setq T3 (polar T1 (+ U uA) a))

(command "LINE" T1 T3 "")
(setq Ob (entlast))

(setq U1 (angle T2 T3))
(command "MOVE" Ob "" T3 (polar T3 U1 R1))
;*********************************************************
(SetVar "FILEDIA" 1) (princ)
PSW вне форума  
 
Непрочитано 17.11.2006, 06:35 Re: Построение касательной к двум окружностям
#42
Serge Krasnikov

Конструктор, инженер-механик
 
Регистрация: 03.10.2003
Новосибирск
Сообщений: 5,790


Цитата:
Сообщение от Pool
НУ НЕТУ НИКАКОЙ ВТОРОЙ ОКРУЖНОСТИ И ВТОРОЙ ТОЧКИ.

ЕСТЬ ТОЛЬКО ОДНА ОКРУЖНОСТЬ И ОДНА ТОЧКА НА НЕЙ.
Во-о, а здесь вопрос первоначально задан "Построение касательной к двум окружностям"
Касательную в точке на кривой, стандартными можно построить токо xline (IMHO) c дополнительными построениями: сначало xline с перпендикуляром к кривой, а дальше перепендикуляр к этой бесконечной. Настройках нужно включить osnap, пересечение

Цитата:
КАК ИМЕННО В ЭТОЙ ТОЧКЕ (ИЗ ЭТОЙ ТОЧКИ) ПОСТРОИТЬ КАСАТЕЛЬНУЮ, НЕ СТРОЯ РАДИУСНУЮ ЛИНИЮ.
У меня _xline + tan к окружности и линия (любая), и тем более "обкатка" не наблюдаются. Это глюк 2002?

---skip---

Цитата:
Сообщение от Serge Krasnikov
Цитата:
Сообщение от Pool писал
1. Окружность.
Построение касательной из произвольной точки на окружности. Без построения радиальной линии.
Эта возможность была в акадах более старшего поколения. 2.62 однако не помню, а вот в 10 точно была
А сегодня? Начиная с 2002.
.
.
кАнЭчно есть
Serge Krasnikov вне форума  
 
Непрочитано 17.11.2006, 08:27
#43
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,064


Вот, что интересно: заглянул вчера на сайт cadalog.com . Ихний народ со сих пор пишет программы для построения касательных к двум окружностям и они, эти программы, пользуются бешеным спросом и успехом.
Хмурый вне форума  
 
Непрочитано 17.11.2006, 12:19
#44
Syrex


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


PSW Спасибо за программу, буду пробывать и изучать
Syrex вне форума  
 
Непрочитано 14.09.2019, 18:35
#45
MaksN


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


Чтобы провести касательную к двум произвольно расположенным на плоскости окружностям разного (одинакового) диаметра необходимо:
1. Из центра большей окружности построить окружность диаметром равным:
а) разности диаметров данных окружностей - если нужно построить касательную с одной стороны двух окружностей;
б) сумме диаметров данных окружностей - если нужно построить касательную с разных сторон данных окружностей.
2. Из центра меньшей окружности провести касательную линию к построенной окружности (начальная точка линии будет центр меньшей окружности, вторая - касательная к построенной окружности).
3. Опустить перпендикуляр от одной из вершин линии до одной из данных окружностей (длина которой будет равна радиусу меньшей окружности) и перенести касательную от одной вершины перпендикуляра к другой.

То же самое написал nmr, но только для касательной с одной стороны обеих окружностей.
MaksN вне форума  
 
Непрочитано 14.09.2019, 21:45
#46
Fogel

люблю мастерить
 
Регистрация: 21.01.2005
Челябинск
Сообщений: 7,598


В общем случае есть четыре варианта построений, как выбирать будем?
Чем не устраивает штатная привязка "касательная" что так тянет самому посчитать? (Но да, понятное желание)
Fogel вне форума  
 
Непрочитано 15.09.2019, 09:57
#47
Дмитррр

НЛО
 
Регистрация: 09.07.2007
Тутошние мы.
Сообщений: 3,135


Цитата:
Сообщение от MaksN Посмотреть сообщение
Чтобы провести ...
13 лет думал?
__________________
Я ведь - огонь, и холод и... обман.
Я - радугой пронизанный... туман
Дмитррр на форуме  
 
Непрочитано 16.09.2019, 07:05
#48
MaksN


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


Цитата:
Сообщение от Fogel Посмотреть сообщение
Чем не устраивает штатная привязка "касательная" что так тянет самому посчитать? (Но да, понятное желание)
Штатной привязкой "касательная" можно получить весьма приближенную касательную линию к двум окружностям, если от одной к другой окружности строить касательную: после 5-го, 6-го раза длина касательных будет одинакова, начиная с 17-го, 18-го раза и координаты вершин начнут совпадать.

Цитата:
Сообщение от Дмитррр Посмотреть сообщение
13 лет думал?
Только недавно столкнулся с такой задачей. Прочел то что nmr написал и решил немного упрощенно написать то же самое и добавить для касательных с разных сторон окружностей.
MaksN вне форума  
 
Непрочитано 16.09.2019, 07:27
#49
No M.P.

Инженер-конструктор
 
Регистрация: 24.08.2007
Волгоград
Сообщений: 763
<phrase 1=


Как вариант - параметрические зависимости в autocad.
__________________
Никогда не стоит недооценивать предсказуемость глупости
No M.P. вне форума  
 
Непрочитано 16.09.2019, 07:39
#50
MaksN


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


Цитата:
Сообщение от No M.P. Посмотреть сообщение
Как вариант - параметрические зависимости в autocad.
Параметрическими зависимостями не получается. Двигает с места окружность.

----- добавлено через ~47 мин. -----
В AutoCAD-Mechanical есть команда для построения касательной к двум окружностям - Построение вспомогательной линии по касательной к двум окружностям
В обычном AutoCAD этой команды нет.
MaksN вне форума  
 
Непрочитано 16.09.2019, 08:40
#51
No M.P.

Инженер-конструктор
 
Регистрация: 24.08.2007
Волгоград
Сообщений: 763
<phrase 1=


Цитата:
Сообщение от MaksN Посмотреть сообщение
Параметрическими зависимостями не получается. Двигает с места окружность.
Так верните окружности на место. Касательная, прилипшая к окружностям будет менять угол.
__________________
Никогда не стоит недооценивать предсказуемость глупости
No M.P. вне форума  
 
Непрочитано 16.09.2019, 09:06
#52
MaksN


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


Цитата:
Сообщение от No M.P. Посмотреть сообщение
Так верните окружности на место. Касательная, прилипшая к окружностям будет менять угол.
Если вернуть окружность на место, то меняется местоположение второй окружности.
MaksN вне форума  
 
Непрочитано 16.09.2019, 09:14
#53
koMon


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


Цитата:
Сообщение от MaksN Посмотреть сообщение
Двигает с места окружность.
есть ограничитель Fix, который может окружность(и) зафиксировать от перемещения
koMon вне форума  
 
Непрочитано 16.09.2019, 09:23
#54
MaksN


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


Цитата:
Сообщение от koMon Посмотреть сообщение
есть ограничитель Fix, который может окружность(и) зафиксировать от перемещения
тогда меняется радиус окружности
MaksN вне форума  
 
Непрочитано 16.09.2019, 09:30
#55
No M.P.

Инженер-конструктор
 
Регистрация: 24.08.2007
Волгоград
Сообщений: 763
<phrase 1=


Дотяните ручками (grips) до исходного значения. Касательная, прилипшая к окружностям будет менять угол .
__________________
Никогда не стоит недооценивать предсказуемость глупости
No M.P. вне форума  
 
Непрочитано 16.09.2019, 10:01
#56
koMon


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


Цитата:
Сообщение от MaksN Посмотреть сообщение
тогда меняется радиус окружности
на радиус также можно поставить параметрический ограничитель
koMon вне форума  
 
Непрочитано 16.09.2019, 11:19
#57
gumel


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


Цитата:
Сообщение от MaksN Посмотреть сообщение
Штатной привязкой "касательная" можно получить весьма приближенную касательную линию к двум окружностям, если от одной к другой окружности строить касательную: после 5-го, 6-го раза длина касательных будет одинакова, начиная с 17-го, 18-го раза и координаты вершин начнут совпадать.
Да ладно! Как так то?
Автокад, используя штатные привязки, строит эту касательную весьма точно! Откуда у вас столько итераций?
gumel вне форума  
 
Непрочитано 16.09.2019, 12:18
#58
valerik88


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


Касательные так можно построить
Миниатюры
Нажмите на изображение для увеличения
Название: 1.gif
Просмотров: 27
Размер:	1.66 Мб
ID:	217904  
valerik88 вне форума  
 
Непрочитано 16.09.2019, 12:26
| 1 #59
gumel


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


Цитата:
Сообщение от valerik88 Посмотреть сообщение
Касательные так можно построить
это не касательные!..
gumel вне форума  
 
Непрочитано 16.09.2019, 12:31
| 1 #60
zenon

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


Цитата:
Сообщение от valerik88 Посмотреть сообщение
Касательные так можно построить
это не касательные
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 16.09.2019, 12:33
| 1 #61
valerik88


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


Цитата:
Сообщение от zenon Посмотреть сообщение
это не касательные
точно... двойка мне по геометрии

Разрешите исправиться!
Миниатюры
Нажмите на изображение для увеличения
Название: 1.gif
Просмотров: 25
Размер:	2.13 Мб
ID:	217907  

Последний раз редактировалось valerik88, 16.09.2019 в 12:44.
valerik88 вне форума  
 
Непрочитано 16.09.2019, 12:52
#62
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,064


для чего это всё?
Решение в #2 https://forum.dwg.ru/showpost.php?p=88441&postcount=2
справедливо для примитивов _line, _xline, _ray
Хмурый вне форума  
 
Непрочитано 16.09.2019, 13:00
#63
valerik88


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


Хмурый, дык, этим способом шляпа какая-то выходит... отрезки не ровные, не точные получаются.
Миниатюры
Нажмите на изображение для увеличения
Название: 1.gif
Просмотров: 15
Размер:	1.10 Мб
ID:	217908  
valerik88 вне форума  
 
Непрочитано 16.09.2019, 13:13
#64
MaksN


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


Цитата:
Сообщение от No M.P. Посмотреть сообщение
Дотяните ручками (grips) до исходного значения. Касательная, прилипшая к окружностям будет менять угол .


Цитата:
Сообщение от koMon Посмотреть сообщение
на радиус также можно поставить параметрический ограничитель


Цитата:
Сообщение от gumel Посмотреть сообщение
Да ладно! Как так то?
Автокад, используя штатные привязки, строит эту касательную весьма точно! Откуда у вас столько итераций?
Речь идет об одной линии как касательная сразу двум окружностям.
MaksN вне форума  
 
Непрочитано 16.09.2019, 14:55
| 2 #65
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,064


valerik88, а я что-то про полилинию написал?
Это относится к отрезку, прямой и лучу, но не к полилинии.
PS 1. команда _line
2. На запрос ввести точку- Включаем привязку "касательная"
3. указываем на одну из окружностей
4. На запрос ввести вторую точку- Включаем привязку "касательная"
5. указываем на вторую окружность
ВСЁ

Об этом и написано в #2 тринадцать лет назад

Цитата:
_line
Specify first point: _tan to
Specify next point or [Undo]: _tan to
Specify next point or [Undo]:
Хмурый вне форума  
 
Непрочитано 16.09.2019, 15:08
#66
koMon


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


Цитата:
Сообщение от MaksN Посмотреть сообщение
Речь идет об одной линии как касательная сразу двум окружностям.
по-простому построение 4-х касательных для двух окружностей, которые могут иметь касательные
Код:
[Выделить все]
 
(setq 2_circles_sset (ssget '((0 . "CIRCLE"))))
(if (< (vla-get-radius (setq major_circle_object (vlax-ename->vla-object (ssname 2_circles_sset 0))))
	   (vla-get-radius (setq minor_circle_object (vlax-ename->vla-object (ssname 2_circles_sset 1))))
	)
	(setq major_circle_object (vlax-ename->vla-object (ssname 2_circles_sset 1))
		  minor_circle_object (vlax-ename->vla-object (ssname 2_circles_sset 0))
	)
)
(setq difference_radius (- (setq major_radius (vla-get-radius major_circle_object))
						   (setq minor_radius (vla-get-radius minor_circle_object))
						)
	  summary_radius (+ (setq major_radius (vla-get-radius major_circle_object))
						(setq minor_radius (vla-get-radius minor_circle_object))
					 )
 	  centers_distance (distance (vlax-get major_circle_object 'center) (vlax-get minor_circle_object 'center))
 	  sin_of_tangent_angle_1 (/ difference_radius centers_distance)
 	  cos_of_tangent_angle_1 (sqrt (- 1.0 (* sin_of_tangent_angle_1 sin_of_tangent_angle_1)))
 	  tangent_angle_1 (atan (/ sin_of_tangent_angle_1 cos_of_tangent_angle_1))
 	  major_circle_tangent_point_1 (polar (vlax-get major_circle_object 'center)
	  									  (setq minus_normal_tangent_angle_1 (- (angle (vlax-get minor_circle_object 'center)
	  									  	 	    					 	  		   (vlax-get major_circle_object 'center)
										  	 							        )
										  	 							        (- pi (- (* 0.5 pi) tangent_angle_1))
																	  	     )
										  )
										  major_radius
								   )
 	  minor_circle_tangent_point_1 (polar (vlax-get minor_circle_object 'center)
	  									  minus_normal_tangent_angle_1
										  minor_radius
								   )
 	  major_circle_tangent_point_2 (polar (vlax-get major_circle_object 'center)
	  									  (setq plus_normal_tangent_angle_1 (+ (angle (vlax-get minor_circle_object 'center)
	  									  	 	    					 	  		  (vlax-get major_circle_object 'center)
										  	 							       )
										  	 							       (- pi (- (* 0.5 pi) tangent_angle_1))
																	  	    )
										  )
										  major_radius
								   )
 	  minor_circle_tangent_point_2 (polar (vlax-get minor_circle_object 'center)
	  									  plus_normal_tangent_angle_1
										  minor_radius
								   )
 	  sin_of_tangent_angle_2 (/ summary_radius centers_distance)
 	  cos_of_tangent_angle_2 (sqrt (- 1.0 (* sin_of_tangent_angle_2 sin_of_tangent_angle_2)))
 	  tangent_angle_2 (atan (/ sin_of_tangent_angle_2 cos_of_tangent_angle_2))
 	  major_circle_tangent_point_3 (polar (vlax-get major_circle_object 'center)
	  									  (setq minus_normal_tangent_angle_2 (- (angle (vlax-get minor_circle_object 'center)
	  									  	 	    					 	  		   (vlax-get major_circle_object 'center)
										  	 							        )
										  	 							        (- pi (- (* 0.5 pi) tangent_angle_2))
																	  	     )
										  )
										  major_radius
								   )
 	  minor_circle_tangent_point_3 (polar (vlax-get minor_circle_object 'center)
	  									  (+ minus_normal_tangent_angle_2 pi)
										  minor_radius
								   )
 	  major_circle_tangent_point_4 (polar (vlax-get major_circle_object 'center)
	  									  (setq plus_normal_tangent_angle_2 (+ (angle (vlax-get minor_circle_object 'center)
	  									  	 	    					 	  		  (vlax-get major_circle_object 'center)
										  	 							       )
										  	 							       (- pi (- (* 0.5 pi) tangent_angle_2))
																	  	    )
										  )
										  major_radius
								   )
 	  minor_circle_tangent_point_4 (polar (vlax-get minor_circle_object 'center)
	  									  (- plus_normal_tangent_angle_2 pi)
										  minor_radius
								   )
)
(command "_line" "_non" major_circle_tangent_point_1 "_non" minor_circle_tangent_point_1 "")
(command "_line" "_non" major_circle_tangent_point_2 "_non" minor_circle_tangent_point_2 "")
(command "_line" "_non" major_circle_tangent_point_3 "_non" minor_circle_tangent_point_3 "")
(command "_line" "_non" major_circle_tangent_point_4 "_non" minor_circle_tangent_point_4 "")
koMon вне форума  
 
Непрочитано 16.09.2019, 15:16
| 1 #67
valerik88


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


Хмурый, действительно с отрезком всё получается. Не думал, что отрезок с полилинией будет по разному себя вести.
valerik88 вне форума  
 
Непрочитано 16.09.2019, 15:50
| 1 #68
zenon

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


Цитата:
Сообщение от valerik88 Посмотреть сообщение
Не думал, что отрезок с полилинией будет по разному себя вести.
Хм, прикольно.
Судя по всему при использовании полилинии AutoCAD строит касательную к окружности как будто продолжение от последней точки любого построенного объекта.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 16.09.2019, 16:07
#69
MaksN


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


Цитата:
Сообщение от Хмурый Посмотреть сообщение
а я что-то про полилинию написал?
Это относится к отрезку, прямой и лучу, но не к полилинии.
PS 1. команда _line
2. На запрос ввести точку- Включаем привязку "касательная"
3. указываем на одну из окружностей
4. На запрос ввести вторую точку- Включаем привязку "касательная"
5. указываем на вторую окружность
ВСЁ

Цитата:
Сообщение от valerik88 Посмотреть сообщение
Хмурый, действительно с отрезком всё получается. Не думал, что отрезок с полилинией будет по разному себя вести.
Действительно так
MaksN вне форума  
 
Непрочитано 17.09.2019, 21:14
#70
VladiT

Архитектор, 3д-виз.
 
Регистрация: 26.07.2019
Москва
Сообщений: 143


Что-то меня заклинило при анализе этой темы. Прошу прощения, но мне кажется очевидным, что касательные могут быть только к окружностям, расположенным в одной плоскости.
А если они лежат в разных плоскостях (как указано в первоначальном задании) , то касательной будет любая линия, просто имеющая общую точку с каждой окружностью. Ведь что есть касательная в геометрическом смысле? Это линия, имеющая только одну точку касания с окружностью. Если линия и окружность расположены в одной плоскости, а линия исходит из ранее определенной точки, то касание ее к окружности возможно только в одной единственной точке, и это дает известная привязка Автокада.
Но если линия и окружность в разных плоскостях, то линия может коснуться окружности в любой точке, и все они будут "касательными".

Собственно, достаточно провести в 3д-виде линию между такими окружностями с помощью привязки "NEAREST" - и это будет касательная к обоим окружностям. Причем, таких "касательных" можно создать бесконечно много.

Другое дело, если требуется чтобы касательная в результате была создана в какой-то указанной ранее проекции просмотра обоих окружностей, находящихся в разных плоскостях. Тогда задача сводится к проведению касательной к проекции этих окружностей, из которых как минимум одна неизбежно будет тогда уже эллипсом. .Но в начальном примере вроде-бы речь не об этом.
VladiT вне форума  
 
Непрочитано 18.09.2019, 14:54
#71
koMon


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


Цитата:
Сообщение от VladiT Посмотреть сообщение
что касательные могут быть только к окружностям, расположенным в одной плоскости
кстати да! если это окружности в пространстве, то линией, касающейся обеих окружностей (не касательной), может быть любая прямая лежащая на замкнутой криволинейной поверхности соединяющей эти окружности и имеющая с ней общую прямю линию соприкосновения.
koMon вне форума  
 
Непрочитано 18.09.2019, 15:04
#72
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,064


VladiT, koMon, об этом тоже сказано в #2
Хмурый вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Построение касательной к двум окружностям

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

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