/// <summary> /// Commit transaction group button click event /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnCommitTransGroup_Click(object sender, EventArgs e) { if (m_transactionGroup != null) { m_transactionGroup.Commit(); AddNode(OperationType.CommitTransactionGroup); m_transaction = null; m_lastCreatedWall = null; UpdateButtonsStatus(); } }
public bool RemoveLanguage(string language, bool deleteFile) { using var trasactionGroup = new TransactionGroup(2); if (deleteFile) { string translationJsonPath = _fileSourceSettings.DatabaseTranslateFilePath(language); if (File.Exists(translationJsonPath)) { trasactionGroup.Add(DeleteFileTransaction.Create(translationJsonPath)); } } var updatedJsonNode = _configDataJsonNode; if (updatedJsonNode != null && updatedJsonNode.Languages.Contains(language)) { var builder = new ConfigDataJsonNode.Builder(updatedJsonNode); builder.Languages.Remove(language); updatedJsonNode = builder.Build(); trasactionGroup.Add(ConfigSaveTransaction.Create(updatedJsonNode, _fileSourceSettings.DatabaseFilePath)); } if (!trasactionGroup.Apply()) { _errorOutput.WriteLine("Error: Failed remove language"); return(false); } _configDataTranslateJsonNodes.Remove(language); _configDataJsonNode = updatedJsonNode; trasactionGroup.Commit(); return(true); }
public static void InvokeGroup(this Document doc, Action <TransactionGroup> action, string name = "default") { using (var tr = new TransactionGroup(doc, name)) { tr.Start(); action(tr); var status = tr.GetStatus(); switch (status) { case TransactionStatus.Started: tr.Commit(); return; case TransactionStatus.Committed: case TransactionStatus.RolledBack: break; case TransactionStatus.Error: tr.RollBack(); return; default: return; } } }
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { UIApplication uiapp = commandData.Application; UIDocument uidoc = uiapp.ActiveUIDocument; Application app = uiapp.Application; Document doc = uidoc.Document; Element element = doc.GetElement(uidoc.Selection.PickObject(ObjectType.Element)); using (TransactionGroup transg = new TransactionGroup(doc)) { transg.Start("Transaction Group"); //Exception(Out Side Transaction) //SetParameter(element,"Transaction Group"); using (Transaction tran = new Transaction(doc)) { tran.Start("Transaction"); SetParameter(element, "Transaction"); using (SubTransaction subtrans = new SubTransaction(doc)) { subtrans.Start(); SetParameter(element, "Sub Transaction"); subtrans.Commit(); } tran.Commit(); } transg.Commit(); } return Result.Succeeded; }
public static void Import(Document doc, string filename) { using (TransactionGroup tg = new TransactionGroup(doc, "Import Doors")) { tg.Start(); var Lines = File.ReadAllLines(filename); var Doors = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Doors).ToList(); foreach (var line in Lines) { if (Doors.Any(x => x.get_Parameter(BuiltInParameter.ALL_MODEL_MARK).AsString() == line.Split('\t')[1])) { var d = Doors.FirstOrDefault(x => x.get_Parameter(BuiltInParameter.ALL_MODEL_MARK).AsString() == line.Split('\t')[1]); if (d != null) { using (Transaction t = new Transaction(doc, "Update " + line.Split('\t')[1])) { t.Start(); var e = d as Element; for (int i = 0; i < DoorParameters.Count(); i++) { try { e.SetElementParam(DoorParameters[i], line.Split('\t')[i + 3]); } catch { } } try { e.get_Parameter(BuiltInParameter.ALL_MODEL_INSTANCE_COMMENTS).SetValueString(line.Split('\t').Last()); } catch { } t.Commit(); } } } } tg.Commit(); } }
public static TResult InvokeGroup <TResult>(this Document doc, Func <TransactionGroup, TResult> func, string name = "default") { using (var tr = new TransactionGroup(doc, name)) { tr.Start(); var result = func(tr); var status = tr.GetStatus(); switch (status) { case TransactionStatus.Started: tr.Commit(); return(result); case TransactionStatus.Committed: case TransactionStatus.RolledBack: return(result); case TransactionStatus.Error: tr.RollBack(); return(result); default: return(result); } } }
public static void CollectData(this Document doc) { using (TransactionGroup tg = new TransactionGroup(doc, "Output Xml and Update Data")) { tg.Start(); using (Transaction t = new Transaction(doc, "Add Parameters:")) { t.Start(); foreach (Param p in Parameters) { doc.AddParam(p); } t.Commit(); } using (Transaction t = new Transaction(doc, "Collect Project Data")) { t.Start(); var fams = new FilteredElementCollector(doc).OfClass(typeof(Family)).Count(); var insts = new FilteredElementCollector(doc).OfClass(typeof(FamilyInstance)).Count(); var mats = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Materials).Count(); var Sheets = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Sheets).ToElementIds().ToList(); var Views = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Views).ToElementIds().ToList(); var vos = Views.Where(x => !Viewport.CanAddViewToSheet(doc, Sheets.FirstOrDefault(), x)).Count(); doc.SetParam(ProjectParams.Families, fams.ToString()); doc.SetParam(ProjectParams.FamilyInstances, insts.ToString()); doc.SetParam(ProjectParams.Materials, mats.ToString()); doc.SetParam(ProjectParams.Sheets, Sheets.Count().ToString()); doc.SetParam(ProjectParams.Views, Views.Count().ToString()); doc.SetParam(ProjectParams.ViwesOnSheets, vos.ToString()); t.Commit(); } tg.Commit(); } }
public Result Execute( ExternalCommandData commandData, ref string message, ElementSet elements) { UIApplication uiapp = commandData.Application; UIDocument uidoc = uiapp.ActiveUIDocument; Application app = uiapp.Application; Document doc = uidoc.Document; Tools tools = new Tools(uiapp); if (!tools.go) { TaskDialog.Show("Failed", "Please, run 'Budget Parameters' first."); return(Result.Failed); } using (TransactionGroup tgx = new TransactionGroup(doc)) { tgx.Start(); tools.ModellingTool(); tools.WindowsAndDoorsHosts(); tools.BoQ(); tgx.Commit(); } TaskDialog.Show("Status", "Tools and Hosts successfully finished."); return(Result.Succeeded); }
/// <summary> /// This method implements the external command within /// Revit. /// </summary> /// <param name="commandData">An ExternalCommandData /// object which contains reference to Application and /// View needed by external command.</param> /// <param name="message">Error message can be returned /// by external command. This will be displayed only if /// the command status was "Failed". There is a limit /// of 1023 characters for this message; strings longer /// than this will be truncated.</param> /// <param name="elements">Element set indicating /// problem elements to display in the failure dialog. /// This will be used only if the command status was /// "Failed".</param> /// <returns>The result indicates if the execution /// fails, succeeds, or was canceled by user. If it /// does not succeed, Revit will undo any changes made /// by the external command.</returns> Result IExternalCommand.Execute( ExternalCommandData commandData, ref string message , ElementSet elements) { ResourceManager res_mng = new ResourceManager( GetType()); ResourceManager def_res_mng = new ResourceManager( typeof(Properties.Resources)); Result result = Result.Failed; try { UIApplication ui_app = commandData?.Application ; UIDocument ui_doc = ui_app?.ActiveUIDocument; Application app = ui_app?.Application; Document doc = ui_doc?.Document; /* Wrap all transactions into the transaction * group. At first we get the transaction group * localized name. */ var tr_gr_name = UIBuilder.GetResourceString( GetType(), typeof(Properties.Resources), "_transaction_group_name"); using (var tr_gr = new TransactionGroup(doc, tr_gr_name)) { if (TransactionStatus.Started == tr_gr .Start()) { /* Here do your work or the set of * works... */ if (DoWork(commandData, ref message, elements)) { tr_gr.Assimilate(); tr_gr.Commit(); result = Result.Succeeded; } else { tr_gr.RollBack(); } } } } catch (Exception ex) { TaskDialog.Show(def_res_mng.GetString("_Error") , ex.Message); result = Result.Failed; } finally { res_mng.ReleaseAllResources(); def_res_mng.ReleaseAllResources(); } return(result); }
public void Start(Document docRvt) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) TransactionGroup val = null; try { StringBuilder stringBuilder = new StringBuilder(); foreach (Document document in docRvt.get_Application().get_Documents()) { if (document.get_IsFamilyDocument()) { stringBuilder.Append(document.get_Title() + "\n"); } } if (stringBuilder.Length > 0) { FamMgr_Util.ShowMessage(EnvMsg.CloseAllFamilyDocument + "\n\n" + stringBuilder); } else { val = new TransactionGroup(docRvt, "FamilyManager Basic"); val.Start(); IntPtr mainWindowHandle = Process.GetCurrentProcess().MainWindowHandle; (CEntry.FamilyUploaderDlg = new frmFamilyUploader(docRvt)).ShowDialog(new MainWin32Wnd(mainWindowHandle)); val.Commit(); } } catch (Exception ex) { FamMgr_Util.ShowMessage(FamMgr_Util.GetMessageString(ex.Message)); if ((int)val != 0 && val.HasStarted() && !val.HasEnded()) { val.RollBack(); } } }
/// <summary> /// Implement this method as an external command for Revit. /// </summary> /// <param name="commandData">An object that is passed to the external application /// which contains data related to the command, /// such as the application object and active view.</param> /// <param name="message">A message that can be set by the external application /// which will be displayed if a failure or cancellation is returned by /// the external command.</param> /// <param name="elements">A set of elements to which the external application /// can add elements that are to be highlighted in case of failure or cancellation.</param> /// <returns>Return the status of the external command. /// A result of Succeeded means that the API external method functioned as expected. /// Cancelled can be used to signify that the user cancelled the external operation /// at some point. Failure should be returned if the application is unable to proceed with /// the operation.</returns> public Autodesk.Revit.UI.Result Execute(ExternalCommandData commandData, ref string message, Autodesk.Revit.DB.ElementSet elements) { // data verification if (null == commandData.Application.ActiveUIDocument) { return(Autodesk.Revit.UI.Result.Failed); } MyDocument mydocument = new MyDocument(commandData); // check whether the mass is kind of parallelepiped CurtainSystem.MassChecker checker = new CurtainSystem.MassChecker(mydocument); bool validMass = checker.CheckSelectedMass(); if (!validMass) { message = Properties.Resources.MSG_InvalidSelection; return(Result.Cancelled); } UI.CurtainForm curtainForm = null; TransactionGroup transactionGroup = new TransactionGroup(commandData.Application.ActiveUIDocument.Document); try { transactionGroup.Start("CurtainSystemOperation"); curtainForm = new UI.CurtainForm(mydocument); if (null != curtainForm && false == curtainForm.IsDisposed) { curtainForm.ShowDialog(); } transactionGroup.Commit(); } catch (System.Exception ex) { transactionGroup.RollBack(); message = ex.Message; return(Result.Failed); } finally { if (null != curtainForm && false == curtainForm.IsDisposed) { curtainForm.Dispose(); } } return(Autodesk.Revit.UI.Result.Succeeded); }
public static void UnpackFamilies(this Document doc, Assembly assembly) { using (TransactionGroup tg = new TransactionGroup(doc, "Load Families")) { tg.Start(); foreach (string name in assembly.GetManifestResourceNames().Where(x => x.EndsWith(".rfs"))) { var fam = doc.UnpackFamily(assembly, name); } tg.Commit(); } }
public static void ProjectStartup(Document doc) { using (TransactionGroup tg = new TransactionGroup(doc, "Preupdater Registration")) { tg.Start(); using (Transaction t = new Transaction(doc, "Add Params")) { t.Start(); try { doc.AddParam(Params.Masterformat); } catch (Exception e) { e.OutputError(); } try { doc.AddParam(Params.OccupantLoadFactor); } catch (Exception e) { e.OutputError(); } try { doc.AddParam(Params.Uniformat); } catch (Exception e) { e.OutputError(); } t.Commit(); } tg.Commit(); } }
public static void AddParams(this Document doc) { ResetParamLibrary.Run(); using (TransactionGroup tg = new TransactionGroup(doc, "Add Params")) { tg.Start(); using (Transaction t = new Transaction(doc, "ADD PARAMS")) { t.Start(); foreach (Param p in GetParams()) { doc.AddParam(p); } t.Commit(); } tg.Commit(); } }
public Result Execute( ExternalCommandData commandData, ref string message, ElementSet elements) { UIApplication uiapp = commandData.Application; UIDocument uidoc = uiapp.ActiveUIDocument; Application app = uiapp.Application; Document doc = uidoc.Document; Selection sel1 = uidoc.Selection; List <XYZ> tempXYZ = new List <XYZ>(1); XYZ p1 = sel1.PickPoint(); XYZ p2 = null; //tempXYZ.Add(p3); ModelCurve visualLine = null; using (TransactionGroup tGroup = new TransactionGroup(doc)) { tGroup.Start(); Redraw: using (Transaction t = new Transaction(doc)) { t.Start("Step 1"); Line line = Line.CreateBound(p1, getP3(uidoc)); Plane geomPlane = Plane.CreateByNormalAndOrigin(doc.ActiveView.ViewDirection, doc.ActiveView.Origin); SketchPlane sketch = SketchPlane.Create(doc, geomPlane); visualLine = doc.Create.NewModelCurve(line, sketch) as ModelCurve; doc.Regenerate(); uidoc.RefreshActiveView(); goto Redraw; t.Commit(); } tGroup.Commit(); } return(Result.Succeeded); }
public static void ProjectStartup(AddInId id, Document doc) { using (TransactionGroup tg = new TransactionGroup(doc, "Preupdater Registration")) { tg.Start(); if (!doc.IsFamilyDocument) { using (Transaction t = new Transaction(doc, "Add Parameters")) { t.Start(); doc.AddParam(RoomParams.OccupantLoad); doc.AddParam(RoomParams.OccupantLoadFactor); t.Commit(); } Room r; using (Transaction t = new Transaction(doc, "Add Room")) { t.Start(); r = doc.Create.NewRoom(doc.Phases.get_Item(0)); t.Commit(); } Element room = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Rooms).FirstOrDefault(); Parameter p = room.get_Parameter(RoomParams.OccupantLoadFactor.Guid); UpdateOccLoad updater = new UpdateOccLoad(id); UpdaterRegistry.RegisterUpdater(updater, doc, true); ElementCategoryFilter rooms = new ElementCategoryFilter(BuiltInCategory.OST_Rooms); ElementId AreaId = new ElementId(BuiltInParameter.ROOM_AREA); UpdaterRegistry.AddTrigger(updater.GetUpdaterId(), rooms, Element.GetChangeTypeParameter(AreaId)); UpdaterRegistry.AddTrigger(updater.GetUpdaterId(), rooms, Element.GetChangeTypeParameter(p.Id)); using (Transaction t = new Transaction(doc, "Add Room")) { t.Start(); doc.Delete(r.Id); t.Commit(); } } tg.Commit(); } }
public bool CreateLanguage(string language) { if (_configData == null || _configDataJsonNode == null || _configDataJsonNode.Languages.Contains(language)) { _errorOutput.WriteLine("Error: Database not loaded"); return(false); } if (_configDataJsonNode.Languages.Contains(language)) { _errorOutput.WriteLine("Error: Language name already exist"); return(false); } string translationJsonPath = _fileSourceSettings.DatabaseTranslateFilePath(language); if (File.Exists(translationJsonPath)) { _errorOutput.WriteLine("Error: Language folder already exist"); return(false); } var newTranslationJsonNode = ConfigDatabase.BuildTranslateNode(_configData, _networkSourceSettings); ConfigDataJsonNode.Builder builder = new ConfigDataJsonNode.Builder(_configDataJsonNode); builder.Languages.Add(language); var updatedJsonNode = builder.Build(); Directory.CreateDirectory(Path.GetDirectoryName(translationJsonPath)); using var trasactionGroup = new TransactionGroup(2); trasactionGroup.Add(ConfigSaveTransaction.Create(newTranslationJsonNode, translationJsonPath)); trasactionGroup.Add(ConfigSaveTransaction.Create(updatedJsonNode, _fileSourceSettings.DatabaseFilePath)); if (!trasactionGroup.Apply()) { _errorOutput.WriteLine("Error: Failed write language files"); return(false); } _configDataTranslateJsonNodes[language] = newTranslationJsonNode; _configDataJsonNode = updatedJsonNode; trasactionGroup.Commit(); return(true); }
public static void UpdateStyles(this Document doc) { Categories cats = doc.Settings.Categories; var Patterns = doc.GetLineStyles(); using (TransactionGroup tg = new TransactionGroup(doc, "Line Style Changes")) { ElementId[] eids = new ElementId[5]; using (Transaction t = new Transaction(doc, "Get EIDs")) { t.Start(); eids = GetLineStyles(doc); t.Commit(); } tg.Start(); foreach (Category c in cats) { using (Transaction t = new Transaction(doc, "Set Line Styles")) { t.Start(); if (c.IsImportedCategory()) { c.UpdateObjectStyle(eids); if (!c.SubCategories.IsEmpty) { foreach (Category cs in c.SubCategories) { cs.UpdateObjectStyle(eids); } } } t.Commit(); } } tg.Commit(); } }
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { UIDocument uidoc = commandData.Application.ActiveUIDocument; Document doc = uidoc.Document; TransactionGroup tg = new TransactionGroup(doc, "TG"); tg.Start(); Transaction t1 = new Transaction(doc, "T1"); t1.Start(); Wall.Create(doc, Line.CreateBound(new XYZ(), new XYZ(0, 10, 0)), Level.Create(doc, 0).Id, false); t1.Commit(); TaskDialog.Show("提示", "已经生成第一道墙"); Transaction t2 = new Transaction(doc, "T2"); t2.Start(); Wall.Create(doc, Line.CreateBound(new XYZ(), new XYZ(0, 10, 0)), Level.Create(doc, 0).Id, false); t2.Commit(); tg.Commit(); Transaction tt = new Transaction(doc, "Transact"); tt.Start(); SubTransaction st1 = new SubTransaction(doc); st1.Start(); SubTransaction st2 = new SubTransaction(doc); st2.Start(); st2.Commit(); TaskDialog.Show("提示", "t2已提交"); st1.Commit(); TaskDialog.Show("提示", "t1已提交"); tt.Commit(); return(Result.Succeeded); }
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { UIApplication uiapp = commandData.Application; UIDocument uidoc = uiapp.ActiveUIDocument; Application app = uiapp.Application; Document doc = uidoc.Document; using (TransactionGroup transGr = new TransactionGroup(doc)) { transGr.Start("Auto Join"); AutoJoinViewModel viewModel = new AutoJoinViewModel(uidoc); AutoJoinWindow window = new AutoJoinWindow(viewModel); if (window.ShowDialog() == false) { return(Result.Cancelled); } transGr.Commit(); } return(Result.Succeeded); }
public static void Import(Document doc, string filename) { using (TransactionGroup tg = new TransactionGroup(doc, "Add Materials")) { Family fam; tg.Start(); using (Transaction t = new Transaction(doc, "Load Family")) { t.Start(); fam = EmbeddedFamilies.run(doc, "MaterialInstance"); t.Commit(); } FamilySymbol symbol = doc.GetElement(fam.GetFamilySymbolIds().FirstOrDefault()) as FamilySymbol; if (!symbol.IsActive) { using (Transaction t = new Transaction(doc, "Activate Symbol")) { t.Start(); symbol.Activate(); doc.Regenerate(); t.Commit(); } } var Lines = File.ReadAllLines(filename); var Mats = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Materials).ToList(); var GenMods = GetGenericModels(doc, fam); foreach (var line in Lines) { if (Mats.Any(x => x.Name == line.Split('\t')[1])) { var m = Mats.FirstOrDefault(x => x.Name == line.Split('\t')[1]); if (m != null) { using (Transaction t = new Transaction(doc, "Update Material : " + m.Name)) { t.Start(); var e = m as Element; for (int i = 0; i < MatPars.Count(); i++) { try { e.SetElementParam(MatPars[i], line.Split('\t')[i + 2]); } catch { } } t.Commit(); } } if (!GenMods.Any(x => x.GetElementParam(SpecialParams.MaterialInstance) == line.Split('\t')[1])) { using (Transaction t = new Transaction(doc, "Place Material : " + line.Split('\t')[1])) { t.Start(); FamilyInstance f = doc.Create.NewFamilyInstance(new XYZ(0, 0, 0), doc.GetElement(fam.GetFamilySymbolIds().FirstOrDefault()) as FamilySymbol, StructuralType.NonStructural); f.SetElementParam(SpecialParams.MaterialInstance, line.Split('\t')[1]); t.Commit(); } } } else { using (Transaction t = new Transaction(doc, "Create Material : " + line.Split('\t')[1])) { t.Start(); ElementId matID = Material.Create(doc, line.Split('\t')[1]); Element mat = doc.GetElement(matID); for (int i = 0; i < MatPars.Count(); i++) { try { mat.SetElementParam(MatPars[i], line.Split('\t')[i + 2]); } catch { } } doc.Regenerate(); t.Commit(); } using (Transaction t = new Transaction(doc, "Place Material : " + line.Split('\t')[1])) { t.Start(); FamilyInstance f = doc.Create.NewFamilyInstance(new XYZ(0, 0, 0), doc.GetElement(fam.GetFamilySymbolIds().FirstOrDefault()) as FamilySymbol, StructuralType.NonStructural); f.SetElementParam(SpecialParams.MaterialInstance, line.Split('\t')[1]); t.Commit(); } } } if (GenMods.Any()) { List <ElementId> del = new List <ElementId>(); foreach (var g in GenMods) { if (!Lines.Any(x => x.Split('\t')[1] == g.GetElementParam(SpecialParams.MaterialInstance))) { del.Add(g.Id); } } using (Transaction t = new Transaction(doc, "Delete Materials")) { t.Start(); doc.Delete(del); t.Commit(); } } tg.Commit(); } }
/// <summary> /// Implement this method as an external command for Revit. /// </summary> /// <param name="commandData">An object that is passed to the external application /// which contains data related to the command, /// such as the application object and active view.</param> /// <param name="message">A message that can be set by the external application /// which will be displayed if a failure or cancellation is returned by /// the external command.</param> /// <param name="elements">A set of elements to which the external application /// can add elements that are to be highlighted in case of failure or cancellation.</param> /// <returns>Return the status of the external command. /// A result of Succeeded means that the API external method functioned as expected. /// Cancelled can be used to signify that the user cancelled the external operation /// at some point. Failure should be returned if the application is unable to proceed with /// the operation.</returns> public Autodesk.Revit.UI.Result Execute(ExternalCommandData commandData, ref string message, Autodesk.Revit.DB.ElementSet elements) { // data verification if (null == commandData.Application.ActiveUIDocument) { return Autodesk.Revit.UI.Result.Failed; } MyDocument mydocument = new MyDocument(commandData); // check whether the mass is kind of parallelepiped CurtainSystem.MassChecker checker = new CurtainSystem.MassChecker(mydocument); bool validMass = checker.CheckSelectedMass(); if (!validMass) { message = Properties.Resources.MSG_InvalidSelection; return Result.Cancelled; } UI.CurtainForm curtainForm = null; TransactionGroup transactionGroup = new TransactionGroup(commandData.Application.ActiveUIDocument.Document); try { transactionGroup.Start("CurtainSystemOperation"); curtainForm = new UI.CurtainForm(mydocument); if (null != curtainForm && false == curtainForm.IsDisposed) { curtainForm.ShowDialog(); } transactionGroup.Commit(); } catch (System.Exception ex) { transactionGroup.RollBack(); message = ex.Message; return Result.Failed; } finally { if (null != curtainForm && false == curtainForm.IsDisposed) { curtainForm.Dispose(); } } return Autodesk.Revit.UI.Result.Succeeded; }
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { UIApplication uiapp = commandData.Application; UIDocument uidoc = uiapp.ActiveUIDocument; Application app = uiapp.Application; Document doc = uidoc.Document; using (TransactionGroup transGroup = new TransactionGroup(doc, "TextNoteToDetailRebarCmd")) { transGroup.Start(); while (true) { try { Reference r1 = uidoc.Selection.PickObject(ObjectType.Element, new TextNoteSelectionFilter(), "Pick Text Notes to copy value"); TextNote textNote = doc.GetElement(r1.ElementId) as TextNote; if (textNote == null) { continue; } Reference r2 = uidoc.Selection.PickObject(ObjectType.Element, new DetailRebarSelectionFilter(), "Pick Text Notes to copy value"); Element detailRebar = doc.GetElement(r2.ElementId); if (detailRebar == null) { continue; } Parameter barDiameter = detailRebar.LookupParameter("D"); Parameter spacing = detailRebar.LookupParameter("S"); Parameter n = detailRebar.LookupParameter("n"); // textNote = T10-150 B2 // textNote = 2T10-300 T2 string textNoteValue = textNote.Text.Trim(); char[] separator = new[] { Convert.ToChar("T"), Convert.ToChar("-"), Convert.ToChar(" "), }; string[] allValues = textNoteValue.Split(separator); // textNote = ["",10,150,B2] // textNote = [2,10,300,"",2] //MessageBox.Show(allValues.Length.ToString()); //MessageBox.Show(allValues[0] + "\n" + allValues[1] + "\n" + // allValues[2] + "\n" +allValues[3] + "\n"+ // allValues[4] + "\n"); using (Transaction trans = new Transaction(doc)) { trans.Start("TextNoteToDetailRebarCmd"); // textNote = ["",10,150,B2] - T10-150 B2 if (string.IsNullOrEmpty(allValues[0])) { n.Set(Convert.ToInt16(allValues[1])); barDiameter.Set(Convert.ToInt16(allValues[1])); spacing.Set(Convert.ToInt16(allValues[2])); } else //textNote = [2, 10, 300, "", 2] - 2T10-300 T2 { n.Set(Convert.ToInt16(allValues[0])); barDiameter.Set(Convert.ToInt16(allValues[1])); spacing.Set(Convert.ToInt16(allValues[2])); } trans.Commit(); } } catch (Exception e) { break; } } transGroup.Commit(); } return(Result.Succeeded); }
public static void CreateBox(UIApplication app) { var doc = app.ActiveUIDocument.Document; var view = doc.ActiveView; if (view.ViewType == ViewType.DraftingView) { var scale = view.Scale; var multiplier = CC_ZeroPointRibbon.GetComboData(app); var adjw = Width * scale * multiplier[1]; var adjh = Height * scale * multiplier[0]; var ttlb = Title * scale; var note = adjw - (Notes * scale); XYZ p1 = new XYZ(0, 0, 0); XYZ p2 = new XYZ(adjw, 0, 0); XYZ p3 = new XYZ(0, adjh, 0); XYZ p4 = new XYZ(adjw, adjh, 0); var p5 = new XYZ(0, ttlb, 0); var p6 = new XYZ(adjw, ttlb, 0); var p7 = new XYZ(note, ttlb, 0); var p8 = new XYZ(note, adjh, 0); var cut = new XYZ(0, 0, 1); ElementId subcat; using (TransactionGroup tg = new TransactionGroup(doc, "Create Reference Planes")) { tg.Start(); using (Transaction t = new Transaction(doc, "Create Category")) { t.Start(); subcat = CategorySetup(doc); t.Commit(); } using (Transaction t = new Transaction(doc, "Purge RPs")) { t.Start(); var rps = new FilteredElementCollector(doc, view.Id).OfCategory(BuiltInCategory.OST_CLines).ToList(); foreach (var rp in rps) { var param = rp.get_Parameter(BuiltInParameter.CLINE_SUBCATEGORY); var val = param.AsElementId(); if (val == subcat) { doc.Delete(rp.Id); } } t.Commit(); } using (Transaction t = new Transaction(doc, "Create Zeros")) { t.Start(); var rp1 = doc.Create.NewReferencePlane(p1, p2, cut, view); var rp2 = doc.Create.NewReferencePlane(p1, p3, cut, view); var rp3 = doc.Create.NewReferencePlane(p3, p4, cut, view); var rp4 = doc.Create.NewReferencePlane(p2, p4, cut, view); var rp5 = doc.Create.NewReferencePlane(p5, p6, cut, view); var rp6 = doc.Create.NewReferencePlane(p7, p8, cut, view); rp1.get_Parameter(BuiltInParameter.CLINE_SUBCATEGORY).Set(subcat); rp2.get_Parameter(BuiltInParameter.CLINE_SUBCATEGORY).Set(subcat); rp3.get_Parameter(BuiltInParameter.CLINE_SUBCATEGORY).Set(subcat); rp4.get_Parameter(BuiltInParameter.CLINE_SUBCATEGORY).Set(subcat); rp5.get_Parameter(BuiltInParameter.CLINE_SUBCATEGORY).Set(subcat); rp6.get_Parameter(BuiltInParameter.CLINE_SUBCATEGORY).Set(subcat); t.Commit(); } tg.Commit(); } } else { TaskDialog.Show("Error", "Activate a Drafting View Before Use"); } }