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

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

Лисп на построение сплайна

Ответ
Поиск в этой теме
Непрочитано 21.06.2011, 13:01 #1
Лисп на построение сплайна
Tannik
 
инженер-конструктор
 
Владивосток
Регистрация: 28.06.2004
Сообщений: 60

Здравствуйте.
Пожалуйста, подскажите, как выполнить следующую задачку.
В трехмерном пространстве строится график с помощью сплайна. Координаты точек сплайна исчисляются по формулам. Число точек каждый раз не известно. Задаю программно.
Я написала программку, по которой формируются координаты точек. Для проверки я их вывела на поле чертежа. Вопрос: а как сформировать сплайн по этим точкам?
Код:
[Выделить все]
 
(defun c:poly ()
   (setq n (getreal "\nВведите длину набора: "))
(setq s (getreal "\nВведите шаг: "))
  (setq i 0)
  (while (< i n)
  (setq i (+ i s))
  (setq tt i )
      (setq x1 (+ tt 1))
      (setq y1 (+ tt 2))
      (setq z1 (+ tt 3))
  (setq xx (list 10 x1 y1 z1))
    (setq aa (cons 0 "point"))
(setq ab (list aa xx ))
       (entmake ab)
                )
)
Пожалуйста, если можно, то хотя бы алгоритм подскажите.
Просмотров: 1674
 
Непрочитано 21.06.2011, 13:07
#2
Лиспер


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


Код:
[Выделить все]
 (defun c:mpol (/ n s i xx pt lst)
  (setq n (getreal "\nВведите длину набора : ")
        s (getint "\nВведите шаг : ")
        i 0
        ) ;_ end of setq
  (while (< i n)
    (setq i   (+ i s)
          pt  (list (+ i 1) (+ i 2) (+ i 3))
          lst (cons pt lst)
          ) ;_ end of setq
    (entmakex (list (cons 0 "POINT") (cons 10 pt)))
    ) ;_ end of while
  (mapcar 'command (append '("_.spline") (reverse lst) '("" "" "")))
  ) ;_ end of defun
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 21.06.2011, 14:02
#3
Дима_

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


вот "обертка" на vla функцию создания сплайна:
Код:
[Выделить все]
 (vl-load-com)
(defun add-spline(lst-pt v1 v2)
  (vla-addspline (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
                 ((lambda (sf)
                    (vlax-safearray-fill sf (apply 'append lst-pt))
                    sf)
                  (vlax-make-safearray vlax-vbdouble (cons 0 (1- (* 3 (length lst-pt))))))
                 (vlax-3d-point v1)
                 (vlax-3d-point v2)))
пример вызова:
Код:
[Выделить все]
 (add-spline (list (getpoint) (getpoint) (getpoint)) '(0 0 1) '(0 0 1))
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 21.06.2011, 15:57
#4
Tannik

инженер-конструктор
 
Регистрация: 28.06.2004
Владивосток
Сообщений: 60


Спасибо большое!
Лиспер, Вашим кодом воспользовалась самым бессовестным образом! Т.е. вставила координаты точек (а они вычисляются по тригонометрическим формулам) в вашу прогу и все замечательно работает.
Дима, к сожалению я с vla на "вы". Но, думаю, что когда-нибудь осилю.... -)))
Tannik вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Лисп на построение сплайна



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построение сплайна по коническому сечению mephis AutoCAD 2 04.03.2011 20:36
Рисовка сплайна, усредняющего два других сплайна кобзаг AutoCAD 7 13.12.2010 11:02
мой первый лисп, выноска, пинайте! baaba LISP 17 20.10.2009 15:42
Лисп для копирования данных нескольких мтекстов по принципу расположения. Red Nova LISP 14 18.06.2008 22:08
Нужен лисп (пронизыватель лайаутов) dextron3 LISP 91 25.07.2007 07:37