Buckets:
kuklev9797/revit-ckpts / assets /samples /Samples /FamilyParametersOrder /CS /SortFamilyFilesParamsForm.cs
| // | |
| // (C) Copyright 2003-2015 by Autodesk, Inc. | |
| // | |
| // Permission to use, copy, modify, and distribute this software in | |
| // object code form for any purpose and without fee is hereby granted, | |
| // provided that the above copyright notice appears in all copies and | |
| // that both that copyright notice and the limited warranty and | |
| // restricted rights notice below appear in all supporting | |
| // documentation. | |
| // | |
| // AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS. | |
| // AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF | |
| // MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC. | |
| // DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE | |
| // UNINTERRUPTED OR ERROR FREE. | |
| // | |
| // Use, duplication, or disclosure by the U.S. Government is subject to | |
| // restrictions set forth in FAR 52.227-19 (Commercial Computer | |
| // Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii) | |
| // (Rights in Technical Data and Computer Software), as applicable. | |
| // | |
| using System; | |
| using System.IO; | |
| using System.Linq; | |
| using System.Windows.Forms; | |
| using Autodesk.Revit.DB; | |
| using Autodesk.Revit.UI; | |
| using TaskDialog = Autodesk.Revit.UI.TaskDialog; | |
| namespace Revit.SDK.Samples.FamilyParametersOrder.CS | |
| { | |
| /// <summary> | |
| /// Sort parameters' order in family files which are located in a folder: | |
| /// <list type="bullet"> | |
| /// <item>"Browse" button make users could choose a folder contains some families, and the selected folder will be shown in the text box.</item> | |
| /// <item>"A–>Z" button will update parameters in each family files located in the specific folder to alphabet order.</item> | |
| /// <item>"Z–>A" button will update parameters in each family files located in the specific folder to reverse alphabet order.</item> | |
| /// <item>"Close" button will close the whole dialog.</item> | |
| /// </list> | |
| /// Note: we don't update the family files in sub-folders in this example. | |
| /// </summary> | |
| public partial class SortFamilyFilesParamsForm : System.Windows.Forms.Form | |
| { | |
| private UIApplication m_uiApp; | |
| /// <summary> | |
| /// Construct with a UIApplication. | |
| /// </summary> | |
| /// <param name="uiApp"></param> | |
| public SortFamilyFilesParamsForm(UIApplication uiApp) | |
| { | |
| m_uiApp = uiApp; | |
| InitializeComponent(); | |
| } | |
| private void browseBtn_Click(object sender, EventArgs e) | |
| { | |
| FolderBrowserDialog dialog = new FolderBrowserDialog(); | |
| if (dialog.ShowDialog() == DialogResult.OK) | |
| { | |
| directoryTxt.Text = dialog.SelectedPath; | |
| } | |
| } | |
| /// <summary> | |
| /// Sort parameters' order in family files which is located in a folder, the new files are saved in subfolder named "ordered". | |
| /// </summary> | |
| /// <param name="order">Ascending or Descending.</param> | |
| private void SortParameters(ParametersOrder order) | |
| { | |
| // Convert relative path to absolute path. | |
| string absPath = directoryTxt.Text; | |
| if (!Path.IsPathRooted(absPath)) | |
| absPath = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), absPath); | |
| DirectoryInfo dirInfo = new DirectoryInfo(absPath); | |
| if (!dirInfo.Exists) | |
| { | |
| MessageBox.Show("Please select a valid directory first."); | |
| return; | |
| } | |
| string orderedDir = Path.Combine(absPath, "ordered"); | |
| if (!Directory.Exists(orderedDir)) | |
| Directory.CreateDirectory(orderedDir); | |
| // Sort parameters in each family file. | |
| FileInfo[] fileInfo = dirInfo.GetFiles("*.rfa"); | |
| foreach (FileInfo fInfo in fileInfo) | |
| { | |
| Document doc = m_uiApp.Application.OpenDocumentFile(fInfo.FullName); | |
| using (Transaction trans = new Transaction(doc, "Sort parameters.")) | |
| { | |
| trans.Start(); | |
| doc.FamilyManager.SortParameters(order); | |
| trans.Commit(); | |
| } | |
| string destFile = Path.Combine(orderedDir, fInfo.Name); | |
| if (File.Exists(destFile)) | |
| File.Delete(destFile); | |
| doc.SaveAs(destFile); | |
| doc.Close(false); | |
| } | |
| TaskDialog.Show("Message", "Sort completed! " + fileInfo.Count().ToString() + " family file(s) sorted."); | |
| } | |
| private void A_ZBtn_Click(object sender, EventArgs e) | |
| { | |
| SortParameters(ParametersOrder.Ascending); | |
| } | |
| private void Z_ABtn_Click(object sender, EventArgs e) | |
| { | |
| SortParameters(ParametersOrder.Descending); | |
| } | |
| private void closeBtn_Click(object sender, EventArgs e) | |
| { | |
| Close(); | |
| } | |
| } | |
| } | |
Xet Storage Details
- Size:
- 4.85 kB
- Xet hash:
- d4220ab3539d8f5144e3b8fb87d1a2707f5e1f13eaa14343e241795f4fa50a84
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.