Lisp de spline a polyline

liberado - 22/02/2006 20:22
Hace tiempo tenía en mis manos una Lisp para transformar Splines en polilineas. Pero la perdí. Alguien la conoce?
3dpoder - 04/04/2023 21:13
Aquí tienes una posible función Lisp para convertir una spline en una polyline en AutoCAD:

[CODE](defun spline->polyline (spline / knots ctrlpoints degree numctrlpoints i polyline)
;; obtener los datos de la spline
(setq knots (vlax-invoke-method spline 'getknots)
ctrlpoints (vlax-invoke-method spline 'getcontrolpoints)
degree (vlax-get-property spline 'degree))

;; obtener el número de puntos de control
(setq numctrlpoints (1+ (length ctrlpoints)))

;; crear la polyline
(setq polyline (vla-addpolyline (vlax-get-property spline 'document)))
(vla-put-closed polyline nil) ; asegurarse de que la polyline no esté cerrada

;; agregar los puntos de control a la polyline
(vlax-for i ctrlpoints
(vla-addvertex polyline i))

;; configurar la spline como una curva suave en la polyline
(vla-put-fitmethod polyline acFitCurve)
(vla-put-fitdata polyline degree)
(vla-put-fitpointdata polyline numctrlpoints ctrlpoints knots)

;; eliminar la spline original
(vla-delete spline)

;; devolver la polyline resultante
polyline)
[/CODE]

Para usar esta función, simplemente selecciona la spline que deseas convertir en AutoCAD y ejecuta el comando Lisp spline->polyline. La función creará una nueva polyline que sigue la forma de la spline original y eliminará la spline original del dibujo. Ten en cuenta que la polyline resultante no será una réplica exacta de la spline, sino una aproximación mediante una curva suave ajustada a la forma de la spline original.