https://github.com/codecavepro/revitless-toolkit
A cross-platform toolkit for reading metadata of .rfa, .rvt etc. Reading / writing hared sparameter and type catalog files WITHOUT Revit
https://github.com/codecavepro/revitless-toolkit
catalog catalog-files catalogue display-units enum enumeration metadata ole olefile parameters part-atom revit revit-api rfa rvt shared-parameter-file thumbnail thumbnail-images units version
Last synced: 24 days ago
JSON representation
A cross-platform toolkit for reading metadata of .rfa, .rvt etc. Reading / writing hared sparameter and type catalog files WITHOUT Revit
- Host: GitHub
- URL: https://github.com/codecavepro/revitless-toolkit
- Owner: CodeCavePro
- License: mit
- Created: 2016-11-13T20:39:45.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2024-10-03T09:45:50.000Z (7 months ago)
- Last Synced: 2025-03-29T04:07:58.623Z (about 1 month ago)
- Topics: catalog, catalog-files, catalogue, display-units, enum, enumeration, metadata, ole, olefile, parameters, part-atom, revit, revit-api, rfa, rvt, shared-parameter-file, thumbnail, thumbnail-images, units, version
- Language: C#
- Homepage: https://codecave.pro/#projects
- Size: 3.45 MB
- Stars: 112
- Watchers: 11
- Forks: 38
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE.txt
Awesome Lists containing this project
README
RevitLESS Toolkit
=============A cross-platform **Revit-less** toolkit for processing .rfa, .rvt and other files without [Revit](https://en.wikipedia.org/wiki/Autodesk_Revit)
[](http://www.revitapidocs.com/2017/)
[](https://www.nuget.org/packages/CodeCave.Revit.Toolkit/)
[](https://social.msdn.microsoft.com/Forums/vstudio/en-US/7035edc6-97fc-49ee-8eee-2fa4d040a63b/)
[](https://social.msdn.microsoft.com/Forums/vstudio/en-US/7035edc6-97fc-49ee-8eee-2fa4d040a63b/)[](https://github.com/CodeCavePro/revit-toolkit/blob/master/LICENSE.txt)
[](https://www.nuget.org/packages/CodeCave.Revit.Toolkit/)
[](https://github.com/CodeCavePro/revit-toolkit/releases)[](https://ci.appveyor.com/project/salaros/revit-toolkit/history)
[](https://ci.appveyor.com/project/salaros/revit-toolkit/build/tests)
[](https://coveralls.io/github/CodeCavePro/revit-toolkit?branch=master)
[](http://revit-toolkit.readthedocs.io/en/latest/)Installation
============**RevitLESS Toolkit** can be installed via [NuGet](https://www.nuget.org/packages?q=CodeCave.Revit.Toolkit)
by using Package Manager in your IDE, `dotnet` binary or Package Console```bash
# Add the CodeCave.Revit.Toolkit package to a project named []
dotnet add [] package CodeCave.Revit.Toolkit
```or Visual Studio's Package Console
```powershell
# Add the CodeCave.Revit.Toolkit package to the default project
Install-Package CodeCave.Revit.Toolkit# Add the CodeCave.Revit.Toolkit package to a project named []
Install-Package CodeCave.Revit.Toolkit -ProjectName []
```Usage
=====**RevitLESS Toolkit** provides various tools, you can easily find the full list by browsing the [documentation](http://revit-toolkit.readthedocs.io/en/latest/).
## Shared parameter file
One of the most interesting tools is Revit [shared parameter file](https://knowledge.autodesk.com/support/revit-products/learn-explore/caas/CloudHelp/cloudhelp/2018/ENU/Revit-Model/files/GUID-E7D12B71-C50D-46D8-886B-8E0C2B285988-htm.html) reading and manipulation.
```cs
var sharedParamFile = new SharedParameterFile(@"path/to/shared/parameter/file.txt");// alternatively you can supply the content of the file
var sharedParamFile = new SharedParameterFile(File.ReadAllText(@"path/to/file.txt"));// .. or you can create a completely new (empty) shared file
var sharedParamFile = new SharedParameterFile();// .. or with some empty (with no parameters assigned yet) groups
var sharedParamFile = new SharedParameterFile(new Dictionary { { "Identity Data", 100 } } );sharedParamFile.Parameters.Add(
new Guid("61ff3d56-09d7-4049-8c78-4abe745e4e5a"),"EquipmentName",
"Identity Data", // Referencing group by name
ParameterType.Text
);sharedParamFile.Parameters.Add(
new Guid("b5a53ea4-55d9-497c-8488-6607faa11e5f"), "EquipmentServed",
new SharedParameterFile.Group("Identity Data", 100), // Creating group as object
ParameterType.Text
);sharedParamFile.Parameters.Add(
new Guid("758c97dc-6b88-4fbd-9570-4affdc32f08d"), "EquipmentNumber",
sharedParamFile.Groups.FirstOrDefault(g => "Identity Data".Equals(g.Name)), // Finding group dynamically
ParameterType.Text
);// Create a group object
var electricalGroup = new SharedParameterFile.Group("Electrical", 999);// Add some parameters assigned to this group
sharedParamFile.Parameters.Add(
new Guid("5031db93-bb19-454e-bea4-0f77d60f15e6"), "ApparentPower",
electricalGroup, ParameterType.ElectricalApparentPower
);
sharedParamFile.Parameters.Add(
new Guid("963abdb6-372f-496c-b99e-f11d8e0e5d20"), "Current",
electricalGroup, ParameterType.ElectricalCurrent
);
sharedParamFile.Parameters.Add(
new Guid("c006d4d6-0b12-42ad-8078-fe38ab8b1eff"), "Phases",
"Electrical", // Using group's name, because it's just added parameters with a group object having the same name
ParameterType.NumberOfPoles
);// Write out shared parameters file to disk
sharedParamFile.Save("path/a/new/shared/file.txt");
```## Catalog type file
This is a pretty useful tool for easily creating and then writing out Revit [type catalog files](https://knowledge.autodesk.com/support/revit-products/learn-explore/caas/CloudHelp/cloudhelp/2016/ENU/Revit-Customize/files/GUID-FFA71D72-D4C5-416D-BF65-1757657C3CE9-htm.html).
```cs
var catalogTypeFile = new TypeCatalogFile();
var iPhoneCommonParameters = new List
{
new TypeCatalogFile.Parameter("Manufacturer", ParameterType.Text, "Apple"),
new TypeCatalogFile.Parameter("Model", ParameterType.Text, "A1549"),
new TypeCatalogFile.Parameter("Width", ParameterType.Length, 77.8, DisplayUnitType.DUT_MILLIMETERS),
new TypeCatalogFile.Parameter("Depth", ParameterType.Length, 6.9, DisplayUnitType.DUT_MILLIMETERS),
new TypeCatalogFile.Parameter("Height", ParameterType.Length, 158.1, DisplayUnitType.DUT_MILLIMETERS),
};catalogTypeFile.Add("MG562LL/A", iPhoneCommonParameters.Concat(new List
{
new TypeCatalogFile.Parameter("AssemblyCode", ParameterType.Text, "MG562LL/A"),
new TypeCatalogFile.Parameter("Description", ParameterType.Text, "iPhone 6 16GB Gold (GSM) T-Mobile"),
new TypeCatalogFile.Parameter("Price", ParameterType.Currency, 299.90),
new TypeCatalogFile.Parameter("Currency", ParameterType.Text, "$"),
new TypeCatalogFile.Parameter("Storage GB", 16),
new TypeCatalogFile.Parameter("Unlocked", ParameterType.YesNo, false),
}).ToArray());
catalogTypeFile.Add("MG5D2LL/A", iPhoneCommonParameters.Concat(new List
{
new TypeCatalogFile.Parameter("AssemblyCode", ParameterType.Text, "MG5D2LL/A"),
new TypeCatalogFile.Parameter("Description", ParameterType.Text, "iPhone 6 64GB Gold (GSM) T-Mobile"),
new TypeCatalogFile.Parameter("Price", ParameterType.Currency, 380.0),
new TypeCatalogFile.Parameter("Currency", ParameterType.Text, "$"),
new TypeCatalogFile.Parameter("Storage GB", 32),
new TypeCatalogFile.Parameter("Unlocked", ParameterType.YesNo, false),
}).ToArray());
catalogTypeFile.Add("MG3A2CL/A", iPhoneCommonParameters.Concat(new List
{
new TypeCatalogFile.Parameter("AssemblyCode", ParameterType.Text, "MG3A2CL/A"),
new TypeCatalogFile.Parameter("Description", ParameterType.Text, "iPhone 6 16GB Space Grey Unlocked"),
new TypeCatalogFile.Parameter("Price", ParameterType.Currency, 600.0),
new TypeCatalogFile.Parameter("Currency", ParameterType.Text, "CAD"),
new TypeCatalogFile.Parameter("Storage GB", 16),
new TypeCatalogFile.Parameter("Unlocked", ParameterType.YesNo, true),
}).ToArray());// Write out type catalog file to disk
catalogTypeFile.Save("path/a/new/shared/file.txt");
```