- UID
- 696658
- 积分
- 211
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2013-8-15
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
/******************************************************************************/
/* 関数名 : GetCrossPoint */
/* 機能 : 得到交叉點的位置和交點坐標。 */
/* 入力引数 : AcGePoint3dArray Polyline的點列。 */
/* AcGePoint3d 選擇点。 */
/* double PickBox的長度。 */
/* Adesk::Boolean 閉合屬性。 */
/* 出力引数 : int 交叉點的位置(前)。 */
/* int 交叉點的位置(後)。 */
/* AcGePoint3d 交點坐標 */
/* 返り値 : TRUE 正常。 */
/* FALSE 異常。 */
/* 備考 : 無 */
/******************************************************************************/
BOOL GetCrossPoint(AcGePoint3dArray gePoi3dA, AcGePoint3d gePoi3d, double dPickLen, int & iCrsID1,
int & iCrsID2, AcGePoint3d & gePoi3dCrs, Adesk::Boolean bIsClosed = Adesk::kTrue)
{
ads_point spt1, spt2, spt3, spt4;
AcGePoint3d GePoi3dStart, GePoi3dNext;
int iReturn, iNum;
iNum = gePoi3dA.length();
if (iNum < 2) {
return FALSE;
}
/*得到交叉點的位置*/
for (int i = 0; i < iNum; i++) {
iCrsID1 = i;
//得到前一個點
asPnt3d(spt3) = gePoi3dA[iCrsID1];
//得到後一個點
if (i == iNum - 1) {
//實體是否是閉合。
if (!bIsClosed) {
break;
}
else {
iCrsID2 = 0;
}
}
else {
iCrsID2 = i + 1;
}
asPnt3d(spt4) = gePoi3dA[iCrsID2];
spt3[Z] = 0;
spt4[Z] = 0;
/*X方向是否有交叉點。*/
spt1[X] = gePoi3d.x + (dPickLen / 2); spt2[X] = gePoi3d.x - (dPickLen / 2);
spt1[Y] = gePoi3d.y; spt2[Y] = gePoi3d.y;
spt1[Z] = 0; spt2[Z] = 0;
iReturn = acdbInters(spt1, spt2, spt3, spt4, 1, asDblArray(gePoi3dCrs));
if (iReturn == RTNORM) {
return TRUE;
}
/*Y方向是否有交叉點。*/
spt1[X] = gePoi3d.x; spt2[X] = gePoi3d.x;
spt1[Y] = gePoi3d.y + (dPickLen / 2); spt2[Y] = gePoi3d.y - (dPickLen / 2);
spt1[Z] = 0; spt2[Z] = 0;
iReturn = acdbInters(spt1, spt2, spt3, spt4, 1, asDblArray(gePoi3dCrs));
if (iReturn == RTNORM) {
return TRUE;
}
}
return FALSE;
}
请问asPnt3d(spt3) = gePoi3dA[iCrsID1];中的asPnt3d(spt3) 函数是什么意思,定义在哪里?
- 本文出自晓东CAD家园-论坛,原文地址:http://bbs.xdcad.net/thread-57844-2-1.html
|
|