Resultados 1 al 2 de 2

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

  1. #1
    Fecha de ingreso
    Oct 2023
    Mensajes
    1

    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
    Fecha de ingreso
    Apr 2002
    Mensajes
    25,945

    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
    : 22-10-2023, 22:22
  2. Blender LoUPE CG canaliza el flujo de trabajo entre programas
    Por 3dpoder en el foro Programas de Diseño 3D y CAD
    Respuestas: 1
    : 17-11-2021, 16:29
  3. Painter Flujo de trabajo entre Substance Designer y Painter
    Por DPROZ en el foro Materiales y Texturizado
    Respuestas: 2
    : 15-09-2021, 03:01
  4. 3ds Max Flujo trabajo Mudbox-topogun-UV layout-max
    Por pedromalo7 en el foro Modelado
    Respuestas: 4
    : 07-04-2012, 10:01
  5. Definir distancia de linea de referencia entre el objeto y cotas sucesivas AutoCAD
    Por venerable13 en el foro Programas de Diseño 3D y CAD
    Respuestas: 9
    : 06-01-2011, 01:21

Etiquetas para este tema