Пересечение прямых

Автор boxer2, 11.06.07, 20:47:46

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

boxer2

 If Not iDynamicArray Is Nothing Then
    Dim iMathPointParam As Kompas6API5.MathPointParam 
    Set iMathPointParam = iKompasObject.GetParamStruct(ko_MathPointParam)
 
    If Not iMathPointParam Is Nothing Then             
      For i = 0 To iDynamicArray.ksGetArrayCount - 1
iDynamicArray.ksGetArrayItem i, iMathPointParam         
  iDocument2D.ksPoint iMathPointParam.x, iMathPointParam.y, 5
       
             Next                                           
    End If
  End If
В данном примере как избежать ошибки если прямые не пересекаются
и чему равно i

Death

Могу помочь только примером на С++...  ::)


ksMathematic2D mathematic(kompas.GetMathematic2D());
if(!mathematic.m_lpDispatch)
{
MessageBox(NULL, "Не могу получить доступ к интерфейсу математических функций", "Ошибка", MB_OK | MB_ICONEXCLAMATION);
return;
};

ksDynamicArray arr(kompas.GetDynamicArray(POINT_ARR));
if(!arr.m_lpDispatch)
{
MessageBox(NULL, "Не могу создать динамический массив параметров математической точки", "Ошибка", MB_OK | B_ICONEXCLAMATION);
return;
};

ksMathPointParam point(kompas.GetParamStruct(ko_MathPointParam));
if(!point.m_lpDispatch)
{
MessageBox(NULL, "Не могу создать структуру параметров точки", "Ошибка", MB_OK | MB_ICONEXCLAMATION);
return;
};

if(mathematic.ksIntersectLinSLinS(79, 186, 116, 223, 0, 0, 5, 5, arr.m_lpDispatch))
{
arr.ksGetArrayItem(0, point.m_lpDispatch);
};


Здесь в случае отсутствия пересечения прямых ksIntersectLinSLinS возвращает 0 и обращения к массиву arr не происходит. Но даже в случае отсутствия пересечения вызов ksGetArrayItem никаких проблем не вызовет.