Перейти к публикации

Проблемы с API-функциями


Bacuk

Рекомендованные сообщения

Добрый день!

Мне необходимо выполнить следующие действия: Открыть файл с диска - Получить модель с данного чертежа - сохранить в PDF. 

Использую следующую функцию:

 

procedure TForm6.Button1Click(Sender: TObject);
var
  Windo : IpfcWindow;
  session :  IpfcSession;
  aaa : ipfcAsyncConnection;
  asyncConnection : IpfcAsyncConnection;
  casync : CCpfcAsyncConnection;
  Descript : IpfcModelDescriptor;
  Ddd : ICpfcModelDescriptor;
  Err : Hresult;
  aidstr : WideString;
  AidInt : Integer;
  EntValue : OleVariant;
begin
  casync := CoCCpfcAsyncConnection.Create;
  //asyncConnection := casync.Connect(null, null, null, null);
  asyncConnection := casync.Start('c:\Program Files\PTC\Creo 2.0\Parametric\bin\parametric.exe', '.');
  asyncConnection.Get_Session(session);

  (session as ipfcBaseSession).Get_CurrentWindow(windo);
  Descript := CoCCpfcModelDescriptor.Create.CreateFromFileName('e:\work\d638.drw');
  Descript.Get_type_(AidInt);
  Descript.Get_InstanceName(AidStr);
  Descript.Get_GenericName(EntValue);
  Descript.Get_Host(AidStr);
  Descript.Get_Device(aidstr);
  Descript.Get_Path(aidstr);
  descript.Get_FileVersion(EntValue);
  Descript.GetFullName(aidstr);
  Descript.GetExtension(AidStr);
  Descript.GetFileName(aidstr);
  //Err := CoCpfcParamValue.Create;
  Err := (session as ipfcBaseSession).OpenFile(Descript, Windo);

 

Файл d638.drw существует, но переменная Windo = nil.

 

Подскажите, что я делаю не так? 

Ссылка на сообщение
Поделиться на других сайтах


Функция CreateFromFileName принимает в качестве аргумента только имя файла с расширением. Без пути.

Предварительно измените рабочую папку на путь, где лежит чертеж.

Ссылка на сообщение
Поделиться на других сайтах

Поправил:

casync := CoCCpfcAsyncConnection.Create;
  //asyncConnection := casync.Connect(null, null, null, null);
  asyncConnection := casync.Start('c:\Program Files\PTC\Creo 2.0\Parametric\bin\parametric.exe', '.');
  asyncConnection.Get_Session(session);

  (session as ipfcBaseSession).Get_CurrentWindow(windo);
  Descript := CoCCpfcModelDescriptor.Create.CreateFromFileName('e:\work\d638.drw');
  Err1 := (session as IpfcBaseSession).ChangeDirectory('e:\work\');
  //Err := CoCpfcParamValue.Create;
  Err := (session as ipfcBaseSession).OpenFile(Descript, Windo);

 

Значение переменной Err1 = 0 - Значит изменилась директория корректно

Значение переменной Err = -2147352567 - Опять ошибка, и windo равна nil.

 

Так же вопрос: как можно не запускать каждый раз новый экземпляр крео, а подключаться к существующему?

функция asyncConnection := casync.Connect(null, null, null, null); выдает ошибку

 

Ссылка на сообщение
Поделиться на других сайтах

Уже близко, но не то.

1) Менять рабочую папку нужно до вызова из файла

  Err1 := (session as IpfcBaseSession).ChangeDirectory('e:\work\');

  Descript := CoCCpfcModelDescriptor.Create.CreateFromFileName('e:\work\d638.drw');

 

2) Аргумент для CreateFromFileName имя файла БЕЗ ПУТИ

Err1 := (session as IpfcBaseSession).ChangeDirectory('e:\work\');

  Descript := CoCCpfcModelDescriptor.Create.CreateFromFileName('d638.drw');

 

3) Не знаю как в Delphi, но в документации

Function OpenFile (MdlDescr as IpfcModelDescriptor) as IpfcWindow принимает ОДИН аргумент и возвращает не ошибку, а объект IpfcWindow

мне кажется должно быть

Windo := (session as ipfcBaseSession).OpenFile(Descript);

Ссылка на сообщение
Поделиться на других сайтах

Чтобы что-то подсказать нужно видеть ваш исправленный код...

 

Попробуйте убрать слэш в конце пути. Оставить в коде только функцию смены папки

 Err1 := (session as IpfcBaseSession).ChangeDirectory('e:\work');

 

Затем в Creo проверьте сменилась ли рабочая папка.

 

Если ничего не получается, то идите другим путем

Создать

CCpfcModelDescriptor.Create()
Заполнить свойство путь и другие
IpfcModelDescriptor.Path

Вызвать модель в сессию
IpfcBaseSession.RetrieveModelWithOpts()

Отобразить

IpfcModel.Display()

Ссылка на сообщение
Поделиться на других сайтах

Спасибо, за ответ: 

В общем разобрался - в папке назначения лежал только файл чертежа без файла модели - поэтому выдавалась ошибка. Положил файл модели с файлом чертежа все выполнилось успешно.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




  • Сообщения

    • Артур8991
    • soldo
      @maxx2000 Спасибо за развернутый ответ, очень помогли! @ak762 Благодарю, хороший вариант.
    • ak762
      holder - держатель, и так как узел используется для закрепления инструмента, в адаптированном на русский я бы использовал резцедержатель  в конкретном случае похоже sleeve эквивалент collet т.е. цанга получается 5 spindle sleeve holder = 5-ти местный цанговый держатель/резцедержатель
    • ДОБРЯК
      А что еще остается делать. В Ансис точно частоты будут разные, даже не сомневайтесь...
    • ДОБРЯК
      Кроме собственных чисел нужно еще и собственные вектора найти. Вы даже не понимаете задачи. Надо решить квадратное уравнение, чтобы найти два собственных числа и вектора для задачи любой размерности. Такой глупости я еще не слышал. Поэтому и смеюсь над вашими знаниями, которые вы еще в детском саду получили. И этим гордитесь... :=)
    • maxx2000
      прямо по чертежу 1. инструмент 2.гайка цангового патрона типа ER 3. хвостовик цангового патрона 4 многоместный держатель 5. Фиксирующие винты   Открутите гайку цангового патрона и установите в неё цангу нужного размера, накрутите на место; Установите в цангу инструмент и затяните гайку цангового патрона; Ослабьте крепёжные винты на многоместном держателе и отрегулируйте положение инструмента; Затяните фиксирующие винты;
    • Ander
    • ak762
      я бы попросил у заказчика дать конкретную марку применяемого материала и использовать эти данные для расчета судя по данным с MatWeb https://www.matweb.com/search/DataSheet.aspx?MatGUID=08fb0f47ef7e454fbf7092517b2264b2 там разброс механических свойств материала существенный включая зависимость от наполнителя и способа изготовления    
    • Jesse
      потестил со смещённым колесом.. Если коротко, то печаль)) В модальнике прикладываю вращение в разные сторона, частота та же. Пробовал даже "гнуть в разные стороны" - извлекать деформированные модели, когда уск. своб. падения направлено вверх и вниз. В модальниках частота та же, без изменения.. @Борман@AlexKazну что ж, если выкрутиться никак, будем осваивать Ansys. Чё ещё остаётся делать?!)))) Вроде какие-то видосики есть на ютюбе. Спс за овтеты)
    • soldo
      Приветствую всех! Часто искала информацию на форуме, связанную с переводом, но кое-что не могу найти и хочу попросить о помощи. Я перевожу инструкцию для токарного автомата продольного точения и не очень хорошо понимаю все, что связано с креплением инструмента к станку. Конкретно меня интересуют следующие вопросы. Станок оснащен разными инструментальными блоками, есть суппорт с резцами, блок с инструментами для поперечного сверления и т.д.  И есть один блок, который на корявом английском называется 5 spindle sleeve holder, На этом блоке 5 шпинделей и на них можно закрепить инструмент для сверления, нарезания резьбы и растачивания. В названии этого блока фигурируют какие-то втулки (sleeve), предполагаю, что это патроны? Вот, что примерно написано в инструкции по поводу установки инструмента в этом блоке: (1) Ослабьте стопорный винт ② и установите режущий инструмент ① на втулку ③. (2) Затяните стопорный винт ② и закрепите режущий инструмент ① на втулке ③. (3) Ослабьте резьбу ⑤ и вставьте втулку ③ в блок ④ . (4) Переместите втулку ③ в направлении длины и отрегулируйте прямоугольное положение режущего инструмента ①. (5) После регулировки затяните резьбу ⑤ и зафиксируйте втулку ③. Мой вопрос: как можно назвать этот блок и что это за "втулка"?  Прикрепляю ссылку, на ней скриншоты из инструкции с общим видом инструментальной системы, 5-шпиндельного блока и соответствующих инструментов для сверления. https://imgur.com/a/fpBgmLA
×
×
  • Создать...