- UID
- 226148
- 积分
- 70
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2005-3-14
- 最后登录
- 1970-1-1
|
发表于 2005-9-5 21:33:39
|
显示全部楼层
// 得到捕捉点
AcGePoint3dArray *mSX,*mXX;//自定义的线(点)
Acad::ErrorStatus
MYClass::getOsnapPoints(AcDb::OsnapMode osnapMode,
int gsSelectionMark,
const AcGePoint3d &pickPoint,
const AcGePoint3d &lastPoint,
const AcGeMatrix3d &viewXform,
AcGePoint3dArray &snapPoints,
AcDbIntArray &geomIds) const
{
assertReadEnabled();
Acad::ErrorStatus es = Acad::eOk;
AcGePoint3d ap;
KyPoint pt;
snapPoints.setLogicalLength(0);
switch(osnapMode) {
case AcDb::kOsModeEnd:
case AcDb::kOsModeNode:
if(mSX)
{
for(int i=0;i<mSX->length();i++)
{
pt=mSX->at(i);
snapPoints.append(pt);
}
}
if(mXX && mViewXX)
{
for(int i=0;i<mXX->length();i++)
{
pt=mXX->at(i);
snapPoints.append(pt);
}
}
case AcDb::kOsModeMid:
if(mSX)
{
for(int i=1;i<mSX->length();i++)
{
KyLine L(mSX->at(i-1),mSX->at(i));
ap=L.mid();
snapPoints.append(ap);
}
}
if(mXX && mViewXX)
{
for(int i=1;i<mXX->length();i++)
{
KyLine L(mXX->at(i-1),mXX->at(i));
ap=L.mid();
snapPoints.append(ap);
}
}
break;
case AcDb::kOsModePerp:
if(mSX)
{
KyPointArray *pl=mSX->per(lastPoint,pt);
if(pl)
{
for(int i=0;i<pl->length();i++)
{
pt=pl->at(i);
snapPoints.append(pt);
}
}
}
if(mXX && mViewXX)
{
KyPointArray *pl=mXX->per(lastPoint,pt);
if(pl)
{
for(int i=0;i<pl->length();i++)
{
pt=pl->at(i);
snapPoints.append(pt);
}
}
}
break;
case AcDb::kOsModeNear:
if(mSX)
{
KyPointArray *pl=mSX->per(pickPoint,pt);
if(pl)
{
for(int i=0;i<pl->length();i++)
{
pt=pl->at(i);
snapPoints.append(pt);
}
}
}
if(mXX && mViewXX)
{
KyPointArray *pl=mXX->per(pickPoint,pt);
if(pl)
{
for(int i=0;i<pl->length();i++)
{
pt=pl->at(i);
snapPoints.append(pt);
}
}
}
break;
default:
return es;
break;
}
return es;
} |
|