NX二次开发 PK获得边缘信息 PK_EDGE_ask_geometry
//获得边缘上一点,获得边上点(t = 0.0 - 1.0)
//必须开错误检查,这个函数很容易出内存问题
bool PKPK_AskEdgePoint(PK_EDGE_t pkEdge, const double t, double point[3])
{
point[0] = 0.0;
point[1] = 0.0;
point[2] = 0.0;
if (0 == pkEdge)
return false;
if (t < 0.0 || t > 1.0)
return false;
PK_CURVE_t pkCurve;
PK_CLASS_t pkClass;
PK_VECTOR_t pkPt, ends[2];
PK_LOGICAL_t sense;
PK_INTERVAL_t t_int;
if (PK_ENTITY_null == pkEdge || t > 1.0)
return false;
if (PK_EDGE_ask_geometry(pkEdge, PK_LOGICAL_true, &pkCurve, &pkClass, ends, &t_int, &sense))
return false;
double parm = t_int.value[0] + (t_int.value[1] - t_int.value[0]) * t;
if (PK_CURVE_eval(pkCurve, parm, 0, &pkPt))
return false;
for (int i = 0; i < 3; i++)
{
point[i] = pkPt.coord[i] * 1000.0;
}
return true;
}