AutoCad - Como crear fuentes .shx?

 
Vista:
Imágen de perfil de Juanma
Val: 171
Bronce
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

Como crear fuentes .shx?

Publicado por Juanma (148 intervenciones) el 11/05/2024 13:54:48
Buenas tardes,

¿alguien sabría como crear un tipo de fuente .shx? es que me vendría muy bien un tipo de fuente en el que cada letra fuese una sola polilinea, de forma que al explotarlas a lineas, pudiera luego unir todas las letras en una sola polilinea.

el proposito de eso, es poder marcar piezas de chapa sin que el cabezal se levante en cada trazo, ya que la diferencia de tiempo es brutal.

La alternativa que se me ocurre es crear las letras como bloques, y crear una lisp que lea el texto y te coloque los bloques según las letras, (y ya de paso que los explote y los una, pero eso ya sería rizar el rizo).

Pero saber como crear la fuente tipo .shx creo que sería mucho mas practico, si es que es posible.
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

Como crear fuentes .shx?

Publicado por Gerardo (1000 intervenciones) el 11/05/2024 18:04:14
Hola amigo

Le diste F1 al cad? Ahí la asyuda lo explica me parece que con claridad.
https://help.autodesk.com/view/ACD/2024/ESP/?guid=GUID-DE941DB5-7044-433C-AA68-2A9AE98A5713

Supongo que tu idea sería hacer algo parecido al simplex.shx o al txt.shx, pero cambiando los saltos de pluma por líneas que se devuelven sobre el mismo trazo. Tambien supongo que eso igual tiene la implicación de que la impresora (o como se llame la máq) en vez de levantar el cabezal se regresará trazando por donde ya pasó.

Hay una aplicación de las express tools que descompila un archivo shx de vuelta a shp. Se llama dumpshx.exe y está en la subcarpeta Express dentro de la carpeta de instalación del autocad.

Puedes copiar el exe y los shx en una sola carpeta para no tener que poner rutas y pones en la consola del windows:
1
dumpshx -o simplex.shp simplex.shx
y listo, tienes ya un shp de base, siendo mucho más fácil modificar uno que crear uno nuevo desde cero.

Por ejemplo
Esta es una 'A' en TXT
1
2,14,8,(-2,-6),1,024,043,04D,02C,2,047,1,040,2,02E,14,8,(-4,-3),0

Esta es una 'A' en simplex:
1
2,14,8,(-8,-21),1,8,(8,21),8,(8,-21),2,8,(-13,7),1,0A0,2,8,(9,-7),14,8,(-14,-10),0

En Simplex la A solo tiene 3 trazos, pero la línea horizontal no toca del todo a las oblicuas.... sin embargo me parece que la separación es tan pequeña que podemos ignorarla. En TXT si que los vertices coinciden exactos pero son 5 trazos para una A.


Veamos la de TXT
2 --> lapiz arriba
( 14, 8, (-2, -6) --> solo se desplaza a esas coordenadas si el texto es vertical )
1 --> lapiz abajo
024 --> trazo de lingitud 2 hacia el norte
043 --> trazo de longitud 4 hacia el norte-noreste
04D --> trazo de longitud 4 hacia el sur-suereste
02C --> trazo de lingitud 2 hacia el sur
2 --> lapiz arriba
047 --> desplazamiento de longitud 4 hacia el oeste-noroeste
1 --> lapiz abajo
040 --> trazo de longitud 4 hacia el este
2 --> lapiz arriba
02E --> desplazamiento de longitud 2 hacia el sureste para iniciar nuevo caracter
( 14,8,(-14,-10) --> solo se desplaza a esas coordenadas si el texto es vertical )
0 --> fin


Entonces
Lo que queremos eliminar es el 2 y el 1 tachados. Y cambiar el 047 subrayado por un trazo que se devuelva sobre la misma letra.
Sería:
1- subir sobre la misma linea en la que bajamos (en 02C) --> 024
2- trazar la linea horizontal hacia la izquierda --> 048
3- podríamos devolvernos sobre la misma linea horizontal dejando el 040, pero aquí posiblemente si quieras levantar el lapiz antes porque ya terminamos la A, y entonces mejor poner el 2 antes de ese trazo del 040 y ya el desplazamiento es para iniciar nuevo caracter.

Con esos cambios y quitando lo del texto vertical asumiendo que no te interese usar verticales, quedaría así
1
024,043,04D,02C,024,048,2,040,02E,0

La diferencia entre la A original y esa, es que la original traza la 'V' invertida y luego salta hacia la derecha para trazar la linea horizontal de izquierda a derecha, y en nuestro caso despues de la 'V' invertida nos regresamos trazando sobre la misma patita derecha de la 'A' y desde ahi trazamos la horizontal de derecha a izquierda y recién ahí se levanta el lapiz.

Ahora las preguntas del $millón, que te tocará responder.
1-Se convierte el shape a lineas o a una polilínea, porque si son líneas independientes y aplicas el comando join con una ventana puede ser que el cad tome las lineas superpuestas en cualquier orden y no te deje una sola polilínea y tengas que areglar algunas letras
2-Que pasa en la impresora cuando se devuelve rayando por donde ya rayó? algún trazo más marcado que otros? gasto innecesario de laser? tu lo sabrás...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Juanma
Val: 171
Bronce
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

Como crear fuentes .shx?

Publicado por Juanma (148 intervenciones) el 11/05/2024 19:45:56
Muchas gracias, la verdad es que googleé buscando info, pero no encontré nada de eso que me explicas.
Mi idea es crear letras mayúsculas y números todas con la misma anchura y puntos de inicio y fin a la misma altura, de forma que pueda unir las letras en una sola polilinea.

Respondiendo a tus cuestiones, es una mesa de corte de chapa por plasma, que es capaz de marcar también por plasma este marcado lo hace muy rápido, (5 o 6 metros por minuto) pero tarda unos 10 segundos entre que termina un trazo y comienza otro (levantando y bajando) por lo que escribir letras a trazos es muuuy lento.
Además no importa que pase dos veces por el mismo sitio, y me l consumo de gases es mínimo en comparación al tiempo ahorado
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

Como crear fuentes .shx?

Publicado por Gerardo (1000 intervenciones) el 11/05/2024 20:46:02
perfecto, miralo en la ayuda del cad, ahi explica clarito como hacer los trazos y como armar el archivo y compilarlo.

pero si te recomiendo mucho hacer solo un par de caracteres y de una vez probar lo de pasarlos a polys antes de hacer los 35... no vaya a ser que el resultado no sea el que esperas y te liaste haciendolos todos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Juanma
Val: 171
Bronce
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

Como crear fuentes .shx?

Publicado por Juanma (148 intervenciones) el 18/05/2024 23:35:09
Buenas otra vez,

Al final, como se trataba de generar una polilinea, he optado por hacer una lisp.

Lo que no consigo es que me una las polilineas en una. realmente como está ya me sirve, pues solo es cuestión de dar "join", pero por curiosidad, estaba tratando de ir guardando las polilineas en una list, para luego unirlas, y no he sido capaz. Y es que es algo que siempre me cuesta mucho trabajo, el seleccionar algo que acabo de crear para manipular de alguna forma (lo mismo recurro demasiado al entlast

Dejo a continuación el lisp, y algunos bloques (ajustar la carpeta en el lisp para que funcione)
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
29
30
31
32
( defun c:LET2 ( /  textillo puntillo  numerillo polis longi miletra)
 
(setq textillo (GETSTRING "TESTILLO"))
(setq puntillo (getpoint "marca punto"))
 
(PRINC puntillo )
 
(PRINC puntillo2 )
(Setq longi (strlen textillo) numerillo 1)
 
(while (>= longi numerillo)
       (setq miletra (substr textillo numerillo 1))
(PRINC miletra)
(COMMAND "_insert" (strcat "C:/Users/juanm/Desktop/ajustescad/Nueva carpeta/" miletra ".dwg")  puntillo "" "" "" )
(COMMAND "_explode" (entlast) )
 
(setq polis (ssadd (entlast)))
 
 
 
(setq puntillo (list  (+ 150 (car puntillo)) (cadr puntillo)))
 
 
 
(setq numerillo (+ 1 numerillo))
 
)
(princ "\n-------------")
(princ polis)
(princ "\n-------------")
(COMMAND "_join" polis )
)
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

Como crear fuentes .shx?

Publicado por Gerardo (1000 intervenciones) el 19/05/2024 07:33:47
hola
Yo también me hubiera decantado por hacerlo con rutina y no con fuente de texto XD
Aunque de fijo incluiría el trazo de las letras dentro del mismo lisp como secuencias de coordenadas, las cuales pueden juntarse al final en una sola lista de puntos y crear una sola polilinea. Esto daría facilidades como que cada letra pueda tener el ancho que quieras porque siempre partes del punto final de la anterior, o como poder agregar la función "backspace"

Pero bien, viendo tu código

El único error que veo en ese lisp es la llamada a ssadd que no le dices el nombre del conjunto selección al que quieres agregar la polilínea, por lo que siempre crea un conjunto nuevo con la última polilínea y lo guarda sobreescribiendo el anterior en la variable polis.

Supongo que la forma correcta de resolverlo es crear el conjunto vacío al principio donde estableces textillo y puntillo, con
1
(setq polis (ssadd))

y luego dentro del bucle, después de cada inserción agregarlo al conjunto con
1
(ssadd (entast) polis)

Si ves la ayuda de AutoCad para ssadd es una función particular porque no hay que ir guardando en variable el resultado. Una vez que pones (ssadd entidad conjunto) pues la entidad se agrega al conjunto sin tener que poner (setq variable (ssadd entidad conjunto))


Con eso debería funcionarte...

Aunque si quieres tomarlo como algo didáctico, otra práctica que he visto por ahí, que podría servir, es solo guardar al principio de la rutina la ultima entidad de la base de datos. Así todo lo creado posteriormente antes de salir de la rutina lo creó la rutina.
Algo así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
;capturar ultima entidad
(setq ultimaentidad (entlast)
      seleccion (ssadd)
)
 
;insertar todos los bloques
(while ...
   (command "insert" ...
)
 
;iterar desde la última entidad guardada para crear el conjunto de bloques a explotar
(setq ultima  ultimaentidad)
(while (setq ultima (entnext ultima))
    (ssadd ultima seleccion)
)
(command "explode" seleccion)
 
;repetir la iteración, esta vez de polilineas para el join
(setq seleccion (ssadd))
(while (setq ultimaentidad (entnext ultimaentidad))
    (ssadd ultimaentidad seleccion)
)
(command "join" seleccion)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Juanma
Val: 171
Bronce
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

Como crear fuentes .shx?

Publicado por Juanma (148 intervenciones) el 19/05/2024 11:49:43
Gracias, efectivamente era la falta del conjunto vacío.
Lo había intentado de varias formas y creo que todas fallaban en lo mismo .

No te falta razón en lo de integrar las letras como polilíneas dentro del Lisp pero de momento me conviene mejor así que es fácil de modificar gráficamente cada letra (de hecho ya he cambiado F,I y T para que se parezcan menos a E L e I).

Si usando (entget (entlast)) puedo ir copiando el código de creación de cada polilínea, no descarto para nada integrar las letras en una futura lisp, cuando ya esté seguro de que la forma de las letras es idónea.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Juanma
Val: 171
Bronce
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

Como crear fuentes .shx?

Publicado por Juanma (148 intervenciones) el 22/05/2024 23:52:56
Hoy hice la primera prueba, que muestro en la imagen, tardando en ese texto 55 segundos, frente a los casi 3 minutos que tardaría con letras en distintos trazos. (Unos diez segundos entre trazo y trazo ya que se para, sube se desplaza y luego baja en el inicio del próximo trazo)
Y con letras a la mitad de tamaño ha bajado a 40 segundos para el mismo texto.
IMG20240522132516
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar