Revit二次开发之“创建空间Newspace”

这里涉及到一些专业知识,没有成功,但是代码是从示例中取出来的,示例可以创建空间。
有时间再研究,先记录下来。
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
public class CreateSpace : IExternalCommand
{
    
public Result Execute(ExternalCommandData cmdData, ref string msg, ElementSet elements)
    {
        UIDocument uiDoc 
= cmdData.Application.ActiveUIDocument;

        
try
        {
            Transaction ts 
= new Transaction(uiDoc.Document, "space");
            ts.Start();

            
//Level
            Level level = null;
            FilteredElementIterator levelsIterator 
= (new FilteredElementCollector(uiDoc.Document)).OfClass(typeof(Level)).GetElementIterator();
            levelsIterator.Reset();
            
while (levelsIterator.MoveNext())
            {
                level 
= levelsIterator.Current as Level;
                
break;
            }

            
//Phase面域
            Parameter para = uiDoc.Document.ActiveView.get_Parameter(BuiltInParameter.VIEW_PHASE);
            ElementId phaseId 
= para.AsElementId();
            Phase phase 
= uiDoc.Document.get_Element(phaseId) as Phase;

            
if (phase == null)
            {
                System.Windows.Forms.MessageBox.Show(
"The phase of the active view is null, you can't create spaces in a null phase");
            }

            
//CreateSpace
            if (uiDoc.Document.ActiveView.ViewType == ViewType.FloorPlan)
            {
                uiDoc.Document.Create.NewSpaces(level, phase, uiDoc.ActiveView);
            }
            
else
            {
                System.Windows.Forms.MessageBox.Show(
"You can not create spaces in this plan view");
            }

            ts.Commit();
        }
        
catch (Exception ex)
        {
            TaskDialog.Show(
"ex", ex.ToString());
        }

        
return Result.Succeeded;
    }
}
from:http://revit.5d6d.com/thread-1252-1-1.html
posted @ 2011-09-16 09:42  大气象  阅读(941)  评论(0编辑  收藏  举报
http://www.tianqiweiqi.com