Как программно подключить библиотеку моделей или фрагментов?

Автор гость, 12.12.06, 09:01:43

« предыдущая - следующая »

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

гость

Может быть кто нибудь сталкивался с данной проблемой, сабж. Пробовал метод ksModelLibrary::ModelLibraryOperation действие №1 не работает, так как что бы открыть библиотеку надо ее сначала подключить... Отсюда и соответствующий вопрос, как это можно сделать(программно)? Так же пробовал метод KompasObject::ksAttachKompasLibrary, но как я понял он распространяется только на прикладные библиотеки, так как при попытке открыть библиотеку моделей или фрагментов выдает соответствующее сообщение «Ошибка подключения библиотеки».

Доп. инф.: Библиотека пишется для Компас v8p на VC++

Заранее благодарен!

Sergey

Ну раз никто не знает, тогда вопрос к разработчикам, если они, конечно, здесь появляются. Можно ли это(сабж), вообще, сделать?

IronMaxxx

А зачем вам подключать? То есть, вам нужно именно ее подключить или просто вытащить из такой библиотеки модель/фрагмент?

Lito 2

На VC++ не пробывал да и не работал, а в С++Bulder это выглядит так

/------------------------------------------------------------------------------
// При вставке из библиотеки моделей указывается полный путь к файлу библиотеки и путь внутри библиотеки моделей
// ---
String& Shpeel::SetFileName()
{
  static char fullName[512];
  bool res = false;
  if( GetModuleFileName( _hinst, fullName, sizeof(fullName) ) )
  {
    char *c = strrchr( fullName, '\\');
    if ( c )
    {
      *(c + 1) = '\0';
      strcat( fullName, STUDS_FILE );
      OFSTRUCT ofs;
      if ( OpenFile(fullName, &ofs, OF_EXIST) != HFILE_ERROR )
        res = true;
      else
      {
        *(c + 1) = '\0';
        strcat( fullName, "model\\" );
        strcat( fullName, STUDS_FILE );
        if ( OpenFile(fullName , &ofs, OF_EXIST) != HFILE_ERROR )
          res = true;
      }
    }
  }

  if( res )
  {
    strcat( fullName, STUDS_INPUT_PATH );
    fileName = fullName;
  }
 
  return fileName;
}

Смотри например пример в SDK E:\Program Files\ASCON\KOMPAS-3D V8 Plus\SDK\C++\CBuilder\studs3d\  или  CBUILDERAUTO\, а также примеры на VC++

Sergey

Начну по порядку.
Мне необходимо скопировать модель из одной библиотеки моделей в другую. Напрямую копировать модель из одной библиотеки в другую нельзя (т.к. на данный момент в API не реализовано), поэтому ищем обходные пути. Такой путь есть, немного длинноватый, но, тем не менее (хотя еще не известно, может он тоже, работать не будет ).

Доп. инф.: Имеем две библиотеки, например, «1» (из которой нужно скопировать модель) и «2» (в которую нужно вставить).

Начну с конца, так удобнее:

1.   Создаем библиотеку «2»
2.   Вставляем в нее необходимую модель из файла XXX.m3d
3.   Файл XXX.m3d получаем из модели, открытой на редактирование из библиотеки «1» (т.е. модель, открытую на редактирование, сохраняем в файл)
4.   Для того, что бы открыть модель на редактирование необходимо, что бы библиотека «1» была подключена в «Менеджере библиотек». Или как еще в SDK написано, зарегистрирована.
Так вот, с первыми тремя пунктами проблем не возникло, а вот с четвертым никак разобраться не могу. Отсюда и вопрос, как ее (библиотеку моделей) программно подключить, зарегистрировать?

Если кто-нибудь знает другой способ, буду очень признателен, если поделитесь.