Добрый день, коллеги!
T-FLEX CAD 12.
Задача: выполнить экспорт в формат step всех 3D-фрагментов входящих в изделие.
Стандартные изделия исключаем.
Экспорт выполняется следующим кодом:
[CODE]Document childDoc = item.GetFragmentDocument(true);//получить документ с подстановкой переменных
.......
string fileNameExport = childDoc.FileName + ".stp";
TFlex.Model.ExportToSTEP export = new ExportToSTEP(childDoc);
export.SimplifyModel = true;
bool success = export.Export(fileNameExport);
[/CODE]
При выполнении следующей строки
bool success = export.Export(fileNameExport);
появляется сообщение T-FLEX "Ошибка при экспорте документа", файл не создается,
при этом success = true. В справке написано, что это результат экспорта, т.е. при успешном экспорте success должен быть = true.
При экспорте в ".stl", ".x_b", ".x_t" ошибок нет, файлы создаются,
при этом success = false.
При экспорте в ".wrl" ошибок нет, но файл не создается,
при этом success = false.
Вопросы:
1. Почему ошибка при экспорте в ".stp"?
2. Почему если ошибка, то success = true,
и если нет ошибки, то success = false?
3. Почему не создается файл при экспорте в ".wrl"?
Если вместо строки
Document childDoc = item.GetFragmentDocument(true);
использовать
Document childDoc = TFlex.Application.OpenDocument(item.FileLink);
то ошибок нет, все файлы создаются,
но при экспорте в ".wrl" уже success = true. Не понятна логика.
4. При экспорте нужно обязательно использовать OpenDocument? (в справке нет информации)
5. Можно и правильно ли совместно использовать получение и открытие документа?
Document childDoc = item.GetFragmentDocument(true);
Document childDoc = TFlex.Application.OpenDocument(item.FileLink);
Код ниже:
[CODE] OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "GRB Files (*.grb)|*.grb";
if (dialog.ShowDialog() == DialogResult.OK)
{
Document childDoc = item.GetFragmentDocument(true);//получить документ с подстановкой переменных
//Document childDoc = TFlex.Application.OpenDocument(dialog.FileName);
if (docTF != null)
{
string fileNameExport = null;
bool success;
switch (Format)
{
case "stp":
fileSecondary = childDoc.FileName + ".stp";
TFlex.Model.ExportToSTEP export = new ExportToSTEP(childDoc);
export.SimplifyModel = true;
success = export.Export(fileNameExport);
break;
case "stl":
fileSecondary = childDoc.FileName + ".stl";
TFlex.Model.ExportToSTL stl = new ExportToSTL(childDoc);
stl.LinearTolerance = 1;
stl.MaxCellSize = 20;
stl.NormalTolerance = 0;
success = stl.Export(fileNameExport);
break;
case "x_b":
fileSecondary = childDoc.FileName + ".x_b";
TFlex.Model.ExportToParasolid parasolidB = new ExportToParasolid(childDoc);
parasolidB.FileFormat = ParasolidFileFormat.Binary;
parasolidB.FileVersion = 24;
parasolidB.DeleteRedundant = false;
success = parasolidB.Export(fileNameExport);
break;
case "x_t":
fileSecondary = childDoc.FileName + ".x_t";
TFlex.Model.ExportToParasolid parasolidT = new ExportToParasolid(childDoc);
parasolidT.FileFormat = ParasolidFileFormat.Text;
parasolidT.FileVersion = 24;
parasolidT.DeleteRedundant = false;
success = parasolidT.Export(fileNameExport);
break;
case "wrl":
fileSecondary = childDoc.FileName + ".wrl";
TFlex.Model.ExportToVRML wrl = new ExportToVRML(childDoc);
bool success = wrl.Export(fileNameExport);
break;
}
}
}
[/CODE]