/*****************************************************************************/
/* LibreDWG - free implementation of the DWG file format */
/* */
/* Copyright (C) 2009 Free Software Foundation, Inc. */
/* Copyright (C) 2010 Thien-Thi Nguyen */
/* */
/* This library is free software, licensed under the terms of the GNU */
/* General Public License as published by the Free Software Foundation, */
/* either version 3 of the License, or (at your option) any later version. */
/* You should have received a copy of the GNU General Public License */
/* along with this program. If not, see . */
/*****************************************************************************/
/*
* load_dwg.c: load a DWG, get lines, text and circles
* written by Felipe Castro
* modified by Felipe Corrêa da Silva Sances
* modified by Thien-Thi Nguyen
*/
#include
#include "suffix.c"
void
add_line(double x1, double y1, double x2, double y2)
{
printf("Line");//0
printf("\t");
printf("%lf", x1);//1
printf("\t");
printf("%lf", y1);//2
printf("\t");
printf("%lf", x2);//3
printf("\t");
printf("%lf", y2);//4
printf("\t");
printf("0");//5
printf("\t");
printf("0");//6
printf("\t");
printf("0");//7
printf("\t");
printf("1");//8
printf("\t");
printf("0");//9
printf("\t");
printf("0");//10
printf("\t");
printf("0");//11
printf("\t");
printf("0");//12
printf("\t");
printf("0");//13
printf("\t");
printf("0");//14
printf("\t");
printf("0");//15
printf("\t");
printf("0");//16
printf("\n");
}
void
add_circle(double x, double y, double R)
{
printf("Circle");//0
printf("\t");
printf("%lf", x);//1
printf("\t");
printf("%lf", y);//2
printf("\t");
printf("%lf", R);//3
printf("\t");
printf("%lf", R);//4
printf("\t");
printf("0");//5
printf("\t");
printf("0");//6
printf("\t");
printf("0");//7
printf("\t");
printf("0");//8
printf("\t");
printf("0");//9
printf("\t");
printf("0");//10
printf("\t");
printf("0");//11
printf("\t");
printf("0");//12
printf("\t");
printf("0");//13
printf("\t");
printf("0");//14
printf("\t");
printf("0");//15
printf("\t");
printf("0");//16
printf("\n");
}
void
add_text(double x, double y,double w,double h, int ha, int va, char *txt)
{
printf("Text");//0
printf("\t");
printf("%lf", x);//1
printf("\t");
printf("%lf", y);//2
printf("\t");
printf("0");//3
printf("\t");
printf("0");//4
printf("\t");
printf("0");//5
printf("\t");
printf("0");//6
printf("\t");
printf("0");//7
printf("\t");
printf("0");//8
printf("\t");
printf("%s", txt);//9
printf("\t");
printf("%lf", w);//10
printf("\t");
printf("%lf", h);//11
printf("\t");
printf("%d", ha);//12
printf("\t");
printf("%d", va);//13
printf("\t");
printf("0");//14
printf("\t");
printf("0");//15
printf("\t");
printf("0");//16
printf("\n");
}
void
add_insert(double x, double y)
{
printf("Insert");
printf("\t");
printf("%lf", x);//1
printf("\t");
printf("%lf", y);//2
printf("\t");
printf("0");//3
printf("\t");
printf("0");//4
printf("\t");
printf("0");//5
printf("\t");
printf("0");//6
printf("\t");
printf("0");//7
printf("\t");
printf("0");//8
printf("\t");
printf("0");//9
printf("\t");
printf("0");//10
printf("\t");
printf("0");//11
printf("\t");
printf("0");//12
printf("\t");
printf("0");//13
printf("\t");
printf("0");//14
printf("\t");
printf("0");//15
printf("\t");
printf("0");//16
printf("\n");
}
int
load_dwg(char *filename)
{
unsigned int i;
int success;
Dwg_Data dwg;
dwg.num_objects = 0;
success = dwg_read_file(filename, &dwg);
for (i = 0; i < dwg.num_objects; i++)
{
Dwg_Entity_LINE *line;
Dwg_Entity_CIRCLE *circle;
Dwg_Entity_TEXT *text;
Dwg_Entity_INSERT *insert;
switch (dwg.object[i].type)
{
case DWG_TYPE_LINE:
line = dwg.object[i].tio.entity->tio.LINE;
// El orden de x e y de inicio y fin estaba mal
add_line(line->start.x, line->start.y, line->end.x, line->end.y);
break;
case DWG_TYPE_CIRCLE:
circle = dwg.object[i].tio.entity->tio.CIRCLE;
add_circle(circle->center.x, circle->center.y, circle->radius);
break;
case DWG_TYPE_TEXT:
text = dwg.object[i].tio.entity->tio.TEXT;
add_text(text->insertion_pt.x, text->insertion_pt.y, text->width_factor , text->height, text->horiz_alignment, text->vert_alignment, text->text_value);
break;
case DWG_TYPE_INSERT:
insert = dwg.object[i].tio.entity->tio.INSERT;
add_insert(insert->ins_pt.x, insert->ins_pt.y);
break;
}
}
dwg_free(&dwg);
return success;
}
int
main (int argc, char *argv[])
{
REQUIRE_INPUT_FILE_ARG (argc);
load_dwg (argv[1]);
return 0;
}