高级会员
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
|
【转帖】[求助]怎样在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入手?
|