• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Создание 2D документа

Автор Miranda, 11.10.08, 16:51:55

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

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

Miranda

Подскажите кто может, пожалста! Как открыть 2Д фрагмент в компасе?
пишу:

var
 Kompas :KompasObject;
 Doc    : ksDocument2D;
 docPar : ksDocumentParam;

begin
 Kompas := KompasObject( CreateOleObject('Kompas.Application.5') );
 doc := ksDocument2D(Kompas.ActiveDocument2D);
 docPar := ksDocumentParam(Kompas.GetParamStruct(ko_DocumentParam));

компас запускает, документ вообще не открыват
что делать?

vmnick

етот пример будет работать если пользователь запустит компас и сам откроет фрагмент

а если хочется отркрить самому нехватает
   doc := ksDocument2D( Kompas.Document2D );
   doc.ksOpenDocument( FName, false );
 

Miranda

спасибо
теперь текст такой:

Kompas := KompasObject( CreateOleObject('Kompas.Application.5') );
 doc := ksDocument2D( Kompas.Document2D );
 docPar := ksDocumentParam(Kompas.GetParamStruct(ko_DocumentParam));
 doc.ksOpenDocument( 'фреза', false );
 doc := ksDocument2D(Kompas.ActiveDocument2D);

а результат тот же... может чего-то еще не хватает??

YuKa

Kompas := KompasObject(CreateKompasObject);
doc2D := ksDocument2D(Kompas.Document2D);
doc2D.ksOpenDocument('C:/фреза.frw', False);

Miranda

оказывается я неправильно поставила вопрос =(
по этому тексту документ открывается, а мне нужно СОЗДАТЬ

текст такой:

 Kompas := KompasObject( CreateOleObject('Kompas.Application.5') );
 doc := ksDocument2D( Kompas.Document2D );
 docPar := ksDocumentParam(Kompas.GetParamStruct(ko_DocumentParam));

 doc.ksCreateDocument(                    );        //    Что должно быть в скобках? :(((

 doc := ksDocument2D(Kompas.ActiveDocument2D);

помогите еще разок, плииииззз  :(((

YuKa

procedure createFRW();
var
  Kompas : KompasObject;
  doc2D   : ksDocument2D;
  docPar  : ksDocumentParam;
begin
   Kompas := KompasObject(CreateKompasObject);
   if  Kompas = nil then exit;
   doc2D := ksDocument2D(Kompas.Document2D);
   docPar := ksDocumentParam(Kompas.GetParamStruct(ko_DocumentParam));
   if docPar <> nil then
   begin
     docPar.comment  := 'Фрагмент';     //Комментарии
     docPar.author   := 'Автор';             //Автор
     docPar.fileName := 'Фрагмент1';     //Имя файла (если сохранять автоматом - то путь + имя)
     docPar.regime   := 0;               //Режим редактирования
                                                 //0 - видимый
                                                 //1 - "слепой"
     docPar.type_ := ksDocumentFragment; //Тип документа
   end;
   doc2D.ksCreateDocument(docPar);
end;

Miranda

упорно говорит, что неправильный идентификатор ksDocumentFragment

YuKa

#7
ksConstTLB точно подключен в uses?

Кстати, вместо ksDocumentFragment можете использовать lt_DocFragment из LDefin2D.

Miranda

ksConstTLB подключить я бы рада, но где взять одноименный файл, который надо скинуть в каталог?


YuKa

В папке, куда установлен КОМПАС -> SDK\Include\ksConstTLB.pas

Miranda

Спасибо большое-большое
все получилось, все работает =))

Sanya

Может кто подскажет тот же текст программы только в Builder C++?

Prog2

2 Sanya


#include <Ks_TLB.h>
#include <ksConstants.h>
//---------------------------------------------------------------------------
KompasObjectPtr Kompas;
KompasObject *pKompas = NULL;
ksDocument2D* pDoc = NULL;
//---------------------------------------------------------------------------

void KompasExample(void)
{
  Kompas=(IDispatch*)NULL;
  try
  {
    Kompas= (IDispatch*)GetActiveOleObject("Kompas.Application.5");
   }
  catch(...)
  {
    try
    {
      Kompas=(IDispatch*)CreateOleObject( "KOMPAS.Application.5" );
    }
    catch(...)
    {
      ShowMessage("Ошибка...");
    }
  }

  pKompas=Kompas;

  SetForegroundWindow ((void*)pKompas->ksGetHWindow());

  if( pKompas )
  {
    pKompas->Visible = true;
  }

  pDoc = (ksDocument2D*) pKompas->Document2D();

  if(!(pDoc = (ksDocument2D*) pKompas->ActiveDocument2D()))
  {
    ksDocumentParam *docPar( (ksDocumentParam *)pKompas->GetParamStruct(ko_DocumentParam) );
    pDoc = (ksDocument2D*) pKompas->Document2D();
    docPar->Init();
    pDoc->ksCreateDocument(docPar);
  }
}


Пойдёт?

Sanya

Спасибо. Большое спасибо. Попробую. Надеюсь получится. 7 лет ничего не программировал :)

beztrud

А почему пишет:  undeclared identifier 'CreateKompasObjec' / необъявленный идентификатор на строчке Kompas := KompasObject(CreateKompasObject); ?