Tengo un programa que genera miles de puntos vectoriales (solo coordenadas), el formato no es fijo, pero podría ser algo como esto:
(2.4785|77.01)
(78.8|9.88)
(45.33|0.2)
Puedo formatear/convertir estas coordenadas de la forma que sea necesaria.
Mi pregunta es: ¿ Cómo puedo importar estos datos de coordenadas en Illustrator como puntos vectoriales , para poder trabajar con ellos correctamente (darlos un trazo, escalarlos, etc.).
El resultado podría ser algo como esto, pero estos son datos de píxeles. Quiero algo similar a eso, solo que como vector.
Editar: cada coordenada debería dar como resultado un punto/círculo que se representa en Illustrator, por lo que tal vez cada coordenada debería convertirse en una línea con un comienzo y un final idénticos en Illustrator.
Es un poco difícil de ver en la captura de pantalla, pero las líneas en realidad consisten en muchos puntos individuales que no siempre se tocan.
Generé las coordenadas de puntos con un pequeño código Java, si alguien está interesado en él, solo envíeme un mensaje privado.
Solución: Jackson Hyde sugirió SVG como posible formato en su respuesta, que resultó funcionar perfectamente. Solo genero este archivo SVG y luego lo importo a Illustrator. Allí puedo seleccionar todos los puntos y agregar un trazo y hacer otras cosas sofisticadas.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
version="1.1" baseProfile="full"
width="20px" height="20px">
<line x1="15.23" y1="2.25" x2="15.23" y2="2.25" />
<line x1="8.1234" y1="7.85" x2="8.1234" y2="7.85" />
[...]
</svg>
Como alternativa a SVG , podría generar un archivo EPS , es menos detallado que SVG y tiene menos advertencias. Aquí hay una introducción rápida:
http://paulbourke.net/dataformats/postscript/
EPS es una forma enmarcada de postscript destinada a ser incluida en otros trabajos de postscript/aplicaciones de publicación de escritorio. Para manejar esto, necesita un encabezado para definir el cuadro delimitador, etc. El encabezado se vería de la siguiente manera:
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 100 100
%%Title: Demo for GD.SE
%%Creator: Janne Ojala
%%CreationDate: 2014-06-23
%%EndComments
Esta información no es estrictamente necesaria para Illustrator, ya que Illustrator es un motor de postscript. Sin embargo, es posible que desee incluirlo para que el archivo se pueda usar tal como está sin ilustrador. El uso de un encabezado también facilita su uso en Illustrator. El cuadro de delimitación define el tamaño de su obra de arte, coordina abajo a la izquierda, arriba a la derecha.
A continuación, debe manejar sus datos con facilidad, es posible que desee agregar una rutina simple para dibujar un solo punto:
/P {newpath 1 0 360 arc fill} def %draw circle with radius of 1
Ahora todo lo que necesita es definir cada punto de la siguiente manera:
15.23 2.25 P
8.1234 7.85 P
...
Finalmente, su eps necesita un marcador final como este
%%EOF
Hecho. En general, EPS es uno de los formatos más fáciles de generar, en realidad podría omitir todas las llamadas P iterando sobre una matriz, archivo o datos binarios, pero lo dejaré como está por el momento.
Aquí hay un truco que puede usar para visualizar los datos mientras desarrolla el archivo EPS . Después de todo, algo puede salir mal y es útil tener algunos comentarios:
Ahora, cada vez que edite el archivo EPS y regrese a Illustrator, le preguntará si desea actualizar. Si hace clic en Sí, obtendrá comentarios instantáneos y, si tiene un error, obtendrá una imagen en blanco. Puedes expandirlo cuando estés listo.
La función podría ser reemplazada por:
1 setlinecap
/P {newpath moveto 0 0 rlineto stroke} def
para el mismo tipo de enfoque de línea de tamaño 0. puedes agregar un:
1 -1 scale
y use un cuadro delimitador negativo para las direcciones de medición de la parte superior izquierda.
Además de EPS y SVG, otro formato fácil de transferir es DXF . La especificación DXF se puede encontrar aquí:
PDF también es relativamente fácil de generar en este caso específico. Aunque la forma más fácil sería destilar el EPS con acrobat o script fantasma. Generar las tablas de datos y las sumas de verificación es un poco de trabajo adicional, pero aparte de eso, es casi tan sencillo como generar un archivo EPS. PDF Spec se puede encontrar aquí:
Una muestra en pdf creada manualmente , utiliza la misma idea que se describe en las respuestas EPS y SVG que contienen los 2 puntos de demostración. Busque % graphics here for the relevant section
(si pega esto en un archivo de texto que tiene PDF configurado como extensión, debería funcionar).
El problema con PDF es generar las longitudes de las secciones para la tabla XREF, lo cual es un poco complicado de hacer a mano. Es por eso que evito PDF en casos rápidos como este. Por supuesto, Adobe ignorará las etiquetas si el PDF es solo una página. Entonces, al ignorarlos, puede generar un archivo PDF técnicamente incorrecto que aún funciona. Puede encontrar un ejemplo divertido que explota este fenómeno aquí .
La forma más fácil que se me ocurre es formatear su aplicación para generar una imagen con formato SVG . Illustrator puede trabajar con gráficos SVG de varias maneras .
Vale la pena señalar que en su imagen está mostrando más que solo una nube de puntos. Parece que sus puntos se han transformado con el tiempo (para dar un efecto de 'rastro') o están conectados para crear caminos. Solo generar una nube de coordenadas no replicará este efecto, deberá trabajar con la especificación de coordenadas SVG (transformaciones de coordenadas en particular).
Dado que los datos en esta pregunta ya están disponibles dentro de un programa, también puede tener sentido usar una interfaz de programación que evita la necesidad de un archivo.
COM es una tecnología de Windows que permite que casi cualquier lenguaje de programación interactúe directamente con las aplicaciones de Windows existentes. Adobe llama a esto la API de VB, pero funcionaría con solo ligeras modificaciones en la mayoría de los lenguajes de propósito general como C, C++, Python, etc. También está integrado en los lenguajes .Net. Por ejemplo, una fuente de python que usa el módulo comtypes (para la alternativa de win32com, consulte aquí ) se vería de la siguiente manera:
import comtypes.client
# following call is slow to instantiate the first
# time you run it on a new machine as it builds the API
appObj = comtypes.client.CreateObject("Illustrator.Application")
docObj = appObj.Documents.Add()
docObj.DefaultStrokeCap = 2 # round
POINTS = [
(15.23, 2.25),
(8.1234, 8.1234)
#... or whatever database call you want
]
for point in POINTS:
pathItem = docObj.PathItems.Add()
pathItem.SetEntirePath( (point, point) )
Eso es todo, use el idioma que desee, esto le ahorra tener que volcar los datos en un formato intermedio. Las descripciones de la API se pueden encontrar en:
Se podría hacer lo mismo con javaScript usando las extensiones de Adobe. El código quedaría de la siguiente manera:
docObj = app.documents.add()
docObj.defaultStrokeCap = StrokeCap.ROUNDENDCAP
POINTS = Array(
Array(15.23, 2.25),
Array(8.1234, 8.1234)
);
for (i in POINTS){
pathItem = docObj.pathItems.add();
pathItem.setEntirePath( Array(POINTS[i], POINTS[i]) );
}
Que es casi idéntico al código COM de Python .
Juan B
lars ebert
Juan B
lars ebert
Juan B
jackson hyde