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

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

Упрощение кривой ломанными

Ответ
Поиск в этой теме
Непрочитано 08.07.2013, 16:07
Упрощение кривой ломанными
lebedun
 
Регистрация: 04.06.2011
Сообщений: 39

Имеется 3д кривая. Каким инструментом я могу провести по ней ломанную с определенной длинной сегментов этой ломанной?
Просмотров: 6282
 
Автор темы   Непрочитано 11.07.2013, 19:40
#21
lebedun


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


если привязка к пересечению сферы с полилинией есть то да
lebedun вне форума  
 
Непрочитано 11.07.2013, 19:45
#22
gomer

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


Цитата:
Сообщение от CaMoCAD Посмотреть сообщение
из начала ПЛ чертите окружность нужного радиуса (длина Вашей хорды). Потом копируете ее в точки пересечения с исходной ПЛ. Центры окружностей соединяете - плучаете искомую ломаную.
Я кстати так и подумал сначала, автоматизировать несложно, просто это как-то некошерно да и лениво ибо жарко... Без полторушки не обойтись. Могу только подсказать IntersectWith и выбор следующей точки по большему значению параметра полилинии в точке пересечения... Для 3м полилинии проще, там нужно решать треугольники, без всяких сфер
gomer вне форума  
 
Автор темы   Непрочитано 12.07.2013, 09:24
#23
lebedun


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


Цитата:
Сообщение от gomer Посмотреть сообщение
Могу только подсказать IntersectWith
Что такое IntersectWith? Где используется?
lebedun вне форума  
 
Непрочитано 12.07.2013, 15:27
#24
gomer

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


да, сделал я ради интереса
Код:
[Выделить все]
 (defun c:test ()

  (vl-load-com)

  (defun mkcircle (c r)
    ;; допилено с помощью VVA
    (entmakex (list '(0 .  "CIRCLE")(cons 10 c)(cons 40 r)))
  )

  (defun mkpline (lst / plst)
	(entmake
	  (append
		(list
		 '(0 . "LWPOLYLINE")'(100 . "AcDbEntity")'(100 . "AcDbPolyline")
		  (cons 90 (length (setq plst (mapcar '(lambda (x)(cons 10 x))lst))))
		  (cons 70 0)
		 '(210 0.0 0.0 1.0)
		)
		plst
	  )
	)
  )

  (defun mklist (lst)
	(if lst 
	  (if (> 3 (length lst))
		(list lst)
		(cons (list (car lst)(cadr lst)(caddr lst)) (mklist (cdddr lst)))
	  )
	)
  )
  
  (setq ofs (getreal "\nУкажите длину участка: "))
  (setq pline (car (entsel "\nУкажите трассу: ")))
  
  (setq start_point (vlax-curve-getStartPoint pline)
		cur_point start_point
		cur_param (vlax-curve-getParamAtPoint pline cur_point)
		end_param (vlax-curve-getEndParam pline)
		prev_param -1
		end_point (vlax-curve-getEndPoint pline)
		plist '()
  )
  (while (< prev_param cur_param end_param)
	(setq
	  circle (mkcircle cur_point ofs)
	  inters
	  (mklist
		(vlax-safearray->list
			  (vlax-variant-value
				(vla-IntersectWith 
				  (vlax-ename->vla-object circle)
				  (vlax-ename->vla-object pline)
				  acExtendNone
				)
			  )
		)
	  )
	  prev_param cur_param
	  cur_param
	  (apply
	   'max
		(mapcar
		 '(lambda (x)
			(vlax-curve-getParamAtPoint pline x)
		  )
		  inters
		)
	  )
	  cur_point (vlax-curve-getPointAtParam pline cur_param)
	  plist (cons cur_point plist)
	)
	(entdel circle)
  )
  (mkpline (append (list start_point) (reverse plist) (list end_point)))
)
кто хочет пирожок, допиливайте

Последний раз редактировалось gomer, 12.07.2013 в 18:06. Причина: Допилено
gomer вне форума  
 
Непрочитано 12.07.2013, 16:21
#25
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Допиливаю
Код:
[Выделить все]
(defun mkcircle (c r)(entmakex (list '(0 .  "CIRCLE")(cons 10 c)(cons 40 r))))
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 12.07.2013, 18:03
#26
gomer

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


Я в том смысле, что если исходная полилиния достаточно серпантиниста, то искомая полилиния может получиться совсем не такой как хотелось, бы, и если честно, но я не знаю как решить эту проблему
gomer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Упрощение кривой ломанными



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Текст вдоль полилинии или сплайна (по кривой) Denioska AutoCAD 48 10.09.2022 21:55
Отложить на ломаной кривой (сегменты состоят из отрезков) линию нужной длины. khanter72rus AutoCAD 6 23.03.2012 10:32
Как выглядит самая простая формула вычисления уклона точки на вертикальной кривой? МишаИнженер Поиск литературы, чертежей, моделей и прочих материалов 15 14.01.2012 10:47
Команда Array вдоль кривой? d-mytro AutoCAD 2 09.02.2011 18:33
Вписывание свободной переходной кривой между прямой и кривой в AutoCAD Civil 3D 2010 Работа-не-волк Вертикальные решения на базе AutoCAD 3 30.10.2009 11:25