Ponto médio entre vários pontos

Ponto médio entre vários pontos

Anonymous
Não aplicável
2.031Exibições
4Respostas
Mensagem 1 de 5

Ponto médio entre vários pontos

Anonymous
Não aplicável

Preciso criar um ponto que seja a coordenada média entre vários pontos. Existe algum comando ou lisp que o faça?

0 Curtidas
Soluções aceitas (1)
2.032Exibições
4Respostas
Respostas (4)
Mensagem 2 de 5

Anonymous
Não aplicável

Olá @Anonymous Voce vai precisar ser um pouco mais claro na sua pergunta, geralmente anexar um .dwg, imagem,  ajuda bastante.

Mas vamos começar assim, o código abaixo pede um conjunto de seleção (Arcos, Linhas e Polilinhas)  e insere um ponto no médio deles. Me der mais informações que acredito que seu problema será simples de se resolver. 

 

 

;;Júnior Nogueira 22/10/2019
;;
(defun c:JR_Ponto ( / ss e i)
  (if (setq ss (ssget '((0 . "ARC,LINE,*POLYLINE"))))
    ((lambda (i)
        (while
	  (setq e (ssname ss (setq i (1+ i))))
	  (entmakex (list '(0 . "POINT") (cons 10 (vlax-curve-GetPointAtDist e (/ (vlax-curve-GetDistAtParam e (vlax-curve-GetEndParam e)) 2.0))))))) -1 )) ;;caso
 (princ)
)
(vl-load-com)

jr_ponto.gif

 

Mensagem 3 de 5

Anonymous
Não aplicável

No meu caso, ao invés de linhas e polilinhas, tenho pontos no meu arquivo dwg, o que eu pretendo fazer é criar um ponto médio entre todos esses pontos.

 

Exemplo: Em um triângulo temos 3 vértices, o ponto médio desse triângulo seria o eixo dele, ou seja uma localização média entre os 3 vértices. Consegue me entender?

0 Curtidas
Mensagem 4 de 5

Anonymous
Não aplicável
Solução aceita

Entendo,é um pouco mais complexo, mas nada impossível, vou anexar a uma função de Gilles Chanteau que acha o ponto médio entre três pontos o mesmo principio é valido para multipolos pontos, mas você pode tentar um pouco por conta própria, e mostrar alguma tentativa. que ficarei muito feliz em ajudá-lo. 

 

;; gc:TriangleCentroidArea
;; Returns a list containing the centroid and the double signed area of a triangle
;;
;; Arguments
;; p1, p2, p3 : ordered vertices of the triangle
(defun gc:TriangleCentroidArea (p1 p2 p3)
  (list
    (mapcar (function (lambda (x1 x2 x3)
                        (/ (+ x1 x2 x3) 3.0)
                      )
            )
            p1
            p2
            p3
    )
    (- (* (- (car p2) (car p1))
          (- (cadr p3) (cadr p1))
       )
       (* (- (car p3) (car p1))
          (- (cadr p2) (cadr p1))
       )
    )
  )
)

pm.gif

 

Mensagem 5 de 5

wblima1975
Community Visitor
Community Visitor

Gostaria de saber se existe uma lisp que me dê um ponto médio em um conjunto de pontos, não apenas 3 pontos e sim vários. Obrigado.

0 Curtidas