- UID
- 69086
- 积分
- 178
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2003-8-1
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2004-1-8 15:11:13
|
显示全部楼层
我的可以实现移动拖动,但是移动拖动后旋转拖动就不对了,发现是以移动拖动后确定的点为基点,原先块的位置为起始位置,进行旋转。而不是块在我拖动确定的点处为基点进行旋转的
AcEdJig::DragStatus
AsdkMyJig::sampler()
{
DragStatus stat;
//setSpecialCursorType(kRotatedCrosshair);
setUserInputControls((UserInputControls)
(AcEdJig::kAccept3dCoordinates
| AcEdJig::kNoNegativeResponseAccepted
| AcEdJig::kNoZeroResponseAccepted));
if (mPromptCounter == 0) {
static AcGePoint3d axisPointTemp(0.0,0.0,0.0);
stat = acquirePoint(mAxisPt, AcGePoint3d(0.0,0.0,0.0));
if (axisPointTemp != mAxisPt)
{
axisPointTemp = mAxisPt;
//AcGeMatrix3d xform;
mInsertPt=mAxisPt;
AcGeVector3d Vector(mAxisPt[X],mAxisPt[Y],mAxisPt[Z]);//-axisPointTemp;
xform.setToTranslation(Vector);
}
else if (stat == AcEdJig::kNormal)
return AcEdJig::kNoChange;
}
else if (mPromptCounter == 1) {
static double angTemp=-1;
//AcGePoint3d basePnt=mInsertPt;
stat = acquireAngle(mAng, mInsertPt);
if (angTemp != mAng)
{
//mAng = ang;
xform.setToRotation(mAng,mNormal,mInsertPt);
}
else if (stat == AcEdJig::kNormal)
return AcEdJig::kNoChange;
}
return stat;
}
// This function is called to update the entity based on the
// input values.
//
Adesk::Boolean
AsdkMyJig::update()
{
switch (mPromptCounter) {
case 0:
// {AcGeVector3d Vector(mInsertPt[X],mInsertPt[Y],mInsertPt[Z]);//-axisPointTemp;
// xform.setTranslation(Vector);}
break;
case 1:
{//acutPrintf("\ninsertPt=%f %f %f",mInsertPt[X],mInsertPt[Y],mInsertPt[Z]);
//mNormal=AcGeVector3d(0,0,1);
//xform.setToRotation(mAng,mNormal,mInsertPt);
//.setToProduct(xform,form);
}
break;
} |
|