- UID
- 5798
- 积分
- 1046
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-5-28
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
最近编写了一个绘制SmartSolid立方体的MDL程序,主要用于查看我程序中设置的扫描范围是否正确(当然是三维中的了!)。源程序如下,供大家分享。
Public void displayRange (DVector3d *rngP, int drawMode)
{
MSElementDescr *edP = NULL;
KIBODY *bodyP = NULL;
double xyz[3];
xyz[0] = rngP->end.x - rngP->org.x;
xyz[1] = rngP->end.y - rngP->org.y;
xyz[2] = rngP->end.z - rngP->org.z;
mdlKISolid_beginCurrTrans (ACTIVEMODEL);
mdlCurrTrans_invScaleDoubleArray (xyz, xyz, 3);
mdlKISolid_makeCuboid (&bodyP, xyz[0], xyz[1], xyz[2]);
if (bodyP){
mdlKISolid_bodyToElement (&edP, bodyP, TRUE, -1, NULL, ACTIVEMODEL);
mdlKISolid_freeBody (bodyP);
}
mdlKISolid_endCurrTrans ();
if (edP){
Transform tMatrix;
Dpoint3d pt;
pt.x = (rngP->end.x + rngP->org.x) / 2;
pt.y = (rngP->end.y + rngP->org.y) / 2;
pt.z = (rngP->end.z + rngP->org.z) / 2;
mdlTMatrix_getIdentity(&tMatrix);
mdlTMatrix_setTranslation (&tMatrix, &pt);
mdlElmdscr_transform(edP, &tMatrix);
mdlElmdscr_display (edP, ACTIVEMODEL, drawMode);
mdlElmdscr_add (edP);
mdlElmdscr_freeAll (&edP);
}
}
这段程序虽不长,但用到了许多MDL中的精华。如果你能不费力地读懂它,说明你的MDL水平应该在中级以上。 |
|