Esta rotina calcula as coordenadas mínima e máxima de uma lista de pontos.
O interessante dela, é que ela implementa as funções MAX e MIN do autolisp duma forma um pouco estranha.... explico: normalmente estaríamos tentados a escrever simplesmente:
(apply 'min (mapcar 'car lpt))
para calcular a coordenadas X mínima desta lista de pontos... e funciona!!! na maioria das vezes, mas não em todas.. alguem sabe dizer por que? o que acontece se tivermos mais de 256 pontos na lista? dá erro!!! isso eu observei no cad2000, ja no 2007 não deu erro algum... alguem já percebeu algo parecido?
em fim, a rotina que eu uso é assim:
(defun get-max-min-corners (lpt / ptmin ptmax)
(setq ptmin (car lpt) ptmax ptmin)
(foreach pt lpt
(setq ptmin (mapcar 'min ptmin pt)
ptmax (mapcar 'max ptmax pt)))
(list ptmin ptmax))
lpt é a lista de pontos
Nenhum comentário:
Postar um comentário