Perfil de Terreno

Ir abajo

Perfil de Terreno

Mensaje por eliasp el Jue Mar 08, 2018 7:39 pm

Buen día señores:

Creo recordar que hace algún tiempo en el extinto Hispacad, se trató este tema, pero no encuentro la respuesta.

El hecho es que necesito crear unos perfiles, en el siguiente enlace agrego el primer ejemplo, obviamente son muchos más....

Espero alguien tenga una rutina para crear estos perfiles, ya que de lo contrario, tendré que hacerlos "a mano"....

Saludos y gracias..............

https://www.dropbox.com/s/50naxtvxg37knou/Perfil%20de%20Obra.dwg?dl=0

eliasp

Mensajes : 70
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Perfil de Terreno

Mensaje por robierzo el Vie Mar 09, 2018 9:01 am

En Hispacad había una rutina que se llamaba "perfilter" o algo así. No recuerdo de quién era. Me parece que era de José Luis Garci. Echa un ojo por aquí: https://lamarmitadelcad.blogspot.com.es/
avatar
robierzo

Mensajes : 56
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: Perfil de Terreno

Mensaje por eliasp el Vie Mar 09, 2018 4:30 pm

Muy interesante Robierzo, gracias por compartirlo.... lo voy a revisar bien, seguro ahí está lo que necesito.

Saludos

eliasp

Mensajes : 70
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Perfil de Terreno

Mensaje por bernie67 el Miér Mar 14, 2018 1:43 am

https://www.dropbox.com/s/1wd1r268ljwaf15/PerfilTerr.fas?dl=0
Me cuentas si te sirve
saludos
Bernardo Corradine
avatar
bernie67

Mensajes : 68
Fecha de inscripción : 22/03/2016
Edad : 51
Localización : Bogota DC-Colombia

Ver perfil de usuario

Volver arriba Ir abajo

Re: Perfil de Terreno

Mensaje por eliasp el Miér Mar 14, 2018 2:52 am

Si... definitivamente si me sirve.

Muchas gracias, me ahorraste varias horas de "talacha"

eliasp

Mensajes : 70
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Perfil de Terreno

Mensaje por Luis Alberto Benitez el Jue Mar 15, 2018 7:38 pm

bernie:
La rutina es muy buena pero para mejorar desearía
de ser posible contactarme con el autor para que
coloque los puntos en las intersecciones y que en el dibujo
del perfil coloque las distancias y el Plano de comparación
desde ya gracias por compartir la rutina.
Un Saludo
Luis

Luis Alberto Benitez

Mensajes : 63
Fecha de inscripción : 29/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Perfil de Terreno

Mensaje por Admin el Sáb Mar 17, 2018 7:08 pm

Mucho, no???????
Diríamos por aquí, "LA CHANCHA , LOS 20, Y LA MÁQUINA DE HACER CHORIZOS"

Admin
Admin

Mensajes : 182
Fecha de inscripción : 16/03/2016
Edad : 70
Localización : CORDOBA ARGENTINA

Ver perfil de usuario http://acadhispano.foroargentina.net

Volver arriba Ir abajo

Re: Perfil de Terreno

Mensaje por bernie67 el Mar Mar 20, 2018 12:17 am

Hola que pena que hasta ahora conteste, andaba de visita por Leticia en la Amazonia Colombiana. Luis Alberto te comento que no recuerdo quien es el autor de la rutina y como viene compilada en lenguaje de maquinas, menos puedo saber...Se que la conseguí en el foro de Hispacad, y ha sido formidables, agradezco a su autor el haberla compartido.
Cordial saludo
Bernardo
Pd: para casos como estos, tener a mano un amigo que maneje Civil Cad es de lo mejor, aclaro que yo llamo a un amigo jajajaja
avatar
bernie67

Mensajes : 68
Fecha de inscripción : 22/03/2016
Edad : 51
Localización : Bogota DC-Colombia

Ver perfil de usuario

Volver arriba Ir abajo

Re: Perfil de Terreno

Mensaje por jademar el Sáb Abr 28, 2018 5:32 pm

Hola a tod@s

eliasp: Yo también creo que PerfilTerr.fas es de José Luis García Galán para Hispacad. Fíjate se te sirve Quick Perfil de Pedro Ferreyra. Probada en Acad 2007 inglés. Va el link:
http://cadtips.cadalyst.com/sections/center-line-profile

Saludos

jademar

Mensajes : 14
Fecha de inscripción : 03/04/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Perfil de Terreno

Mensaje por Luis Alberto Benitez el Sáb Mayo 05, 2018 2:02 pm

Aqui el codigo:
Código:
;;; CADALYST 09/06  Tip 2149: QuickProfile.lsp  Center Line Profile (c) 2006 Pedro Ferreira


;;;Author: Pedro Miguel da Silva Ferreira Email:pedro_ferreira@netcabo.pt or pferreira@wsatkins.pt
;;;Web page: http:pwp.netcabo.pt/pedro_ferreira
;;;Location: Portugal, Lisboa
;;;RDS: PMSF
;;;Command Name: qp
;;;Date: 09 of May 2006
;;;Version: 1.0
;;;Description: Visual Lisp Rutina que crea un perfil de sección del terreno basado en los contornos existentes.



(defun timeini ()
  (setq s (getvar "DATE"))
  (setq seconds (* 86400.0 (- s (fix s))))
)

(defun timeend ()
  (setq s1 (getvar "DATE"))
  (setq seconds1 (* 86400.0 (- s1 (fix s1))))
  (setq seconds2 (fix (- seconds1 seconds)))
  (princ
    (strcat "\nTime : "
    (itoa seconds2)
    " seconds"
    )
  )
)

(defun inivar ()
  (setq cmd_ini (getvar "cmdecho")
 fla_ini (getvar "flatland")
 osm_ini (getvar "osmode")
 ort_ini (getvar "orthomode")
 plt_ini (getvar "plinetype")
 aup_ini (getvar "auprec")
 uni_ini (getvar "unitmode")
 lun_ini (getvar "lunits")
 diz_ini (getvar "dimzin")
 edg_ini (getvar "edgemode")
  )
  (setvar "CMDECHO" 0)
  (setvar "FLATLAND" 0)
  (setvar "OSMODE" 0)
  (setvar "ORTHOMODE" 0)
  (setvar "PLINETYPE" 2)
  (setvar "AUPREC" 0)
  (setvar "UNITMODE" 1)
  (setvar "LUNITS" 2)
  (setvar "DIMZIN" 0)
  (setvar "EDGEMODE" 1)
)

(defun recvar ()
  (setvar "CMDECHO" cmd_ini)
  (setvar "FLATLAND" fla_ini)
  (setvar "OSMODE" osm_ini)
  (setvar "ORTHOMODE" ort_ini)
  (setvar "PLINETYPE" plt_ini)
  (setvar "AUPREC" aup_ini)
  (setvar "UNITMODE" uni_ini)
  (setvar "LUNITS" lun_ini)
  (setvar "DIMZIN" diz_ini)
  (setvar "EDGEMODE" edg_ini)
)

(defun getlayname ()
  (setq contourstest nil)
  (setq layername
 (getstring
   "\nPor favor ingrese el nombre de la capa de los contornos: "
 )
  )
  (setq contourstest
 (ssget "_x"
 (list (cons -4 "<OR")
      (cons -4 "<AND")
      (cons 0 "lwpolyline")
      (cons 8 layername)
      (cons -4 "AND>")
      (cons -4 "<AND")
      (cons 0 "polyline")
      (cons 8 layername)
      (cons -4 "AND>")
      (cons -4 "<AND")
      (cons 0 "line")
      (cons 8 layername)
      (cons -4 "AND>")
      (cons -4 "<AND")
      (cons 0 "spline")
      (cons 8 layername)
      (cons -4 "AND>")
      (cons -4 "OR>")
 )
 )
  )

  (while (= contourstest nil)
    (princ "\nSin contornos seleccionados...")
    (setq layername
   (getstring
     "\nPor favor ingrese el nombre de la capa de los contornos: "
   )
    )
    (setq contourstest
   (ssget "_x"
  (list (cons -4 "<OR")
 (cons -4 "<AND")
 (cons 0 "lwpolyline")
 (cons 8 layername)
 (cons -4 "AND>")
 (cons -4 "<AND")
 (cons 0 "polyline")
 (cons 8 layername)
 (cons -4 "AND>")
 (cons -4 "<AND")
 (cons 0 "line")
 (cons 8 layername)
 (cons -4 "AND>")
 (cons -4 "<AND")
 (cons 0 "spline")
 (cons 8 layername)
 (cons -4 "AND>")
 (cons -4 "OR>")
  )
   )
    )
  )
)

(defun activexsupport ()
  (vl-load-com)
  (setq *modelspace*
 (vla-get-modelspace
   (vla-get-activedocument (vlax-get-acad-object))
 )
  )
)

(defun esttexto ()

  (vl-cmdf "._style" "PMSF-TEXT" "romans" 0.75 0.80 0 "n" "n" "n");                 para Modif. Altuta de Textos
)

(defun getha ()
  ;; esta entidad debe ser una lwpolyline
  (activexsupport)
  (setq
    ha (entsel "\nSeleccione la alineación horizontal: ")
  )
  (while (= ha nil)
    (progn
      (princ "\nNada seleccionado...")
      (setq ha
     (entsel "\nSeleccione la alineación horizontal: ")
      )
    )
  )
  (setq ha-type (cdr (assoc 0 (entget (car ha)))))
  (if (not (equal ha-type "LWPOLYLINE"))
    (progn
      (setq ha nil)
      (princ "\n***La alineación horizontal debe ser una LWPolyline***")
    )
  )
  (while (= ha nil)
    (progn
      (princ "\nNada seleccionado...")
      (setq ha
     (entsel "\nSeleccione la alineación horizontal: ")
      )
      (setq ha-type (cdr (assoc 0 (entget (car ha)))))
      (if (not (equal ha-type "LWPOLYLINE"))
 (progn
  (setq ha nil)
  (princ "\n***La alineación horizontal debe ser una LWPolyline***")
 )
      )
    )
  )
  (setq ha-ename (entget (car ha)))
  (setq ha-ename (cdr (assoc -1 ha-ename)))
  (setq ha-object (vlax-ename->vla-object ha-ename))

  (vl-cmdf "._text"
   (vlax-curve-getstartpoint ha-object)
   "0"
   "A"
  )
  (vl-cmdf "._text"
   (vlax-curve-getendpoint ha-object)
   "0"
   "B"
  )
)

(defun getexaggeration ()
  (initget 2)
  (setq ve (getreal "\nIngrese la Escala Vertical <1>: "));                    ve = Escala Vertical
  (if (= ve nil)
    (setq ve 1)
  )
)


(defun listptintersect ()
  (setq listaxy nil)

  (setq hazvalue (caddr (vlax-curve-getStartPoint ha-object)))

  (setq curvas contourstest)
  (setq ncurvas (sslength curvas))
  (setq listaxy nil)
  (setq counter 0)
  (while (< counter ncurvas)
    (progn
      (setq cnivel-ename (ssname curvas counter))
      (setq cnivel-object (vlax-ename->vla-object cnivel-ename))

      (setq cnivelzvalue
     (caddr (vlax-curve-getStartPoint cnivel-object))
      )

      (setq ha-ENTITY
     (subst (cons 38 cnivelzvalue)
    (assoc 38 (entget (car ha)))
    (entget (car ha))
     )
      )
      (entmod ha-ENTITY)

      (setq intersectpt
     (vlax-variant-value
       (vlax-invoke-method
 ha-object
 "IntersectWith"
 cnivel-object
 acExtendNone
       )
     )
      )

      (setq test nil)
      (setq
 test (vl-catch-all-apply
       'vlax-safearray->list
       (list intersectpt)
     )
      )
      (setq error (vl-catch-all-error-p test))

      (if (/= error t)
 (progn
  (setq intersectpt (vlax-safearray->list intersectpt))
  (setq interlength (length intersectpt))

  (if (> interlength 3)
    (progn
      (setq dividelength (/ interlength 3))
      (setq count 0)
      (while (< count interlength)
 (progn
  (setq newpt (list (nth count intersectpt)
    (nth (+ count 1) intersectpt)
    (nth (+ count 2) intersectpt)
      )
  )

  (setq x (vlax-curve-getdistatPoint ha-ename newpt))
  (setq z (caddr intersectpt))
  (setq xy (list x (* z ve)));                            Z del listado de los Vertices Multiplicado por la Escala
  (setq
    listaxy (append listaxy (list xy))
  )

  (setq count (+ count 3))
 )
      )
    )
    (progn
      (setq x (vlax-curve-getdistatPoint ha-ename intersectpt))
      (setq z (caddr intersectpt))
      (setq xy (list x (* z ve)));                            Z del listado de los Vertices Multiplicado por la Escala
      (setq
 listaxy (append listaxy (list xy))
      )
    )
  )

  (setq ha-ENTITY
 (subst (cons 38 hazvalue)
 (assoc 38 (entget (car ha)));       ha = (entsel "\nSeleccione la alineación horizontal: ")
 (entget (car ha))
 )
  )
  (entmod ha-ENTITY)
 )
      )
      (setq counter (1+ counter))
    )
  )

  (setq listaxy
 (vl-sort listaxy
  (function (lambda (e1 e2)
      (< (car e1) (car e2))
    )
  )
 )
  )

  (setq startdist (vlax-curve-getdistatPoint
    ha-ename
    (vlax-curve-getstartpoint ha-ename)
  )
 enddist  (vlax-curve-getdistatPoint
    ha-ename
    (vlax-curve-getendpoint ha-ename)
  )
  )

  (setq pt1 (car (car listaxy))
 pt2 (car (last listaxy))
  )

  (if (/= startdist pt1)
    (progn
      (setq x startdist)
      (setq y (+ (* (/ (- (cadr (car listaxy)) (cadr (cadr listaxy)))
       (- (car (cadr listaxy)) (car (car listaxy)))
    )
    (- (car (car listaxy)) startdist)
 )
 (cadr (car listaxy))
      )
      )
      (setq xy (list x y))
      (setq
 listaxy (append listaxy (list xy))
      )
      (setq listaxy
     (vl-sort listaxy
      (function (lambda (e1 e2)
  (< (car e1) (car e2))
 )
      )
     )
      )

    )
  )

  (if (/= enddist pt1)
    (progn
      (setq pos (1- (length listaxy)))
      (setq x enddist)
      (setq y
     (+
       (*
 (/ (- (cadr (nth pos listaxy))
       (cadr (nth (1- pos) listaxy))
    )
    (- (car (nth pos listaxy)) (car (nth (1- pos) listaxy)))
 )
 (- enddist (car (nth pos listaxy)))
       )
       (cadr (nth pos listaxy))
     )
      )
      (setq xy (list x y))
      (setq
 listaxy (append listaxy (list xy))
      )
      (setq listaxy
     (vl-sort listaxy
      (function (lambda (e1 e2)
  (< (car e1) (car e2))
 )
      )
     )
      )

    )
  )
)

(defun createprofile ()
  (setq variante-listaxy (apply 'append listaxy))

  (setq arraySpace
 (vlax-make-safearray
   vlax-vbdouble
   (cons 0
 (- (length variante-listaxy) 1)
   )
 )
  )
  (setq variante-listaxy
 (vlax-safearray-fill arraySpace variante-listaxy)
  )

  (vlax-make-variant variante-listaxy)


  (setq pline (vla-addLightweightPolyline
 *ModelSpace*
 variante-listaxy
      )
  )


  (vl-cmdf "._text"
   (vlax-curve-getstartpoint pline)
   "0"
   "A"
  )
  (vl-cmdf "._text"
   (vlax-curve-getendpoint pline)
   "0"
   "B"
  )
)

(defun annotate ()
  (setq xini (car (vlax-curve-getstartpoint pline))
 xend (car (vlax-curve-getendpoint pline))
 y    (* (fix
  (/ (cadr (car (vl-sort listaxy
 (function (lambda (e1 e2)
     (< (cadr e1) (cadr e2))
   )
 )
 )
   )
     )
     ve
  )
 )
 ve
     )
  )
  ;;end setq

  (if (< y 0)
    (setq y (- y (* 1 ve)))
  )

  (setq var-xyini (apply 'append (list (list xini y 0))))
  (setq var-xyend (apply 'append (list (list xend y 0))))
  (createline)
  (setq yref (strcat "P.C.: " (rtos (/ y ve) 2 2)))
  (setq ptloc (list (- xini 7.0) y));                                Distancia en x del Texto P.C.
  (vl-cmdf "._text" ptloc "0" yref)




  (setq lengthlistaxy (length listaxy))
  (setq count 0)
  (while (< count lengthlistaxy)
    (progn
      (setq var-xyini (apply 'append
     (list (list (car (nth count listaxy))
 (cadr (nth count listaxy))
 0
   )
     )
      )
      )
      (setq
 var-xyend (apply 'append
 (list (list (car (nth count listaxy)) y 0))
  )
      )
      (createline)

      (setq ytext (rtos (/ (cadr (nth count listaxy)) ve) 2 2))
      (setq xpt (car (nth count listaxy)))
      (setq ptloc (list xpt (- y 3.0)));                                 Distancia de y del Texto Cota
      (vl-cmdf "._text" ptloc "90" ytext)

      (setq count (1+ count))
    )
  )




)



(defun createline ()

  (setq arraySpace
 (vlax-make-safearray
   vlax-vbdouble
   (cons 0
 (- (length var-xyini) 1)
   )
 )
  )
  (setq var-xyini
 (vlax-safearray-fill arraySpace var-xyini)
  )

  (vlax-make-variant var-xyini)

  (setq arraySpace
 (vlax-make-safearray
   vlax-vbdouble
   (cons 0
 (- (length var-xyend) 1)
   )
 )
  )
  (setq var-xyend
 (vlax-safearray-fill arraySpace var-xyend)
  )

  (vlax-make-variant var-xyend)

  (setq line (vla-addline
       *ModelSpace*
       var-xyini
       var-xyend
     )
  )

)




(defun c:qp1 ()
  (timeini)
  (inivar)
  (getlayname)
  (esttexto)
  (getha)
  (getexaggeration)
  (listptintersect)
  (createprofile)
  (annotate)

  (vl-cmdf "._zoom"
   (vlax-curve-getstartpoint pline)
   (vlax-curve-getendpoint pline)
  )
  (recvar)
  (timeend)
  (princ)
)

(alert
  "Tipear [qp1] en la línea de comando\n\nAutor: Pedro Ferreira\nweb page: http://pwp.netcabo.pt/pedro_Ferreira\n\nESTE PROGRAMA SE PROPORCIONA \"AS IS\" Y CON TODAS LAS FALLAS.\n\nPresione OK para continuar."
)
Si Alguien con mas conocimiento de VL-LISP
Para colocar las distancias y cambiar el inicio a partir de la primera Intersección y
fijar el perfil en un punto determinado.
Desde ya gracias por los Aportes.
Un Saludo
Luis

Luis Alberto Benitez

Mensajes : 63
Fecha de inscripción : 29/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Perfil de Terreno

Mensaje por Luis Alberto Benitez el Vie Mayo 11, 2018 3:28 pm





Código:

;;; CADALYST 09/06  Tip 2149: QuickProfile.lsp  Center Line Profile (c) 2006 Pedro Ferreira


;;;Author: Pedro Miguel da Silva Ferreira Email:pedro_ferreira@netcabo.pt or pferreira@wsatkins.pt
;;;Web page: http:pwp.netcabo.pt/pedro_ferreira
;;;Location: Portugal, Lisboa
;;;RDS: PMSF
;;;Command Name: qp1
;;;Date: 09 of May 2006
;;;Version: 1.0
;;;Description: Visual Lisp Rutina que crea un perfil de sección del terreno basado en los contornos existentes.



(defun timeini ()
  (setq s (getvar "DATE"))
  (setq seconds (* 86400.0 (- s (fix s))))
)

(defun timeend ()
  (setq s1 (getvar "DATE"))
  (setq seconds1 (* 86400.0 (- s1 (fix s1))))
  (setq seconds2 (fix (- seconds1 seconds)))
  (princ
    (strcat "\nTime : "
    (itoa seconds2)
    " seconds"
    )
  )
)

(defun inivar ()
  (setq cmd_ini (getvar "cmdecho")
 fla_ini (getvar "flatland")
 osm_ini (getvar "osmode")
 ort_ini (getvar "orthomode")
 plt_ini (getvar "plinetype")
 aup_ini (getvar "auprec")
 uni_ini (getvar "unitmode")
 lun_ini (getvar "lunits")
 diz_ini (getvar "dimzin")
 edg_ini (getvar "edgemode")
  )
  (setvar "CMDECHO" 0)
  (setvar "FLATLAND" 0)
  (setvar "OSMODE" 0)
  (setvar "ORTHOMODE" 0)
  (setvar "PLINETYPE" 2)
  (setvar "AUPREC" 0)
  (setvar "UNITMODE" 1)
  (setvar "LUNITS" 2)
  (setvar "DIMZIN" 0)
  (setvar "EDGEMODE" 1)
)

(defun recvar ()
  (setvar "CMDECHO" cmd_ini)
  (setvar "FLATLAND" fla_ini)
  (setvar "OSMODE" osm_ini)
  (setvar "ORTHOMODE" ort_ini)
  (setvar "PLINETYPE" plt_ini)
  (setvar "AUPREC" aup_ini)
  (setvar "UNITMODE" uni_ini)
  (setvar "LUNITS" lun_ini)
  (setvar "DIMZIN" diz_ini)
  (setvar "EDGEMODE" edg_ini)
)

(defun getlayname ()
  (setq contourstest nil)
  (setq layername
 (getstring
   "\nPor favor ingrese el nombre de la capa de los contornos: "
 )
  )
  (setq contourstest
 (ssget "_x"
 (list (cons -4 "<OR")
      (cons -4 "<AND")
      (cons 0 "lwpolyline")
      (cons 8 layername)
      (cons -4 "AND>")
      (cons -4 "<AND")
      (cons 0 "polyline")
      (cons 8 layername)
      (cons -4 "AND>")
      (cons -4 "<AND")
      (cons 0 "line")
      (cons 8 layername)
      (cons -4 "AND>")
      (cons -4 "<AND")
      (cons 0 "spline")
      (cons 8 layername)
      (cons -4 "AND>")
      (cons -4 "OR>")
 )
 )
  )

  (while (= contourstest nil)
    (princ "\nSin contornos seleccionados...")
    (setq layername
   (getstring
     "\nPor favor ingrese el nombre de la capa de los contornos: "
   )
    )
    (setq contourstest
   (ssget "_x"
  (list (cons -4 "<OR")
 (cons -4 "<AND")
 (cons 0 "lwpolyline")
 (cons 8 layername)
 (cons -4 "AND>")
 (cons -4 "<AND")
 (cons 0 "polyline")
 (cons 8 layername)
 (cons -4 "AND>")
 (cons -4 "<AND")
 (cons 0 "line")
 (cons 8 layername)
 (cons -4 "AND>")
 (cons -4 "<AND")
 (cons 0 "spline")
 (cons 8 layername)
 (cons -4 "AND>")
 (cons -4 "OR>")
  )
   )
    )
  )
)

(defun activexsupport ()
  (vl-load-com)
  (setq *modelspace*
 (vla-get-modelspace
   (vla-get-activedocument (vlax-get-acad-object))
 )
  )
)

(defun esttexto ()

  (vl-cmdf "._style" "PMSF-TEXT" "romans" 0.75 0.80 0 "n" "n" "n");                 para Modif. Estilo de Textos, Altuta de Textos
)

(defun getha ()
  ;; esta entidad debe ser una lwpolyline
  (activexsupport)
  (setq
    ha (entsel "\nSeleccione la alineación horizontal: ")
  )
  (while (= ha nil)
    (progn
      (princ "\nNada seleccionado...")
      (setq ha
     (entsel "\nSeleccione la alineación horizontal: ")
      )
    )
  )
  (setq ha-type (cdr (assoc 0 (entget (car ha)))))
  (if (not (equal ha-type "LWPOLYLINE"))
    (progn
      (setq ha nil)
      (princ "\n***La alineación horizontal debe ser una LWPolyline***")
    )
  )
  (while (= ha nil)
    (progn
      (princ "\nNada seleccionado...")
      (setq ha
     (entsel "\nSeleccione la alineación horizontal: ")
      )
      (setq ha-type (cdr (assoc 0 (entget (car ha)))))
      (if (not (equal ha-type "LWPOLYLINE"))
 (progn
  (setq ha nil)
  (princ "\n***La alineación horizontal debe ser una LWPolyline***")
 )
      )
    )
  )
  (setq ha-ename (entget (car ha)))
  (setq ha-ename (cdr (assoc -1 ha-ename)))
  (setq ha-object (vlax-ename->vla-object ha-ename))

  (vl-cmdf "._text"
   (vlax-curve-getstartpoint ha-object);                        
   "0"
   "A"
  )
  (vl-cmdf "._text"
   (vlax-curve-getendpoint ha-object)
   "0"
   "B"
  )
)

(defun getexaggeration ()
  (initget 2)
  (setq ve (getreal "\nIngrese la Escala Vertical <1>: "))
  (if (= ve nil)
    (setq ve 1)
  )
)


(defun listptintersect ()
  (setq listaxy nil)

  (setq hazvalue (caddr (vlax-curve-getStartPoint ha-object)))

  (setq curvas contourstest)
  (setq ncurvas (sslength curvas))
  (setq listaxy nil)
  (setq counter 0)
  (while (< counter ncurvas)
    (progn
      (setq cnivel-ename (ssname curvas counter))
      (setq cnivel-object (vlax-ename->vla-object cnivel-ename))

      (setq cnivelzvalue
     (caddr (vlax-curve-getStartPoint cnivel-object))
      )

      (setq ha-ENTITY
     (subst (cons 38 cnivelzvalue)
    (assoc 38 (entget (car ha)))
    (entget (car ha))
     )
      )
      (entmod ha-ENTITY)

      (setq intersectpt
     (vlax-variant-value
       (vlax-invoke-method
 ha-object
 "IntersectWith"
 cnivel-object
 acExtendNone
       )
     )
      )

      (setq test nil)
      (setq
 test (vl-catch-all-apply
       'vlax-safearray->list
       (list intersectpt)
     )
      )
      (setq error (vl-catch-all-error-p test))

      (if (/= error t)
 (progn
  (setq intersectpt (vlax-safearray->list intersectpt))
  (setq interlength (length intersectpt))

  (if (> interlength 3)
    (progn
      (setq dividelength (/ interlength 3))
      (setq count 0)
      (while (< count interlength)
 (progn
  (setq newpt (list (nth count intersectpt)
    (nth (+ count 1) intersectpt);     (nth (+ count 1) intersectpt)
    (nth (+ count 2) intersectpt);     (nth (+ count 2) intersectpt)
      )
  )

  (setq x (vlax-curve-getdistatPoint ha-ename newpt))
  (setq z (caddr intersectpt))
  (setq xy (list x (* z ve)));                            Z del listado de los Vertices Multiplicado por la Escala ve
  (setq
    listaxy (append listaxy (list xy))
  )

  (setq count (+ count 3))
 )
      )
    )
    (progn
      (setq x (vlax-curve-getdistatPoint ha-ename intersectpt))
      (setq z (caddr intersectpt))
      (setq xy (list x (* z ve)));                               Z del listado de los Vertices Multiplicado por la Escala ve
      (setq
 listaxy (append listaxy (list xy))
      )
    )
  )

  (setq ha-ENTITY
 (subst (cons 38 hazvalue)
 (assoc 38 (entget (car ha)))
 (entget (car ha))
 )
  )
  (entmod ha-ENTITY)
 )
      )
      (setq counter (1+ counter))
    )
  )

  (setq listaxy
 (vl-sort listaxy
  (function (lambda (e1 e2)
      (< (car e1) (car e2))
    )
  )
 )
  )

  (setq startdist (vlax-curve-getdistatPoint
    ha-ename
    (vlax-curve-getstartpoint ha-ename)
  )
 enddist  (vlax-curve-getdistatPoint
    ha-ename
    (vlax-curve-getendpoint ha-ename)
  )
  )

  (setq pt1 (car (car listaxy))
 pt2 (car (last listaxy))
  )

  (if (/= startdist pt1)
    (progn
      (setq x startdist)
      (setq y (+ (* (/ (- (cadr (car listaxy)) (cadr (cadr listaxy)))
       (- (car (cadr listaxy)) (car (car listaxy)))
    )
    (- (car (car listaxy)) startdist)
 )
 (cadr (car listaxy))
      )
      )
      (setq xy (list x y))
      (setq
 listaxy (append listaxy (list xy))
      )
      (setq listaxy
     (vl-sort listaxy
      (function (lambda (e1 e2)
  (< (car e1) (car e2))
 )
      )
     )
      )

    )
  )

  (if (/= enddist pt1)
    (progn
      (setq pos (1- (length listaxy)))
      (setq x enddist)
      (setq y
     (+
       (*
 (/ (- (cadr (nth pos listaxy))
       (cadr (nth (1- pos) listaxy))
    )
    (- (car (nth pos listaxy)) (car (nth (1- pos) listaxy)))
 )
 (- enddist (car (nth pos listaxy)))
       )
       (cadr (nth pos listaxy))
     )
      )
      (setq xy (list x y))
      (setq
 listaxy (append listaxy (list xy))
      )
      (setq listaxy
     (vl-sort listaxy
      (function (lambda (e1 e2)
  (< (car e1) (car e2))
 )
      )
     )
      )

    )
  )
)

(defun createprofile ()
  (setq variante-listaxy (apply 'append listaxy))

  (setq arraySpace
 (vlax-make-safearray
   vlax-vbdouble
   (cons 0
 (- (length variante-listaxy) 1)   ;                
   )
 )
  )
  (setq variante-listaxy
 (vlax-safearray-fill arraySpace variante-listaxy)
  )

  (vlax-make-variant variante-listaxy)


  (setq pline (vla-addLightweightPolyline
 *ModelSpace*
 variante-listaxy
      )
  )


  (vl-cmdf "._text"
   (vlax-curve-getstartpoint pline)
   "0"
   "A"
  )
  (vl-cmdf "._text"
   (vlax-curve-getendpoint pline)
   "0"
   "B"
  )
)

(defun annotate ()
  (setq xini (car (vlax-curve-getstartpoint pline))
 xend (car (vlax-curve-getendpoint pline))
 y    (* (fix
  (/ (cadr (car (vl-sort listaxy
 (function (lambda (e1 e2)
     (< (cadr e1) (cadr e2))
   )
 )
 )
   )
     )
     ve
  )
 )
 ve
     )
  )
  ;;end setq

  (if (< y 0)
    (setq y (- y (* 1 ve)))
  )

  (setq var-xyini (apply 'append (list (list xini y 0))))
  (setq var-xyend (apply 'append (list (list xend y 0))))
  (createline)
  (setq yref (strcat "P,C.: " (rtos (/ y ve) 2 2)))
  (setq ptloc (list (- xini 7.0) y));                                Distancia enx del Texto P.C.
  (vl-cmdf "._text" ptloc "0" yref)




  (setq lengthlistaxy (length listaxy))
  (setq count 0)
  (while (< count lengthlistaxy)
    (progn
      (setq var-xyini (apply 'append
     (list (list (car (nth count listaxy))
 (cadr (nth count listaxy))
 0
   )
     )
      )
      )
      (setq
 var-xyend (apply 'append
 (list (list (car (nth count listaxy)) y 0))
  )
      )
      (createline)




      (setq xtext (rtos (car (nth count listaxy)) 2 1));                  Para Control de Decimales
      (setq xpt (car (nth count listaxy)))            
      (setq ptloc1 (list xpt (- y 3.0)));                                 Distancia de x del Texto distancia
      (vl-cmdf "._text" ptloc1 "90" xtext)



      (setq ytext (rtos (/ (cadr (nth count listaxy)) ve) 2 2));          Para Control de Decimales
      (setq xpt (car (nth count listaxy)))
      (setq ptloc (list xpt (- y 7.0)));                                  Distancia de y del Texto Cota
      (vl-cmdf "._text" ptloc "90" ytext)








      (setq count (1+ count))
    )
  )




)



(defun createline ()

  (setq arraySpace
 (vlax-make-safearray
   vlax-vbdouble
   (cons 0
 (- (length var-xyini) 1)
   )
 )
  )
  (setq var-xyini
 (vlax-safearray-fill arraySpace var-xyini)
  )

  (vlax-make-variant var-xyini)

  (setq arraySpace
 (vlax-make-safearray
   vlax-vbdouble
   (cons 0
 (- (length var-xyend) 1)
   )
 )
  )


 (setq var-xyend
 (vlax-safearray-fill arraySpace var-xyend)
  )

  (vlax-make-variant var-xyend)

  (setq line (vla-addline
       *ModelSpace*
       var-xyini
       var-xyend
     )
  )

)




(defun c:qp1 ()
  (timeini)
  (inivar)
  (getlayname)
  (esttexto)
  (getha)
  (getexaggeration)
  (listptintersect)
  (createprofile)
  (annotate)

  (vl-cmdf "._zoom"
   (vlax-curve-getstartpoint pline)
   (vlax-curve-getendpoint pline)
  )
  (recvar)
  (timeend)
  (princ)
)

(alert
  "Tipear [qp1] en la línea de comando\n\nAutor: Pedro Ferreira\nweb page: http://pwp.netcabo.pt/pedro_Ferreira\n\nESTE PROGRAMA SE PROPORCIONA \"AS IS\" Y CON TODAS LAS FALLAS.\n\nPresione OK para continuar."
)
Completando el lisp ya pude colocar los textos de la distancia
lo que sigue es modificar para que las distancias se inicie a partir del
primer punto de intersección con la curva de Nivel
y un punto de inserción del dibujo.
seguiremos intentando
Un saludo
Luis

Luis Alberto Benitez

Mensajes : 63
Fecha de inscripción : 29/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Perfil de Terreno

Mensaje por Luis Alberto Benitez el Dom Mayo 13, 2018 3:47 pm

En un afán de seguir mejorando ahí va otra :
Código:
;;; CADALYST 09/06  Tip 2149: QuickProfile.lsp  Center Line Profile (c) 2006 Pedro Ferreira


;;;Author: Pedro Miguel da Silva Ferreira Email:pedro_ferreira@netcabo.pt or pferreira@wsatkins.pt
;;;Web page: http:pwp.netcabo.pt/pedro_ferreira
;;;Location: Portugal, Lisboa
;;;RDS: PMSF
;;;Command Name: qp1
;;;Date: 09 of May 2006
;;;Version: 1.0
;;;Description: Visual Lisp Rutina que crea un Perfil de Sección del Terreno basado en las Curvas de Nivel


(defun timeini ()
  (setq s (getvar "DATE"))
  (setq seconds (* 86400.0 (- s (fix s))))
)

(defun timeend ()
  (setq s1 (getvar "DATE"))
  (setq seconds1 (* 86400.0 (- s1 (fix s1))))
  (setq seconds2 (fix (- seconds1 seconds)))
  (princ
    (strcat "\nTiempo : "
    (itoa seconds2)
    " Segundos"
    )
  )
)

(defun inivar ()
  (setq cmd_ini (getvar "cmdecho")
 fla_ini (getvar "flatland")
 osm_ini (getvar "osmode")
 ort_ini (getvar "orthomode")
 plt_ini (getvar "plinetype")
 aup_ini (getvar "auprec")
 uni_ini (getvar "unitmode")
 lun_ini (getvar "lunits")
 diz_ini (getvar "dimzin")
 edg_ini (getvar "edgemode")
  )
  (setvar "CMDECHO" 0)
  (setvar "FLATLAND" 0)
  (setvar "OSMODE" 0)
  (setvar "ORTHOMODE" 0)
  (setvar "PLINETYPE" 2)
  (setvar "AUPREC" 0)
  (setvar "UNITMODE" 1)
  (setvar "LUNITS" 2)
  (setvar "DIMZIN" 0)
  (setvar "EDGEMODE" 1)
)

(defun recvar ()
  (setvar "CMDECHO" cmd_ini)
  (setvar "FLATLAND" fla_ini)
  (setvar "OSMODE" osm_ini)
  (setvar "ORTHOMODE" ort_ini)
  (setvar "PLINETYPE" plt_ini)
  (setvar "AUPREC" aup_ini)
  (setvar "UNITMODE" uni_ini)
  (setvar "LUNITS" lun_ini)
  (setvar "DIMZIN" diz_ini)
  (setvar "EDGEMODE" edg_ini)
)

(defun getlayname ()
  (setq contourstest nil)
      (princ "\nPor favor Seleccione curva de Nivel :")
      (setq linea(car(entsel "\nPor favor Seleccione curva de Nivel :")))
      (setq olinea(vlax-ename->vla-object linea))
      (setq layername(vlax-get-property olinea 'layer))

  (setq contourstest
 (ssget "_x"
 (list (cons -4 "<OR")
      (cons -4 "<AND")
      (cons 0 "lwpolyline")
      (cons 8 layername)
      (cons -4 "AND>")
      (cons -4 "<AND")
      (cons 0 "polyline")
      (cons 8 layername)
      (cons -4 "AND>")
      (cons -4 "<AND")
      (cons 0 "line")
      (cons 8 layername)
      (cons -4 "AND>")
      (cons -4 "<AND")
      (cons 0 "spline")
      (cons 8 layername)
      (cons -4 "AND>")
      (cons -4 "OR>")
 )
 )
  )

  
)

(defun activexsupport ()
  (vl-load-com)
  (setq *modelspace*
 (vla-get-modelspace
   (vla-get-activedocument (vlax-get-acad-object))
 )
  )
)

(defun esttexto ()

  (vl-cmdf "._style" "PMSF-TEXT" "romans" 0.75 0.80 0 "n" "n" "n");                 para Modif. Estilo de Textos, Altura de Textos
)

(defun getha ()
  ;; esta entidad debe ser una lwpolyline
  (activexsupport)

  (princ "\nSeleccione la Alineación Horizontal: ")

  (setq
    ha (entsel "\nSeleccione la Alineación Horizontal: ")
  )
  (while (= ha nil)
    (progn
      (princ "\nNada seleccionado...")
      (setq ha
     (entsel "\nSeleccione la Alineación Horizontal: ")
      )
    )
  )
  (setq ha-type (cdr (assoc 0 (entget (car ha)))))
  (if (not (equal ha-type "LWPOLYLINE"))
    (progn
      (setq ha nil)
      (princ "\n***La Alineación Horizontal debe ser una LWPolyline***")
    )
  )
  (while (= ha nil)
    (progn
      (princ "\nNada seleccionado...")
      (setq ha
     (entsel "\nSeleccione la Alineación Horizontal: ")
      )
      (setq ha-type (cdr (assoc 0 (entget (car ha)))))
      (if (not (equal ha-type "LWPOLYLINE"))
 (progn
  (setq ha nil)
  (princ "\n***La Alineación Horizontal debe ser una LWPolyline***")
 )
      )
    )
  )
  (setq ha-ename (entget (car ha)))
  (setq ha-ename (cdr (assoc -1 ha-ename)))
  (setq ha-object (vlax-ename->vla-object ha-ename))

  (vl-cmdf "._text"
   (vlax-curve-getstartpoint ha-object);                          Texto de Inicio A en el Dibujo de la Polilinea Seleccionada     Original:    (vlax-curve-getstartpoint ha-object)
   "0"
   "A"
  )
  (vl-cmdf "._text"
   (vlax-curve-getendpoint ha-object);                            Texto de Inicio B en el Dibujo de la Polilinea Seleccionada
   "0"
   "B"
  )

)

(defun getexaggeration ()
  (initget 2)
  (princ "\nIngrese la Escala Vertical <1>: ")
  (setq ve (getreal "\nIngrese la Escala Vertical <1>: "))
  (if (= ve nil)
    (setq ve 1)
  )
)






;(setq puntoInserción (getpoint "\nIndique punto para inserción del Perfil de Terreno: ")); Falta Completar








(defun listptintersect ()
  (setq listaxy nil)

  (setq hazvalue (caddr (vlax-curve-getStartPoint ha-object)))

  (setq curvas contourstest)
  (setq ncurvas (sslength curvas))
  (setq listaxy nil)
  (setq counter 0)
  (while (< counter ncurvas)
    (progn
      (setq cnivel-ename (ssname curvas counter))
      (setq cnivel-object (vlax-ename->vla-object cnivel-ename))

      (setq cnivelzvalue
     (caddr (vlax-curve-getStartPoint cnivel-object))
      )

      (setq ha-ENTITY
     (subst (cons 38 cnivelzvalue)
    (assoc 38 (entget (car ha)))
    (entget (car ha))
     )
      )
      (entmod ha-ENTITY)

      (setq intersectpt
     (vlax-variant-value
       (vlax-invoke-method
 ha-object
 "IntersectWith"
 cnivel-object
 acExtendNone
       )
     )
      )

      (setq test nil)
      (setq
 test (vl-catch-all-apply
       'vlax-safearray->list
       (list intersectpt)
     )
      )
      (setq error (vl-catch-all-error-p test))

      (if (/= error t)
 (progn
  (setq intersectpt (vlax-safearray->list intersectpt))
  (setq interlength (length intersectpt))

  (if (> interlength 3)
    (progn
      (setq dividelength (/ interlength 3))
      (setq count 0)
      (while (< count interlength)
 (progn
  (setq newpt (list (nth count intersectpt)
    (nth (+ count 1) intersectpt);     (nth (+ count 1) intersectpt)
    (nth (+ count 2) intersectpt);     (nth (+ count 2) intersectpt)
      )
  )

  (setq x (vlax-curve-getdistatPoint ha-ename newpt))
  (setq z (caddr intersectpt))
  (setq xy (list x (* z ve)));                            Z del listado de los Vertices Multiplicado por la Escala ve
  (setq
    listaxy (append listaxy (list xy))
  )

  (setq count (+ count 3))
 )
      )
    )
    (progn
      (setq x (vlax-curve-getdistatPoint ha-ename intersectpt))
      (setq z (caddr intersectpt))
      (setq xy (list x (* z ve)));                               Z del listado de los Vertices Multiplicado por la Escala ve
      (setq
 listaxy (append listaxy (list xy))
      )
    )
  )

  (setq ha-ENTITY
 (subst (cons 38 hazvalue)
 (assoc 38 (entget (car ha)))
 (entget (car ha))
 )
  )
  (entmod ha-ENTITY)
 )
      )
      (setq counter (1+ counter))
    )
  )

  (setq listaxy
 (vl-sort listaxy
  (function (lambda (e1 e2)
      (< (car e1) (car e2))
    )
  )
 )
  )

  (setq startdist (vlax-curve-getdistatPoint
    ha-ename
    (vlax-curve-getstartpoint ha-ename)
  )
 enddist  (vlax-curve-getdistatPoint
    ha-ename
    (vlax-curve-getendpoint ha-ename)
  )
  )

  (setq pt1 (car (car listaxy))
 pt2 (car (last listaxy))
  )

  (if (/= startdist pt1)
    (progn
      (setq x startdist)
      (setq y (+ (* (/ (- (cadr (car listaxy)) (cadr (cadr listaxy)))
       (- (car (cadr listaxy)) (car (car listaxy)))
    )
    (- (car (car listaxy)) startdist)
 )
 (cadr (car listaxy))
      )
      )
      (setq xy (list x y))
      (setq
 listaxy (append listaxy (list xy))
      )
      (setq listaxy
     (vl-sort listaxy
      (function (lambda (e1 e2)
  (< (car e1) (car e2))
 )
      )
     )
      )

    )
  )

  (if (/= enddist pt1)
    (progn
      (setq pos (1- (length listaxy)))
      (setq x enddist)
      (setq y
     (+
       (*
 (/ (- (cadr (nth pos listaxy))
       (cadr (nth (1- pos) listaxy))
    )
    (- (car (nth pos listaxy)) (car (nth (1- pos) listaxy)))
 )
 (- enddist (car (nth pos listaxy)))
       )
       (cadr (nth pos listaxy))
     )
      )
      (setq xy (list x y))
      (setq
 listaxy (append listaxy (list xy))
      )
      (setq listaxy
     (vl-sort listaxy
      (function (lambda (e1 e2)
  (< (car e1) (car e2))
 )
      )
     )
      )

    )
  )
)

(defun createprofile ()
  (setq variante-listaxy (apply 'append listaxy))

  (setq arraySpace
 (vlax-make-safearray
   vlax-vbdouble
   (cons 0
 (- (length variante-listaxy) 1)   ;                   (- (length variante-listaxy) 1)
   )
 )
  )
  (setq variante-listaxy
 (vlax-safearray-fill arraySpace variante-listaxy)
  )

  (vlax-make-variant variante-listaxy)


  (setq pline (vla-addLightweightPolyline
   *ModelSpace*
   variante-listaxy
        )
  )


  (vl-cmdf "._text"
   (vlax-curve-getstartpoint pline);                         Texto de Inicio A en el Dibujo del Perfil
   "0"
   "A"
  )
  (vl-cmdf "._text"
   (vlax-curve-getendpoint pline);                          Texto de Inicio B en el Dibujo del Perfil
   "0"
   "B"
  )
)

(defun annotate ()
  (setq xini (car (vlax-curve-getstartpoint pline))
 xend (car (vlax-curve-getendpoint pline))
 y    (* (fix
  (/ (cadr (car (vl-sort listaxy
 (function (lambda (e1 e2)
     (< (cadr e1) (cadr e2))
   )
 )
 )
   )
     )
     ve
  )
 )
 ve
     )
  )
  ;;Fin setq

  (if (< y 0)
    (setq y (- y (* 1 ve)))
  )

  (setq var-xyini (apply 'append (list (list xini y 0))))
  (setq var-xyend (apply 'append (list (list xend y 0))))
  (createline)
  (setq yref (strcat "P.C.:  " (rtos (/ y ve) 2 0)))
  (setq ptloc (list (- xini 7.0) y));                                   Distancia en x del Texto P.C.
  (vl-cmdf "._text" ptloc "0" yref)

  (setq escala (strcat "Escala 1:"(rtos (* 1 ve) 2 0)))
  (setq pt (list (- xini 7.0) (+ y 2.0)));                              Distancia en y del Texto Escala
  (vl-cmdf "._text" pt "0" escala)


 
  (setq p (list (- xini 2.5)(- y 3.3)));                                Distancia en x del Texto DIST.
  (vl-cmdf "._text" p "90" (strcat "DIST."))



  (setq pP (list (- xini 2.5)(- y 6.5)));                                Distancia en x del Texto COTA.
  (vl-cmdf "._text" pP "90" (strcat "COTA"))





  (setq lengthlistaxy (length listaxy))
  (setq count 0)
  (while (< count lengthlistaxy)
    (progn
      (setq var-xyini (apply 'append
     (list (list (car (nth count listaxy))
 (cadr (nth count listaxy))
 0
   )
     )
      )
      )
      (setq
 var-xyend (apply 'append
 (list (list (car (nth count listaxy)) y 0))
  )
      )
      (createline)




      (setq xtext (rtos (car (nth count listaxy)) 2 1));                  Para Control de Decimales
      (setq xpt (car (nth count listaxy)))            
      (setq ptloc1 (list xpt (- y 3.0)));                                 Distancia de x del Texto distancia
      (vl-cmdf "._text" ptloc1 "90" xtext)



      (setq ytext (rtos (/ (cadr (nth count listaxy)) ve) 2 2));          Para Control de Decimales
      (setq xpt (car (nth count listaxy)))
      (setq ptloc (list xpt (- y 7.0)));                                  Distancia de y del Texto Cota
      (vl-cmdf "._text" ptloc "90" ytext)








      (setq count (1+ count))
    )
  )




)



(defun createline ()

  (setq arraySpace
 (vlax-make-safearray
   vlax-vbdouble
   (cons 0
 (- (length var-xyini) 1)
   )
 )
  )
  (setq var-xyini
 (vlax-safearray-fill arraySpace var-xyini)
  )

  (vlax-make-variant var-xyini)

  (setq arraySpace
 (vlax-make-safearray
   vlax-vbdouble
   (cons 0
 (- (length var-xyend) 1)
   )
 )
  )


 (setq var-xyend
 (vlax-safearray-fill arraySpace var-xyend)
  )

  (vlax-make-variant var-xyend)

  (setq line (vla-addline
       *ModelSpace*
       var-xyini
       var-xyend
     )
  )

)




(defun c:qp1 ()
  (timeini)
  (inivar)
  (getlayname)
  (esttexto)
  (getha)
  (getexaggeration)
  (listptintersect)
  (createprofile)
  (annotate)

  (vl-cmdf "._zoom"
   (vlax-curve-getstartpoint pline)
   (vlax-curve-getendpoint pline)
  )
  (recvar)
  (timeend)
  (princ)
)

(alert
  "Tipear [qp1] en la línea de comando\n\nAutor: Pedro Ferreira\nweb page: http://pwp.netcabo.pt/pedro_Ferreira\n\nESTE PROGRAMA SE PROPORCIONA \"AS IS\" Y CON TODAS LAS FALLAS.\n\nPresione OK para continuar."
)
Si hay alguien con interés de seguir mejorando
bienvenido sea.
un Saludo
Luis

Luis Alberto Benitez

Mensajes : 63
Fecha de inscripción : 29/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Perfil de Terreno

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

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