unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,GLObjects,GLGeomObjects;

type
  TFormGeoBasic = class(TForm)
    GroupBox1: TGroupBox;
    Button1: TButton;
    Button2: TButton;
    RadioCubo: TRadioButton;
    RadioEsfera: TRadioButton;
    RadioCilindro: TRadioButton;
    RadioCono: TRadioButton;
    Radioplano: TRadioButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FormGeoBasic: TFormGeoBasic;

implementation

uses Unit1;

{$R *.dfm}

procedure TFormGeoBasic.Button2Click(Sender: TObject);
begin
  close;
end;

procedure TFormGeoBasic.Button1Click(Sender: TObject);
var
  cubo: TGLCube;
  esfera: TGLSphere;
  cono: TGLCone;
  cilindro: TGLCylinder;
  plano : TGLPlane;
  nombre : string;
begin
   close;
   if radiocubo.Checked then
   begin
      nombre := InputBox('Nombre del Objeto','Nombre del cubo:','');
      while ((nombre='')or(form1.ListaObjetos.Items.IndexOf(nombre)<>-1)) do
         //Ya existe un objeto con ese nombre
          nombre := InputBox('Ya existe un objeto con ese nombre','Ya existe un objeto con ese nombre, escriba otro nombre:','');

      cubo:= TGLCube.Create(nil);
      cubo.Name := nombre;
      cubo.Position.SetPoint(0,0,0);
      cubo.CubeWidth := 1;
      cubo.CubeHeight := 1;
      cubo.CubeDepth := 1;
      cubo.Direction.SetVector(0,1,0);
      cubo.Material.MaterialLibrary := form1.GLMaterialLibrary1;
      form1.Escenario.AddChild(cubo);
      form1.ListaObjetos.Items.Add(nombre);
      form1.ListaObjetos.ItemIndex := form1.ListaObjetos.Items.Count-1;
      form1.ListaObjetosClick(nil);
   end;

   if radioesfera.Checked then
   begin
      nombre := InputBox('Nombre del Objeto','Nombre de la esfera:','');
      while ((nombre='')or(form1.ListaObjetos.Items.IndexOf(nombre)<>-1)) do
         //Ya existe un objeto con ese nombre
          nombre := InputBox('Ya existe un objeto con ese nombre','Ya existe un objeto con ese nombre, escriba otro nombre:','');

      esfera:= TGLSphere.Create(nil);
      esfera.Name := nombre;
      esfera.Position.SetPoint(0,0,0);
      esfera.Radius := 1;
      esfera.Material.MaterialLibrary := form1.GLMaterialLibrary1;
      form1.Escenario.AddChild(esfera);
      form1.ListaObjetos.Items.Add(nombre);
      form1.ListaObjetos.ItemIndex := form1.ListaObjetos.Items.Count-1;
      form1.ListaObjetosClick(nil);
   end;

   if radiocilindro.Checked then
   begin
      nombre := InputBox('Nombre del Objeto','Nombre del cilindro','');
      while ((nombre='')or(form1.ListaObjetos.Items.IndexOf(nombre)<>-1)) do
         //Ya existe un objeto con ese nombre
          nombre := InputBox('Ya existe un objeto con ese nombre','Ya existe un objeto con ese nombre, escriba otro nombre:','');

      cilindro:= TGLCylinder.Create(nil);
      cilindro.Name := nombre;
      cilindro.Position.SetPoint(0,0,0);
      cilindro.BottomRadius := 1;
      cilindro.TopRadius := 1;
      cilindro.Height := 1;
      cilindro.Material.MaterialLibrary := form1.GLMaterialLibrary1;
      form1.Escenario.AddChild(cilindro);
      form1.ListaObjetos.Items.Add(nombre);
      form1.ListaObjetos.ItemIndex := form1.ListaObjetos.Items.Count-1;
      form1.ListaObjetosClick(nil);
   end;

   if radioplano.Checked then
   begin
      nombre := InputBox('Nombre del Objeto','Nombre del plano','');
      while ((nombre='')or(form1.ListaObjetos.Items.IndexOf(nombre)<>-1)) do
         //Ya existe un objeto con ese nombre
          nombre := InputBox('Ya existe un objeto con ese nombre','Ya existe un objeto con ese nombre, escriba otro nombre:','');

      plano:= TGLPlane.Create(nil);
      plano.Name := nombre;
      plano.Position.SetPoint(0,0,0);
      plano.Height := 1;
      plano.Width := 1;
      plano.Material.MaterialLibrary := form1.GLMaterialLibrary1;
      form1.Escenario.AddChild(plano);
      form1.ListaObjetos.Items.Add(nombre);
      form1.ListaObjetos.ItemIndex := form1.ListaObjetos.Items.Count-1;
      form1.ListaObjetosClick(nil);
   end;

   if radiocono.Checked then
   begin
      nombre := InputBox('Nombre del Objeto','Nombre del cono','');
      while ((nombre='')or(form1.ListaObjetos.Items.IndexOf(nombre)<>-1)) do
         //Ya existe un objeto con ese nombre
          nombre := InputBox('Ya existe un objeto con ese nombre','Ya existe un objeto con ese nombre, escriba otro nombre:','');

      cono:= TGLCone.Create(nil);
      cono.Name := nombre;
      cono.Position.SetPoint(0,0,0);
      cono.Direction.SetVector(0,1,0);
      cono.Height := 1;
      cono.BottomRadius := 1;
      cono.Material.MaterialLibrary := form1.GLMaterialLibrary1;
      form1.Escenario.AddChild(cono);
      form1.ListaObjetos.Items.Add(nombre);
      form1.ListaObjetos.ItemIndex := form1.ListaObjetos.Items.Count-1;
      form1.ListaObjetosClick(nil);
   end;


end;

end.
