我发现这段代码是乔·伯克在几年前发布的。它很好地展平了我的三维/非平面样条曲线。我需要帮助使样条线保持在其当前高程,因为在我的项目中,将其移动到z=0是不好的。
因此,基本上在多个z高程的多个非平面样条上展平当前控制点z处的三维样条。
将高程四舍五入到最接近的整数,即z=12,而不是og z=11.985,这也会令人惊讶,因为样条曲线源自整数。
- (defun c:FlattenSpline ( / ent vobj ctrlpts pt reslst )
- (setq ent (car (entsel "\nSelect spline: ")))
- (setq vobj (vlax-ename->vla-object ent))
- (setq ctrlpts (vlax-get vobj 'ControlPoints))
- ;(print ctrlpts)
- (repeat (/ (length ctrlpts) 3)
- (setq pt (list (car ctrlpts) (cadr ctrlpts) 0.0))
- (setq reslst (cons pt reslst))
- (setq ctrlpts (cdddr ctrlpts))
- )
- (setq reslst (apply 'append reslst))
- ;(print reslst)
- (vlax-put vobj 'ControlPoints reslst)
- (princ)
- )
|