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

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

Как определить расстояние между 2 точками по spline?

Ответ
Поиск в этой теме
Непрочитано 03.11.2005, 18:48 #1
Как определить расстояние между 2 точками по spline?
Хотабыч
 
Регистрация: 02.06.2005
Сообщений: 15

Есть произвольная spline.
Как найти расстояние между 2 точками
принадлежащие сплайну ?
Точки выбираются юзером?
Желательно код на VBA.
Просмотров: 5259
 
Непрочитано 04.11.2005, 00:48
#2
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Код:
[Выделить все]
(defun SplDist (spl pt1 pt2)
  (setq dist (apply '- (mapcar '(lambda (x) (vlax-curve-getDistAtParam spl (vlax-curve-getParamAtPoint spl x))) (list pt2 pt1))))
);end
Лентяй вне форума  
 
Непрочитано 22.01.2006, 12:30
#3
Georg

Design
 
Регистрация: 27.10.2004
Kiev
Сообщений: 57


Цитата:
Сообщение от Лентяй
Код:
[Выделить все]
(defun SplDist (spl pt1 pt2).....
Ни как не могу заставить код работать...
что с ним надо делать?
Georg вне форума  
 
Непрочитано 22.01.2006, 13:33
#4
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Код был написан. как функция, встраиваемая в некую программу. Есливам нужно использовате ее саму по себе, то он должен быть дополнен средствами указания аргументов. например так:
Код:
[Выделить все]
(defun C:SplDist ( / spl pt1 pt2)
  (setq adoc (vla-get-ActiveDocument (vlax-get-acad-object))
        util (vla-get-utility adoc))
  (vla-getentity util 'spl 'pt1 "Select Spline")
  (setq pt1 (vlax-safearray->list pt1)
        pt2 (getpoint "Specify second break point or [First point]: "))
  (if (null pt2) (setq pt1 (getpoint "\nSelect First Point")
                       pt2 (getpoint "\nSelect Second Point")));if
  (setq dist (apply '- (mapcar '(lambda (x)  (vlax-curve-getDistAtParam spl (vlax-curve-getParamAtPoint spl
          (vlax-curve-getClosestPointTo spl x)))) (list pt2 pt1))))
  (princ (rtos dist 2))
  (princ)
);end
Если что не так - свистите.
Лентяй вне форума  
 
Непрочитано 22.01.2006, 15:04
#5
Georg

Design
 
Регистрация: 27.10.2004
Kiev
Сообщений: 57


Все работает, спасибо.
Здорово помогает в работе
Georg вне форума  
 
Непрочитано 22.01.2006, 15:33
#6
Profan


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


Надо бы впихнуть куда-нибудь функцию
(vl-load-com)
и что-то там не то с контекстным меню в русской версии.
Profan вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как определить расстояние между 2 точками по spline?

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

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