Comunidade
AutoCAD - Português
Bem vindo ao Forum de AutoCAD da Autodesk. Compartilhe seu conhecimento, faça perguntas e explore os tópicos mais populares de AutoCAD.
cancelar
Mostrando resultados para 
Mostrar  apenas  | Pesquisar então 
Você quer dizer: 

Como arrendondar o valor das coordenadas dos elementos do autocad?

1 RESPONDER 1
SOLUCIONADO
Responder
Mensagem 1 de 2
higorigorsantosGUBFF
65 Exibições, 1 Resposta

Como arrendondar o valor das coordenadas dos elementos do autocad?

Tenho uma dúvida: o AutoCAD possui alguma função que corrige automaticamente as coordenadas dos elementos para valores arredondados, ou isso só pode ser feito usando LISP? Caso só seja possível com LISP, gostaria de entender qual é o problema no código abaixo.

 

(defun c:ArredondarCoord ()
(setq ent (entsel "\nSelecione a polilinha: "))
(setq pl (car ent))
(setq data (entget pl))
(setq pontos (vl-remove-if-not '(lambda (x) (and (eq (type x) 'list) (= (car x) 10))) data))
(foreach ponto pontos
(setq coords (cdr ponto))
(setq nova-coord (mapcar 'fix coords))
(setq data (subst (cons 10 coords) ponto data)))
(entmod data)
(princ "Coordenadas arredondadas!"))

 

Estou trabalhando em um projeto em que as coordenadas estão todas com valores quebrados. Por exemplo, uma polilinha começa em X=1.215165, Y=2.812032, e eu gostaria de corrigir essas coordenadas para X=1.000000, Y=3.000000. Criei o comando anexado, mas ele não está funcionando como esperado.

Existe algum outro comando que também permita fazer isso com diferentes tipos de elementos, como retângulos, linhas ou até pontos de referência de blocos?

 

Obs: Utilizar o comando UNITS e reduzir a precisão pode inicialmente aparentar que o problema foi resolvido, contudo isso apenas altera a visualização e não soluciona o problema efetivamente

Marcas (1)
Etiquetas (4)
1 RESPONDER 1
Mensagem 2 de 2
hmsilva
em resposta a: higorigorsantosGUBFF


@higorigorsantosGUBFF wrote:

Tenho uma dúvida: o AutoCAD possui alguma função que corrige automaticamente as coordenadas dos elementos para valores arredondados, ou isso só pode ser feito usando LISP? Caso só seja possível com LISP, gostaria de entender qual é o problema no código abaixo.

 

(defun c:ArredondarCoord ()
(setq ent (entsel "\nSelecione a polilinha: "))
(setq pl (car ent))
(setq data (entget pl))
(setq pontos (vl-remove-if-not '(lambda (x) (and (eq (type x) 'list) (= (car x) 10))) data))
(foreach ponto pontos
(setq coords (cdr ponto))
(setq nova-coord (mapcar 'fix coords))
(setq data (subst (cons 10 coords) ponto data)))
(entmod data)
(princ "Coordenadas arredondadas!"))

 

Estou trabalhando em um projeto em que as coordenadas estão todas com valores quebrados. Por exemplo, uma polilinha começa em X=1.215165, Y=2.812032, e eu gostaria de corrigir essas coordenadas para X=1.000000, Y=3.000000. Criei o comando anexado, mas ele não está funcionando como esperado.

Existe algum outro comando que também permita fazer isso com diferentes tipos de elementos, como retângulos, linhas ou até pontos de referência de blocos?

 

Obs: Utilizar o comando UNITS e reduzir a precisão pode inicialmente aparentar que o problema foi resolvido, contudo isso apenas altera a visualização e não soluciona o problema efetivamente


Olá @higorigorsantosGUBFF  e bem vindo à Autodesk Community.

 

O codigo apresentado não funciona, apenas por um pequeno erro / distração...

; no entmod onde está
(setq data (subst (cons 10 coords) ponto data)))
; onde está coods " coordenadas originais" 
; deverá estar "nova-coord"
(setq data (subst (cons 10 nova-coord) ponto data)))

 

Espero que ajude
Henrique

EESignature

Não encontrou o que está procurando? Pergunte à comunidade ou compartilhe seu conhecimento.

Postar nos fóruns  

Autodesk Design & Make Report