我对 C# 和编码非常陌生。如果可能的话,我正在寻求一些帮助,以弄清楚如何修复这段代码以使其正常工作。
他们单独工作。我可以在功能区上创建一个新按钮并执行标准的 hello world。我还有一个宏,可以在其中成功删除所有工作表和视图,但尝试将两者结合起来会造成很大的困难!代码构建正常,但我在 revit 中收到此错误:
'未能初始化加载项“删除视图”,因为在加载项程序集中找不到类“DeleteViews”。FullClassName 为 Revit 调用加载项应用程序提供了入口点。要让 Revit 运行加载项,您必须确保此类实现“Autodesk.Revit.UI.ExternalCommand”接口。
我很确定我的问题是在第二段代码中引用。我知道我没有正确调用它,但找不到任何解决方案。
抱歉,如果这是一个愚蠢的问题,但非常感谢任何帮助我学习的帮助!
感谢你给与我的帮助
编码:
namespace BGPanel
{
public class CsBGPanel : IExternalApplication
{
public UIDocument ActiveUIDocument { get; private set; }
public Result OnStartup(UIControlledApplication application)
{
RibbonPanel ribbonPanel = application.CreateRibbonPanel("Tools");
string thisAssemblyPath = Assembly.GetExecutingAssembly().Location;
PushButtonData buttonData = new PushButtonData("cmdDeleteViews",
"Delete Views", thisAssemblyPath, "BGPanel.DeleteViews");
PushButton pushButton = ribbonPanel.AddItem(buttonData) as PushButton;
pushButton.ToolTip = "Delete all sheets, schedules & views except structural plans";
Uri uriImage = new Uri(@"C:\Revit_API\Revit_2015\32px-Broom.png");
BitmapImage largeImage = new BitmapImage(uriImage);
pushButton.LargeImage = largeImage;
return Result.Succeeded;
}
public void DeleteViews()
{
UIDocument uidoc = this.ActiveUIDocument;
Document doc = uidoc.Document;
FilteredElementCollector collector = new FilteredElementCollector(doc);
ICollection<Element> collection = collector.OfClass(typeof(View)).ToElements();
using (Transaction t = new Transaction(doc, "Delete Views"))
{
t.Start();
int x = 0;
foreach (Element e in collection)
{
try
{
View view = e as View;
switch (view.ViewType)
{
case ViewType.FloorPlan:
break;
case ViewType.EngineeringPlan:
break;
case ViewType.ThreeD:
break;
default:
doc.Delete(e.Id);
x += 1;
break;
}
}
catch (Exception ex)
{
View view = e as View;
TaskDialog.Show("Error", e.Name + "\n" + "\n" + ex.Message);
TaskDialog.Show("Error", ex.Message);
}
}
t.Commit();
TaskDialog.Show("BG_API DeleteViews", "Views Deleted: " + x.ToString());
}
}
public Result OnShutdown(UIControlledApplication application)
{
return Result.Succeeded;
}
}
}