Не удается сохранить PDF из idw

#autodesk-forge #autodesk-designautomation

#autodesk-forge #autodesk-designautomation

Вопрос:

Используя пример Адамса из https://forge.autodesk.com/blog/store-template-documents-appbundle , я пытаюсь открыть документ idw и сохранить в формате PDF. Я получаю следующую ошибку от forge

InventorCoreConsole.exe Информация: 0: Сбой обработки: System.Runtime.Службы взаимодействия.COMException (0x80004005): Неопределенная ошибка (Исключение из HRESULT: 0x80004005 (E_FAIL))

в System.RuntimeType.ForwardCallToInvokeMember(строковое имя члена, флаги BindingFlags, цель объекта, Int32[] aWrapperTypes, MessageDataamp; msgData)

в Inventor.TranslatorAddIn.SaveCopyAs(исходный объект Object, контекст TranslationContext, параметры NameValueMap, целевые данные DataMedium)

в UpdateIPTParam.SampleAutomation.Run(Документ doc) InventorCoreConsole.exe Ошибка: 0: Сообщение изобретателя: Не удалось опубликовать файл DWF. InventorCoreConsole.exe Ошибка: 0: Внутренний XML-файл Inventor:

код для открытия плагина

 string idwDocPath = System.IO.Path.Combine(assemblyPath, parameters["generator"], "test.idw");
Document idwDoc = m_server.Documents.Open(idwDocPath, false);
  

код вывода pdf

 TranslatorAddIn PDFAddIn;
TranslationContext context;
NameValueMap options;
DataMedium dataMedium;
GetPDFAddIn(m_server, out PDFAddIn, out context, out options, out dataMedium);
dataMedium.FileName = System.IO.Path.Combine(assemblyPath, parameters["generator"], "sampleOutput.pdf");

PDFAddIn.SaveCopyAs(idwDoc, context, options, dataMedium);

// Close the idw
idwDoc.Close(true);

void GetPDFAddIn(InventorServer ThisApplication, out TranslatorAddIn PDFAddIn, out TranslationContext context, out NameValueMap options, out DataMedium dataMedium)
{
    PDFAddIn = (TranslatorAddIn)ThisApplication.ApplicationAddIns.ItemById["{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}"];
    context = ThisApplication.TransientObjects.CreateTranslationContext();
    context.Type = IOMechanismEnum.kFileBrowseIOMechanism;

    options = ThisApplication.TransientObjects.CreateNameValueMap();
    options.Value["All_Color_AS_Black"] = 1;
    options.Value["Remove_Line_Weights"] = 1;
    options.Value["Vector_Resolution"] = 400;
    options.Value["Sheet_Range"] = Inventor.PrintRangeEnum.kPrintAllSheets;
    options.Value["Custom_Begin_Sheet"] = 1;
    options.Value["Custom_End_Sheet"] = 1;

    dataMedium = ThisApplication.TransientObjects.CreateDataMedium();
}
  

Есть какие-нибудь мысли о том, почему я получаю эту ошибку?

Комментарии:

1. отлаживая плагин локально, все работало нормально, и PDF был экспортирован.

Ответ №1:

Обычно настройки параметров заключены в if блок.

 // Check whether the translator has 'SaveCopyAs' options
if(PDFAddIn.HasSaveCopyAsOptions(oDocument, oContext, oOptions)){
  // Options for drawings...
  oOptions.Value["Sheet_Range"] = Inventor.PrintRangeEnum.kPrintCurrentSheet;
  oOptions.Value["All_Color_AS_Black"] = 0;
  // oOptions.Value["Remove_Line_Weights"] = 0;
  // oOptions.Value["Vector_Resolution"] = 400;
  // oOptions.Value["Custom_Begin_Sheet"] = 2;
  // oOptions.Value["Custom_End_Sheet"] = 4;
}
  

Комментарии:

1. Да, с тех пор я заключил их в if блок, и проблема все еще сохраняется

2. Попробуйте проверить путь System.IO.Path.Combine(assemblyPath, parameters["generator"], "sampleOutput.pdf");