Crear patrones de sombreado

Dudas y consultas sobre CAD. AutoCAD, Microstation y resto de aplicaciones CAD

Moderador: Moderadores

abel
Proyectista
Mensajes: 298
Registrado: Lun Nov 20, 2006 6:26 pm
Contactar:

Crear patrones de sombreado

Mensaje por abel »

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?


:wink:

Plannerly ™ La plataforma de gestión BIM ™ SmartLeanBIM® © 2021
Plantillas para crear el Plan de Ejecución BIM (BEP). Cumplimiento de la norma ISO-19650
Plan gratuito en el que puedes acceder a todas las plantillas y si al comprarlo introduces el código DELINEACION obtendrás un 10% de descuento
Afga
Jefe
Mensajes: 886
Registrado: Lun Sep 04, 2006 4:10 pm
Contactar:

Mensaje por Afga »

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:

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... :wink: :wink: [/url]
abel
Proyectista
Mensajes: 298
Registrado: Lun Nov 20, 2006 6:26 pm
Contactar:

Mensaje por abel »

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..!!!
:wink: :wink:
Afga
Jefe
Mensajes: 886
Registrado: Lun Sep 04, 2006 4:10 pm
Contactar:

Mensaje por Afga »

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
abel
Proyectista
Mensajes: 298
Registrado: Lun Nov 20, 2006 6:26 pm
Contactar:

Mensaje por abel »

La explicación es perfecta...
Es que no quería guardar los patrones nuevos en los ficheros por defecto por si acaso...

Y la rutina es genial...!!!
La de trabajo que me va a ahorrar para hacer patrones, con lo tedioso que es ir definiendo línea por línea y lo fácil que es dibujarlos...

Un millón...
:wink:
Akasha
Jefe
Mensajes: 442
Registrado: Mié Ago 30, 2006 9:35 am
Ubicación: Bizkaia-Nafarroa
Contactar:

Mensaje por Akasha »

Autolisp exactamente para qué sirve? y qué es eso de una rutina? :roll: 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
abel
Proyectista
Mensajes: 298
Registrado: Lun Nov 20, 2006 6:26 pm
Contactar:

Mensaje por abel »

Akasha escribió:Autolisp exactamente para qué sirve? y qué es eso de una rutina? :roll: 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...
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.

El que publicó Agfa está muy bien y es muy sencillo de utilizar.
  1. Copias el texto en un fichero de texto y lo guardas. Cambias la extesión por LSP
  2. Desde el Autocad lo cargas con la orden APPLOAD
  3. 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.
Parece un poco lio, pero en cuanto lo pruebes veras que es muy fácil y muy util.
Akasha
Jefe
Mensajes: 442
Registrado: Mié Ago 30, 2006 9:35 am
Ubicación: Bizkaia-Nafarroa
Contactar:

Mensaje por Akasha »

y cuando le cambio la extensión a *.lsp lo guardo en support antes de cargarlo en autocad?
WEB: http://www.pulgarcitosegundamano.es/
TWITTER: @Pulgarcito2mano
FACEBOOK: http://www.facebook.com/pulgarcitosegundamano
Afga
Jefe
Mensajes: 886
Registrado: Lun Sep 04, 2006 4:10 pm
Contactar:

Mensaje por Afga »

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. :lol:
kroke
Proyectista
Mensajes: 172
Registrado: Lun Nov 20, 2006 4:00 pm
Ubicación: 39º 29' 27" O 0º 21' 44" N
Contactar:

Mensaje por kroke »

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
Afga
Jefe
Mensajes: 886
Registrado: Lun Sep 04, 2006 4:10 pm
Contactar:

Mensaje por Afga »

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 :wink: :wink: :wink:
Akasha
Jefe
Mensajes: 442
Registrado: Mié Ago 30, 2006 9:35 am
Ubicación: Bizkaia-Nafarroa
Contactar:

Mensaje por Akasha »

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... :mrgreen: :mrgreen:
WEB: http://www.pulgarcitosegundamano.es/
TWITTER: @Pulgarcito2mano
FACEBOOK: http://www.facebook.com/pulgarcitosegundamano
Avatar de Usuario
ICON
Calcador
Mensajes: 37
Registrado: Jue Feb 01, 2007 7:25 pm
Contactar:

Mensaje por ICON »

BUFF! MUCHAS GRACIAS por la rutina de crear patroones.! nunca habia conseguido crearlos del modo que autocad te lo explicaba!
mil gracias de nuevo!
abel
Proyectista
Mensajes: 298
Registrado: Lun Nov 20, 2006 6:26 pm
Contactar:

Mensaje por abel »

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:

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"
¿Alguna idea...? :?: :?:
Os estoy viendo...
Afga
Jefe
Mensajes: 886
Registrado: Lun Sep 04, 2006 4:10 pm
Contactar:

Mensaje por Afga »

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 :wink: :wink:
Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 45 invitados