{
  "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": 17,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "LXlSRBeHtETj",
        "outputId": "380c4d40-a4f5-442c-c370-624b27ef1070"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Pieza exportada a pieza_mixta.dxf\n"
          ]
        }
      ],
      "source": [
        "# Ejercicio Extra 3.1.9.\n",
        "\n",
        "#!pip install ezdxf\n",
        "# Si lo necesitas, elimina el # de la senencia anterior\n",
        "\n",
        "import numpy as np\n",
        "import ezdxf\n",
        "\n",
        "# Crear nuevo archivo DXF\n",
        "doc = ezdxf.new(dxfversion='R2010')\n",
        "msp = doc.modelspace()\n",
        "\n",
        "# -----------------------\n",
        "# 1. Curva cónica: arco de elipse\n",
        "a = 60  # semieje mayor\n",
        "b = 40  # semieje menor\n",
        "t = np.linspace(0, np.pi/2, 50)  # arco de 90 grados\n",
        "x_elipse = a * np.cos(t) + 100  # desplazamos en x=100\n",
        "y_elipse = b * np.sin(t) + 100  # desplazamos en y=100\n",
        "\n",
        "# Añadir la curva como polilínea\n",
        "elipse_points = list(zip(x_elipse, y_elipse))\n",
        "msp.add_lwpolyline(elipse_points)\n",
        "\n",
        "# -----------------------\n",
        "# 2. Polígono 1: triángulo\n",
        "triangulo = [(0,0), (50,0), (25,50), (0,0)]\n",
        "msp.add_lwpolyline(triangulo, close=True)\n",
        "\n",
        "# 3. Polígono 2: rectángulo\n",
        "rectangulo = [(0,60), (70,60), (70,100), (0,100), (0,60)]\n",
        "msp.add_lwpolyline(rectangulo, close=True)\n",
        "\n",
        "# -----------------------\n",
        "# Guardar DXF\n",
        "archivo_dxf = \"pieza_mixta.dxf\"\n",
        "doc.saveas(archivo_dxf)\n",
        "print(f\"Pieza exportada a {archivo_dxf}\")"
      ]
    }
  ]
}