Remover pontos duplicados de listas

Quem já tentou usar uma lista de pontos na sintaxe da função ssget já percebeu que não se pode permitir pontos duplicados nessa lista, sob pena da seleção retornal nil... bom, para resolver isso, você deve remover esses pontos... normalmente isso ocorre quando coletamos as coordenadas de polilinhas mal desenhadas...
(defun rmpdup (ptlist / lst)
  (
foreach pt ptlist
    (if (vl-every '(lambda (p) (> (distance p pt) 0.001))
                  lst)
      (
setq lst (cons pt lst))))
  (
reverse lst))

Na verdade ela remove pontos próximos, veja que eu concidero que menos de 0.001 de distância entre os pontos os torna iguais

Nenhum comentário:

Postar um comentário