Crear patrones de sombreado
Moderador: Moderadores
Crear patrones de sombreado
Hola a todos...!!!
Queria haceros una consulta sobre los patrones de sombreado personalizados.
Por necesidades del trabajo he modificado alguno de los que ya trae el programa para conseguir el resultado que necesitaba pero dentro del fichero ACADISO.PAT
Dentro del cuadro de dialogo de sombreados aparece una pestaña para seleccionar los definidos por el usuario, pero por más que busco no encuentro donde tengo que "guardar" mis patrones personalizados...
¿Quien sabe donde?
Queria haceros una consulta sobre los patrones de sombreado personalizados.
Por necesidades del trabajo he modificado alguno de los que ya trae el programa para conseguir el resultado que necesitaba pero dentro del fichero ACADISO.PAT
Dentro del cuadro de dialogo de sombreados aparece una pestaña para seleccionar los definidos por el usuario, pero por más que busco no encuentro donde tengo que "guardar" mis patrones personalizados...
¿Quien sabe donde?
Wenas abel,
Los patrones personalizados debes guardarlos en la carpeta support donde tienes instalado el AutoCAD, pero dentro de Documents and Settings y no en la carpeta support situada dentro de Archivos de Programas, no se si me explico bien. Si tienes alguna duda te mando una imagen con un ejemplo a tu correo.
Por otro lado si quieres crearte patrones de sombreados nuevos o personalizados, no se si sabes de Autolisp y si sabes o no cargar rutinas. Lo digo por que tb dejo una aplicación que permite crearte el patron de sombreado que quieras. Es la siguiente:
Espero haberte podido ayudar. Un saludo... [/url]
Los patrones personalizados debes guardarlos en la carpeta support donde tienes instalado el AutoCAD, pero dentro de Documents and Settings y no en la carpeta support situada dentro de Archivos de Programas, no se si me explico bien. Si tienes alguna duda te mando una imagen con un ejemplo a tu correo.
Por otro lado si quieres crearte patrones de sombreados nuevos o personalizados, no se si sabes de Autolisp y si sabes o no cargar rutinas. Lo digo por que tb dejo una aplicación que permite crearte el patron de sombreado que quieras. Es la siguiente:
Código: Seleccionar todo
;;;CADALYST 10/05 Tip 2065: HatchMaker.lsp Hatch Maker (c) 2005 Larry Schiele
;;;* ====== B E G I N C O D E N O W ======
;;;* HatchMaker.lsp written by Lanny Schiele at TMI Systems Design Corporation
;;;* Lanny.Schiele@tmisystems.com
;;;* Tested on AutoCAD 2002 & 2006. -- does include a 'VL' function -- should work on Acad2000 on up.
(defun C:DrawHatch (/)
(command "_undo" "_be")
(setq os (getvar "OSMODE"))
(setvar "OSMODE" 0)
(command "_UCS" "_w")
(command "_PLINE" "0,0" "0,1" "1,1" "1,0" "c")
(command "_zoom" "_c" "0.5,0.5" 1.1)
(setvar "OSMODE" os)
(setvar "SNAPMODE" 1)
(setvar "SNAPUNIT" (list 0.01 0.01))
(command "_undo" "_e")
(alert
"Dibuja el patrón dentro de la caja de 1x1 usando solamente LINEAS y PUNTOS"
)
(princ)
)
(defun C:SaveHatch (/ round dxf ListToFile
user SelSet SelSetSize ssNth
Ent EntInfo EntType pt1 pt2
Dist AngTo AngFrom XDir YDir
Gap DeltaX DeltaY AngZone Counter
Ratio Factor HatchName HatchDescr
FileLines FileLines FileName
Scaler ScaledX ScaledY RF x
y h _AB _BC _AC
_AD _DE _EF _EH _FH
DimZin
)
;;;* BEGIN NESTED FUNCTIONS
(defun round (num)
(if (>= (- num (fix num)) 0.5)
(fix (1+ num))
(fix num)
)
)
(defun dxf (code EnameOrElist / VarType)
(setq VarType (type EnameOrElist))
(if (= VarType (read "ENAME"))
(cdr (assoc code (entget EnameOrElist)))
(cdr (assoc code EnameOrElist))
)
)
(defun ListToFile (TextList FileName DoOpenWithNotepad
AsAppend / TextItem
File RetVal
)
(if (setq File (open FileName
(if AsAppend
"a"
"w"
)
)
)
(progn
(foreach TextItem TextList
(write-line TextItem File)
)
(setq File (close File))
(if DoOpenWithNotepad
(startapp "notepad" FileName)
)
)
)
(FindFile FileName)
)
;;;* END NESTED FUNCTIONS
(princ
(strcat
"\n."
"\n 0,1 ----------- 1,1"
"\n | | "
"\n | Lineas y | "
"\n | Puntos | "
"\n | dentro | "
"\n | | "
"\n | | "
"\n | | "
"\n 0,0 ----------- 1,0"
"\n."
"\nNote: Lines must be drawn within 0,0 to 1,1 and lie on a 0.01 grid."
)
)
(textscr)
(getstring "\nTeclea [ENTER] para continuar...")
(princ
"\nSelecciona conjunto de lineas y puntos para el nuevo PATRON..."
)
(while (not (setq SelSet (ssget (list (cons 0 "LINE,POINT")))))
)
(setq ssNth 0
SelSetSize (sslength SelSet)
DimZin (getvar "DIMZIN")
)
(setvar "DIMZIN" 11)
(if (> SelSetSize 0)
(princ "\nAnalizando entidades...")
)
(while (< ssNth SelSetSize)
(setq Ent (ssname SelSet ssNth)
EntInfo (entget Ent)
EntType (dxf 0 EntInfo)
ssNth (+ ssNth 1)
)
(cond
((= EntType "POINT")
(setq pt1 (dxf 10 EntInfo)
FileLine (strcat "0,"
(rtos (car pt1) 2 6)
","
(rtos (cadr pt1) 2 6)
",0,1,0,-1"
)
)
(princ (strcat "\n" FileLine))
(setq FileLines (cons FileLine FileLines))
)
((= EntType "LINE")
(setq pt1 (dxf 10 EntInfo)
pt2 (dxf 11 EntInfo)
Dist (distance pt1 pt2)
AngTo (angle pt1 pt2)
AngFrom (angle pt2 pt1)
IsValid nil
)
(if
(or (equal (car pt1) (car pt2) 0.0001)
(equal (cadr pt1) (cadr pt2) 0.0001)
)
(setq DeltaX 0
DeltaY 1
Gap (- Dist 1)
IsValid T
)
(progn
(setq Ang (if (< AngTo pi)
AngTo
AngFrom
)
AngZone (fix (/ Ang (/ pi 4)))
XDir (abs (- (car pt2) (car pt1)))
YDir (abs (- (cadr pt2) (cadr pt1)))
Factor 1
RF 1
)
(cond
((= AngZone 0)
(setq DeltaY (abs (sin Ang))
DeltaX (abs (- (abs (/ 1.0 (sin Ang))) (abs (cos Ang)))
)
)
)
((= AngZone 1)
(setq DeltaY (abs (cos Ang))
DeltaX (abs (sin Ang))
)
)
((= AngZone 2)
(setq DeltaY (abs (cos Ang))
DeltaX (abs (- (abs (/ 1.0 (cos Ang))) (abs (sin Ang)))
)
)
)
((= AngZone 3)
(setq DeltaY (abs (sin Ang))
DeltaX (abs (cos Ang))
)
)
)
(if (not (equal XDir YDir 0.001))
(progn
(setq Ratio (if (< XDir YDir)
(/ YDir XDir)
(/ XDir YDir)
)
RF (* Ratio Factor)
Scaler (/ 1
(if (< XDir YDir)
XDir
YDir
)
)
)
(if (not (equal Ratio (round Ratio) 0.001))
(progn
(while
(and
(<= Factor 100)
(not (equal RF (round RF) 0.001))
)
(setq Factor (+ Factor 1)
RF (* Ratio Factor)
)
)
(if (and (> Factor 1) (<= Factor 100))
(progn
(setq _AB (* XDir Scaler Factor)
_BC (* YDir Scaler Factor)
_AC (sqrt (+ (* _AB _AB) (* _BC _BC)))
_EF 1
x 1
)
(while (< x (- _AB 0.5))
(setq y (* x (/ YDir XDir))
h (if (< Ang (/ pi 2))
(- (+ 1 (fix y)) y)
(- y (fix y))
)
)
(if (< h _EF)
(setq _AD x
_DE y
_AE (sqrt (+ (* x x) (* y y)))
_EF h
)
)
(setq x (+ x 1))
)
(if (< _EF 1)
(setq _EH (/ (* _BC _EF) _AC)
_FH (/ (* _AB _EF) _AC)
DeltaX (+ _AE
(if (> Ang (/ pi 2))
(- _EH)
_EH
)
)
DeltaY (+ _FH)
Gap (- Dist _AC)
IsValid T
)
)
)
)
)
)
)
)
(if (= Factor 1)
(setq Gap (- Dist (abs (* Factor (/ 1 DeltaY))))
IsValid T
)
)
)
)
(if
IsValid
(progn
(setq FileLine
(strcat
(angtos AngTo 0 6)
","
(rtos (car pt1) 2 8)
","
(rtos (cadr pt1) 2 8)
","
(rtos DeltaX 2 8)
","
(rtos DeltaY 2 8)
","
(rtos Dist 2 8)
","
(rtos Gap 2 8)
)
)
(princ (strcat "\n" FileLine))
(setq FileLines (cons FileLine FileLines))
)
(princ (strcat "\n * * * Lineas con ángulos INCORRECTOS "
(angtos AngTo 0 6)
(chr 186)
" omitted. * * *"
)
)
)
)
((princ
(strcat "\n * * * Omitidas las " EntType " NO validas.")
)
)
)
)
(setvar "DIMZIN" DimZin)
(if
(and
FileLines
(setq HatchDescr
(getstring T
"\nTeclea la descripción del nuevo patrón: "
)
)
(setq FileName (getfiled "Fichero de Patrón"
"I:\\Acad\\Hatch\\"
"pat"
1
)
)
)
(progn
(if (= HatchDescr "")
(setq HatchDescr "Patrón personalizado de sombra")
)
(setq HatchName (vl-filename-base FileName)
FileLines (cons (strcat "*" HatchName "," HatchDescr)
(reverse FileLines)
)
)
(princ
"\n============================================================"
)
(princ
(strcat "\nEspere hasta que sea creado el patrón...\n"
)
)
(ListToFile FileLines FileName nil nil)
(command "_delay" 1500) ;delay required so file can be created and found (silly, but req.)
(if (findfile FileName)
(progn
(setvar "HPNAME" HatchName)
(princ (strcat "\nPatrón de sombreado.. '"
HatchName
"' Listo para usar!"
)
)
)
(progn
(princ "\nImposible crear el patrón:")
(princ (strcat "\n " FileName))
)
)
)
(princ
(if FileLines
"\nCancelado."
"\nSeleccionando estas entidades NO es posible crear el patrón."
)
)
)
(princ)
)
(princ "\n ************************************************************** ")
(princ "\n** **")
(princ "\n* HatchMaker.lsp escrito por Lanny Schiele -- enjoy! *")
(princ "\n* *")
(princ "\n* Teclea DRAWHATCH para crear el entorno del patrón. *")
(princ "\n* Teclea SAVEHATCH para salvar el patrón creado. *")
(princ "\n** **")
(princ "\n ************************************************************** ")
(princ)
Espero haberte podido ayudar. Un saludo... [/url]
Por partes....
Lo de guardarlos en Documents and settings\--\support lo tengo claro. Lo que no tengo tan claro es después, dentro de las opciones del programa como decirle que también cargue esos patrones.
De lisp... lo justo; que existe y poco más.
Me apunto esa rutina, la pruebo y a ver que tal.
Gracias..!!!
Lo de guardarlos en Documents and settings\--\support lo tengo claro. Lo que no tengo tan claro es después, dentro de las opciones del programa como decirle que también cargue esos patrones.
De lisp... lo justo; que existe y poco más.
Me apunto esa rutina, la pruebo y a ver que tal.
Gracias..!!!
En teoría se cargan solos, siempre y cuando los guardes en la carpeta support, pues es la ruta de archivos que tiene asignada por defecto AutoCAD, para la busqueda de los archivos (las carpetas en las que buscará Autocad las puede ver en Herr->Opciones->Archivos->Ruta de busqueda de archivos de soporte). Si guardas tus patrones fuera de estas ruta deberas añadirla para que AutoCAD la reconozca y busque dentro de ella.
En el caso del que tratamos, los patrones de sombreado (acad.pat y acadiso.pat son los que trae por defecto Autocad), es en la carpeta support en la que Autocad buscará por defecto todos los archivos *.pat. Así pues, por más archivos PAT que guardes en esa carpeta, AutoCAD te los debiera de reconocer como personalizados si los guardas como archivos a parte de los acad.pat o acadiso.pat anteriormente mencionados, o como los predefinidos sin guardas tu sombreado dentro de estos archivos. A mi así me funciona, y me va genial.
Si tienes alguna duda o no me explico bien dime. Quizas en versiones distintas no funcione igual, no lo se.
Un saludo
En el caso del que tratamos, los patrones de sombreado (acad.pat y acadiso.pat son los que trae por defecto Autocad), es en la carpeta support en la que Autocad buscará por defecto todos los archivos *.pat. Así pues, por más archivos PAT que guardes en esa carpeta, AutoCAD te los debiera de reconocer como personalizados si los guardas como archivos a parte de los acad.pat o acadiso.pat anteriormente mencionados, o como los predefinidos sin guardas tu sombreado dentro de estos archivos. A mi así me funciona, y me va genial.
Si tienes alguna duda o no me explico bien dime. Quizas en versiones distintas no funcione igual, no lo se.
Un saludo
-
- Jefe
- Mensajes: 442
- Registrado: Mié Ago 30, 2006 9:35 am
- Ubicación: Bizkaia-Nafarroa
- Contactar:
Autolisp exactamente para qué sirve? y qué es eso de una rutina? la verdad es que yo siempre he querido crear sombreados en autocad y nunca me he puesto a ello...siempre he terminado usando los que vienen por defecto para no complicarme la vida...
WEB: http://www.pulgarcitosegundamano.es/
TWITTER: @Pulgarcito2mano
FACEBOOK: http://www.facebook.com/pulgarcitosegundamano
TWITTER: @Pulgarcito2mano
FACEBOOK: http://www.facebook.com/pulgarcitosegundamano
Autolisp es un lenguaje de programación que se utiliza para hacer pequeños programillas que funcionan dentro del Autocad, y rutina es como se llaman a esos programillas.Akasha escribió:Autolisp exactamente para qué sirve? y qué es eso de una rutina? la verdad es que yo siempre he querido crear sombreados en autocad y nunca me he puesto a ello...siempre he terminado usando los que vienen por defecto para no complicarme la vida...
El que publicó Agfa está muy bien y es muy sencillo de utilizar.
- Copias el texto en un fichero de texto y lo guardas. Cambias la extesión por LSP
- Desde el Autocad lo cargas con la orden APPLOAD
- Si abres la ventana de texto veras que te pone que tienes dos opciones: drawnhatch y savehatch. Con el primero te dibuja un cuadro dentro del que tienes que hacer el sombreado y con el segundo te genera el fichero *.PAT con la definición del sombreado.
Efectivamente Akasha, lo conviertes en *.LSP, lo guardas en support, inicias Autocad, y cargas la rutina mediante la orden APPLOAD o _APPLOAD. Te saldrá un cuadro de dialogo, en el que deberas buscar la rutina que deseas, en este caso como la guardastes en support, será ahí donde debas ir a burcarla, la cargas y cierras. Finalmente en la línea de comandos de AutoAD escribes las ordenes que comentó abel, y ya está, solo tienes que hacer lo que te vaya solicitando la rutina.
Otro ejemplo, y que es como lo tengo yo en mi PC, es crearse dentro de support una carpeta nueva y llamarla por ejemplo "PERSONALIZACIÓN_LISP", donde voy guardando o guardo todas las rutinas que necesite o se me antojen. De este modo consigo el no tener dentro de support una lista de archivo inmensa que luego no sabría casi cual es cual, jejjee. Aunque esta opción que comento implica tener que añadir la ruta de esta carpeta en Herr->Opciones->Archivos->Ruta de archivos de soporte, pero bueno no cuesta mucho esto úlitmo.
Enga un saludo.
P.D: Akasha, por cualquier problema que tengas para cargarla dime, yo de Autolisp al principio no tenía ni idea hasta que ví todo lo que se podía hacer con ello, me aficioné, y ahora poco a poco, voy haciendo mis programillas, es una pasada la cantidad de cosas se pueden hacer, solo es imaginarlo y llevarlo a lenguaje Lisp.
Otro ejemplo, y que es como lo tengo yo en mi PC, es crearse dentro de support una carpeta nueva y llamarla por ejemplo "PERSONALIZACIÓN_LISP", donde voy guardando o guardo todas las rutinas que necesite o se me antojen. De este modo consigo el no tener dentro de support una lista de archivo inmensa que luego no sabría casi cual es cual, jejjee. Aunque esta opción que comento implica tener que añadir la ruta de esta carpeta en Herr->Opciones->Archivos->Ruta de archivos de soporte, pero bueno no cuesta mucho esto úlitmo.
Enga un saludo.
P.D: Akasha, por cualquier problema que tengas para cargarla dime, yo de Autolisp al principio no tenía ni idea hasta que ví todo lo que se podía hacer con ello, me aficioné, y ahora poco a poco, voy haciendo mis programillas, es una pasada la cantidad de cosas se pueden hacer, solo es imaginarlo y llevarlo a lenguaje Lisp.
-
- Proyectista
- Mensajes: 172
- Registrado: Lun Nov 20, 2006 4:00 pm
- Ubicación: 39º 29' 27" O 0º 21' 44" N
- Contactar:
Como decia agfa el leguaje LISP es una pasada y las posibilidades que se abren al conocerlo son impresionantes, dejo dos direcciones que para mi son la referencia en el lenguaje LISP y problemas CAD en general, espero que sirvan de ayuda:
http:\\www.hispacad.com
http:\\www.soportecad.org
http:\\www.hispacad.com
http:\\www.soportecad.org
Como dice Kroke, HispaCAD y SoporteCAD son dos foros de referencia en programación de AutoLisp\VisualLisp y VBA (más el primero que el segundo), y más en general en solucionar problemas de AutoCAD, y es por todo ello y lo que pretendemos conseguir es que este foro tb alcance el nivel de estos al menos en el tema de ayudar en solucionar dudas o problemas de AutoCAD, no? estaís conmigo compañeros? jejeejej...
Un saludo
Un saludo
-
- Jefe
- Mensajes: 442
- Registrado: Mié Ago 30, 2006 9:35 am
- Ubicación: Bizkaia-Nafarroa
- Contactar:
La verdad es que me estais viniendo que ni pintados!! jaja muchas gracias por la ayuda que me dais. Para esto de los sombreados me he creado un block de notas con los mensajes para que en cuanto tenga un ratillo me ponga a cargarlo en mi autocad...
WEB: http://www.pulgarcitosegundamano.es/
TWITTER: @Pulgarcito2mano
FACEBOOK: http://www.facebook.com/pulgarcitosegundamano
TWITTER: @Pulgarcito2mano
FACEBOOK: http://www.facebook.com/pulgarcitosegundamano
Hola Afga...
Tengo un pequeño problema con la rutina que pusiste un poco más arriba.
Al usarla funciona todo bien, pero me da un mensaje de error en la pantalla:
¿Alguna idea...?
Tengo un pequeño problema con la rutina que pusiste un poco más arriba.
Al usarla funciona todo bien, pero me da un mensaje de error en la pantalla:
Código: Seleccionar todo
Espere hasta que sea creado el patrón...
_delay Indique duración del retardo (en milisegundos): 1500
Comando: ; error: Parámetro de variable de AutoCAD rechazado: "HPNAME" "prueba"
Os estoy viendo...
Wenas abel,
Así a simple vista según el error que indicas, y considerando que la rutina expuesta no la he hecho ni la he examinado, creo que es debido a que AutoCAD no te localiza el nombre del patrón de sombreado denominado "prueba" ( prueba.pat ), puesto que la variable HPNAME en lugar de establecerlo, te dá error puesto que no lo encuentra de entre todas las rutas que tiene asignadas asignadas AutoCAD para buscar los archivos.
Lo miraré más a fondo. Po rcierto bajo que versión de AutoCAD estas utilizando la aplicación?
Saludos
Así a simple vista según el error que indicas, y considerando que la rutina expuesta no la he hecho ni la he examinado, creo que es debido a que AutoCAD no te localiza el nombre del patrón de sombreado denominado "prueba" ( prueba.pat ), puesto que la variable HPNAME en lugar de establecerlo, te dá error puesto que no lo encuentra de entre todas las rutas que tiene asignadas asignadas AutoCAD para buscar los archivos.
Lo miraré más a fondo. Po rcierto bajo que versión de AutoCAD estas utilizando la aplicación?
Saludos
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 45 invitados