//****************************************************************************************** /// <summary> /// this function export View from the list /// </summary> public List <ViewPath> Export(List <View> argListView, DWGExportOptions setDwg, IREXProgress argProgress) { IREXProgress Progress = argProgress; Progress.Steps = 2 * argListView.Count; Progress.Position = 0; Progress.Header = Resources.Strings.Texts.FreezeInProgress + " - " + Resources.Strings.Texts.Export; List <ViewPath> nameStr = new List <ViewPath>(); m_path = getTempPath(); //reading files from temp directory setDwg.LayerMapping = GetLayMap(setDwg.LayerMapping); foreach (View v in argListView) { List <ElementId> vSet = new List <ElementId>(); if (v != null) { View3D tmp3D = null; Autodesk.Revit.DB.ViewSheet viewSheet = null; bool proceed = false; if (v is Autodesk.Revit.DB.View3D) { try { FilteredElementCollector filteredElementCollector = new FilteredElementCollector(ThisExtension.Revit.ActiveDocument); filteredElementCollector.OfClass(typeof(FamilySymbol)); filteredElementCollector.OfCategory(BuiltInCategory.OST_TitleBlocks); IList <RevitElement> titleBlocks = filteredElementCollector.ToElements(); List <FamilySymbol> familySymbols = new List <FamilySymbol>(); foreach (Element element in titleBlocks) { FamilySymbol f = element as FamilySymbol; if (f != null) { familySymbols.Add(f); } } if (titleBlocks.Count != 0) { Autodesk.Revit.DB.FamilySymbol fs = null; foreach (Autodesk.Revit.DB.FamilySymbol f in familySymbols) { if (null != f) { fs = f; break; } } viewSheet = Autodesk.Revit.DB.ViewSheet.Create(ThisExtension.Revit.ActiveDocument, fs.Id); if (null != viewSheet) { UV location = new UV((viewSheet.Outline.Max.U - viewSheet.Outline.Min.U) / 2, (viewSheet.Outline.Max.V - viewSheet.Outline.Min.V) / 2); try { Viewport.Create(ThisExtension.Revit.ActiveDocument, viewSheet.Id, v.Id, new XYZ(location.U, location.V, 0.0)); } catch { try { XYZ tmpXYZ = new XYZ(-v.ViewDirection.X, -v.ViewDirection.Y, -v.ViewDirection.Z); BoundingBoxXYZ tmpBoundingBox = v.CropBox; bool tmpCropBoxActive = v.CropBoxActive; IList <Element> viewTypes = REXGeometryRvt.FilterElements(ThisExtension.Revit.ActiveDocument, typeof(ViewFamilyType)); ElementId viewTypeid = null; foreach (Element viewType in viewTypes) { ViewFamilyType famType = viewType as ViewFamilyType; if (famType != null && famType.ViewFamily == ViewFamily.ThreeDimensional) { viewTypeid = famType.Id; break; } } if (viewTypeid != null) { tmp3D = View3D.CreateIsometric(ThisExtension.Revit.ActiveDocument, viewTypeid); tmp3D.ApplyViewTemplateParameters(v); tmp3D.CropBox = tmpBoundingBox; Viewport.Create(ThisExtension.Revit.ActiveDocument, viewSheet.Id, tmp3D.Id, new XYZ(location.U, location.V, 0.0)); } } catch { } } vSet.Add(viewSheet.Id); proceed = true; } } } catch { } } else { vSet.Add(v.Id); proceed = true; } if (proceed) { string fam = v.get_Parameter(BuiltInParameter.VIEW_FAMILY).AsString(); Progress.Step(fam + "-" + v.Name); string vName = ValidateFileName(v.Name); m_CommandData.Application.ActiveUIDocument.Document.Export(m_path, fam + "-" + vName, vSet, setDwg); nameStr.Add(new ViewPath(m_path + "\\" + fam + "-" + vName + ".dwg", v, fam + "-" + v.Name)); Progress.Step(fam + "-" + v.Name); if (viewSheet != null) { ElementId elementId = viewSheet.Id; ThisExtension.Revit.ActiveDocument.Delete(elementId); } if (tmp3D != null) { ElementId elementId = tmp3D.Id; ThisExtension.Revit.ActiveDocument.Delete(elementId); } } } } return(nameStr); }
//****************************************************************************************** /// <summary> /// this function imports all views from the list and create new draft views for them based on m_path /// </summary> public void Import(bool argCopy, string argBrowse, string argBaseName, Autodesk.Revit.DB.DWGImportOptions argOpt, List <ViewPath> argViewList, IREXProgress argProgress) { ViewDrafting draftView; DWGImportOptions setDwgImp; IREXProgress Progress = argProgress; DialogMessageExists dlgMsg = new DialogMessageExists(ThisExtension); dlgMsg.Text = Resources.Strings.Texts.REX_ModuleDescription; //getting file list from the directory string[] FileList = Directory.GetFiles(m_path, "*.dwg"); List <string> SelectFileList = new List <string>(); string newname; string strPost = " (" + Resources.Strings.Texts.Freezed + ")"; Progress.Position = 0; Progress.Steps = 2 * argViewList.Count; Progress.Header = Resources.Strings.Texts.FreezeInProgress + " - " + Resources.Strings.Texts.Import; ViewFamilyType viewFamilyType = null; FilteredElementCollector collector = new FilteredElementCollector(m_CommandData.Application.ActiveUIDocument.Document); var viewFamilyTypes = collector.OfClass(typeof(ViewFamilyType)).ToElements(); foreach (Element e in viewFamilyTypes) { ViewFamilyType v = e as ViewFamilyType; if (v.ViewFamily == ViewFamily.Drafting) { viewFamilyType = v; break; } } //importing files to Revit foreach (ViewPath v in argViewList) { draftView = ViewDrafting.Create(m_CommandData.Application.ActiveUIDocument.Document, viewFamilyType.Id); newname = ReplaceForbiddenSigns(v.fullViewName); string tempName = newname; int i = 1; for (;;) { try { draftView.Name = newname + strPost; break; } catch { if (i > 10) { try { draftView.Name = draftView.Name + strPost; } catch { } break; } newname = tempName + "-" + i.ToString(); i++; } } draftView.Scale = v.ViewRevit.Scale; Progress.Step(draftView.Name); //properties setDwgImp = new DWGImportOptions(); setDwgImp.ColorMode = argOpt.ColorMode; setDwgImp.OrientToView = argOpt.OrientToView; setDwgImp.Unit = argOpt.Unit; setDwgImp.CustomScale = argOpt.CustomScale; //import RevitElement el = (RevitElement)draftView; if (File.Exists(v.path)) { ElementId id; m_CommandData.Application.ActiveUIDocument.Document.Import(v.path, setDwgImp, draftView, out id); v.DraftingName = draftView.Name; //copying to user directory if (argCopy) { CopyToUserDirViewPath(v, argBaseName, argBrowse, dlgMsg); } } Progress.Step(draftView.Name); } dlgMsg.Dispose(); }