{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "code",
      "execution_count": 14,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "LXlSRBeHtETj",
        "outputId": "8b94719b-071a-479b-dbb5-1dba8557a1a2"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Brida circular exportada a brida_circular.dxf\n",
            "Perfil en L exportado a perfil_L.dxf\n"
          ]
        }
      ],
      "source": [
        "# Ejercicio Extra 3.1.8.\n",
        "\n",
        "#!pip install ezdxf\n",
        "\n",
        "import math\n",
        "import ezdxf\n",
        "\n",
        "# Parte 1: Brida circular con 6 taladros equidistantes\n",
        "\n",
        "# Parámetros de la brida\n",
        "radio_exterior = 80   # mm, radio exterior de la brida\n",
        "radio_taladro = 5     # mm, radio de cada taladro\n",
        "radio_centro_taladro = 50  # mm, distancia del centro a los taladros\n",
        "num_taladros = 6\n",
        "\n",
        "# Crear archivo DXF\n",
        "doc = ezdxf.new(dxfversion='R2010')\n",
        "msp = doc.modelspace()\n",
        "\n",
        "# Dibujar círculo exterior de la brida\n",
        "msp.add_circle((0, 0), radius=radio_exterior)\n",
        "\n",
        "# Dibujar los taladros\n",
        "for i in range(num_taladros):\n",
        "    angulo = 2 * math.pi * i / num_taladros\n",
        "    x = radio_centro_taladro * math.cos(angulo)\n",
        "    y = radio_centro_taladro * math.sin(angulo)\n",
        "    msp.add_circle((x, y), radius=radio_taladro)\n",
        "\n",
        "# Guardar archivo DXF\n",
        "archivo_dxf_brida = \"brida_circular.dxf\"\n",
        "doc.saveas(archivo_dxf_brida)\n",
        "print(f\"Brida circular exportada a {archivo_dxf_brida}\")\n",
        "\n",
        "# Parte 2: Perfil en “L”\n",
        "\n",
        "# Parámetros del perfil en L\n",
        "lado_vertical = 60  # mm\n",
        "lado_horizontal = 40  # mm\n",
        "ancho = 10          # mm del perfil\n",
        "\n",
        "# Crear nuevo archivo DXF\n",
        "doc_L = ezdxf.new(dxfversion='R2010')\n",
        "msp_L = doc_L.modelspace()\n",
        "\n",
        "# Coordenadas del polígono en L (trazando el contorno)\n",
        "# Se dibuja como polilínea cerrada\n",
        "vertices_L = [\n",
        "    (0, 0),\n",
        "    (lado_horizontal, 0),\n",
        "    (lado_horizontal, ancho),\n",
        "    (ancho, ancho),\n",
        "    (ancho, lado_vertical),\n",
        "    (0, lado_vertical),\n",
        "    (0, 0)  # cerrar polilínea\n",
        "]\n",
        "\n",
        "msp_L.add_lwpolyline(vertices_L, close=True)\n",
        "\n",
        "# Guardar archivo DXF\n",
        "archivo_dxf_L = \"perfil_L.dxf\"\n",
        "doc_L.saveas(archivo_dxf_L)\n",
        "print(f\"Perfil en L exportado a {archivo_dxf_L}\")"
      ]
    }
  ]
}