Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions AddInManager.sln
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ Global
Debug R23|Any CPU = Debug R23|Any CPU
Debug R24|Any CPU = Debug R24|Any CPU
Debug R25|Any CPU = Debug R25|Any CPU
Debug R26|Any CPU = Debug R26|Any CPU
Debug R27|Any CPU = Debug R27|Any CPU
Installer|Any CPU = Installer|Any CPU
Release R19|Any CPU = Release R19|Any CPU
Release R20|Any CPU = Release R20|Any CPU
Expand Down Expand Up @@ -67,6 +69,10 @@ Global
{C872CDA2-93F5-4681-BD2F-207EACF83D2E}.Release R26|Any CPU.Build.0 = Release R26|Any CPU
{C872CDA2-93F5-4681-BD2F-207EACF83D2E}.Release R27|Any CPU.ActiveCfg = Release R27|Any CPU
{C872CDA2-93F5-4681-BD2F-207EACF83D2E}.Release R27|Any CPU.Build.0 = Release R27|Any CPU
{C872CDA2-93F5-4681-BD2F-207EACF83D2E}.Debug R26|Any CPU.ActiveCfg = Debug R26|Any CPU
{C872CDA2-93F5-4681-BD2F-207EACF83D2E}.Debug R26|Any CPU.Build.0 = Debug R26|Any CPU
{C872CDA2-93F5-4681-BD2F-207EACF83D2E}.Debug R27|Any CPU.ActiveCfg = Debug R27|Any CPU
{C872CDA2-93F5-4681-BD2F-207EACF83D2E}.Debug R27|Any CPU.Build.0 = Debug R27|Any CPU
{E3C87D34-638C-47A0-A73A-D967B119458D}.Debug R22|Any CPU.ActiveCfg = Debug|Any CPU
{E3C87D34-638C-47A0-A73A-D967B119458D}.Debug R23|Any CPU.ActiveCfg = Debug|Any CPU
{E3C87D34-638C-47A0-A73A-D967B119458D}.Debug R24|Any CPU.ActiveCfg = Debug|Any CPU
Expand All @@ -82,6 +88,8 @@ Global
{E3C87D34-638C-47A0-A73A-D967B119458D}.Release R25|Any CPU.ActiveCfg = Release|Any CPU
{E3C87D34-638C-47A0-A73A-D967B119458D}.Release R26|Any CPU.ActiveCfg = Release|Any CPU
{E3C87D34-638C-47A0-A73A-D967B119458D}.Release R27|Any CPU.ActiveCfg = Release|Any CPU
{E3C87D34-638C-47A0-A73A-D967B119458D}.Debug R26|Any CPU.ActiveCfg = Debug|Any CPU
{E3C87D34-638C-47A0-A73A-D967B119458D}.Debug R27|Any CPU.ActiveCfg = Debug|Any CPU
{5016ED6D-5A9A-4F59-AE49-CAA9615798F7}.Debug R22|Any CPU.ActiveCfg = Debug|Any CPU
{5016ED6D-5A9A-4F59-AE49-CAA9615798F7}.Debug R23|Any CPU.ActiveCfg = Debug|Any CPU
{5016ED6D-5A9A-4F59-AE49-CAA9615798F7}.Debug R24|Any CPU.ActiveCfg = Debug|Any CPU
Expand All @@ -96,6 +104,8 @@ Global
{5016ED6D-5A9A-4F59-AE49-CAA9615798F7}.Release R25|Any CPU.ActiveCfg = Release|Any CPU
{5016ED6D-5A9A-4F59-AE49-CAA9615798F7}.Release R26|Any CPU.ActiveCfg = Release|Any CPU
{5016ED6D-5A9A-4F59-AE49-CAA9615798F7}.Release R27|Any CPU.ActiveCfg = Release|Any CPU
{5016ED6D-5A9A-4F59-AE49-CAA9615798F7}.Debug R26|Any CPU.ActiveCfg = Debug|Any CPU
{5016ED6D-5A9A-4F59-AE49-CAA9615798F7}.Debug R27|Any CPU.ActiveCfg = Debug|Any CPU
{1661572C-EF3A-4DD6-83BD-CB4239CE8CDD}.Debug R22|Any CPU.ActiveCfg = Debug R22|Any CPU
{1661572C-EF3A-4DD6-83BD-CB4239CE8CDD}.Debug R22|Any CPU.Build.0 = Debug R22|Any CPU
{1661572C-EF3A-4DD6-83BD-CB4239CE8CDD}.Debug R23|Any CPU.ActiveCfg = Debug R23|Any CPU
Expand All @@ -113,6 +123,8 @@ Global
{1661572C-EF3A-4DD6-83BD-CB4239CE8CDD}.Release R27|Any CPU.ActiveCfg = Release R27|Any CPU
{1661572C-EF3A-4DD6-83BD-CB4239CE8CDD}.Debug R25|Any CPU.ActiveCfg = Debug R25|Any CPU
{1661572C-EF3A-4DD6-83BD-CB4239CE8CDD}.Debug R25|Any CPU.Build.0 = Debug R25|Any CPU
{1661572C-EF3A-4DD6-83BD-CB4239CE8CDD}.Debug R26|Any CPU.ActiveCfg = Debug R26|Any CPU
{1661572C-EF3A-4DD6-83BD-CB4239CE8CDD}.Debug R27|Any CPU.ActiveCfg = Debug R27|Any CPU
{21460D85-C4AD-49D5-963F-CF13C4AE99EB}.Debug R22|Any CPU.ActiveCfg = Debug R22|Any CPU
{21460D85-C4AD-49D5-963F-CF13C4AE99EB}.Debug R22|Any CPU.Build.0 = Debug R22|Any CPU
{21460D85-C4AD-49D5-963F-CF13C4AE99EB}.Debug R23|Any CPU.ActiveCfg = Debug R23|Any CPU
Expand Down Expand Up @@ -140,6 +152,10 @@ Global
{21460D85-C4AD-49D5-963F-CF13C4AE99EB}.Release R26|Any CPU.Build.0 = Release R26|Any CPU
{21460D85-C4AD-49D5-963F-CF13C4AE99EB}.Release R27|Any CPU.ActiveCfg = Release R27|Any CPU
{21460D85-C4AD-49D5-963F-CF13C4AE99EB}.Release R27|Any CPU.Build.0 = Release R27|Any CPU
{21460D85-C4AD-49D5-963F-CF13C4AE99EB}.Debug R26|Any CPU.ActiveCfg = Debug R26|Any CPU
{21460D85-C4AD-49D5-963F-CF13C4AE99EB}.Debug R26|Any CPU.Build.0 = Debug R26|Any CPU
{21460D85-C4AD-49D5-963F-CF13C4AE99EB}.Debug R27|Any CPU.ActiveCfg = Debug R27|Any CPU
{21460D85-C4AD-49D5-963F-CF13C4AE99EB}.Debug R27|Any CPU.Build.0 = Debug R27|Any CPU
{DA609427-F086-4C79-A5FA-202DBB5DE48D}.Debug R22|Any CPU.ActiveCfg = Debug|Any CPU
{DA609427-F086-4C79-A5FA-202DBB5DE48D}.Debug R22|Any CPU.Build.0 = Debug|Any CPU
{DA609427-F086-4C79-A5FA-202DBB5DE48D}.Debug R23|Any CPU.ActiveCfg = Debug|Any CPU
Expand All @@ -157,6 +173,8 @@ Global
{DA609427-F086-4C79-A5FA-202DBB5DE48D}.Release R25|Any CPU.ActiveCfg = Release|Any CPU
{DA609427-F086-4C79-A5FA-202DBB5DE48D}.Release R26|Any CPU.ActiveCfg = Release|Any CPU
{DA609427-F086-4C79-A5FA-202DBB5DE48D}.Release R27|Any CPU.ActiveCfg = Release|Any CPU
{DA609427-F086-4C79-A5FA-202DBB5DE48D}.Debug R26|Any CPU.ActiveCfg = Debug|Any CPU
{DA609427-F086-4C79-A5FA-202DBB5DE48D}.Debug R27|Any CPU.ActiveCfg = Debug|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
2 changes: 1 addition & 1 deletion AddInManager/Command/AddinManagerBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ public static AddinManagerBase Instance

private AddinManagerBase()
{
_addinManager = new AddinManager();
_addinManager = null; // initialized dynamically later when version is available
_activeCmd = null;
_activeCmdItem = null;
_activeApp = null;
Expand Down
12 changes: 12 additions & 0 deletions AddInManager/Properties/App.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions AddInManager/Properties/App.settings
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@
<Setting Name="AppTop" Type="System.Double" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
<Setting Name="IsSeparateVersion" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
</Settings>
</SettingsFile>

8 changes: 7 additions & 1 deletion AddInManager/View/FrmAddInManager.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
Margin="1,0,5,0"
VerticalAlignment="Center"
PreviewKeyDown="HandleTextboxKeyPress"
Text="{Binding SearchText, Mode=TwoWay,Delay=200, UpdateSourceTrigger=PropertyChanged}">
Text="{Binding SearchText, Mode=TwoWay, Delay=200, UpdateSourceTrigger=PropertyChanged}">
<TextBox.Resources>
<VisualBrush
x:Key="tbxText"
Expand Down Expand Up @@ -363,6 +363,12 @@
Content="Current Version"
IsChecked="{Binding IsCurrentVersion}"
ToolTip="Only Available for Revit Version Current" />
<CheckBox
Margin="5,0,5,0"
VerticalAlignment="Center"
Content="Separate Version"
IsChecked="{Binding IsSeparateVersion}"
ToolTip="Keep separate loaded add-in lists for each Revit version" />
<Menu
Width="Auto"
Height="25"
Expand Down
28 changes: 28 additions & 0 deletions AddInManager/ViewModel/AddInManagerViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,24 @@ public bool IsCurrentVersion
set => OnPropertyChanged(ref isCurrentVersion, value);
}

public bool IsSeparateVersion
{
get => Properties.App.Default.IsSeparateVersion;
set
{
if (Properties.App.Default.IsSeparateVersion == value) return;
Properties.App.Default.IsSeparateVersion = value;
Properties.App.Default.Save();
OnPropertyChanged();

// Reload commands/apps list
MAddinManagerBase.AddinManager = new AddinManager(ExternalCommandData.Application.Application.VersionNumber);
CommandItems = FreshTreeItems(false, MAddinManagerBase.AddinManager.Commands);
ApplicationItems = FreshTreeItems(false, MAddinManagerBase.AddinManager.Applications);
FreshSearchClick();
}
}

private ObservableCollection<RevitAddin> addinStartup;

public ObservableCollection<RevitAddin> AddInStartUps
Expand Down Expand Up @@ -250,6 +268,16 @@ public AddInManagerViewModel(ExternalCommandData data, ref string message, Eleme
{
AssemLoader = new AssemLoader();
MAddinManagerBase = AddinManagerBase.Instance;
// Make sure AddinManager uses the correct revit version if needed
if (MAddinManagerBase.AddinManager == null)
{
MAddinManagerBase.AddinManager = new AddinManager(data.Application.Application.VersionNumber);
}
else if (Properties.App.Default.IsSeparateVersion)
{
// if we missed setting it properly before due to no commandData at Instance creation
MAddinManagerBase.AddinManager = new AddinManager(data.Application.Application.VersionNumber);
}
CommandItems = FreshTreeItems(false, MAddinManagerBase.AddinManager.Commands);
ApplicationItems = FreshTreeItems(false, MAddinManagerBase.AddinManager.Applications);
ExternalCommandData = data;
Expand Down
10 changes: 7 additions & 3 deletions AddInManager/ViewModel/AddinManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ public class AddinManager
public AddinsCommand Commands => commands;
public int CmdCount => commands.Count;

public AddinManager()
public AddinManager(string revitVersion = "")
{
commands = new AddinsCommand();
applications = new AddinsApplication();
GetIniFilePaths();
GetIniFilePaths(revitVersion);
ReadAddinsFromAimIni();
}

Expand All @@ -29,10 +29,14 @@ public IniFile RevitIniFile
set => revitIniFile = value;
}

private void GetIniFilePaths()
private void GetIniFilePaths(string revitVersion)
{
var folderPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
var path = Path.Combine(folderPath, Resource.AppName);
if (Properties.App.Default.IsSeparateVersion && !string.IsNullOrEmpty(revitVersion))
{
path = Path.Combine(path, revitVersion);
}
var filePath = Path.Combine(path, DefaultSetting.AimInternalName);
aimIniFile = new IniFile(filePath);
var currentProcess = Process.GetCurrentProcess();
Expand Down
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# Changelog
- 2026-06-12 **1.6.3**
- Add option load separate version Revit.
- 2026-05-27 **1.6.2**
- Support Revit 2027 Release
- 2026-02-09 **1.6.1**
Expand Down
2 changes: 1 addition & 1 deletion Installer/Installer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
const string projectName = "RevitAddinManager";
const string outputName = "RevitAddinManager";
const string outputDir = "output";
const string version = "1.6.2";
const string version = "1.6.3";

var fileName = new StringBuilder().Append(outputName).Append("-").Append(version);
var project = new Project
Expand Down
2 changes: 1 addition & 1 deletion Test/Sample/BenchmarkCommand/CategoriesCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ private double CountAssemblyCode(List<Element> elements)
var familySymbols = elements.Select(x => x.Document.GetElement(x.GetTypeId()) as FamilySymbol);
foreach (FamilySymbol familySymbol in familySymbols)
{
string? assemblyCode = familySymbol?.get_Parameter(BuiltInParameter.UNIFORMAT_CODE)?.AsValueString();
string? assemblyCode = familySymbol?.get_Parameter(BuiltInParameter.ASSEMBLY_CODE)?.AsValueString();
if (assemblyCode != null) names.Add(assemblyCode);
}
return names.Distinct().Count();
Expand Down
2 changes: 1 addition & 1 deletion Test/Sample/ImportExportAssCodeFamily.cs
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ public Result Execute(ExternalCommandData commandData, ref string message, Eleme

if (symbol != null)
{
Parameter assemblyCodeParam = symbol.get_Parameter(BuiltInParameter.UNIFORMAT_CODE);
Parameter assemblyCodeParam = symbol.get_Parameter(BuiltInParameter.ASSEMBLY_CODE);
if (assemblyCodeParam != null && !assemblyCodeParam.IsReadOnly)
{
if(data.AssemblyCode=="N/A") continue;
Expand Down
6 changes: 3 additions & 3 deletions Test/Sample/UpdateAssemblyCode.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public Result Execute(ExternalCommandData commandData, ref string message, Eleme
// read csv file
var allElements = new FilteredElementCollector(doc).WhereElementIsElementType()
//group by id
.GroupBy(x => x.Id.IntegerValue).Select(x => x.First())
.GroupBy(x => x.Id.Value).Select(x => x.First())
.Where(x => x.Category != null);


Expand All @@ -37,10 +37,10 @@ public Result Execute(ExternalCommandData commandData, ref string message, Eleme
var records = csv.GetRecords<Uniformat>().ToList();
foreach (var record in records)
{
var type_elements = allElements.Where(x => Math.Abs(x.Category.Id.IntegerValue - record.Category) < 0.001);
var type_elements = allElements.Where(x => Math.Abs(x.Category.Id.Value - record.Category) < 0.001);
foreach (var element in type_elements)
{
Parameter parameter = element.get_Parameter(BuiltInParameter.UNIFORMAT_CODE);
Parameter parameter = element.get_Parameter(BuiltInParameter.ASSEMBLY_CODE);
if (parameter != null && !parameter.IsReadOnly)
{
parameter.Set(record.UniformatCode);
Expand Down
2 changes: 1 addition & 1 deletion Test/Sample/UpdateUFCodeBaseFamilyNameType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public void Execute(Autodesk.Revit.DB.Document doc, string browseFile)
x.Family == familySymbol.FamilyName && x.FamilyType == familySymbol.Name);
if (inputAssembly != null)
{
Parameter parameter = familySymbol.get_Parameter(BuiltInParameter.UNIFORMAT_CODE);
Parameter parameter = familySymbol.get_Parameter(BuiltInParameter.ASSEMBLY_CODE);
if (parameter != null && !parameter.IsReadOnly)
{
parameter.Set(inputAssembly.UF2Code);
Expand Down