Longitud de Polilinea
3 participantes
Página 1 de 1.
Longitud de Polilinea
Empezando el dia,
Que tal, buenos dias, tengo alguna rutinas de medicion de lines y polilineas por tramos, pero talvez alguien tenga una lips para medir polilinea completa, que te saque la medida.
Envio ejemplo https://drive.google.com/open?id=0B131sP2Zq1-QdEI3bTFoMWFGY3M
Agradeceria si pueden ver si alguien tiene algo que me pueda ayudar a conseguir este resultado.
Gracias
Que tal, buenos dias, tengo alguna rutinas de medicion de lines y polilineas por tramos, pero talvez alguien tenga una lips para medir polilinea completa, que te saque la medida.
Envio ejemplo https://drive.google.com/open?id=0B131sP2Zq1-QdEI3bTFoMWFGY3M
Agradeceria si pueden ver si alguien tiene algo que me pueda ayudar a conseguir este resultado.
Gracias
Zicaryd- Mensajes : 38
Fecha de inscripción : 23/10/2016
Bien venido al foro .
Zicaryd escribió:Empezando el dia,
Que tal, buenos dias, tengo alguna rutinas de medicion de lines y polilineas por tramos, pero talvez alguien tenga una lips para medir polilinea completa, que te saque la medida.
Envio ejemplo https://drive.google.com/open?id=0B131sP2Zq1-QdEI3bTFoMWFGY3M
Agradeceria si pueden ver si alguien tiene algo que me pueda ayudar a conseguir este resultado.
Gracias
Re: Longitud de Polilinea
Hola prueba esto , hay que resolver la posición y rotación del texto . Puedes adaptar el otro LISP . O lo puedes poner aquí para ver de adaptarlo
- Código:
(defun c:long-poly ()
(VL-LOAD-COM)
(SETQ ACAD-OBJ (VLAX-GET-ACAD-OBJECT)) ;_ el programa ACAD
(SETQ ADOC (VLA-GET-ACTIVEDOCUMENT ACAD-OBJ)) ;_ el DWG que esta abierto-
(SETQ MODEL (VLA-GET-MODELSPACE ADOC))
(PROMPT "\n Seleccione una poly")
(SETQ POLY (SSNAME (SSGET ":S" (LIST (CONS 0 "*poly*"))) 0))
(SETQ POLY-OBJ (VLAX-ENAME->VLA-OBJECT POLY))
(SETQ POLY-LENGTH (VLA-GET-LENGTH POLY-OBJ))
(SETQ POLY-MID-PAR (VLAX-CURVE-GETPARAMATDIST POLY-OBJ (/ POLY-LENGTH 2.0)))
(SETQ POLY-MID-PT (VLAX-CURVE-GETPOINTATPARAM POLY-OBJ POLY-MID-PAR))
(SETQ POLY-FIRST-DER (VLAX-CURVE-GETFIRSTDERIV POLY-OBJ POLY-MID-PAR))
(SETQ POLY-MID-PT-ANG (ATAN (CAR POLY-FIRST-DER) (CADR POLY-FIRST-DER)))
(prompt "\n seleccione un texto ejemplo")
(SETQ TEXT-EJEMPLO (SSNAME (SSGET ":S" (LIST (CONS 0 "text"))) 0))
(SETQ TEXT-EJEMPLO-OBJ (VLAX-ENAME->VLA-OBJECT TEXT-EJEMPLO))
(SETQ TEXT-HEIGHT (VLA-GET-HEIGHT TEXT-EJEMPLO-OBJ))
(SETQ TEXT-INSERT (VLA-GET-INSERTIONPOINT TEXT-EJEMPLO-OBJ))
(SETQ TEXT-COPIADO (VLA-COPY TEXT-EJEMPLO-OBJ))
(SETQ TEXT-PT-MID-PT (POLAR POLY-MID-PT (- POLY-MID-PT-ANG) (* 1.5 TEXT-HEIGHT)))
;; corrige el 1.5 a necesidad
(SETQ TEXT-ROT (- (+ (/ PI 2) POLY-MID-PT-ANG)))
;; puede que no de siempre lo esperado
(VLA-MOVE TEXT-COPIADO TEXT-INSERT (VLAX-3D-POINT TEXT-PT-MID-PT))
(VLA-PUT-TEXTSTRING TEXT-COPIADO (rtos POLY-LENGTH 2 2))
(VLA-PUT-ROTATION TEXT-COPIADO TEXT-ROT)
)
Re: Longitud de Polilinea
Buen dia, que tal Admin, gracias por la mención.
He revisado el lips funciona bastante bien, pero si quisiera seleccionar varias polilineas a la vez solo le pone texto a una.
He revisado el lips funciona bastante bien, pero si quisiera seleccionar varias polilineas a la vez solo le pone texto a una.
Zicaryd- Mensajes : 38
Fecha de inscripción : 23/10/2016
Re: Longitud de Polilinea
A lo pedido.
lo entregado.
Podemos ampliar el Lisp
Envía un DWG con TODAS las POLYS . lo puedes hacer por el gdrive , o a mi correo
Debe venir con al menos UN TEXTO EJEMPLO DE COMO QUIRES LA MEDIDA
devitg@gmail.com
Dice una sola poly y una sola medidaZicardy escribió:pero talvez alguien tenga una lips para medir polilinea completa, que te saque la medida.
lo entregado.
Podemos ampliar el Lisp
Envía un DWG con TODAS las POLYS . lo puedes hacer por el gdrive , o a mi correo
Debe venir con al menos UN TEXTO EJEMPLO DE COMO QUIRES LA MEDIDA
devitg@gmail.com
Re: Longitud de Polilinea
Gracias por tu atención, me refería a ese ejemplo puntual que subí, que si en una sola selecciono las 4 polilineas me ponga las distancia, ya que según la rutina que me has proporcionado debo seleccionarlo una polilinea y el texto, pero no lo hace masivamente.
Zicaryd- Mensajes : 38
Fecha de inscripción : 23/10/2016
Re: Longitud de Polilinea
sube el dwg con muchas poly , un dwg real , no uno preparado para el foro ,
Re: Longitud de Polilinea
Subo el ejemplo real,
https://drive.google.com/open?id=0B131sP2Zq1-QTmJXdlp6V09mLWM
Las mismas condiciones, se podria mejorar, una separación del texto a la linea o la opción de tamaño de texto,
Igual Gracias.
https://drive.google.com/open?id=0B131sP2Zq1-QTmJXdlp6V09mLWM
Las mismas condiciones, se podria mejorar, una separación del texto a la linea o la opción de tamaño de texto,
Igual Gracias.
Zicaryd- Mensajes : 38
Fecha de inscripción : 23/10/2016
Re: Longitud de Polilinea
Debes poner un texto ejemplo , tal como tu quires que quede.
Es mas fácil replicar lo que trines , que adivinar lo que tu deseas, y mas dificil hacer todas las opciones.
Es mas fácil replicar lo que trines , que adivinar lo que tu deseas, y mas dificil hacer todas las opciones.
Zicaryd- Mensajes : 38
Fecha de inscripción : 23/10/2016
Re: Longitud de Polilinea
Hola , adjunto l o que he hecho hasta ahora , no funciona , no sé porqué .Ruego a quien pueda darle un vista y tratar dd resolverlo. L
No tendré PC hasta el sábado 30de sep .
No tendré PC hasta el sábado 30de sep .
- Código:
(defun saca-long-poly (POLY-OBJ TEXT-COPIADO
TEXT-DISTANCE-A-POLY
TEXT-INSERT
/
POLY-FIRST-DER
POLY-LENGTH
POLY-MID-PAR
POLY-MID-PT
POLY-MID-PT-ANG
TEXT-PT-MID-PT
TEXT-ROT
)
(SETQ POLY-LENGTH (VLA-GET-LENGTH POLY-OBJ))
(SETQ POLY-MID-PAR (VLAX-CURVE-GETPARAMATDIST POLY-OBJ (/ POLY-LENGTH 2.0)))
(SETQ POLY-MID-PT (VLAX-CURVE-GETPOINTATPARAM POLY-OBJ POLY-MID-PAR))
(SETQ POLY-FIRST-DER (VLAX-CURVE-GETFIRSTDERIV POLY-OBJ POLY-MID-PAR))
(SETQ POLY-MID-PT-ANG (ATAN (CAR POLY-FIRST-DER) (CADR POLY-FIRST-DER)))
(SETQ TEXT-PT-MID-PT (POLAR POLY-MID-PT (- POLY-MID-PT-ANG) text-distance-a-poly))
(SETQ TEXT-ROT (- (+ (/ PI 2) POLY-MID-PT-ANG)))
;; puede que no de siempre lo esperado
(VLA-MOVE TEXT-COPIADO TEXT-INSERT (VLAX-3D-POINT TEXT-PT-MID-PT))
(VLA-PUT-TEXTSTRING TEXT-COPIADO (rtos POLY-LENGTH 2 2))
(VLA-PUT-ROTATION TEXT-COPIADO TEXT-ROT)
)
;;**************************************************************************************
(defun c:long-poly ()
(VL-LOAD-COM)
(SETQ ACAD-OBJ (VLAX-GET-ACAD-OBJECT)) ;_ el programa ACAD
(SETQ ADOC (VLA-GET-ACTIVEDOCUMENT ACAD-OBJ)) ;_ el DWG que esta abierto-
(SETQ MODEL (VLA-GET-MODELSPACE ADOC))
(prompt "\n seleccione un texto ejemplo")
(SETQ TEXT-EJEMPLO (SSNAME (SSGET ":S" (LIST (CONS 0 "text"))) 0))
(SETQ TEXT-EJEMPLO-OBJ (VLAX-ENAME->VLA-OBJECT TEXT-EJEMPLO))
(SETQ TEXT-HEIGHT (VLA-GET-HEIGHT TEXT-EJEMPLO-OBJ))
(SETQ TEXT-INSERT (VLA-GET-INSERTIONPOINT TEXT-EJEMPLO-OBJ))
(SETQ TEXT-COPIADO (VLA-COPY TEXT-EJEMPLO-OBJ))
(setq TEXT-xy (REVERSE (CDR (REVERSE (VLAX-SAFEARRAY->LIST ( VARIANT-VALUE TEXT-INSERT))))))
(PROMPT "\n Seleccione una poly")
(SETQ POLY (SSNAME (SSGET ":S:E"(LIST (CONS 0 "*poly*"))) 0))
(SETQ POLY-OBJ (VLAX-ENAME->VLA-OBJECT POLY))
(setq pt@poly (VLAX-CURVE-GETCLOSESTPOINTTO POLY-OBJ text-xy))
(setq text-distance-a-poly (distance text-xy pt@poly))
(setq poly-layer (VLA-GET-LAYER POLY-OBJ))
(setq poly-ss (ssget "X" (list ( cons 0 "*poly*") (cons 8 poly-layer))))
(setq poly-obj-ss (VLA-GET-ACTIVESELECTIONSET adoc ))
(setq cont 1)
(setq POLY-OBJ (VLA-ITEM poly-obj-ss 0))
(VLAX-FOR POLY-OBJ POLY-OBJ-SS
(SETQ CONT (1+ CONT))
(SACA-LONG-POLY POLY-OBJ TEXT-COPIADO text-distance-a-poly TEXT-INSERT )
CONT
)
)
Re: Longitud de Polilinea
Gabriel, le veo dos cosas a tu rutina:
1º Para seleccionar con ssget una única entidad sería
2º Como no refrescas la entidad de texto que copias, pues te la vas moviendo a cada nueva entidad de polilinea que tratas con lo que al final no queda constancia alguna de lo que se ha hecho.
Prueba a poniendo en el bucle el refresco
Ahora si debe funcionar, PERO ......
El tema de la rutina es encontrar como deducir que es arriba y abajo. Poner el texto al derecho es comparar un angulo pero poner arriba depende del ángulo y de como este dibujada la polilinea y ahí me pierdo en este dibujo.
El tema salió en Hispacad varias veces para acotar y numerar vértices en polilineas cerradas, interior o exteriormente (parcelas, habitaciones etc) con lo cual había método para calcular si estaba dentro o fuera, pero aquí no veo claro que es arriba de la línea porque se puede haber trazado de iz a de o al berres ....
Un saludo
1º Para seleccionar con ssget una única entidad sería
- Código:
(SSGET "_+.:E:S" etc
2º Como no refrescas la entidad de texto que copias, pues te la vas moviendo a cada nueva entidad de polilinea que tratas con lo que al final no queda constancia alguna de lo que se ha hecho.
Prueba a poniendo en el bucle el refresco
- Código:
(VLAX-FOR POLY-OBJ POLY-OBJ-SS
(SETQ CONT (1+ CONT))
(SACA-LONG-POLY POLY-OBJ TEXT-COPIADO text-distance-a-poly TEXT-INSERT )
(SETQ TEXT-EJEMPLO-OBJ (VLAX-ENAME->VLA-OBJECT TEXT-EJEMPLO))
(SETQ TEXT-COPIADO (VLA-COPY TEXT-EJEMPLO-OBJ))
CONT
)
Ahora si debe funcionar, PERO ......
El tema de la rutina es encontrar como deducir que es arriba y abajo. Poner el texto al derecho es comparar un angulo pero poner arriba depende del ángulo y de como este dibujada la polilinea y ahí me pierdo en este dibujo.
El tema salió en Hispacad varias veces para acotar y numerar vértices en polilineas cerradas, interior o exteriormente (parcelas, habitaciones etc) con lo cual había método para calcular si estaba dentro o fuera, pero aquí no veo claro que es arriba de la línea porque se puede haber trazado de iz a de o al berres ....
Un saludo
nolo- Mensajes : 182
Fecha de inscripción : 17/03/2016
Temas similares
» Convertir de Longitud-Latitud a UCS
» Longitud de Lineas x Tipo
» Polilinea 3D a Polilinea
» Acotar Polilínea
» Texto a Polilínea o curvas o lo que sea.
» Longitud de Lineas x Tipo
» Polilinea 3D a Polilinea
» Acotar Polilínea
» Texto a Polilínea o curvas o lo que sea.
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.
|
|