'
' (C) Copyright 2003-2008 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 ITS 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.
'
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Autodesk.Revit
Namespace Revit.SDK.Samples.Toolbar.VB.NET
Public Class CreateToolbar
Implements Autodesk.Revit.IExternalApplication
'''
''' Implement this method to implement the external application which should be called when
''' Revit is about to exit,Any documents must have been closed before this method is called.
'''
''' An object that is passed to the external application
''' which contains the controlled application.
''' Return the status of the external application.
''' A result of Succeeded means that the external application successfully shut down.
''' Cancelled can be used to signify that the user cancelled the external operation at some point.
''' If false is returned then Revit should inform the user that the external application
''' failed to load and the release the internal reference.
'''
Public Function OnShutdown(ByVal application As Autodesk.Revit.ControlledApplication) As Autodesk.Revit.IExternalApplication.Result Implements Autodesk.Revit.IExternalApplication.OnShutdown
Return Autodesk.Revit.IExternalApplication.Result.Succeeded
End Function
'''
''' Implement this method to implement the external application which should be called when
''' Revit is about to exit,Any documents must have been closed before this method is called.
'''
''' An object that is passed to the external application
''' which contains the controlled application.
''' Return the status of the external application.
''' A result of Succeeded means that the external application successfully started.
''' Cancelled can be used to signify that the user cancelled the external operation at some point.
''' If false is returned then Revit should inform the user that the external application
''' failed to load and the release the internal reference.
'''
Public Function OnStartup(ByVal application As Autodesk.Revit.ControlledApplication) As _
Autodesk.Revit.IExternalApplication.Result Implements Autodesk.Revit.IExternalApplication.OnStartup
Try
'application path
Dim path As String = Me.GetType().Assembly.Location
'an external command called bu toolbar item
Dim dllPath As String = path.Replace("Toolbar.dll", "ToolbarCommands.dll")
'image of toolbar
Dim imagePath As String = path.Replace("Toolbar.dll", "Toolbar.bmp")
'create a custom tool bar with three buttons
Dim toolBar As Autodesk.Revit.Toolbar = application.CreateToolbar()
toolBar.Name = "custom toolbar"
toolBar.Image = imagePath
'Add toolbar item by using menu item,
'The toolbar item will call the external command(Commands.dll) which will create a wall in project
Dim menuItem As MenuItem = application.CreateTopMenu("custom menu")
Dim menuItem1 As MenuItem = menuItem.Append(menuItem.MenuType.BasicMenu, "CreateWall", dllPath, "Revit.SDK.Samples.Toolbar.VB.NET.CreateWall")
'Add this menu item to create a new toolbar item
Dim item1 As ToolbarItem = toolBar.AddItem(menuItem1)
item1.ItemText = "CreateWall"
item1.ItemType = ToolbarItem.ToolbarItemType.BtnRText 'the item is a button with rich text
item1.StatusbarTip = "CreateWall"
item1.ToolTip = "CreateWall"
'Add the second button will delete all walls in current project.
'Use Toolbar.AddItem(String, String) to add.
Dim item2 As ToolbarItem = toolBar.AddItem(dllPath, "Revit.SDK.Samples.Toolbar.VB.NET.DeleteWalls")
item2.ItemText = "DeleteWalls"
item2.ItemType = ToolbarItem.ToolbarItemType.BtnRText 'button with rich text
item2.StatusbarTip = "DeleteWalls"
item2.ToolTip = "DeleteWalls"
'Add a separator between the second button and the third button
Dim item3 As ToolbarItem = toolBar.AddItem("spe", "spe")
item3.ItemType = ToolbarItem.ToolbarItemType.BtnSeparator
'The button which pops up a dialog box to show some information about Custom Toolbar;
Dim item4 As ToolbarItem = toolBar.AddItem(dllPath, "Revit.SDK.Samples.Toolbar.VB.NET.AboutAPIToolbar")
item4.ItemType = ToolbarItem.ToolbarItemType.BtnStd 'Tstandard item, image only.
item4.StatusbarTip = "Help of Customer Toolbar"
item4.ToolTip = "Help of Customer Toolbar"
Catch ex As Exception
MsgBox("Failed")
Return IExternalApplication.Result.Failed
End Try
Return IExternalApplication.Result.Succeeded
End Function
End Class
End Namespace