Resultado con nil
3 participantes
Página 1 de 1.
Resultado con nil
Buen día señores.
Sigo batallando con los hatch que algunos se generan sin el valor del área. Como no pude resolver ese punto, decidí hacer una rutina para "pintar" de otro color los hatch sin área, pero al momento de obtener el área obviamente marca error. Me imagino que debe haber alguna forma de "cachar" el error, pero la desconozco.
Espero puedan ayudarme con esto.
Saludos y gracias
Sigo batallando con los hatch que algunos se generan sin el valor del área. Como no pude resolver ese punto, decidí hacer una rutina para "pintar" de otro color los hatch sin área, pero al momento de obtener el área obviamente marca error. Me imagino que debe haber alguna forma de "cachar" el error, pero la desconozco.
- Código:
(DEFUN C:selrecorte()
(inicio)
(setq ind 0)
(setq pto1(getpoint "Pto1..."))
(setq pto2(getcorner pto1 "Punto 2"))
(setq conj1(ssget "_W" pto1 pto2(list
(cons 0 "hatch")
(cons 8 "Recorte_hatch")
)))
(setq cuantos(sslength conj1))
(repeat cuantos
(setq ent(ssname conj ind))
(setq obj(vlax-ename->vla-object ent))
(if(=(setq area(vlax-get-property obj 'area))nil)
(vla-put-color obj 1)
)
(setq ind(1+ ind))
)
(SSSETFIRST conj1 conj1)
)
Espero puedan ayudarme con esto.
Saludos y gracias
eliasp- Mensajes : 195
Fecha de inscripción : 17/03/2016
Re: Resultado con nil
Así , de primeras, donde pone
(setq ent(ssname conj ind))
debería poner
(setq ent(ssname conj1 ind))
Y yo pondría esto
(if(=(vlax-get-property obj 'area)nil) (vla-put-color obj 1))
(setq ent(ssname conj ind))
debería poner
(setq ent(ssname conj1 ind))
Y yo pondría esto
(if(=(vlax-get-property obj 'area)nil) (vla-put-color obj 1))
Re: Resultado con nil
Muchas gracias Robierzo...
Además del claro error en el nombre del conjunto de selección... le encuentro mucho sentido a la sugerencia que me haces... Espero hoy por la noche tener ya varios hayches generados y aplico tu sugerencia. Seguro funcionará como se espera. Saludos y gracias......
Además del claro error en el nombre del conjunto de selección... le encuentro mucho sentido a la sugerencia que me haces... Espero hoy por la noche tener ya varios hayches generados y aplico tu sugerencia. Seguro funcionará como se espera. Saludos y gracias......
eliasp- Mensajes : 195
Fecha de inscripción : 17/03/2016
Re: Resultado con nil
Yo lo pondría así: (if (null (vlax-get-property obj 'area))... XD pero siempre es lo mismo.
En todo caso comento por curiosidad, para preguntar que haces con los hatches que resaltas o cambias de color? recrearlos? y si viniera al caso para recordar que siempre hay que ir al origen y con un poco se suerte podás hacer algo para prevenir los hatches a los que AutoCad no les sabe calcular el área.
Todo depende de como los creas, que tipo de contornos usas y si los requieres asociativos vinculados justo a esos contornos. Me parece por ejemplo que si haces una rutina que al picar en puntos internos en vez de aplicar el hatch cree polígonos con la función bpoly de autolisp, y luego creas el hatch utilizando esos polígonos y ya luego si quieres los borras, pues ese hatch difícilmente tenga las características conocidas que hacen que AutoCad no pueda calcularle el área (siempre y cuando no hayan contornos con splines, eso si que es un problema)
En todo caso comento por curiosidad, para preguntar que haces con los hatches que resaltas o cambias de color? recrearlos? y si viniera al caso para recordar que siempre hay que ir al origen y con un poco se suerte podás hacer algo para prevenir los hatches a los que AutoCad no les sabe calcular el área.
Todo depende de como los creas, que tipo de contornos usas y si los requieres asociativos vinculados justo a esos contornos. Me parece por ejemplo que si haces una rutina que al picar en puntos internos en vez de aplicar el hatch cree polígonos con la función bpoly de autolisp, y luego creas el hatch utilizando esos polígonos y ya luego si quieres los borras, pues ese hatch difícilmente tenga las características conocidas que hacen que AutoCad no pueda calcularle el área (siempre y cuando no hayan contornos con splines, eso si que es un problema)
Gerardo Calvo- Mensajes : 46
Fecha de inscripción : 29/10/2019
A robierzo le gusta esta publicaciòn
Re: Resultado con nil
Primeramente, gracias por interesarte en mi problema, estimado maestro Gerardo.
Ahora, estoy trabajando en secciones transversales y se deben generar ciertos polígonos cerrados con formas "caprichosas". El maestro DEVITG, me hizo favor de pasar una rutina que genera un tramo de polilínea en base a una existente, cortando en dos puntos extremos. Con esta poli creada, voy creando las líneas necesarias para generar el polígono y luego lo unos mediante pedit.... y a este polígono le asigno el hatch mediante (entlast).
El problema es que "algunos de ellos no tienen área" y en un paso posterior, cuando estoy leyendo las áreas para el reporte, es donde me truena, por eso buscaba la forma de detectar el problema desde antes.
Este trabajo, archivos y rutinas, los tengo en mi casa (que es tu casa) "alanoche" que llegue, hago un pequeño video explicativo para que quede mas claro.
Saludos y gracias.......
Ahora, estoy trabajando en secciones transversales y se deben generar ciertos polígonos cerrados con formas "caprichosas". El maestro DEVITG, me hizo favor de pasar una rutina que genera un tramo de polilínea en base a una existente, cortando en dos puntos extremos. Con esta poli creada, voy creando las líneas necesarias para generar el polígono y luego lo unos mediante pedit.... y a este polígono le asigno el hatch mediante (entlast).
El problema es que "algunos de ellos no tienen área" y en un paso posterior, cuando estoy leyendo las áreas para el reporte, es donde me truena, por eso buscaba la forma de detectar el problema desde antes.
Este trabajo, archivos y rutinas, los tengo en mi casa (que es tu casa) "alanoche" que llegue, hago un pequeño video explicativo para que quede mas claro.
Saludos y gracias.......
eliasp- Mensajes : 195
Fecha de inscripción : 17/03/2016
Re: Resultado con nil
Adjunto liga de wetransfer donde se puede descargar el archivo de trabajo, la rutina un video donde se genera el polígono en cuestión y otro donde aplico la rutina que el maestro Gerardo me generó para arreglar textos en las mismas secciones.
Espero sea suficientemente claro.
Gracias
https://we.tl/t-0m3lQOKgug
Espero sea suficientemente claro.
Gracias
https://we.tl/t-0m3lQOKgug
eliasp- Mensajes : 195
Fecha de inscripción : 17/03/2016
Re: Resultado con nil
Hola Elías.
Fijate que he estado muy enredado y hasta ahora pude sacar un rato para ver lo tuyo.
Y pues con los hatches veo dos posibles problemas.
1-Que el comando cajonder puede dejar una parte de la polilínea traslapándose con si misma. (me parece que tiene que ver con la función "hace-POLY-ENTRE-2-PUNTOS" y el sentido en que está dibujada la polilínea del terreno)
2 Que según los puntos que picas de inicio y final a veces puede que no se cierre la polilínea
El problema real es crear el hatch seleccionando la polilínea como contorno, porque cuando esta está cerrada o cruzada el hatch se crea pero AutoCad no calcula el área. Lo ideal en estos casos si no te interesa el hatch asociativo, es calcular los puntos del contorno, crear la poly cerrada con esos puntos y por aparte crear el hatch con esos puntos también.
En fin, yo (con todo el respeto y admiración que le guardo al viejo cascarrabias de Gabriel) me di a la tarea de hacer una versión de la rutina que haga el seguimiento de "hace-POLY-ENTRE-2-PUNTOS" de una forma más segura y de paso que no pida los puntos de inicio y final (lo cual me parece redundante ya que tienes las líneas verticales auxiliares)
De paso es un solo comando para derecho e izquierdo, pues si el "fin de SR" está a la izquierda o derecha del punto donde se selecciona la linea de SR se puede saber para que lado vamos
En fin, hice pocas pruebas, pero al menos en las 3 secciones que adjuntaste los hatches salen limpios, por lo tanto se muestra el área de todos, hacé tus pruebas a ver si te sirve
Fijate que he estado muy enredado y hasta ahora pude sacar un rato para ver lo tuyo.
Y pues con los hatches veo dos posibles problemas.
1-Que el comando cajonder puede dejar una parte de la polilínea traslapándose con si misma. (me parece que tiene que ver con la función "hace-POLY-ENTRE-2-PUNTOS" y el sentido en que está dibujada la polilínea del terreno)
2 Que según los puntos que picas de inicio y final a veces puede que no se cierre la polilínea
El problema real es crear el hatch seleccionando la polilínea como contorno, porque cuando esta está cerrada o cruzada el hatch se crea pero AutoCad no calcula el área. Lo ideal en estos casos si no te interesa el hatch asociativo, es calcular los puntos del contorno, crear la poly cerrada con esos puntos y por aparte crear el hatch con esos puntos también.
En fin, yo (con todo el respeto y admiración que le guardo al viejo cascarrabias de Gabriel) me di a la tarea de hacer una versión de la rutina que haga el seguimiento de "hace-POLY-ENTRE-2-PUNTOS" de una forma más segura y de paso que no pida los puntos de inicio y final (lo cual me parece redundante ya que tienes las líneas verticales auxiliares)
De paso es un solo comando para derecho e izquierdo, pues si el "fin de SR" está a la izquierda o derecha del punto donde se selecciona la linea de SR se puede saber para que lado vamos
En fin, hice pocas pruebas, pero al menos en las 3 secciones que adjuntaste los hatches salen limpios, por lo tanto se muestra el área de todos, hacé tus pruebas a ver si te sirve
- Código:
(defun c:cajon ( / gc:YdeX gc:subpl gc:ptstrz sel X0 L2 L3 ld x1 x2 LP cn ps)
(defun gc:YdeX (pt1 pt2 X)
(inters pt1 pt2 (list x 0.) (list x 1.) nil)
)
(defun gc:subpl (L X1 X2 / ini )
(if (< (caar L) (car (last L)))
(setq L (reverse L))
)
(while (> (caar L) X2)
(setq ini (car L)
L (cdr L)
)
)
(if (and L ini (not (equal (car ini) (caar L) 0.0001)))
(setq L (cons (gc:YdeX ini (car L) x2) L))
)
(setq ini nil
L (reverse L)
)
(while (< (caar L) X1)
(setq ini (car L)
L (cdr L)
)
)
(if (and ini L (not (equal (car ini) (caar L) 0.0001)))
(setq L (cons (gc:YdeX ini (car L) x1) L))
)
L
)
(defun gc:ptstrz (nent x1 x2 / typ lent Lp)
(if (= (setq typ (cdr (assoc 0 (setq lent (entget nent))))) "LINE")
(list
(gc:YdeX (cdr (assoc 10 lent)) (cdr (assoc 11 lent)) x1)
(gc:YdeX (cdr (assoc 10 lent)) (cdr (assoc 11 lent)) x2)
)
(if (= typ "LWPOLYLINE")
(progn
(setq Lp (mapcar
'cdr
(vl-remove-if
'(lambda (A) (/= (car A) 10 ))
lent
)
)
)
(if (> (caar Lp) x1)
(setq Lp (cons
(gc:YdeX (car Lp) (cadr Lp) x1)
(cdr Lp)
)
)
)
(if (< (car (last Lp)) x2)
(setq Lp (reverse LP)
Lp (reverse
(cons
(gc:YdeX (car Lp) (cadr Lp) x2)
(cdr Lp)
)
)
)
)
(gc:subpl Lp x1 x2)
)
)
)
)
(if (null (tblsearch "LAYER" "Recorte"))
(entmake '((0 . "LAYER") (100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord")
(2 . "Recorte") (62 . 3) (6 . "CONTINUOUS") (70 . 0)))
)
(if (null (tblsearch "LAYER" "Recorte_hatch"))
(entmake '((0 . "LAYER") (100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord")
(2 . "Recorte_hatch") (62 . 3) (6 . "CONTINUOUS") (70 . 0)))
)
(while (setq sel (entsel "Línea SR"))
(setq X0 (car (getpoint "\n Fin de SR..."))
L2 (car (entsel "\n Línea Intermedia..."))
L3 (car (entsel "\n Línea Superior.."))
ld (> X0 (caadr sel)) ;T=lado izquierdo
x1 ((if ld + -) X0 0.6)
x2 ((if ld + -) X0 1.1)
LP (append
(gc:ptstrz L3 (min X0 X2) (max X0 X2))
(reverse
(if ld
(append
(gc:ptstrz (car sel) x0 x1)
(gc:ptstrz L2 x1 x2)
)
(append
(gc:ptstrz L2 x2 x1)
(gc:ptstrz (car sel) x1 x0)
)
)
)
)
cn (length LP)
ps (mapcar '(lambda(pt) (cons 10 pt)) LP)
)
(entmake
(append
'( (0 . "LWPOLYLINE") (100 . "AcDbEntity") (410 . "Model") (8 . "Recorte")
(62 . 256) (6 . "Bylayer") (48 . 1.) (100 . "AcDbPolyline") )
(list (cons 90 cn))
'((70 . 1) (43 . 0.005))
ps
'((210 0.0 0.0 1.0))
)
)
(entmake
(append
'((0 . "HATCH") (100 . "AcDbEntity") (410 . "Model") (8 . "Recorte_hatch") (62 . 3) (100 . "AcDbHatch")
(10 0.0 0.0 0.0)(210 0.0 0.0 1.0) (2 . "_ANSI31") (70 . 0) (71 . 0) (91 . 1) (92 . 3) (72 . 0) (73 . 1))
(list (cons 93 cn))
ps
'((97 . 0) (75 . 0) (76 . 1) (52 . 0.) (41 . 0.01) (77 . 0) (78 . 1) (53 . 0.785398)
(43 . 0.) (44 . 0.) (45 . -0.0224506) (46 . 0.0224506) (79 . 0)(98 . 1) (10 0.0 0.0 0.0) )
)
)
)
)
Gerardo Calvo- Mensajes : 46
Fecha de inscripción : 29/10/2019
A robierzo le gusta esta publicaciòn
Re: Resultado con nil
Wow.... muuchas gracias maestro. Aún me queda por trabajar algunas secciones.... como 400. Seguro estas correcciones me vendrán muy bien. Debo aclarar maestro que en algún momento intenté hacer esas observaciones, la de en una sola rutina orientando a la izquierda o derecha, también que la rutina "corte sola" el tramo, sin embargo "principalmente" la premura del tiempo y la falta de experienca me impedían dedicarle el tiempo suficiente.
En fin, muchas gracias maestro, en cuanto procese algunas secciones, comentaré el resultado y seguramente será el esperado.
Saludos y gracias
En fin, muchas gracias maestro, en cuanto procese algunas secciones, comentaré el resultado y seguramente será el esperado.
Saludos y gracias
eliasp- Mensajes : 195
Fecha de inscripción : 17/03/2016
Re: Resultado con nil
Buen día.
Efectivamente, he hecho algo así como 50 figuras y en cada una se puede leer el área del hatch perfectamente, gracias maestro Gerardo.
Saludos
Efectivamente, he hecho algo así como 50 figuras y en cada una se puede leer el área del hatch perfectamente, gracias maestro Gerardo.
Saludos
eliasp- Mensajes : 195
Fecha de inscripción : 17/03/2016
Re: Resultado con nil
buenísimo que te ayude.
Saludos hermano
Saludos hermano
Gerardo Calvo- Mensajes : 46
Fecha de inscripción : 29/10/2019
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.
|
|