Журналирование вызовов API решателя GCM
C3D Solver дает возможность записать историю вызовов API GCM для дальнейшего воспроизведения с целью отладки и тестирования. Например, чтобы получить консультацию или решить проблемную ситуацию, возникшую в приложении при работе с C3D Solver, достаточно временно включить режим записи журнала, выполнить интересующий сценарий действий. Записанный журнал пересылается в техническую поддержку C3D Labs с описанием ситуации. После исправления ошибки журнал добавляется в базу тестовых примеров.
Журналирование вызовов API трехмерного геометрического решателя осуществляется аналогично журналированию 2D-решателя (Журналирование вызовов API). При включении режима журналирования с помощью вызова
bool GCM_SetJournal(GCM_system gSys, const char * fName)
решатель осуществляет запись истории вызовов API применительно к системе ограничения gSys. В дальнейшем записанный журнал может быть использован разработчикам C3D Solver для анализа или пополнения базы тестов.
Внимание! Файл журнала будет готов только после завершения сеанса работы с системой ограничений, а именно сразу после вызова GCE_RemoveSystem. Для корректной записи журнала вызов GCM_SetJournal должен следовать сразу после GCM_CreateSystem. Например:
GCM_system gSys = GCM_CreateSystem();
#ifdef C3D_DEBUG
GCM_SetJournal( gSys, "d:\\Logs\\gcm\_sample2.jrn");
#endif // C3D_DEBUG
/*
Vertexes of the triangle A-B-C.
*/
GCM_geom A = GCM_AddPoint(gSys, MbCartPoint3D(138.0, -38.0, -31.0));
GCM_geom B = GCM_AddPoint(gSys, MbCartPoint3D(67.0, -44.0, 51.0));
GCM_geom C = GCM_AddPoint(gSys, MbCartPoint3D(20,30,10));
/*
Set distance constraints of the sides of the triangle.
*/
GCM_constraint d1 = GCM_AddDistance(gSys, A, B, 100.0, GCM_CLOSEST);
GCM_constraint d2 = GCM_AddDistance(gSys, B, C, 100.0, GCM_CLOSEST);
GCM_constraint d3 = GCM_AddDistance(gSys, C, A, 100.0, GCM_CLOSEST);
GCM_Evaluate(gSys);
/*
Finalize the constraint system. The journal file is written.
*/
GCM_RemoveSystem(gSys);
Внимание! Журналирование нужно только для отладочных целей, поэтому рекомендуется включать её только в режиме отладки. Не рекомендуется оставлять журналирование включенным для продуктовой (release) или рабочей версии приложения, т.к. это может приводить к наоптимальному расходованию ресурсов времени и памяти.