/*****************************************************************************/ /* 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; }