Explodir Spline

Tá eu sei que não dá pra explodir spline, mas dá pra imitar o traçado dela, certo? vejam:
;SPP -> "explodir" spline para polyline
(defun c:spp (/ ss dist ent comp compt c)
  (
tbn:error-init  (list (list "cmdecho" 0) T))
  (
vl-load-com)
  (
prompt "\nSelecione os objetos...\n")
  (
setq    ss   (ssget '((0 . "ARC,*[~M]LINE,LINE")))
    dist (getdist
               "Entre com a distância entre os pontos:\n")
    lay  (getstring t "qual o nome do layer?<0>")
        lay  (if (/= "" lay) lay "0"))
  (
repeat (if ss (sslength ss) 0)
    (
setq ent   (ssname ss 0)
      compt (vlax-curve-getDistAtParam ent
                  (vlax-curve-getEndParam ent))
      pts   nil
      comp  0)
    (
ssdel ent ss)
    (
while (<= comp compt)
      (
setq pts  (append pts
                  (list (vlax-curve-getPointAtDist
                          ent comp)))
        comp (if (and (> (+ comp dist) compt)
                          (
< comp compt))
                   compt
                   (+ comp dist))))
    (
draw-pline2 pts lay (if (setq c (dxf 70 ent))
                           (
= 1 (logand c 1)))))
  (
tbn:error-restore))
Esta rotina é util para aqueles que recebem desenhos com curvas de nível desenhadas com spline e precisa delas como polilinhas (quem trabalha com topografia por exemplo... o próprio CIVIL 3D só aceita breaklines se ñão forem splines)

LinkWithin

Related Posts Plugin for WordPress, Blogger...