找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 359|回复: 0

[分享]:绘制SmartSolid立方体源程序。

[复制链接]
发表于 2004-9-8 18:01:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
最近编写了一个绘制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水平应该在中级以上。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-26 01:57 , Processed in 1.119593 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表