Resultados 1 al 2 de 2

Tema: Distancia entre cada punto de un layout (flujo) en AutoCAD

  1. #1
    Usuario a moderar
    Fecha de ingreso
    Oct 2023
    Mensajes
    1
    Gracias (Dadas)
    0
    Gracias (Recibidas)
    0

    Distancia entre cada punto de un layout (flujo) en AutoCAD

    Buen día foro.

    Necesito ayuda en dos actividades con AutoCAD; no sé si alguien sepa cómo hacerlo con alguna rutina o en automático:

    1) En un layout tengo varios puntos (por ejemplo, A, B, C y D) de los cuales necesito saber la distancia de cada uno hacia los demás. Por ejemplo, ¿cuánto es de A a B, A a C, A a D, y así sucesivamente? (líneas rectas)

    2) Es el mismo problema que el anterior, pero ahora especificando un layout de pasillos. Necesito saber cuál es la ruta más corta para llegar entre cada punto utilizando solo los pasillos indicados.

    No sé si me expliqué bien en ambas actividades. Cualquier cosa, seguiré al pendiente.

    Saludos.

  2. #2
    Administrador, fundador y milenario... Avatar de 3dpoder
    Fecha de ingreso
    Apr 2002
    Mensajes
    27,513
    Gracias (Dadas)
    3604
    Gracias (Recibidas)
    5133

    Script para calcular la distancia entre cada punto de un layout

    Uhmm, creo que no va a ser fácil, pero vamos a tirar de IA a ver si te vale.

    Para resolver el primer problema, puedes utilizar la siguiente rutina:

    Código:
    def calcular_distancias(puntos):
    """
    Calcula las distancias entre todos los puntos de una lista.
    Args:
    puntos: Lista de puntos.
    Returns:
    Diccionario con las distancias entre todos los puntos.
    """
    distancias = {}
    for i in range(len(puntos)):
    for j in range(i + 1, len(puntos)):
    distancias[f"{puntos[i]}-{puntos[j]}"] = distance(puntos[i], puntos[j])
    return distancias
    def distance(p1, p2):
    """
    Calcula la distancia entre dos puntos.
    Args:
    p1: Primer punto.
    p2: Segundo punto.
    Returns:
    Distancia entre los dos puntos.
    """
    x1, y1 = p1
    x2, y2 = p2
    return math.sqrt((x2 - x1)**2 + (y2 - y1)**2)
    puntos = [(0, 0), (10, 0), (0, 10), (10, 10)]
    distancias = calcular_distancias(puntos)
    print(distancias)
    Esta rutina crea un diccionario con las distancias entre todos los puntos de la lista. Para calcular la distancia entre dos puntos, utiliza la función distance(), que calcula la distancia euclidiana entre dos puntos.

    Para resolver el segundo problema, puedes utilizar la siguiente rutina:

    def calcular_ruta_mas_corta(puntos, pasillos):
    """
    Calcula la ruta más corta entre dos puntos, utilizando solo los pasillos indicados.

    Args:
    puntos: Lista de puntos.
    pasillos: Lista de pasillos.

    Returns:
    Lista con la ruta más corta entre los dos puntos.
    """

    Convertimos los pasillos a un grafo.
    grafo = {}
    for pasillo in pasillos:
    p1, p2 = pasillo
    grafo.setdefault(p1, []).append(p2)
    grafo.setdefault(p2, []).append(p1)

    Inicializamos la distancia de cada punto a infinito.
    distancias = {punto: float("inf") for punto in puntos}
    distancias[puntos[0]] = 0

    Inicializamos la cola de prioridad con el primer punto.
    cola = [(0, puntos[0])]

    Recorremos la cola hasta que esté vacía.
    while cola:
    # Sacamos el primer elemento de la cola.

    Código:
    dist, punto = cola.pop(0)
    # Si el punto es el destino, lo hemos encontrado.
    if punto == puntos[1]:
    return distancias[punto]
    # Recorremos todos los vecinos del punto.
    for vecino in grafo[punto]:
    # Si la distancia actual es mayor que la distancia al punto más la distancia al vecino, actualizamos la distancia.
    if distancias[vecino] > distancias[punto] + 1:
    distancias[vecino] = distancias[punto] + 1
    cola.append((distancias[vecino], vecino))
    Si llegamos aquí, no hay ruta entre los dos puntos.
    return None

    puntos = [(0, 0), (10, 0), (0, 10), (10, 10)]
    pasillos = [(0, 1), (1, 2), (2, 3)]
    ruta = calcular_ruta_mas_corta(puntos, pasillos)

    print(ruta)

    Esta rutina crea un grafo con los pasillos indicados. Luego, utiliza un algoritmo de búsqueda de Dijkstra para encontrar la ruta más corta entre los dos puntos.

    Espero que esto te ayude.
    |Agradecer cuando alguien te ayuda es de ser agradecido|

Temas similares

  1. Respuestas: 0
    Último mensaje: 22-10-2023, 23:22
  2. Blender LoUPE CG canaliza el flujo de trabajo entre programas
    Por 3dpoder en el foro Programas de Diseño gráfico y CAD
    Respuestas: 1
    Último mensaje: 17-11-2021, 17:29
  3. Painter Flujo de trabajo entre Substance Designer y Painter
    Por DPROZ en el foro Materiales y Texturizado
    Respuestas: 2
    Último mensaje: 15-09-2021, 04:01
  4. 3ds Max Flujo trabajo Mudbox-topogun-UV layout-max
    Por pedromalo7 en el foro Modelado
    Respuestas: 4
    Último mensaje: 07-04-2012, 11:01
  5. Definir distancia de linea de referencia entre el objeto y cotas sucesivas AutoCAD
    Por venerable13 en el foro Programas de Diseño gráfico y CAD
    Respuestas: 9
    Último mensaje: 06-01-2011, 02:21

Etiquetas para este tema