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

📄 face3d.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 AcadFace3d *AcadFace3d__create( void )

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


PUBLIC void AcadFace3d__delete( AcadFace3d *me )

{
free( ( char * )me );
}


PUBLIC int AcadFace3d__length( AcadFace3d *me )

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


PUBLIC void AcadFace3d__read( AcadFace3d *me )

{
AcadEntity__read_elevation_etc( &me->common,false,true );

me->hidden = 0;
me->z1 = me->z2 = me->z3 = me->z4 = 0;
get_DOUBLE( &me->x1 );
get_DOUBLE( &me->y1 );
if ( __drawing->acad10 OR __drawing->acad11 ) 
	{
	if ( !(me->common.info&0x4) ) get_DOUBLE( &me->z1 );
	}
else 
	{
	if ( me->common.pflags&0x1 ) get_DOUBLE( &me->z1 );
	}
get_DOUBLE( &me->x2 );
get_DOUBLE( &me->y2 );
if ( __drawing->acad10 OR __drawing->acad11 ) 
	{
	if ( !(me->common.info&0x4) ) get_DOUBLE( &me->z2 );
	}
else 
	{
	if ( me->common.pflags&0x2 ) get_DOUBLE( &me->z2 );
	}
get_DOUBLE( &me->x3 );
get_DOUBLE( &me->y3 );
if ( __drawing->acad10 OR __drawing->acad11 ) 
	{
	if ( !(me->common.info&0x4) ) get_DOUBLE( &me->z3 );
	}
else 
	{
	if ( me->common.pflags&0x4 ) get_DOUBLE( &me->z3 );
	}
get_DOUBLE( &me->x4 );
get_DOUBLE( &me->y4 );
if ( __drawing->acad10 OR __drawing->acad11 ) 
	{
	if ( !(me->common.info&0x4) ) get_DOUBLE( &me->z4 );
	}
else 
	{
	if ( me->common.pflags&0x8 ) get_DOUBLE( &me->z4 );
	}
if ( __drawing->acad10 OR __drawing->acad11 ) 
	{
	if ( me->common.pflags&0x1 ) get_INT16( &me->hidden );
	}
else if ( __drawing->acad9 ) 
	{
	if ( me->common.info&0x1 ) get_INT16( &me->hidden );
	}
}


PUBLIC void AcadFace3d__dump_to_debug_file( AcadFace3d *me )

{
dprintf( "3D FACE\n" );
dprintf( "\t%lf,%lf,%lf\n",me->x1,me->y1,me->z1 );
dprintf( "\t%lf,%lf,%lf\n",me->x2,me->y2,me->z2 );
dprintf( "\t%lf,%lf,%lf\n",me->x3,me->y3,me->z3 );
dprintf( "\t%lf,%lf,%lf\n",me->x4,me->y4,me->z4 );
dprintf( "\thidden %xH\n",me->hidden );
AcadEntity__dump_to_debug_file( &me->common );
}


PUBLIC void AcadFace3d__dxfout( AcadFace3d *me )

{
dxf_string( 0,"3DFACE" );
AcadEntity__dxfout( &me->common );
dxf_DOUBLE( 10,me->x1 );
dxf_DOUBLE( 20,me->y1 );
dxf_DOUBLE( 30,me->z1 );
dxf_DOUBLE( 11,me->x2 );
dxf_DOUBLE( 21,me->y2 );
dxf_DOUBLE( 31,me->z2 );
dxf_DOUBLE( 12,me->x3 );
dxf_DOUBLE( 22,me->y3 );
dxf_DOUBLE( 32,me->z3 );
dxf_DOUBLE( 13,me->x4 );
dxf_DOUBLE( 23,me->y4 );
dxf_DOUBLE( 33,me->z4 );
if ( me->hidden ) dxf_char( 70,me->hidden );
}


PUBLIC void AcadFace3d__write( AcadFace3d *me )

{

int size;

put_UINT8( 0x16 );  /* FACE3D TYPE */
size = sizeof( DOUBLE )*8+1;
if ( me->common.ucs ) size += sizeof( DOUBLE )*3;
if ( !(me->common.info&0x4) ) size += sizeof( me->z1 );
if ( !(me->common.info&0x4) ) size += sizeof( me->z2 );
if ( !(me->common.info&0x4) ) size += sizeof( me->z3 );
if ( !(me->common.info&0x4) ) size += sizeof( me->z4 );
if ( me->common.pflags&0x1 ) size += sizeof( me->hidden );
AcadEntity__write_elevation_etc( &me->common,false,true,size );
if ( debugger ) dprintf( "\tface3d entity\n" );

put_DOUBLE( me->x1 );
put_DOUBLE( me->y1 );
if ( !(me->common.info&0x4) ) put_DOUBLE( me->z1 );
put_DOUBLE( me->x2 );
put_DOUBLE( me->y2 );
if ( !(me->common.info&0x4) ) put_DOUBLE( me->z2 );
put_DOUBLE( me->x3 );
put_DOUBLE( me->y3 );
if ( !(me->common.info&0x4) ) put_DOUBLE( me->z3 );
put_DOUBLE( me->x4 );
put_DOUBLE( me->y4 );
if ( !(me->common.info&0x4) ) put_DOUBLE( me->z4 );
if ( me->common.pflags&0x1 ) put_INT16( me->hidden );
if ( me->common.ucs ) AcadEntity__put_ucs_directions( &me->common );
}


⌨️ 快捷键说明

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