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

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

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

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

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

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

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

Помогите создать чертеж на Delphi 7 для Компас

Автор lewka, 07.10.10, 12:18:55

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

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

lewka

здравствуйте!!! Подскажите пожалуйста как создать чертеж на delphi 7 для компас.
Не могу создать сам документ чертежа.
пробую вот так
var
idocParams : ksDocumentParam;
iSheetParams : ksSheetPar;
iStdSheet : ksStandartSheet;
  begin
    //Создание и заполнение структры параметров чертежа
    iDocParams := ksDocumentParam (iKompas.GetParamStruct (35));
    with iDocParams do
      begin
        Init;
        fileName := iKompas.ksSaveFile ('*.cdw','','',TRUE);
        if fileName = '' then Exit;
        author :=author_var;
        comment := comment_var;
        iDocParams.regime :=0; //видимый режим
      end;

    //Создание и заполнение структуры параметров листа, принадлежащей структуре pDocParams
    iSheetParams := ksSheetPar (iDocParams.GetLayoutParam);
    iSheetParams.Init;
    isheetparams.layoutName := ('C:\RTWExamples\Example1\GRAPHIC.lyt');
    iSheetParams.shtType := 1000; //Тип штампа

    //Создание и заполнение структуры параметров стандартного листа принадлежностей структуре pSheetParms
    iStdSheet := ksStandartSheet (iSheetParams.GetSheetParam);
    iStdSheet.format :=3; //Формат А4
    iStdSheet.multiply :=1; //Кратность формата
    iStdSheet.direct := TRUE; //Расположение основной надписи вдоль длинной стороны листа

    //Создание документа: лист чертежа, формат А3, горизонтально ориентирован, системный штамп номер 2
    iDoc :=ksDocument2D (iKompas.Document2D);
    if iDoc.ksCreateDocument (iDocParams)=true then
      begin
        iDoc.ksSaveDocument('');
      end
...

но выдает ошибку "Access violation at adress 07A8EEFA in modul "Pr1.rtw" Read of adress 00000000". Подскажите что не так пожалуйста


IgorRUtver

Приветствую, написал библиотеку, создаёт 3d деталь, выдавливает, крутит все в общем норм радости полные штаны. Но как только попытался поработать с 2d документами БЕДА(. Переюзал примеры SDK и нэт, все бесполезно, пример с SDK выдаёт ошибки, хочу хотя бы просто создать фрагмент и нарисовать что-нибудь. вот так больше методом тыка переделал пример, чтобы ошибок не выдавал, компилится но в компасе выдаёт "Access violation at adress 07A8EEFA in modul "Pr1.rtw" Read of adress 00000000"


procedure TForm1.Button1Click(Sender: TObject);
var
  pDoc      : Reference;     // Указатель на документ
  doc : ksDocumentParam; // Структура параметров документа
  doc2    : ksDocument2D;
begin
Hide;
Close;

  // Заполнение структуры параметров документа
  doc.fileName := 'c:\1.frw'; // Имя файла
  doc.author := 'user' ;
  doc.regime := 0;                    // Режим - видимый
  doc.type_  := lt_DocFragment;  // Тип документа - фрагмент
  doc2.ksCreateDocument(doc);

end;

Повторю что библиотека с 3d деталью работает, я так понимаю ошибка в коде и синтаксисе, помогите 8-)

А где Вы получили  doc : ksDocumentParam; // Структура параметров документа?
Данная структура у Вас равна Nil.

doc:=ksDocumentParam(kompas.GetParamStruct(ko_DocumentParam));

IgorRUtver

Подправил, условие проходит, а фрагмент не создается, вылетает ошибка, подскажите в чем дело?
в примере создается чертеж, взял все от туда только тип поставил "фрагмент", всеравно не хочет сотворить мне ырагмент(


procedure TForm1.Button1Click(Sender: TObject);
var
  doc : ksDocumentParam;
  doc2    : ksDocument2D;
begin
Hide;
Close;


   doc2     := ksDocument2D( kompas.Document2D );
   doc:=ksDocumentParam(kompas.GetParamStruct(ko_DocumentParam));
    if  ((doc <> nil) and (doc2<> nil)) then
     begin
      doc.Init;
      doc.fileName := 'c:\1.frw';
      doc.author := 'user' ;
      doc.regime := 0;               
      doc.type_  := lt_DocFragment; 
      doc2.ksCreateDocument(doc);
     end;
end;


IgorRUtver

При на жатии на кнопку формы, форма закрывается и
"Access violation at adress 0C9E82E6 in modul "Gidra2.rtw" Read of adress 00000000"

А Вы уверены, что Close; на своём месте, скорее всего она виновата, а вообще нужно писать после какой строки вылетает ошибка, так легче помочь, да надеюсь, что  kompas<>nil.

IgorRUtver

библиотека скомпилировалась, запускаю её из компаса, отображается форма при нажатии на кнопку вылетает ошибка. слово close вроде на своем месте потомучто если вставить код создание 3d-детали она нормально создается. или я не понял вопроса, как я могу сказать какая строка не работает, получается что чтото в теле условия ((doc <> nil) and (doc2<> nil)) потомучто оно проходит нормально. вот проект библиотеки если требуется. если нужно могу выложить весь проект

У меня времени нет разбираться с Вашим проектом, пользуйтесь отладчиком и он Вам покажет, где у Вас ошибка. Смотрите тему http://forum.ascon.ru/index.php/topic,21962.0.html

IgorRUtver

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

IgorRUtver

Урааааа получилось, нашел ошибку, переменная типа KompasObject должна была быть объявлена в разделе public, спасибо за потраченное на мой вопрос время, двигаюсь дальше :o: