Files
2024-12-12 09:51:40 +01:00

187 lines
8.1 KiB
C#

//
// Copyright 2003-2010 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 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.
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using Autodesk.Revit;
using Autodesk.Revit.DB;
namespace RevitLookup.Test.SDKSamples {
/// <summary>
/// These are all the tests taken directly from or heavily inspired by the SDK examples. The idea
/// is to consolidate everything in one tool so people don't have to build 4000 different projects
/// and edit the revit.ini file everytime they want to test one.
/// </summary>
public class SDKTestFuncs : RevitLookupTestFuncs {
public SDKTestFuncs(Autodesk.Revit.UI.UIApplication app)
: base(app)
{
m_testFuncs.Add(new RevitLookupTestFuncInfo("Generate Sheet", "Generate a new sheet with a set of selected views", "SDK Samples", new RevitLookupTestFuncInfo.TestFunc(GenerateSheet), RevitLookupTestFuncInfo.TestType.Create));
m_testFuncs.Add(new RevitLookupTestFuncInfo("Analytical Support Data", "Show Analytical data for selected objects (Must be using Revit Structure)", "SDK Samples", new RevitLookupTestFuncInfo.TestFunc(AnalyticalSupportData), RevitLookupTestFuncInfo.TestType.Query));
m_testFuncs.Add(new RevitLookupTestFuncInfo("Create Shared Parameters", "Create new shared parameters", "SDK Samples", new RevitLookupTestFuncInfo.TestFunc(CreateSharedParams), RevitLookupTestFuncInfo.TestType.Create));
m_testFuncs.Add(new RevitLookupTestFuncInfo("Type Selector", "Change the Type of an Element", "SDK Samples", new RevitLookupTestFuncInfo.TestFunc(TypeSelector), RevitLookupTestFuncInfo.TestType.Modify));
m_testFuncs.Add(new RevitLookupTestFuncInfo("Move Linear Bound Element", "Move a single Element to a new location", "SDK Samples", new RevitLookupTestFuncInfo.TestFunc(MoveLinearBound), RevitLookupTestFuncInfo.TestType.Modify));
m_testFuncs.Add(new RevitLookupTestFuncInfo("Structural Sample", "Place a set of columns at equal intervals on wall's", "SDK Samples", new RevitLookupTestFuncInfo.TestFunc(StructSample), RevitLookupTestFuncInfo.TestType.Create));
m_testFuncs.Add(new RevitLookupTestFuncInfo("Level Properties", "Add, remove and modify levels", "SDK Samples", new RevitLookupTestFuncInfo.TestFunc(LevelProps), RevitLookupTestFuncInfo.TestType.Query));
m_testFuncs.Add(new RevitLookupTestFuncInfo("Fire Rating - Create Shared Parameter", "Create the \"Fire Rating\" Parameter", "SDK Samples", new RevitLookupTestFuncInfo.TestFunc(FireRatingSharedParam), RevitLookupTestFuncInfo.TestType.Create));
// SDK Samples not implemented:
// DeleteObject (See TestDocument.Delete)
// DesignOptionsReader (use Snoop)
// RevitCommands (use Snoop)
// BrowseBindings (use Snoop)
// ParameterUtils (use Snoop)
}
public void
GenerateSheet()
{
Document doc = m_revitApp.ActiveUIDocument.Document;
CreateSheet.Views view = new CreateSheet.Views(doc);
CreateSheet.AllViewsForm dlg = new CreateSheet.AllViewsForm(view);
if (dlg.ShowDialog() == DialogResult.OK)
view.GenerateSheet(doc);
}
public void
AnalyticalSupportData()
{
ElementSet selectedElements = m_revitApp.ActiveUIDocument.Selection.Elements;
if (selectedElements.IsEmpty) {
MessageBox.Show("No Elements were selected.");
return;
}
AnalyticalSupportData.Info analysisData = new AnalyticalSupportData.Info(selectedElements);
if (analysisData.ElementInformation.Rows.Count == 0) {
MessageBox.Show("No Elements with Analytical Support Data were selected.");
return;
}
AnalyticalSupportData.InfoForm form = new AnalyticalSupportData.InfoForm(analysisData);
form.ShowDialog();
}
public void CreateSharedParams()
{
SharedParams.Create creator = new SharedParams.Create(m_revitApp);
creator.AddSharedParamsToFile();
creator.AddSharedParamsToWalls();
}
public void
TypeSelector()
{
ElementSet selectedElements = m_revitApp.ActiveUIDocument.Selection.Elements;
if (selectedElements.IsEmpty) {
MessageBox.Show("No elements were selected.");
return;
}
TypeSelector.TypeSelectorForm form = new TypeSelector.TypeSelectorForm(m_revitApp, selectedElements);
form.ShowDialog();
}
public void
MoveLinearBound()
{
// TBD: this usually produces a bunch of errors unless you pick one simple element
// by itself, like a single Wall in isolation.
int moveCount = 0;
int rejectedCount = 0;
foreach (Element elem in m_revitApp.ActiveUIDocument.Selection.Elements) {
Location loc = elem.Location;
LocationCurve lineLoc = loc as LocationCurve;
if (lineLoc != null) {
Line line;
XYZ newStart;
XYZ newEnd;
newStart = lineLoc.Curve.get_EndPoint(0);
newEnd = lineLoc.Curve.get_EndPoint(1);
newStart = new XYZ(newStart.X + 100, newStart.Y + 100, newStart.Z);
newEnd = new XYZ(newEnd.X + 75, newEnd.Y + 75, newEnd.Z);
line = m_revitApp.Application.Create.NewLineBound(newStart, newEnd);
lineLoc.Curve = line;
moveCount++;
}
else {
rejectedCount++;
}
}
string msgStr = string.Format("Moved {0} elements. {1} were not Linear-bound.", moveCount, rejectedCount);
MessageBox.Show(msgStr);
}
public void
StructSample ()
{
// first filter out to only Wall elements
ElementSet selectedElements = Utils.Selection.FilterToCategory(m_revitApp.ActiveUIDocument.Selection.Elements,
BuiltInCategory.OST_Walls, false, m_revitApp.ActiveUIDocument.Document);
if (selectedElements.IsEmpty)
{
MessageBox.Show("No wall elements are currently selected");
return;
}
StructuralSample.StructSample sample = new StructuralSample.StructSample(m_revitApp, selectedElements);
sample.ExecuteStructSample();
}
public void
LevelProps ()
{
LevelProperties.LevelsCommand levCommand = new RevitLookup.Test.SDKSamples.LevelProperties.LevelsCommand(m_revitApp);
levCommand.Execute();
}
public void
FireRatingSharedParam()
{
FireRating.SharedParam creator = new FireRating.SharedParam(m_revitApp);
creator.AddSharedParamToFile();
}
}
}