Coordenadas del centro de un polígono cerrado

Ver el tema anterior Ver el tema siguiente Ir abajo

Coordenadas del centro de un polígono cerrado

Mensaje por Josecr el Miér Nov 02, 2016 9:25 pm

Buen día.
Por ahí encontré un lisp que genera un punto en el centro "geométrico" de un polígono cerrado.
Por más que lo he intentado, no consigo obtener las coordenadas X,Y de ese punto, esto debido a que no conozco gran cosa de programación en lisp.
Mi pregunta:
¿Me pueden ayudar, agregando al lisp, las líneas necesarias para obtener las coordenadas X,Y?

Les agradezco su ayuda.

Esta es la rutina:


;; PT-CEN
;; Creates a point on the selected pline centroid

(defun c:pt-cen (/ ent)
(if
(and
(setq ent (car (entsel)))
(= "LWPOLYLINE" (cdr (assoc 0 (entget ent))))
)
(entmake
(list '(0 . "POINT") (cons 10 (pline-centroid ent)))
)
(princ "\nNone polyline selected.")
)
(princ)
)
;****************************
(defun pline-centroid (pl / AcDoc Space obj reg cen)
(vl-load-com)
(setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
Space (if (= (getvar "CVPORT") 1)
(vla-get-PaperSpace AcDoc)
(vla-get-ModelSpace AcDoc)
)
)
(or (= (type pl) 'VLA-OBJECT)
(setq obj (vlax-ename->vla-object pl))
)
(setq reg (vlax-invoke Space 'addRegion (list obj))
cen (vlax-get (car reg) 'Centroid)
)
(vla-delete (car reg))
(trans cen 1 (vlax-get obj 'Normal))
)

Josecr

Mensajes : 3
Fecha de inscripción : 02/11/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Coordenadas del centro de un polígono cerrado

Mensaje por robierzo el Jue Nov 03, 2016 1:16 pm

Debes sustituir
Código:
(princ)

por

Código:
(princ (strcat "X=" (rtos (car cen) 2 3) "  Y=" (rtos (cadr cen) 2 3)))
  (princ)

robierzo

Mensajes : 35
Fecha de inscripción : 17/03/2016
Localización : La Coruña

Ver perfil de usuario http://www.selmotopografia.es

Volver arriba Ir abajo

Re: Coordenadas del centro de un polígono cerrado

Mensaje por Josecr el Jue Nov 03, 2016 4:20 pm

Buen día a todos.

Robierzo, gracias por su ayuda. Al agregar esas lineas al lisp y ejecutarlo, me da este error

Command: PT-CEN
Select object: error: bad argument type: numberp: nil
Command:

Que puede ser?

Gracias por su tiempo.
Saludos

Josecr

Mensajes : 3
Fecha de inscripción : 02/11/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Coordenadas del centro de un polígono cerrado

Mensaje por robierzo el Jue Nov 03, 2016 5:22 pm

Utiliza esto:
Código:
;; PT-CEN
;; Creates a point on the selected pline centroid

;****************************
(defun pline-centroid (pl / AcDoc Space obj reg cen)
  (vl-load-com)
  (setq   AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
        Space (if (= (getvar "CVPORT") 1)
                (vla-get-PaperSpace AcDoc)
                (vla-get-ModelSpace AcDoc)
              )
  )
  (or (= (type pl) 'VLA-OBJECT)
    (setq obj (vlax-ename->vla-object pl))
  )
  (setq   reg (vlax-invoke Space 'addRegion (list obj))
        cen (vlax-get (car reg) 'Centroid)
  )
  (vla-delete (car reg))
  (setq cen1 (trans cen 1 (vlax-get obj 'Normal)))
)

(defun c:pt-cen   (/ ent cen1)
  (if (and
   (setq ent (car (entsel)))
   (= "LWPOLYLINE" (cdr (assoc 0 (entget ent))))
      )
    (progn
      (pline-centroid ent)
      (entmake
        (list '(0 . "POINT") (cons 10 cen1))
      )
    )
    (princ "\nNone polyline selected.")
  )
  (princ (strcat "X=" (rtos (car cen1) 2 3) "  Y=" (rtos (cadr cen1) 2 3)))
  (princ)
)

robierzo

Mensajes : 35
Fecha de inscripción : 17/03/2016
Localización : La Coruña

Ver perfil de usuario http://www.selmotopografia.es

Volver arriba Ir abajo

Re: Coordenadas del centro de un polígono cerrado

Mensaje por Josecr el Jue Nov 03, 2016 5:50 pm

Buen día.

Robierzo, de nuevo, muchas gracias por su ayuda y por su tiempo.
El lisp me da la información que busco.

Le quedo agradecido.

Saludos

Josecr

Mensajes : 3
Fecha de inscripción : 02/11/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Coordenadas del centro de un polígono cerrado

Mensaje por Contenido patrocinado Hoy a las 11:04 pm


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.