Inverter polilinha

Quem trabalha com topografia e ja usou alguma rotina para inverter o sentido de uma poligonal e descobriu que ela perde a informação da WIDTH? ou o linetype scale?
eu já… isso ocorre porque muitas delas simplesmente desenham uma nova polilinha e deletam a antiga…então tente usar esta rotina ao invéz daquelas…

mais…

(defun c:ivp (/ pts ent ss n qtd b StartWidth EndWidth)
(
tbn:error-init (list (list “cmdecho” 0) T))
(
prompt “nSelecione as polilinhas…n”)
(
setq ss (ssget ((0 . “LWPOLYLINE,LINE”))))
(
repeat (if ss
(sslength ss)
0)
(
setq ent (ssname ss 0))
(
ssdel ent ss)
(
setq ent (vlax-ename->vla-object ent))
(
if (= “LINE” (DXF 0 ENT))
(
remake-ent ent (10 11) (list (dxf 11 ent) (dxf 10 ent)))
(
progn
(Setq pts (3d-of-vla (vla-get-coordinates ent))
qtd (length pts)
b nil
n 0)
(
repeat (/ qtd 2)
(
vla-GetWidth ent n StartWidth EndWidth)
(
setq b (cons (list (vla-getbulge ent n) StartWidth EndWidth)
b)
n (1+ n)))
(
setq n ( qtd 2))
(
vla-put-coordinates
ent
(vlax-safearray-fill
(vlax-make-safearray vlax-vbdouble (cons 0 (1- qtd)))
(
mapcar (lambda (x / tmo)
(
setq tmp n
n
(if (zerop (rem n 2.0))
(
1+ n)
(
n 3)))
(
nth tmp pts))
pts)))
(
setq n 0
qtd (/ qtd 2)
b (append (cdr b) (list (car b))))
(
foreach x b
(vla-setbulge ent n (* -1 (car x)))
(
vla-setwidth ent n (cadr x) (caddr x))
(
setq n (1+ n))))))
(
tbn:error-restore))


Link(s) da(s) subrotina(s) usada(s):
tbn:error-init, DXF, remake-ent, dxf, 3d-of-vla, tbn:error-restore

2 comentários em “Inverter polilinha”

  1. que é isso, encomoda não!!!

    quanto ao link do ename-of, realmente, não está na lista desta rotina pois ela não o usa diretamente, que usa ela é a subrotina DXF, quando converto a rotina LSP para HTML, não consigo pegar as subrotinas que estão dentro de subrotinas pelo programinha (LSP2HTML)…

Deixe um comentário

Carrinho de compras
Rolar para cima