Hi,
Thanks for replying. I am pretty sure I did everything what was in the list, I might missed something though...I will put here the code.
Command.cs :
#region Namespaces
using System;
using System.Collections.Generic;
using System.Diagnostics;
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Selection;
using Dynamo.Core;
using Dynamo.Applications;
using System.Reflection;
#endregion
namespace PETE.Revit.RibbonButton
{
[Transaction(TransactionMode.Manual)]
public class Command : IExternalCommand
{
public Result Execute(
ExternalCommandData commandData,
ref string message,
ElementSet elements)
{
TaskDialog.Show("PETE", "Hello Revit");
return Result.Succeeded;
}
}
[Transaction(TransactionMode.Manual)]
public class LinkRedirect : IExternalCommand
{
public Result Execute(
ExternalCommandData commandData,
ref string message,
ElementSet elements)
{
Process.Start("http://www.google.com/");
return Result.Succeeded;
}
}
[Transaction(TransactionMode.Manual)]
public class KEAHomePage : IExternalCommand
{
public Result Execute(
ExternalCommandData commandData,
ref string message,
ElementSet elements)
{
Process.Start("http://www.kea.dk/");
return Result.Succeeded;
}
}
[Transaction(TransactionMode.Manual)]
public class BIMCafeLinkedin : IExternalCommand
{
public Result Execute(
ExternalCommandData commandData,
ref string message,
ElementSet elements)
{
Process.Start("https://www.linkedin.com/company/kea-bim-cafe/");
return Result.Succeeded;
}
}
[Transaction(TransactionMode.Manual)]
public class KEAByg : IExternalCommand
{
public Result Execute(
ExternalCommandData commandData,
ref string message,
ElementSet elements)
{
Process.Start("https://kea.dk/en/programmes/bachelor-degree/architectural-technology-and-construction-management");
return Result.Succeeded;
}
}
[Transaction(TransactionMode.Manual)]
public class RunDynamo : IExternalCommand
{
public Result Execute(
ExternalCommandData commandData,
ref string message,
ElementSet elements)
{
UIApplication uiapp = commandData.Application;
Document doc = uiapp.ActiveUIDocument.Document;
string Dynamo_Journal_Path = @"C:\Users\PeterMihok\AB Clausen\BIM Team - Dynamo Scripts\02 Scripts\02_01 All Scripts\ABC_Elements_SetElevation.dyn";
DynamoRevit dynamoRevit = new DynamoRevit();
DynamoRevitCommandData dynamoRevitCommandData = new DynamoRevitCommandData();
dynamoRevitCommandData.Application = commandData.Application;
IDictionary<string, string> journalData = new Dictionary<string, string>
{
{Dynamo.Applications.JournalKeys.ShowUiKey, false.ToString() }, // don't show DynamoUI at runtime
{Dynamo.Applications.JournalKeys.AutomationModeKey, true.ToString() }, // run journal automatically
{Dynamo.Applications.JournalKeys.DynPathKey, Dynamo_Journal_Path }, // run node at this file path
{Dynamo.Applications.JournalKeys.DynPathExecuteKey, true.ToString() }, // The journal file can specify if the Dynamo workspace opened
{Dynamo.Applications.JournalKeys.ForceManualRunKey, false.ToString() }, // don't run in manual mode
{Dynamo.Applications.JournalKeys.ModelShutDownKey, true.ToString() },
{Dynamo.Applications.JournalKeys.ModelNodesInfo, false.ToString() }
};
dynamoRevitCommandData.JournalData = journalData;
Result externalCommandResult = dynamoRevit.ExecuteCommand(dynamoRevitCommandData);
return externalCommandResult;
}
}
// public class UIUIDocument OpenAndActivateDocument ()
}
App.cs:
#region Namespaces
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Reflection;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Events;
using Dynamo.Core;
using Dynamo.Applications;
using System.Windows;
#endregion
namespace PETE.Revit.RibbonButton
{
class App : IExternalApplication
{
const string RIBBON_TAB = "KEA";
const string RIBBON_PANEL1 = "Bim Cafe";
const string RIBBON_PANEL2 = "Q&A";
const string RIBBON_PANEL3 = "Dynamo";
const string RIBBON_PANEL4 = "AB";
public Result OnStartup(UIControlledApplication a)
{
// get the ribbon tab
try
{
a.CreateRibbonTab(RIBBON_TAB);
}
catch (Exception) { } // tab already exists
// get or create the panel
RibbonPanel panel1 = null;
RibbonPanel panel2 = null;
RibbonPanel panel3 = null;
RibbonPanel panel4 = null;
List<RibbonPanel> panels = a.GetRibbonPanels(RIBBON_TAB);
foreach (RibbonPanel pnl in panels)
{
if (pnl.Name == RIBBON_PANEL1)
{
panel1 = pnl;
break;
}
else if (pnl.Name == RIBBON_PANEL2)
{
panel2 = pnl;
break;
}
else if (pnl.Name == RIBBON_PANEL3)
{
panel3 = pnl;
break;
}
else if (pnl.Name == RIBBON_PANEL4)
{
panel4 = pnl;
break;
}
}
// couldn't find the panel, create it
if (panel1 == null)
{
panel1 = a.CreateRibbonPanel(RIBBON_TAB, RIBBON_PANEL1);
}
if (panel2 == null)
{
panel2 = a.CreateRibbonPanel(RIBBON_TAB, RIBBON_PANEL2);
}
if (panel3 == null)
{
panel3 = a.CreateRibbonPanel(RIBBON_TAB, RIBBON_PANEL3);
}
if (panel4 == null)
{
panel4 = a.CreateRibbonPanel(RIBBON_TAB, RIBBON_PANEL4);
}
// get the image for the button
Image img = Properties.Resources.BimLogo;
ImageSource imgsrc=GetImageSource(img);
Image img1 = Properties.Resources.QA1;
ImageSource imgSrc1 = GetImageSource(img1);
// create the button data
PushButtonData btnData = new PushButtonData(
"Library",
"Library",
Assembly.GetExecutingAssembly().Location,
"PETE.Revit.RibbonButton.RunDynamo"
)
{
ToolTip = "KEA BIM Cafe Library",
LongDescription = "Here you can find all the necessary documents for your studies at KEA",
Image = imgSrc,
LargeImage = imgSrc
};
PushButtonData btnData1 = new PushButtonData(
"Button 2",
"Button 2",
Assembly.GetExecutingAssembly().Location,
"PETE.Revit.RibbonButton.LinkRedirect"
)
{
Image = imgSrc,
LargeImage = imgSrc
};
PushButtonData btnData3 = new PushButtonData(
"FAQ",
"FAQ",
Assembly.GetExecutingAssembly().Location,
"PETE.Revit.RibbonButton.Command"
)
{
Image = imgSrc,
LargeImage = imgSrc
};
PushButtonData btnData4 = new PushButtonData(
"Teacher",
"Teacher",
Assembly.GetExecutingAssembly().Location,
"PETE.Revit.RibbonButton.Command"
)
{
Image = imgSrc,
LargeImage = imgSrc
};
PushButtonData btnData5 = new PushButtonData(
"Student",
"Student",
Assembly.GetExecutingAssembly().Location,
"PETE.Revit.RibbonButton.Command"
)
{
Image = imgSrc,
LargeImage = imgSrc
};
PushButtonData btnData6 = new PushButtonData(
"A",
"A",
Assembly.GetExecutingAssembly().Location,
"PETE.Revit.RibbonButton.Command"
)
{
Image = imgSrc,
LargeImage = imgSrc
};
PushButtonData btnData7 = new PushButtonData(
"B",
"B",
Assembly.GetExecutingAssembly().Location,
"PETE.Revit.RibbonButton.Command"
)
{
Image = imgSrc,
LargeImage = imgSrc
};
PushButtonData btnData8 = new PushButtonData(
"C",
"C",
Assembly.GetExecutingAssembly().Location,
"PETE.Revit.RibbonButton.Command"
)
{
Image = imgSrc,
LargeImage = imgSrc
};
PushButtonData btnData9 = new PushButtonData(
"D",
"D",
Assembly.GetExecutingAssembly().Location,
"PETE.Revit.RibbonButton.Command"
)
{
Image = imgSrc,
LargeImage = imgSrc
};
PushButtonData btnData10 = new PushButtonData(
"Push",
"Push",
Assembly.GetExecutingAssembly().Location,
"PETE.Revit.RibbonButton.Command"
)
{
Image = imgSrc,
LargeImage = imgSrc
};
PushButtonData btnData11 = new PushButtonData(
"Run",
"Run",
Assembly.GetExecutingAssembly().Location,
"PETE.Revit.RibbonButton.Command"
)
{
Image = imgSrc,
LargeImage = imgSrc
};
PulldownButtonData group1Data = new PulldownButtonData("PulldownGroup1", "Q&A")
{
Image = imgSrc,
LargeImage = imgSrc
};
PushButtonData itemData11 = new PushButtonData("itemName11", "About KEA", Assembly.GetExecutingAssembly().Location, "PETE.Revit.RibbonButton.KEAHomePage")
{
ToolTip = "KEA BIM Cafe Library",
LongDescription = "Here you can find all the necessary documents for your studies at KEA",
Image = imgSrc,
LargeImage = imgSrc
};
PushButtonData itemData12 = new PushButtonData("itemName12", "About BIM Cafe", Assembly.GetExecutingAssembly().Location, "PETE.Revit.RibbonButton.BIMCafeLinkedin")
{
ToolTip = "KEA BIM Cafe Library",
LongDescription = "Here you can find all the necessary documents for your studies at KEA",
Image = imgSrc,
LargeImage = imgSrc
};
PushButtonData itemData13 = new PushButtonData("itemName13", "About BYG", Assembly.GetExecutingAssembly().Location, "PETE.Revit.RibbonButton.KEAByg")
{
ToolTip = "KEA BIM Cafe Library",
LongDescription = "Here you can find all the necessary documents for your studies at KEA",
Image = imgSrc,
LargeImage = imgSrc
};
PushButtonData group2Data = new PushButtonData(
"TaskDialog",
"TaskDialog",
Assembly.GetExecutingAssembly().Location,
"PETE.Revit.RibbonButton.Command"
);
// add the button to the ribbon
PushButton button = panel1.AddItem(btnData) as PushButton;
button.Enabled = true;
PushButton button1 = panel1.AddItem(btnData1) as PushButton;
button1.Enabled = true;
PushButton button3 = panel1.AddItem(btnData3) as PushButton;
button3.Enabled = true;
PulldownButton group1 = panel1.AddItem(group1Data) as PulldownButton;
PushButton item11 = group1.AddPushButton(itemData11) as PushButton;
item11.ToolTip = itemData11.Text; // Can be changed to a more descriptive text.
PushButton item12 = group1.AddPushButton(itemData12) as PushButton;
item12.ToolTip = itemData12.Text;
PushButton item13 = group1.AddPushButton(itemData13) as PushButton;
item13.ToolTip = itemData13.Text;
PushButton group2 = panel4.AddItem(group2Data) as PushButton;
PushButton item17 = group1.AddPushButton(group2Data) as PushButton;
item17.ToolTip = group2Data.Text; // Can be changed to a more descriptive text
PushButton button4 = panel2.AddItem(btnData4) as PushButton;
button4.Enabled = true;
PushButton button5 = panel2.AddItem(btnData5) as PushButton;
button5.Enabled = true;
PushButton button6 = panel2.AddItem(btnData6) as PushButton;
button6.Enabled = true;
PushButton button7 = panel2.AddItem(btnData7) as PushButton;
button7.Enabled = true;
PushButton button8 = panel3.AddItem(btnData8) as PushButton;
button8.Enabled = true;
PushButton button9 = panel3.AddItem(btnData9) as PushButton;
button9.Enabled = true;
PushButton button10 = panel3.AddItem(btnData10) as PushButton;
button10.Enabled = true;
PushButton button11 = panel3.AddItem(btnData11) as PushButton;
button11.Enabled = true;
return Result.Succeeded;
}
public Result OnShutdown(UIControlledApplication a)
{
return Result.Succeeded;
}
/* protected void BtnConfirm_Click(object sender, EventArgs e) // Website redirect test for the button
{
Response.Redirect("Confirm.apx");
} */
private BitmapSource GetImageSource(Image img)
{
BitmapImage bmp = new BitmapImage();
using (MemoryStream ms = new MemoryStream())
{
img.Save(ms, ImageFormat.Png);
ms.Position = 0;
bmp.BeginInit();
bmp.CacheOption = BitmapCacheOption.OnLoad;
bmp.UriSource = null;
bmp.StreamSource = ms;
bmp.EndInit();
}
return bmp;
}
}
}
Should I put here the whole Dynamo script, because the script it self is working, so I am not sure if it will be much help.
Thanks once again!
Peter