![]() |
【转帖】[求助]怎样在arx中实现旋转一个实体,如将一个矩形或一条直线旋转25度?
[求助]怎样在arx中实现旋转一个实体,如将一个矩形或一条直线旋转25度?
[求助]怎样在arx中实现旋转一个实体,如将一个矩形或一条直线旋转25度? acdbentity实体旋转的一般方法 所有acdbentity类型的实体都通过调用transformby()函数来实现诸如旋转、平移、比例缩放、复制等操作。你若需要在你的自定义实体(即从acdbentity类派生)中实现这些操作,就必须重载transformby()函数。 transformby()函数的原型为: virtual acad::errorstatus transformby(const acgematrix3d& xform); 在这需要一个acgematrix3d类型的参数。它是一个4x4矩阵,通过设置矩阵来实现各种操作。 以下代码是我个人理解,你试试。 acgepoint3d origin(0,0,0); acgevector3d e0(1,0,0); acgevector3d e1(0,1,0); acgevector3d e2(0,0,1); acgematrix3d mat; mat->setcoordsystem(origin,e0,e1,e2); //将mat设置与当前坐标系相关 double ang; //旋转角度 acgevector3d axle; //旋转轴 acgepoint3d cen; //旋转中心 ...//初始化以上三个参数 mat->settoratation(angle,axle,cen); //计算旋转变换矩阵 obj->transformby(mat); //obj为要旋转的实体 顶烙铁 顺便提问:leeyeafu上面的 obj->transformby(mat); //obj为要旋转的实体 obj句柄怎么获得? 如果想旋转模型空间的整个实体,仍然是用这个方法吗,还是从view入手? |
所有的时间均为北京时间。 现在的时间是 01:57 AM. |