Quiero unir varias líneas en Illustrator. Las imágenes muestran en la parte superior las líneas a las que me gustaría unirme. Si los selecciono a todos y los uno (ruta> unirse), el resultado es como la segunda imagen y me gustaría el resultado de la tercera imagen. ¿Hay alguien que sepa hacer el truco? El punto de partida debe ser la primera imagen en la parte superior, por lo que solo las líneas no son una forma rellena.
EDITAR: Debe funcionar también cuando los puntos finales de las líneas no están en línea recta. La siguiente imagen muestra lo que necesito:
:)
En pocas palabras, con las restricciones enumeradas (no poder transformar las líneas, no querer duplicarlas, simplemente actuar sobre ellas en su configuración preestablecida) [¿trabajar desde la base de CAD, tal vez?] La respuesta más corta y simple es renunciar a intentar hacer todo en un solo paso: seleccione cada par de líneas por separado para realizar su acción Unirse ; luego, todo fluirá de manera simple y rápida.
Coge un par, únete, coge otro par, únete
Uno todos los pares se unen una vez (haciendo formas de U), repita: vuelva a seleccionar las formas de U abiertas ahora unidas una a la vez, y nuevamente Unir: Illustrator ahora cerrará los extremos abiertos
Completar el flujo del proceso
Todos los elementos separados, unidos y cerrados según necesidad.
Solía hacer muchos planos de sitios ilustrativos, planos de calles y planos específicos para la empresa de arquitectura y planificación para la que trabajaba; así es exactamente como manejé los pasos de peatones provenientes de las bases CAD.
Extracto a continuación de uno de mis planes específicos ilustrativos de planificación producidos, que comenzó como líneas puras de CAD importadas a Illustrator a través de la salida en PDF de ACad, todo el trabajo posterior se realizó en Adobe Illustrator CS2:
Para ver más ejemplos similares, consulte mi cartera de behance.
1) Presione Ctrl+ F12y seleccione zebra_from_lines.jsx
el archivo de script.
2) Seleccione dos o más caminos abiertos.
3) Haga clic en el Combine paths by pairsbotón.
Simplemente copie y pegue este código en el zebra_from_lines.jsx
archivo usando su editor de texto preferido (en mi caso, Notepad++):
//@target illustrator
//@targetengine main
// zebra_from_lines.jsx
// This script connects selected open paths by pairs.
// The paths sequence order follows their z-order.
// Made specially for https://graphicdesign.stackexchange.com/q/116396/128685
// by oshatrk, 2018.
(function(undefined) {
var combineSelected = function() {
var haveIntersection = function (p1, p2, p3, p4) {
var p1x = p1.anchor[0], p1y = p1.anchor[1];
var p2x = p2.anchor[0], p2y = p2.anchor[1];
var p3x = p3.anchor[0], p3y = p3.anchor[1];
var p4x = p4.anchor[0], p4y = p4.anchor[1];
var d = (p1x - p2x) * (p4y - p3y) - (p1y - p2y) * (p4x - p3x);
var da = (p1x - p3x) * (p4y - p3y) - (p1y - p3y) * (p4x - p3x);
var db = (p1x - p2x) * (p1y - p3y) - (p1y - p2y) * (p1x - p3x);
var ta = da / d;
var tb = db / d;
return (ta >= 0 && ta <= 1 && tb >= 0 && tb <= 1);
};
var combinePaths = function (obj1, obj2) {
var pps1 = obj1.pathPoints;
var pps2 = obj2.pathPoints;
var n1 = pps1.length;
var n2 = pps2.length;
pps1[0].pointType = PointType.CORNER;
pps1[0].leftDirection = pps1[0].anchor;
pps1[n1-1].pointType = PointType.CORNER;
pps1[n1-1].rightDirection = pps1[n1-1].anchor;
pps2[0].pointType = PointType.CORNER;
pps2[0].leftDirection = pps2[0].anchor;
pps2[n2-1].pointType = PointType.CORNER;
pps2[n2-1].rightDirection = pps2[n2-1].anchor;
if(haveIntersection(pps1[0],pps2[0],pps1[n1-1],pps2[n2-1])) {
for(var i = 0; i < n2; ++i) {
var p1 = pps1.add();
var p2 = pps2[i];
p1.anchor = p2.anchor;
p1.rightDirection = p2.rightDirection;
p1.leftDirection = p2.leftDirection;
p1.pointType = p2.pointType;
}
} else {
for(var i = n2-1; i >= 0; --i) {
var p1 = pps1.add();
var p2 = pps2[i];
p1.anchor = p2.anchor;
p1.rightDirection = p2.leftDirection;
p1.leftDirection = p2.rightDirection;
p1.pointType = p2.pointType;
}
}
obj2.remove();
obj1.closed = true;
};
var sel = app.selection;
if( sel === undefined || sel.length === undefined) return;
for(var i = 0, n = sel.length; i < n; ++i) {
var obj1 = sel[i];
if(obj1.pathPoints === undefined || obj1.closed == true) continue;
var obj2 = undefined;
for(++i; i < n; ++i) {
obj2 = sel[i];
if(obj2.pathPoints !== undefined || obj2.closed == true) {
combinePaths(obj1, obj2);
break;
}
}
}
}
var bt = new BridgeTalk;
bt.target = BridgeTalk.appSpecifier; // "illustrator-[current version]"
bt.body = '('+combineSelected+')();';
var w = new Window (
"palette {text:'Zebra from lines',\
btn: Button {text:'Combine paths by pairs'}\
}");
w.btn.onClick = function() {
bt.send();
};
w.show();
})();
Nota: Este script es bastante simple. Por lo tanto, se disculpa por que todas las rutas son simples y están en el orden z correcto. Siéntase libre de adaptar este script con sus requisitos.
Se probó con múltiples versiones de Illustrator: CS5, CS6 y CC 2019.
Hay algunos trucos que se muestran en este script:
La targetengine
directiva se utiliza para evitar la eliminación inmediata de una ventana de paleta. Sin ella, la paleta es solo basura recolectada en un segundo.
Todo el código de procesamiento se coloca en una función (en este caso, en combineSelected
variable). Luego, esta función se clasifica y se envía a través de BridgeTalk a Illustrator, que evalúa esta cadena. Parece que este proceso es la única forma de trabajo para ejecutar algo desde la ventana de la paleta.
Además, cuando una función se ejecuta de esta manera, no se puede depurar paso a paso en ExtendScript Toolkit. Entonces, para el desarrollo, es más útil al principio escribir un script sin esa ventana sin modo. Hay dos opciones en este punto: sin interfaz de usuario, o usar la ventana de diálogo modal (solo use "dialog"
en lugar de "palette"
en el Window()
constructor). Y después de que la secuencia de comandos se estabilice, la paleta no modal se puede implementar como en esta secuencia de comandos.
Enlaces útiles:
Wiki de ExtendScript en Github: https://github.com/ExtendScript/wiki/wiki
La clase de ventana de paleta es parte de la interfaz de usuario de Script. La guía de interfaz de usuario de script legible se puede encontrar en esta página: http://www.kahrel.plus.com/indesign/scriptui.html
Colección de scripts .jsx de Hiroyuki Sato: http://shspage.com/aijs/en/ (Empecé con su script Join Reasonably ).
Dibuje un rectángulo, luego use la Herramienta de selección (V) para Alt+Shift+clic+arrastrar para hacer una copia, luego CTRL+D para repetir tantas veces como desee.
Luego use la herramienta Transformación libre, usando la opción Distorsión libre
Para el que tiene la curva, use Objeto > Distorsión de envolvente > Crear con malla . Use una distorsión de 1 fila, 1 columna y ajuste los controles Bézier hasta que tenga la distorsión que desea
Una malla envolvente permite bastante libertad al distorsionar.
Joonas
joojaa
GerardFalla
GerardFalla
joojaa
usuario120647