drawline.mc

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

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

#include	"drawlinecmd.h"

Dpoint3d	g_Point[101];
int			g_pointIndex;

Private void InputSide();

Public void main(int argc,char *argv[])
{
	if (mdlParse_loadCommandTable (NULL) == NULL)
	{
		mdlOutput_error("调入命令表出错");
		return;
	}
	 InputSide();
}

void Linestring_onPoint(Dpoint3d* pPoint,int view);
void Linestring_reset(void);
void Linestring_2onPoint(Dpoint3d* pPoint,int view);
void Linestring_2show(Dpoint3d *pPoint, int view, int drawMode, int add);
void Linestring_2reset(void);

Private void InputSide()
cmdNumber   CMD_DRAWMYLINE
{
	mdlState_startPrimitive(Linestring_onPoint,InputSide,0,0);
	mdlState_setFunction(STATE_COMPLEX_DYNAMICS, NULL);
}

void Linestring_onPoint(Dpoint3d* pPoint,int view)
{
	mdlState_setFunction(STATE_DATAPOINT, Linestring_2onPoint);
	mdlState_setFunction(STATE_RESET, Linestring_2reset);
	mdlState_setFunction(STATE_COMPLEX_DYNAMICS, Linestring_2show);
	
	g_Point[0] = *pPoint;
	g_pointIndex=1;
}

void Linestring_2onPoint(Dpoint3d* pPoint,int view)
{
	g_Point[g_pointIndex]=*pPoint;
	if (g_pointIndex<101) 
		g_pointIndex++;
	else
		Linestring_2reset();

}


void Linestring_2show(Dpoint3d *pPoint, int view, int drawMode, int add)
{
	MSElement		el;

	g_Point[g_pointIndex]=*pPoint;
	mdlLineString_create(&el, NULL, g_Point, g_pointIndex+1);
	mdlElement_display(&el, drawMode);	
}

void Linestring_2reset(void)
{
	MSElement		el;

	mdlLineString_create(&el, NULL, g_Point, g_pointIndex);
	mdlElement_add(&el);
	mdlElement_display(&el, NORMALDRAW);

	mdlState_startPrimitive(Linestring_onPoint,Linestring_reset,0,0);
	mdlState_setFunction(STATE_COMPLEX_DYNAMICS, NULL);
	
	g_pointIndex=0;
}

void Linestring_reset(void)
{
	mdlState_startDefaultCommand();
}

⌨️ 快捷键说明

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