Странное поведение, когда я пытаюсь создать изображение из представления в Revit через API. По какой-то причине целевой файл иногда бывает «png», иногда - «jpg» (для разных View3D). В качестве обходного пути я проверяю наличие файла и заменяю расширение, но я думаю, что это не очень хорошее решение. Идея была взята из
https://thebuildingcoder.typepad.com/blog/2013/08/setting-a-default-3d-view-orientation.html
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIDocument uidoc = commandData.Application.ActiveUIDocument;
Document doc = uidoc.Document;
var tempFileName = Path.ChangeExtension(Path.GetRandomFileName(), "png");
string tempImageFile;
try
{
tempImageFile = Path.Combine(Path.GetTempPath(), tempFileName);
}
catch (IOException)
{
return Result.Failed;
}
var opt = new ImageExportOptions
{
ZoomType = ZoomFitType.Zoom,
FilePath = tempImageFile,
FitDirection = FitDirectionType.Horizontal,
HLRandWFViewsFileType = ImageFileType.PNG,
ImageResolution = ImageResolution.DPI_300,
};
doc.ExportImage(opt);
Debug.WriteLine(File.Exists(tempImageFile) ? "File exists." : "File does not exist.");
return Result.Succeeded;
}
}
Шаги для воспроизведения:
- Создать внешняя команда (реализация интерфейса IExternalCommand)
- Используйте предоставленную выше реализацию метода Execute
- Пример модели Open Revit 2020 (rac_basic_sample_project.rvt)
- Выберите 3D-виды-> Перспектива выбора ( или Кухня)
- Выполнить внешнюю команду
- Проверить результат команды do c .ExportImage (opt)
AR: файл результата имеет расширение «jpg» вместо «png»
ER: файл должен быть «png».
PS. Если вы выберете 3D-виды -> {3D} файл имеет расширение "png"
Посмотрите на экраны