AutoCad - lisp polilínea con hatch automático

 
Vista:
Imágen de perfil de Carlos

lisp polilínea con hatch automático

Publicado por Carlos (3 intervenciones) el 05/05/2017 19:06:52
Buen día!
Alguien me puede ayudar con la programación de un lisp en el que busco hacer una polilínea y al cerrarla automáticamente se rellene con un hatch sólido?

Tengo uno en el que el comando busca todas las polilíneas cerradas y las rellena con un sólido. Pero deseo que lo haga como lo he planteado al comienzo.

O qué debo variar a este para que quede como quiero?

Esta es la rutina:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
(defun seleccion-polilineas (/ lwpol n lst-lwpol)
(setq lwpol (ssget "_x" (list '(0 . "*POLY*") '(70 . 1))))
(if lwpol
(progn
(setq n 0)
(repeat (sslength lwpol)
(setq lst-lwpol (cons (ssname lwpol n) lst-lwpol))
(setq n (1+ n))
) ;_repeat
(foreach pol lst-lwpol
(vl-cmdf "_.-bhatch" "_p" "_solid" "_s" pol "" "")
) ;_foreach
) ;_progn
(prompt "\nNinguna polilinea encontrada.")
) ;_if
) ;_defun
 
(defun c:s-pol ()
(setvar "cmdecho" 0)
(vl-cmdf "_.undo" "_begin")
(seleccion-polilineas)
(vl-cmdf "_.undo" "_end")
(setvar "cmdecho" 1)
(prin1)
) ;_defun
 
(prompt "\n*** nuevo comando S-POL definido by SpeedCAD ***")
(prin1)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.285
Oro
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

lisp polilínea con hatch automático

Publicado por Gerardo (986 intervenciones) el 05/05/2017 20:28:08
Las cierras realmente (con "close") o pueden ser abiertas aparentemente cerradas (primer punto = ultimo) ?

Si están realmente cerradas te puede bastar esto


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(defun c:polyhatch ( / ult)
	(setvar "cmdecho" 0)
	(vl-cmdf "_.undo" "_begin")
 
	(setq ult (entlast))
	(vl-cmdf "_pline")
	(while (= (getvar "CMDACTIVE") 1)
		(vl-cmdf pause)
	)
	(if (and
			 (/= ult (entlast))
			 (= (logand (cdr (assoc 70 (entget (entlast))) ) 1) 1)
		)
		(vl-cmdf "_.-bhatch" "_p" "_solid" "_s" "_last" "" "")
	)
	(command)
	(vl-cmdf "_.undo" "_end")
	(setvar "cmdecho" 1)
	(prin1)
)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Carlos

lisp polilínea con hatch automático

Publicado por Carlos (3 intervenciones) el 05/05/2017 22:10:27
Gracias Gerardo! está perfecto!

Olvidé mencionar que me gustaría una adición a la rutina. Quisiera enviar hacia atrás tanto la polilínea como el hatch, como si le hiciera un draworder > back, sin necesidad de seleccionarlos sino que automáticamente sucediera.

Disculpa la molestia, te agradecería por la solución.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.285
Oro
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

lisp polilínea con hatch automático

Publicado por Gerardo (986 intervenciones) el 06/05/2017 02:28:17
Claro. Ahi tienes

El comando draworder que agregué enviara la poly al fondo y tener la variable hpdraworder en 1 hara lo propio con cada hatch que se cree

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(defun c:polyhatch ( / ult)
	(setvar "cmdecho" 0)
	(setvar "HPDRAWORDER" 1)
	(vl-cmdf "_.undo" "_begin")
 
	(setq ult (entlast))
	(vl-cmdf "_pline")
	(while (= (getvar "CMDACTIVE") 1)
		(vl-cmdf pause)
	)
	(if (and
			 (/= ult (entlast))
			 (= (logand (cdr (assoc 70 (entget (entlast))) ) 1) 1)
		)
		(vl-cmdf "_draworder" "_last" "" "_back" "_.-bhatch" "_p" "_solid" "_s" "_last" "" "")
	)
	(command)
	(vl-cmdf "_.undo" "_end")
	(setvar "cmdecho" 1)
	(prin1)
)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Carlos

lisp polilínea con hatch automático

Publicado por Carlos (3 intervenciones) el 06/05/2017 19:31:36
Gerardo eres muy amable!

Esto me sirve mucho para el trabajo que desarrollo a diario. Me gustaría poder contactarte a ver si me ayudas a desarrollar unas rutinas las cuales debería explicarte. Desde luego te pagaría.
A qué correo te puedo contactar? De dónde eres?

Estoy pendiente de tu respuesta.

Nuevamente mil gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

lisp polilínea con hatch automático

Publicado por Oscar (1 intervención) el 20/12/2017 21:09:02
Buenos dias Gerardo, con respecto a el manejo y edicion por achurados en autocad, quiero hacerte la siguiente pregunta:
¿existe un lisp para girar achurados y darles un origen dentro de un dibujo que tiene una gran variedad de poligonos, sin necesidad de girar siempre el UCS para que quede bien orientado y con el punto de insercion definido? estoy adelantando un trabajp de espacio publlico en el cual hay muchas frajas de andenes con diferentes direcciones en las cuales se coloca los achurados de adoquin de ladrillo y tabletas de concreto, en un inicio los hicimos todos con achurados en lineas para que nos rindiera el tiempo pero nos toca cambiar todo al achurado especifico segun el material y modularlo. Cambiar el tipo de achurado es facil pero nos falta girarlo en el sentido especifico del anden y ponerle un origen para la modulacion, el problema es que son 20000 poligonos achurados y cada vez que se tiene que girar el achurado para que se vea bien el diseño toca poner ucs 3 puntos o ucs object para alinearlo y poner el origen.
¿me puedes ayudar con esto? ¿o sabes donde encontrarlo? yo descargue algo similar pero no deja alinear exactamente y tampoco deja colocar el origen, te envio el lisp que te comento (el archivo lisp se llama Dhatch4.2). mi mail tambien [email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar