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

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

Как програмно построить внешнее сопряжение двух дуг?

Ответ
Поиск в этой теме
Непрочитано 22.03.2010, 11:43 #1
Как програмно построить внешнее сопряжение двух дуг?
Jonas
 
конструктор машиностроитель
 
Новосибирск
Регистрация: 14.05.2007
Сообщений: 893

Как програмно построить "внешнее" сопряжение двух дуг?

Вложения
Тип файла: pdf Сопряжение.pdf (9.7 Кб, 360 просмотров)

Просмотров: 11904
 
Непрочитано 22.03.2010, 16:30
#2
Дима_

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


Дело в том, что комьютеру не обясништь - сделай чтоб было красиво, вариантов дуг может быть бесчисленное множесто, и все диапазоны надо учесть, объясни как ты их вручную сорпягаешь - что можно подрезать и в каких допусках, там глядишь и программа нарисуется.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 22.03.2010, 16:42
#3
ытя


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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
вариантов дуг может быть бесчисленное множесто
При заданных радиусах сопрягающих дуг и сопрягаемых окружностей, вариантов всего 4 (по 2 "внешних" и "внутренних"дуги, симметричных относительно прямой соединяющей центры)
ытя вне форума  
 
Непрочитано 22.03.2010, 16:53
#4
asd

всё понемногу
 
Регистрация: 05.03.2008
Украина, Одесса
Сообщений: 215


Центры дуг А и В будут находиться на пересечении прямых от центров окружностей и любой точкой черной окружности. Эти точки и будут концами дуги.

Обманул. Извиняюсь.

Последний раз редактировалось asd, 22.03.2010 в 17:01.
asd вне форума  
 
Непрочитано 22.03.2010, 16:56
#5
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 859
Отправить сообщение для Disney с помощью Skype™


Да не спорте вы, если подождёте, через часок выложу код...
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 22.03.2010, 17:39
#6
Дима_

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


to disney - осталось менее 20 минут
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 22.03.2010, 18:39
1 | #7
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 859
Отправить сообщение для Disney с помощью Skype™


Вот, правда иногда не корректно работает, завтра подправлю...
[IMG]http://s47.***********/i115/1003/23/da12828c5b00.gif[/IMG]
Вложения
Тип файла: zip test_sopr.zip (1.9 Кб, 129 просмотров)
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 22.03.2010, 20:04
#8
asd

всё понемногу
 
Регистрация: 05.03.2008
Украина, Одесса
Сообщений: 215


Disney, как у Вас определяется радиус дуги сопряжения?
Я вижу приложенный файлик, в котором, очевидно, прога под акад, но акада у меня нет, интересует с точки зрения начертательной геометрии.
asd вне форума  
 
Непрочитано 22.03.2010, 20:57
#9
VVapan4ik


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


Цитата:
Сообщение от asd Посмотреть сообщение
как у Вас определяется радиус дуги сопряжения?
А у Disney не определяется радиус сопряжения - он везде у него один в этом примере. Вы начертательную геометрию проходили? Мне кажется, что нет.
 
 
Непрочитано 23.03.2010, 00:18
#10
Дима_

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


Я почему-то думал, что у автора обратная задача - то есть две дуги - и их надо "сопрячь".
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 23.03.2010, 04:36
#11
Jonas

конструктор машиностроитель
 
Регистрация: 14.05.2007
Новосибирск
Сообщений: 893


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Я почему-то думал, что у автора обратная задача - то есть две дуги - и их надо "сопрячь".
Совершенно верно.
В рисунке я показал внутреннее сопряжение которое выполняет команда _fillet, а вот внешнее сопряжение очень нужно. Методом начерталки проблем нет, но многодельно.
Jonas вне форума  
 
Непрочитано 23.03.2010, 08:42
1 | #12
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 859
Отправить сообщение для Disney с помощью Skype™


Цитата:
Сообщение от asd Посмотреть сообщение
Disney, как у тебя определяется радиус дуги сопряжения?
[IMG]http://s51.***********/i134/1003/1f/ee9ebece5959.jpg[/IMG]


Цитата:
Сообщение от VVapan4ik Посмотреть сообщение
Вы начертательную геометрию проходили? Мне кажется, что нет.
Конечно, нет. От куда в Сибирской Государственной Геодезической Академии, на факультете прикладной геодезии ей взяться?

Цитата:
Сообщение от Дима_ Посмотреть сообщение
Я почему-то думал, что у автора обратная задача - то есть две дуги - и их надо "сопрячь".
[IMG]http://s54.***********/i143/1003/23/9861b45a6648.gif[/IMG]

Может не совсем и по Lisp-овски, но методом "научного тыка" и графическими построениями сочинил вот такое
Код:
[Выделить все]
(defun C:test (/      first  second O_1	   O_2	  R_1	 R_2	N_O_1
	       N_O_2  K_O_1  K_O_2  temp   T_1	  T_2	 1_T	2_T
	       C_1    C_2    R_C_1  R_C_2
	      )
  (While
    (and
      (setq
	first
	 (entget (geo_vibor "\nПервая дуга <Выход>: " "ARC" t)
	 )
      )
      (setq
	second (entget
		 (geo_vibor "\nВторая дуга <Выход>: " "ARC" t)
	       )
      )
    )

     (setq O_1	 (cdr (assoc 10 first))
	   R_1	 (cdr (assoc 40 first))
	   N_O_1 (polar O_1 (cdr (assoc 50 first)) R_1)
	   K_O_1 (polar O_1 (cdr (assoc 51 first)) R_1)
	   O_2	 (cdr (assoc 10 second))
	   R_2	 (cdr (assoc 40 second))
	   N_O_2 (polar O_2 (cdr (assoc 50 second)) R_2)
	   K_O_2 (polar O_2 (cdr (assoc 51 second)) R_2)
     )
     (if (> (+ (distance N_O_2 N_O_1) (distance K_O_2 K_O_1))
	    (+ (distance N_O_1 K_O_2) (distance N_O_2 K_O_1))
	 )
       (setq temp  N_O_2
	     N_O_2 K_O_2
	     K_O_2 temp
       )
       T
     )
     (setq
       t_1   (seredina N_O_1 N_O_2)
       1_t   (polar t_1 (+ (angle N_O_1 N_O_2) (/ pi 2)) 1)
       t_2   (seredina K_O_1 K_O_2)
       2_t   (polar t_2 (+ (angle k_O_1 k_O_2) (/ pi 2)) 1)
       C_1   (seredina (inters t_1 1_t O_1 N_O_1 nil)
		       (inters t_1 1_t O_2 N_O_2 nil)
	     )
       C_2   (seredina (inters t_2 2_t O_1 k_O_1 nil)
		       (inters t_2 2_t O_2 k_O_2 nil)
	     )
       R_C_1 (distance C_1 N_O_1)
       R_C_2 (distance C_2 k_O_1)
     )

     (entmake
       (list
	 '(0 . "CIRCLE")
	 (cons 10 C_1)
	 (cons 40 R_C_1)
       )
     )
     (entmake
       (list
	 '(0 . "CIRCLE")
	 (cons 10 C_2)
	 (cons 40 R_C_2)
       )


     )

  )
)
  (defun geo_vibor (zap ;_Запрос 
		    tip ;_Тип запрашиваемых примитивов 
		    enter ;_Выход при пустом вводе 
		    / flag name)
    (setq Flag2 t)
    (setvar "ERRNO" 0)
    (while Flag2
      (cond
	((and
	   (setq name
		  (car (entsel zap))
	   )
	   (wcmatch (cdr (assoc 0 (entget name))) tip)
	 )
	 (setq Flag2 nil
	       name name
	 )
	)
	((and (= (getvar "ERRNO") 52) enter)
	 (setq Flag2 nil)
	)
	(name (princ (strcat "\nВыбранный объект не " tip)))
	(t (princ "\nМимо"))
      )
    )
  )
  (defun seredina (t1 t2)
    (polar t1 (angle t1 t2) (/ (distance t1 t2) 2))
  )
__________________
Почему все вдруг становятся умными, когда уже не надо?

Последний раз редактировалось Disney, 24.03.2010 в 09:35. Причина: скобка в коде не там стояла
Disney вне форума  
 
Непрочитано 23.03.2010, 09:35
#13
asd

всё понемногу
 
Регистрация: 05.03.2008
Украина, Одесса
Сообщений: 215


Цитата:
Сообщение от Disney Посмотреть сообщение
Конечно, нет.
Не заморачивайтесь, это он обо мне высказался.
asd вне форума  
 
Непрочитано 23.03.2010, 09:58
#14
VVapan4ik


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


Цитата:
Сообщение от Disney Посмотреть сообщение
Вот так...
Не так. Это частный случай. Радиус сопряженной окружности может быть и теоретически и практически разный, но не меньше и не больше определенной величины, а не единственно возможный, как вы это показали построением. Поэтому я и предположил, что вами был принят для простоты случая один подходящий для обеих случаев радиус дуг.
 
 
Непрочитано 23.03.2010, 10:47
#15
Дима_

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


вот про это я и писал - вначале надо определить допуски - чем жертвововать когда "гладко" не сопрячь?
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 23.03.2010, 11:01
#16
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 859
Отправить сообщение для Disney с помощью Skype™


VVapan4ik, Дима_ вот вы мне не учу, на пальцах(на картинках) объясните какие там ещё могут быть варианты?
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 23.03.2010, 11:06
#17
VVapan4ik


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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
вот про это я и писал - вначале надо определить допуски - чем жертвововать когда "гладко" не сопрячь?
Не знаю, почему в Автокаде такое не реализовано на командном уровне, а вот в T-flex такая команда давно (лет 8 точно) реализована. Выбираешь две окружности и потом задаешь значение радиуса дуги. Дело двух секунд.

P.S. avi файл не могу вставить... Заархивировал.
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.png
Просмотров: 171
Размер:	16.8 Кб
ID:	35869  
Вложения
Тип файла: rar video.rar (522.8 Кб, 96 просмотров)

Последний раз редактировалось VVapan4ik, 23.03.2010 в 11:37.
 
 
Автор темы   Непрочитано 23.03.2010, 11:39
#18
Jonas

конструктор машиностроитель
 
Регистрация: 14.05.2007
Новосибирск
Сообщений: 893


Цитата:
Сообщение от VVapan4ik Посмотреть сообщение
Не знаю, почему в Автокаде такое не реализовано на командном уровне, а вот в T-flex такая команда давно (лет 8 точно) реализована. Выбираешь две окружности и потом задаешь значение радиуса дуги. Дело двух секунд.

P.S. avi файл не могу вставить... Заархивировал.
Мы говорим о внешнем сопряжении - внутреннее акад делает.
Jonas вне форума  
 
Непрочитано 23.03.2010, 11:46
#19
VVapan4ik


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


Цитата:
Сообщение от Jonas Посмотреть сообщение
Мы говорим о внешнем сопряжении - внутреннее акад делает.
T-flex и внешнее сопряжения без проблем делает. Вот блин хваленый автокад... Могу такой же ролик скинуть.
 
 
Непрочитано 23.03.2010, 11:51
#20
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 859
Отправить сообщение для Disney с помощью Skype™


Цитата:
Сообщение от VVapan4ik Посмотреть сообщение
P.S. avi файл не могу вставить...
[IMG]http://i036.***********/1003/17/4494b6eac8b1.gif[/IMG]

Всё понятно, я думал с максимальным радиусом - это оптимальный вариант, кстати так же и в примере Jonas максимальный радиус...

Цитата:
Сообщение от Jonas Посмотреть сообщение
Мы говорим о внешнем сопряжении - внутреннее акад делает.
Ну не было у меня начертательной... что такое внутреннее? что такое внешнее? вторая моя программа тоже не то?
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как програмно построить внешнее сопряжение двух дуг?

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Здравствуйте. Как сделать сопряжение плоской грани и цилиндрической SW 2008? Shpiral SolidWorks 3 25.02.2010 17:55
Мониторы LCD CRT Разное 94 17.06.2008 10:51
Как построить окружность 2PR? Cage AutoCAD 14 12.09.2005 19:05
Как из блока програмно вычленить текст Flint Программирование 5 17.02.2004 11:03
Подскажите как построить кривую с помощью команды SPLiNE, к boban Программирование 1 02.11.2003 19:58