Une varias líneas (emparejadas) usando Illustrator

ingrese la descripción de la imagen aquí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:

Dibujar el rectángulo funciona en este caso, pero si la parte inferior está en curva.

Sin embargo, ¿cuál es el punto de partida? Miro la tercera imagen y estoy pensando en hacer un rectángulo, duplicarlo un montón de veces y luego transformarlo para que esté inclinado así.
Una función tiene que hacer algo. Lo que hace fue definido por quien escribió la función. Join no hace esto, sí, eso es completamente intencional, estaba destinado a hacer esto. ¿Podría una función hacer esto seguro, no hay problema? Pero, ¿quién escribiría esta función? En un mundo perfecto lo harías.
Entiendo que hay momentos en los que el punto de partida (o anclas, perdonen el juego de palabras) que tiene es inviolable, y que las restricciones del proyecto o del cliente pueden impedirle cambiar la ubicación de los elementos; hay algunos tipos de trabajo en los que eso es simplemente un hecho. de vida; muchos ilustradores o diseñadores gráficos no pueden aceptar que esas restricciones sean inviolables, ya que no elegirían trabajar de esa manera. También vale la pena considerar que, según los requisitos, el tiempo y el flujo de trabajo, podría ser mejor mantener una capa de referencia bloqueada y volver a dibujar según las sugerencias de Danielillo o Billy.
Y para que conste, no entiendo por qué esta pregunta habría recibido votos negativos, es exactamente el tipo de pregunta que seguimos diciendo en Meta que preferimos.
@GerardFalla, no lo sé, pero si miras la pregunta original, es un poco diferente a esta y, francamente, peor. Pero es realmente lo que el autor de la pregunta está preguntando cómo hacer su trabajo. Si bien no creo que la pregunta sea mala per see...
@GerardFalla La pregunta cambió radicalmente después de la primera respuesta, un mal vicio que lleva a generar un tutorial paso a paso a medida que avanza la pregunta-respuesta y debería haber alguna forma de detenerlo.

Respuestas (5)

Seleccione 2 líneas con la Herramienta de selección , presione Command/Ctrl+ j dos veces . Seleccione 2 líneas más, repita... repita... repita... repita.

ingrese la descripción de la imagen aquí

Me gustaría agradecer a todos por su apoyo! La forma en que he estado haciendo esto hasta ahora, es como muestra Scott en su ejemplo. Hasta ahora, esta sigue pareciendo la forma de hacerlo, a pesar de que tengo cientos de estas formas para llegar al diseño final. Para los elogios de algunos de ustedes, esta es mi primera publicación, lo siento si la primera pregunta no fue lo suficientemente clara.
A veces realmente no hay un "atajo" para algo. A menudo puede apestar:)
  • Crea un rectángulo más ancho que las líneas, de la misma altura.
  • Seleccione todo y use la herramienta Shape Builder Tool > haga clic en las intersecciones para crear las nuevas formas
  • Eliminar las rutas sobrantes

rectángulos

Hola Danielillo, muchas gracias. No conocía este truco. ¿Hay una manera más rápida de hacer esto? Me hubiera gustado que en el paso dos la función JOIN de Illustrator hiciera esto como muestro en el paso tres. Dibujar el rectángulo funciona en este caso, pero si la parte inferior está en curva.
Esta respuesta funciona perfectamente para la pregunta original. Tal vez no funcione para las ediciones presentes y futuras. Si se hace una pregunta y, a medida que surgen las respuestas, se cambia el contenido, puede obtener un tutorial completo, y no es así como funciona este sitio. Te propongo crear una nueva pregunta con los nuevos cambios.

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.

Líneas no unidasingrese la descripción de la imagen aquí

Coge un par, únete, coge otro par, úneteingrese la descripción de la imagen aquí

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 abiertosingrese la descripción de la imagen aquí

Completar el flujo del procesoingrese la descripción de la imagen aquí

Todos los elementos separados, unidos y cerrados según necesidad.ingrese la descripción de la imagen aquí

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:

ingrese la descripción de la imagen aquí

Para ver más ejemplos similares, consulte mi cartera de behance.

https://www.behance.net/GerardFalla

Podría ser más rápido si se uniera a la pareja 2 veces en el primer pase, entonces no tendría que volver a seleccionarlos
@joojaa - de acuerdo. Esperaba enfatizar con este enfoque el flujo de trabajo de hágalo uno a la vez: muchas personas parecen querer un "botón mágico" y quizás quería ilustrar en exceso que las operaciones separadas a menudo no son solo un buen flujo de trabajo pero esencial para ciertas herramientas en Illustrator.

1) Presione Ctrl+ F12y seleccione zebra_from_lines.jsxel archivo de script.

2) Seleccione dos o más caminos abiertos.

3) Haga clic en el Combine paths by pairsbotón.

Zebra from lines script en acción

Simplemente copie y pegue este código en el zebra_from_lines.jsxarchivo 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:

  1. La targetenginedirectiva se utiliza para evitar la eliminación inmediata de una ventana de paleta. Sin ella, la paleta es solo basura recolectada en un segundo.

  2. Todo el código de procesamiento se coloca en una función (en este caso, en combineSelectedvariable). 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:

Hola oshatrk, bienvenido a GD.SE. Esta es una gran respuesta, ¡gracias por su contribución y disfrute del sitio!
¡Gracias por saludar, @WELZ! ¡Y muchas gracias por la imagen GIF animada!

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

ingrese la descripción de la imagen aquí

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

ingrese la descripción de la imagen aquí

Una malla envolvente permite bastante libertad al distorsionar.

ingrese la descripción de la imagen aquí

Hola Billy, ¡Gracias por el consejo! Pero tengo líneas fijas y sin transformación libre disponible. ¿Hay alguna manera de lidiar con eso tal como es? Tengo muchas formas complejas como estas que se basan en anclajes fijos.
@ user128585: la razón por la que publiqué estos métodos es porque creo que la forma en que lo hace es un poco ineficiente. Te has dado demasiado trabajo por la forma en que dibujaste las líneas por separado, y ahora no hay nada que funcione automáticamente. La respuesta de Gerard Falla proporciona un método manual. Eso es tan bueno como se pone. Lo siento por eso.