hmsilva
em resposta a: higorigorsantosGUBFF

Olá @higorigorsantosGUBFF 

penso que esta tua primeira versão, ligeiramente modificada, deverá funcionar como esperado.

 

(vl-load-com)

(defun LM:round	(n)
    (fix (+ n
	    (if	(minusp n)
		-0.5
		0.5
	    )
	 )
    )
)

(defun c:ArredondarCoord ( / coords data ent i nova-coord ponto ss vertices)
    (setq ss (ssget '((0 . "LWPOLYLINE,HATCH,LINE,DIMENSION")))) ; Seleciona entidades
    (if	ss
	(progn
	    (setq i 0)
	    (while (< i (sslength ss))
		(setq ent (ssname ss i))
		(setq data (entget ent))
		(cond
		    ;; Para polilinhas e hatch
		    ((wcmatch (cdr (assoc 0 data)) "LWPOLYLINE,HATCH")
		     (setq vertices (vl-remove-if-not '(lambda (x) (= (car x) 10)) data)) ; Filtra os vértices
		     (foreach ponto vertices
			 (setq coords (cdr ponto)) ; Obtém as coordenadas
			 (setq nova-coord (mapcar 'LM:round coords)) ; Arredonda as coordenadas
			 (setq data (subst (cons 10 nova-coord) ponto data)) ; Substitui coordenadas no grupo de códigos
		     )
		    )
		    ;; Para linhas
		    ((= (cdr (assoc 0 data)) "LINE")
		     (foreach cod '(10 11) ; Pontos inicial (10) e final (11) da linha
			 (setq ponto (assoc cod data))
			 (setq coords (cdr ponto))
			 (setq nova-coord (mapcar 'LM:round coords))
			 (setq data (subst (cons cod nova-coord) ponto data)) ; Substitui coordenadas no grupo de códigos
		     )
		    )
		    ;; Para cotas
		    ((= (cdr (assoc 0 data)) "DIMENSION")
		     (foreach cod '(10 11 13 14) ; Pontos relacionados às cotas
			 (setq ponto (assoc cod data))
			 (if ponto
			     (progn
				 (setq coords (cdr ponto)) ; Obtém as coordenadas
				 (setq nova-coord (mapcar 'LM:round coords)) ; Arredonda as coordenadas
				 (setq data (subst (cons cod nova-coord) ponto data)) ; Substitui coordenadas no grupo de códigos
			     )
			 )
		     )
		    )
		)
		;; Atualiza as entidades
		(entmod data) ; Modifica a entidade
		(setq i (1+ i))
	    )
	    (princ "\nCoordenadas arredondadas para todas as entidades selecionadas!")
	)
	(princ "\nNenhuma entidade válida selecionada!")
    )
    (princ)
)

 

 

Espero que ajude
Henrique

EESignature