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
Solucionado! Ir para Solução.
Solucionado por hmsilva. Ir para Solução.
@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
Não encontrou o que está procurando? Pergunte à comunidade ou compartilhe seu conhecimento.