Здравствуйте!
Я не программист к сожалению, занимаюсь созданием семейств в Ревит. Раньше я сохранял модели, не задумываясь как они будут выглядеть в проводнике и все модели сохранены в таком виде:
Теперь, по разным причинам возникла необходимость пересохранить модели в 3D Виде, чтобы в проводнике была видна превью 3Д модели.
Прошерстив интернет и проштудировав блог Джереми Таммика, нашел вот это решение:
http://thebuildingcoder.typepad.com/blog/2011/09/activate-a-3d-view.htmlХотел использовать его, прикрутив к нему обработку всех файлов из указанной папки, но к сожалению не работает.
Провожу ниже мой код, буду благодарен за любую помощь или подсказку, чтоб решить проблему и сохранить thumbnail для файлов - 3D View:
namespace ChangeTo3dView
{
[Transaction(TransactionMode.Manual)]
public class DeleteImportElement : IExternalCommand
{
Autodesk.Revit.ApplicationServices.Application app;
Document doc;
View3D threeDView;
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
app = commandData.Application.Application;
doc = commandData.Application.ActiveUIDocument.Document;
string directory = @"D:\Desktop\View\";
string s = "";
foreach (string filename in Directory.GetFiles(directory))
{
s += "Family Name,Family Type,";
Document doc = app.OpenDocumentFile(filename);
UIApplication uiapp = commandData.Application;
UIDocument uidoc = uiapp.ActiveUIDocument;
createView(uidoc, doc);
doc.Save();
doc.Close(false);
}
return Result.Succeeded;
}
public void createView(UIDocument uidoc, Document doc)
{
var viewFamilyType
= new FilteredElementCollector(doc)
.OfClass(typeof(ViewFamilyType))
.OfType<ViewFamilyType>()
.FirstOrDefault(x =>
x.ViewFamily == ViewFamily.ThreeDimensional);
using (var t = new Transaction(doc, "Create 3D View"))
{
t.Start();
threeDView = View3D.CreateIsometric(
doc, viewFamilyType.Id);
threeDView.get_Parameter(BuiltInParameter
.VIEW_DETAIL_LEVEL).Set(1);
threeDView.get_Parameter(BuiltInParameter
.MODEL_GRAPHICS_STYLE).Set(3);
t.Commit();
}
}