Команда Document ExportImage создает файл изображения с разными расширениями - PullRequest
0 голосов
/ 08 мая 2020

Странное поведение, когда я пытаюсь создать изображение из представления в 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;

}

}

Шаги для воспроизведения:

  1. Создать внешняя команда (реализация интерфейса IExternalCommand)
  2. Используйте предоставленную выше реализацию метода Execute
  3. Пример модели Open Revit 2020 (rac_basic_sample_project.rvt)
  4. Выберите 3D-виды-> Перспектива выбора ( или Кухня)
  5. Выполнить внешнюю команду
  6. Проверить результат команды do c .ExportImage (opt)

AR: файл результата имеет расширение «jpg» вместо «png»

ER: файл должен быть «png».

PS. Если вы выберете 3D-виды -> {3D} файл имеет расширение "png"

Посмотрите на экраны

1 Ответ

0 голосов
/ 09 мая 2020

Пожалуйста, поделитесь полным минимально воспроизводимым случаем, чтобы команда разработчиков проанализировала . Оптимально, он должен демонстрировать c проблемное поведение одним щелчком мыши. Спасибо!

...