drawcell.mc

来自「Bentley Microstation的二次开发工具MDL的学习源代码」· MC 代码 · 共 106 行

MC
106
字号
/*================================================================================
						Step by step 之 MDL 快速入门实例四
================================================================================*/
#include    <tcb.h>
#include    <mdl.h>
#include	<stdio.h>
#include	<userfnc.h>
#include    <mselems.h>
#include	<stdio.h>



Public void main(int argc,char *argv[])
{
	Dpoint3d		vertex[3],origin;
	double			d_lengthUOR,d_centerUOR;
	MSElement	    ElementArc,ElementLine,Hdr;
	int				i,j;
	double			a,b,c,l;
	MSElementDescr  *TelmDscrP;

	mdlCnv_masterToUOR(&d_lengthUOR, 1000, MASTERFILE);
	mdlCnv_masterToUOR(&d_centerUOR, 100000, MASTERFILE);
	
	origin.x = d_centerUOR + tcb->globorg.x;
	origin.y = d_centerUOR + tcb->globorg.y;
	origin.z=0;
	
	l = d_lengthUOR * cos(fc_60);
	a = l * cos(fc_60);
	c = l/2;
	b = c * tan(fc_60);

	
	vertex[0].x = origin.x;
	vertex[0].y = origin.y - a;

	vertex[1].x = origin.x + c;
	vertex[1].y = origin.y;
	vertex[0].z = vertex[1].z =0;

	mdlComplexChain_createHeader(&Hdr, FALSE, 0);
	mdlElmdscr_new(&TelmDscrP,NULL,&Hdr);

	mdlLineString_create(&ElementLine, NULL, vertex, 2);	
	mdlElmdscr_appendElement(TelmDscrP, &ElementLine);
	
	mdlView_newWindowCenter(tcb->lstvw,&origin);
	j=0xff;
	mdlView_fit(tcb->lstvw, &j);
	mdlView_updateSingle(tcb->lstvw);

	mdlElmdscr_display(TelmDscrP,MASTERFILE,NORMALDRAW);
	mdlSystem_pauseTicks(120);

	vertex[0].x = origin.x + c;
	vertex[0].y = origin.y;

	vertex[1].x = origin.x + c;
	vertex[1].y = origin.y - b;
	
	vertex[2].x = origin.x;
	vertex[2].y = origin.y - b;
	vertex[0].z = vertex[1].z = vertex[2].z =0;

	if (mdlArc_createByPoints(&ElementArc,NULL,vertex)!=SUCCESS) return;
	mdlElmdscr_appendElement(TelmDscrP, &ElementArc);

	
	mdlElmdscr_display(TelmDscrP,MASTERFILE,NORMALDRAW);
	mdlSystem_pauseTicks(120);

	vertex[0].x = origin.x;
	vertex[0].y = origin.y - b;

	vertex[1].x = origin.x - c;
	vertex[1].y = origin.y - b;
	
	vertex[2].x = origin.x -c;
	vertex[2].y = origin.y;

	vertex[0].z = vertex[1].z = vertex[2].z =0;

	if (mdlArc_createByPoints(&ElementArc,NULL,vertex)!=SUCCESS) return;
	mdlElmdscr_appendElement(TelmDscrP, &ElementArc);

	mdlElmdscr_display(TelmDscrP,MASTERFILE,NORMALDRAW);
	mdlSystem_pauseTicks(120);

	vertex[0].x = origin.x -c;
	vertex[0].y = origin.y;

	vertex[1].x = origin.x;
	vertex[1].y = origin.y -a;
	vertex[0].z = vertex[1].z =0;

	mdlLineString_create(&ElementLine, NULL, vertex, 2);
	mdlElmdscr_appendElement(TelmDscrP, &ElementLine);
	
	mdlElmdscr_add(TelmDscrP);
	mdlElmdscr_display(TelmDscrP,MASTERFILE,NORMALDRAW);
	mdlElmdscr_freeAll(&TelmDscrP);

	mdlSystem_exit(0,1);
}

⌨️ 快捷键说明

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