⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shape.c

📁 AutoCAD DWG-file viewer
💻 C
字号:
/****************************************************************/
/*			COPYRIGHT NOTICE			*/
/*			----------------			*/
/*  All software in this listing remain the strict copyright	*/
/*  of Ilija Kovacevic and cannot be copied or used in any way	*/
/*  except by written permission of Ilija Kovacevic.		*/
/*								*/
/*	Copyright (c) 1992 Ilija Kovacevic			*/
/*	www.kov.com   email ilija@kov.com			*/
/****************************************************************/

#include "dwgin.h"

PUBLIC AcadShape *AcadShape__create( void )

{
return( ( AcadShape * )get_memory( sizeof( AcadShape ) ) );
}


PUBLIC void AcadShape__delete( AcadShape *me )

{
free( ( char * )( char * )me );
}


PUBLIC int AcadShape__length( AcadShape *me )

{
return( me->common.size );
}


PUBLIC void AcadShape__read( AcadShape *me )

{
AcadEntity__read_elevation_etc( &me->common,true,true );
me->relative_x_scale = 1.0;
me->obliquing_angle = me->angle = 0;
get_DOUBLE( &me->x );
get_DOUBLE( &me->y );
get_DOUBLE( &me->height );
get_UINT8( &me->name );
if ( me->common.pflags&1 ) get_DOUBLE( &me->angle );
get_UINT8( &me->index );
if ( me->common.pflags&4 ) get_DOUBLE( &me->relative_x_scale );
if ( me->common.pflags&8 ) get_DOUBLE( &me->obliquing_angle );
if ( ( __drawing->acad10 OR __drawing->acad11 ) AND me->common.pflags&0x10 ) AcadEntity__get_ucs_directions( &me->common );
}


PUBLIC void AcadShape__dump_to_debug_file( AcadShape *me )

{
dprintf( "SHAPE\n" );
dprintf( "\nname %xH index %xH\n",me->name,me->index );
dprintf( "\tat %lf,%lf,%lf\n",me->x,me->y,me->height );
dprintf( "\trelative scale %lf,%lf\n",me->relative_x_scale,me->relative_y_scale );
dprintf( "\tobliquing angle %lf\n",me->obliquing_angle );
AcadEntity__dump_to_debug_file( &me->common );
}


PUBLIC void AcadShape__dxfout( AcadShape *me )

{
char *shape_name;

shape_name = get_shape_name( me->name,me->index );
if ( shape_name )
	{
	dxf_string( 0,"SHAPE" );
	AcadEntity__dxfout( &me->common );
	dxf_DOUBLE( 10,me->x );
	dxf_DOUBLE( 20,me->y );
	if ( !__drawing->header->flatland ) dxf_DOUBLE( 30,me->common.elevation );
	dxf_DOUBLE( 40,me->height );
	dxf_string( 2,shape_name );
	if ( me->angle ) dxf_DOUBLE( 50,rad_to_degrees( me->angle ) );
	if ( me->relative_x_scale NEQ 1.0 ) dxf_DOUBLE( 40,me->relative_x_scale );
	if ( me->obliquing_angle ) dxf_DOUBLE( 51,rad_to_degrees( me->obliquing_angle ) );
	AcadEntity__dxfout_ucs( &me->common );
	}
}


PUBLIC void AcadShape__write( AcadShape *me )

{
int size;

put_UINT8( 0x4 );  /* SHAPE TYPE */
size = sizeof( DOUBLE )*3 + sizeof( UINT8 ) + 1;
if ( me->common.ucs ) size += sizeof( DOUBLE )*3;
if ( me->common.pflags&1 ) size += sizeof( me->angle );
if ( me->common.pflags&4 ) size += sizeof( me->relative_x_scale );
if ( me->common.pflags&8 ) size += sizeof( me->obliquing_angle );

AcadEntity__write_elevation_etc( &me->common,true,true,size );
if ( debugger ) dprintf( "\tshape entity\n" );

put_DOUBLE( me->x );
put_DOUBLE( me->y );
put_DOUBLE( me->height );
put_UINT8( me->name );
if ( me->common.pflags&1 ) put_DOUBLE( me->angle );
put_UINT8( me->index );
if ( me->common.pflags&4 ) put_DOUBLE( me->relative_x_scale );
if ( me->common.pflags&8 ) put_DOUBLE( me->obliquing_angle );
if ( me->common.ucs ) AcadEntity__put_ucs_directions( &me->common );
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -