Browse Source

xls:空间转换命令完善

xulisong 5 years ago
parent
commit
7b6f35beb9

+ 1 - 12
MBI/Menu/Tool.xml

@@ -47,18 +47,7 @@
       <MenuTab>Tool_W</MenuTab>
       <Modules>Tool</Modules>
     </Button>
- <Button ButtonStyles="Large">
-      <ButtonName>ToolCommand.RoomDataToSpaceCommand</ButtonName>
-      <ButtonText>房间信息复制到空间</ButtonText>
-      <ImageName>1、打开楼层模型</ImageName>
-      <DllName>..\OutputDll\ToolCommand.dll</DllName>
-      <ClassName>ToolCommand.RoomDataToSpaceCommand</ClassName>
-      <ToolTip>房间信息复制到空间</ToolTip>
-      <LongDescription>房间信息复制到空间</LongDescription>
-      <ToolTipImage></ToolTipImage>
-      <MenuTab>Tool_W</MenuTab>
-      <Modules>Tool</Modules>
-    </Button>
+ 
 <Button ButtonStyles="Large">
       <ButtonName>ToolCommand.RoomToSpaceCommand</ButtonName>
       <ButtonText>房间转换空间</ButtonText>

+ 43 - 9
MBI/ToolCommand/RoomToSpaceCommand.cs

@@ -13,9 +13,11 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows;
+using System.Windows.Interop;
 using Autodesk.Revit.Attributes;
 using Autodesk.Revit.DB;
 using Autodesk.Revit.UI;
+using SAGA.DotNetUtils;
 using SAGA.RevitUtils.Extends;
 
 
@@ -28,7 +30,6 @@ namespace ToolCommand
     {
         public override Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
         {
-
             var document = commandData.Application.ActiveUIDocument.Document;
             var view = document.ActiveView;
             if (view is View3D)
@@ -36,31 +37,64 @@ namespace ToolCommand
                 MessageBox.Show("指定导出平面视图");
                 return Result.Succeeded;
             }
+
+            WinRoomDataTrans win = new WinRoomDataTrans();
+            WindowInteropHelper helper = new WindowInteropHelper(win);
+            helper.Owner = WindowHelper.HWndRevit.Handle;
+            WindowHelper.SetWindowForeground(helper.EnsureHandle());
+            win.ShowDialog();
+            if (win.DialogResult != true)
+            {
+                return Result.Succeeded;
+            }
             using (Transaction tran = new Transaction(document, "创建空间"))
             {
                 try
                 {
-                    tran.Start();
-                    var list = RoomToSpaceUtils.RoomToSpace(view, new RoomToSpaceTransOption());
-                    if (list.Count==0||list.All(r => r.IsSuccess))
+                    List<RoomRelationItem> items = new List<RoomRelationItem>();
+                    switch (win.GetResult())
+                    {
+                        case 1:
+                        {
+                            tran.Start();
+                            items = RoomToSpaceUtils.RoomDataToSpace(view);
+                            tran.Commit();
+                            break;
+                        }
+                        case 2:
+                        {
+                            items = RoomToSpaceUtils.RoomToSpace(view, new RoomToSpaceTransOption(), tran);
+                            break;
+                        }
+                        case 3:
+                        {
+                            
+                            items = RoomToSpaceUtils.RoomToSpace(view, new RoomToSpaceTransOption(){DeleteOriginalSpace=false,DeleteOriginalSpaceSq=false}, tran);
+                           
+                            break;
+                        }
+                    }
+                    if (items.Count == 0 || items.All(r => r.IsSuccess))
                     {
                         MessageBox.Show("转换成功");
                     }
                     else
                     {
                         MessageBox.Show("部分转换成功");
-                        var text = RoomToSpaceUtils.CreateResult(list).ToString();
-                        string path =Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData),"result.txt");
+                        var text = RoomToSpaceUtils.CreateResult(items).ToString();
+                        string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "result.txt");
                         File.WriteAllText(path, text);
                         Process.Start("notepad.exe", path);
 
                     }
-                    tran.Commit();
                 }
                 catch (Exception e)
                 {
-                    tran.RollBack();
-                    throw;
+                    if (tran.HasStarted())
+                    {
+                        tran.RollBack();
+                    }
+                    MessageBox.Show(e.StackTrace.ToString());
                 }
             }
             return Result.Succeeded;

+ 281 - 87
MBI/ToolCommand/RoomToSpaceUtils.cs

@@ -32,103 +32,78 @@ namespace ToolCommand
         /// <param name="view"></param>
         /// <param name="option"></param>
         /// <returns></returns>
-        public static List<RoomRelationItem> RoomToSpace(View view, RoomToSpaceTransOption option)
+        public static List<RoomRelationItem> RoomToSpace(View view, RoomToSpaceTransOption option, Transaction tran)
         {
-            //删除当前视图下的所有空间和空间分割
+            //删除当前视图下的所有空间和空间分割   
             var doc = view.Document;
             var spaces = GetElements(view, new SpaceFilter());
             if (option.DeleteOriginalSpace)
             {
-                doc.Delete(spaces.Select(e => e.Id).ToList());
+
+                try
+                {
+                    tran.Start();
+                    doc.Delete(spaces.Select(e => e.Id).ToList());
+                    tran.Commit();
+                }
+                catch (Exception)
+                {
+                    tran.RollBack();
+                }
             }
-            
             var spaceSeps = GetElements(view, new ElementCategoryFilter(BuiltInCategory.OST_MEPSpaceSeparationLines)).OfType<ModelLine>().ToList();
             if (option.DeleteOriginalSpaceSq)
             {
-                doc.Delete(spaceSeps.Select(e => e.Id).ToList());
-            }
-            
-
-            var rooms = GetElements(view, new RoomFilter()).OfType<Room>().ToList();
-
-            #region 根据房间分割创建空间分割
-
-            if (option.RoomSqToSpaceSq)
-            {
-                var roomSeps = GetElements(view, new ElementCategoryFilter(BuiltInCategory.OST_RoomSeparationLines)).OfType<ModelLine>().ToList();
-                CurveArray curveArray = new CurveArray();
-                foreach (var roomSep in roomSeps)
+                try
                 {
-                    curveArray.Append(roomSep.GeometryCurve);
+                    tran.Start();
+                    doc.Delete(spaceSeps.Select(e => e.Id).ToList());
+                    tran.Commit();
                 }
-                if (!curveArray.IsEmpty)
+                catch (Exception)
                 {
-                    Plane p = Plane.CreateByNormalAndOrigin(view.ViewDirection, view.Origin);
-                    var sp = SketchPlane.Create(doc, p);
-                    doc.Create.NewSpaceBoundaryLines(sp, curveArray, view);
+                    tran.RollBack();
                 }
+
             }
-            
-            #endregion
-            var offset = XYZ.BasisZ * 0.1;
-            List<RoomRelationItem> relations = new List<RoomRelationItem>();
-            var level = view.GenLevel;
-            Parameter para = view.GetParameter(BuiltInParameter.VIEW_PHASE);
-            ElementId phaseId = para.AsElementId();
-            var phase = doc.GetElement(phaseId) as Phase;
-            if (phase == null)
-            {
-                throw new ArgumentNullException("视图阶段");
-            }
-            foreach (Room room in rooms)
+
+
+            CreateSpaces(view, tran);
+
+
+            List<RoomRelationItem> relationItems = new List<RoomRelationItem>();
+            try
             {
-                var relationItem = new RoomRelationItem() { RoomId = room.Id.ToString()};
-                relations.Add(relationItem);
-                using (SubTransaction subTran = new SubTransaction(doc))
+                tran.Start();
+                #region 根据房间分割创建空间分割
+                if (option.RoomSqToSpaceSq)
                 {
-                    Space useSpcae = null;
-                    try
+                    var roomSeps = GetElements(view, new ElementCategoryFilter(BuiltInCategory.OST_RoomSeparationLines))
+                        .OfType<ModelLine>().ToList();
+                    CurveArray curveArray = new CurveArray();
+                    foreach (var roomSep in roomSeps)
                     {
-                        subTran.Start();
-                        var location = room.Location.GetPoint();
-                        if (location == null || room.Area.IsEqual(0))
-                        {
-                            relationItem.Messages.Add("房间信息无效");
-                            continue;
-                        }
-                        useSpcae = doc.GetSpaceAtPoint(location, phase);
-                        if (useSpcae == null)
-                        {
-                            useSpcae = doc.Create.NewSpace(level, phase, new UV(location.X, location.Y));
-                            if (useSpcae != null)
-                            {
-                                var name = room.GetParameterString(BuiltInParameter.ROOM_NAME) ?? string.Empty;
-                                useSpcae.SetParameter(BuiltInParameter.ROOM_NAME, name);
-                                subTran.Commit();
-                                relationItem.SpaceId = useSpcae.Id.ToString();
-                                relationItem.IsSuccess = true;
-                            }
-                            else
-                            {
-                                relationItem.Messages.Add("转换失败");
-                            }
-                        }
-                        else
-                        {
-                            relationItem.SpaceId = useSpcae.Id.ToString();
-                            relationItem.Messages.Add("空间已和其他房间对应");
-                        }
-                      
+                        curveArray.Append(roomSep.GeometryCurve);
                     }
-                    catch (Exception ex)
+
+                    if (!curveArray.IsEmpty)
                     {
-                        subTran.RollBack();
+                        Plane p = Plane.CreateByNormalAndOrigin(view.ViewDirection, view.Origin);
+                        var sp = SketchPlane.Create(doc, p);
+                        doc.Create.NewSpaceBoundaryLines(sp, curveArray, view);
                     }
                 }
+                #endregion
+                relationItems = RoomDataToSpace(view);
+                tran.Commit();
+            }
+            catch (Exception)
+            {
 
+                tran.RollBack();
             }
 
-            return relations;
+            return relationItems;
         }
         /// <summary>
         /// 房间数据转移到空间数据
@@ -140,11 +115,16 @@ namespace ToolCommand
             var doc = view.Document;
             var rooms = GetElements(view, new RoomFilter()).OfType<Room>();
             var offset = XYZ.BasisZ * 0.1;
+            HashSet<int> handledSpaces = new HashSet<int>();
             List<RoomRelationItem> relations = new List<RoomRelationItem>();
             foreach (Room room in rooms)
             {
                 var relationItem = new RoomRelationItem() { RoomId = room.Id.ToString() };
                 relations.Add(relationItem);
+                if (2165067 == room.Id.IntegerValue)
+                {
+
+                }
                 using (SubTransaction subTran = new SubTransaction(doc))
                 {
                     Space useSpcae = null;
@@ -152,8 +132,9 @@ namespace ToolCommand
                     {
                         subTran.Start();
                         var location = room.Location.GetPoint();
-                        if (location == null || room.Area.IsEqual(0))
+                        if (location == null)
                         {
+                            //|| room.Area.IsEqual(0)
                             relationItem.Messages.Add("房间信息无效");
                             continue;
                         }
@@ -163,35 +144,161 @@ namespace ToolCommand
                             relationItem.Messages.Add("未找到对应空间");
                             continue;
                         }
-                        //if (IsAreaNotEqual(room,useSpcae))
-                        //{
-                        //    var item = new RoomRelationItem() { RoomId = room.Id.ToString(), SpaceId = useSpcae.Id.ToString(), Message = "面积不匹配" };
-                        //    relations.Add(item);                           
-                        //}
-                        var name = room.GetParameterString(BuiltInParameter.ROOM_NAME) ?? string.Empty;
-                        useSpcae.SetParameter(BuiltInParameter.ROOM_NAME, name);
+
+                        InfoTrans(room, useSpcae, handledSpaces.Contains(useSpcae.Id.IntegerValue));
                         subTran.Commit();
                         //成功
+                        handledSpaces.Add(useSpcae.Id.IntegerValue);
                         relationItem.SpaceId = useSpcae.Id.ToString();
                         relationItem.IsSuccess = true;
                     }
                     catch (Exception ex)
                     {
-                        relationItem.Messages.Add("赋值异常");
+                        relationItem.Messages.Add("赋值异常" + ex.Message);
                         subTran.RollBack();
                     }
                 }
+            }
+            return relations;
+        }
 
+        public static List<Space> CreateSpaces(View view)
+        {
+            List<Space> spaces = new List<Space>();
+            Document doc = view.Document;
+            var level = view.GenLevel;
+            Parameter para = view.GetParameter(BuiltInParameter.VIEW_PHASE);
+            ElementId phaseId = para.AsElementId();
+            var phase = doc.GetElement(phaseId) as Phase;
+            var points = GetSpacesPoints(view);
+            foreach (var point in points)
+            {
+                var oldSpace = doc.GetSpaceAtPoint(point, phase);
+                if (oldSpace == null)
+                {
+                    var tempSapce = doc.Create.NewSpace(level, phase, new UV(point.X, point.Y));
+                    spaces.Add(tempSapce);
+                }
             }
 
-            return relations;
+            return spaces;
         }
+        public static void CreateSpaces(View view, Transaction tran)
+        {
+            Document doc = view.Document;
+            FailuresPreprocessor preprocessor = new FailuresPreprocessor(true);
+            {
+                try
+                {
+                    FailureHandlingOptions fho = tran.GetFailureHandlingOptions();
+                    fho.SetFailuresPreprocessor(preprocessor);
+                    tran.SetFailureHandlingOptions(fho);
+
+                    #region 创建空间
+                    tran.Start();
+                    var spaces = CreateSpaces(view);
+                    tran.Commit(); //提交获取冲突代码
+                    #endregion
+
+                    #region 冲突处理代码
+                    FailureHandlingOptions fhoDe = tran.GetFailureHandlingOptions();
+                    fhoDe.SetFailuresPreprocessor(new FailuresPreprocessor(false));
+                    tran.SetFailureHandlingOptions(fhoDe);
+                    tran.Start();
+                    //返回值临时使用
+                    var failItems = preprocessor.Items;
+                    foreach (var failuresItem in failItems)
+                    {
+                        var firstId = failuresItem.Items.FirstOrDefault();
+                        if (firstId == null)
+                        {
+                            continue;
+                        }
+                        for (int i = 1; i < failuresItem.Items.Count; i++)
+                        {
+                            var currentId = failuresItem.Items[i];
+                            if (firstId.IntegerValue > currentId.IntegerValue)
+                            {
+                                doc.Delete(new List<ElementId>() { firstId });
+                                firstId = currentId;
+                            }
+
+                        }                                                   // doc.GetElement(failuresItem.Items.FirstOrDefault());
+                    }
+                    tran.Commit();
+                    #endregion
+                }
+                catch (Exception ex)
+                {
+                    tran.RollBack();
+                }
 
-        public static bool IsAreaNotEqual(Room room,Space space)
+            }
+        }
+        public static List<XYZ> GetSpacesPoints(View view)
         {
-            return Math.Abs(room.Area - space.Area) > 0.1;
+            Document doc = view.Document;
+            var level = view.GenLevel;
+            Parameter para = view.GetParameter(BuiltInParameter.VIEW_PHASE);
+            ElementId phaseId = para.AsElementId();
+            var phase = doc.GetElement(phaseId) as Phase;
+            #region 创建新的节点
+            List<XYZ> points = new List<XYZ>();
+            using (SubTransaction sub = new SubTransaction(doc))
+            {
+                try
+                {
+                    sub.Start();
+                    var spaceSeps = GetElements(view, new ElementCategoryFilter(BuiltInCategory.OST_MEPSpaceSeparationLines)).OfType<ModelLine>().ToList();
+                    CurveArray curveArray = new CurveArray();
+                    foreach (var modelLine in spaceSeps)
+                    {
+                        curveArray.Append(modelLine.GeometryCurve);
+                    }
+                    #region 创建房间分割
+                    Plane p = Plane.CreateByNormalAndOrigin(view.ViewDirection, view.Origin);
+                    var sp = SketchPlane.Create(doc, p);
+                    if (!curveArray.IsEmpty)
+                    {
+                        doc.Create.NewRoomBoundaryLines(sp, curveArray, view);
+                    }
+                    #endregion
+
+                    #region 获取封闭区域
+                    var topology = doc.get_PlanTopology(level, phase);
+                    foreach (PlanCircuit topologyCircuit in topology.Circuits)
+                    {
+                        var point = topologyCircuit.GetPointInside();
+                        var xyz = new XYZ(point.U, point.V, level.ProjectElevation + 1); //适当升高一些
+                        points.Add(xyz);
+                    }
+                    #endregion
+                }
+                catch (Exception e)
+                {
+                }
+                finally
+                {
+                    sub.RollBack();
+                }
+            }
+            #endregion
+            return points;
         }
+        public static void InfoTrans(Room room, Space space, bool isAppend)
+        {
+            var name = room.GetParameterString(BuiltInParameter.ROOM_NAME) ?? string.Empty;
+            if (isAppend)
+            {
+                var oldName = space.GetParameterString(BuiltInParameter.ROOM_NAME) ?? string.Empty;
+                if (!string.IsNullOrWhiteSpace(name) && !oldName.Contains(name))
+                {
+                    name = oldName + "," + name;
+                }
 
+            }
+            space.SetParameter(BuiltInParameter.ROOM_NAME, name);
+        }
         public static StringBuilder CreateResult(List<RoomRelationItem> items)
         {
             StringBuilder builder = new StringBuilder();
@@ -212,6 +319,7 @@ namespace ToolCommand
     }
 
 
+    #region 扩展选项类
     public class RoomRelationItem
     {
 
@@ -233,20 +341,106 @@ namespace ToolCommand
         }
     }
 
+    /// <summary>
+    /// 导出控制选项
+    /// </summary>
     public class RoomToSpaceTransOption
     {
         /// <summary>
         /// 是否删除原始空间
         /// </summary>
         public bool DeleteOriginalSpace { get; set; } = true;
+
         /// <summary>
         /// 是否删除原始空间分割
         /// </summary>
-        public bool DeleteOriginalSpaceSq { get; set; }
+        public bool DeleteOriginalSpaceSq { get; set; } = true;
+
         /// <summary>
         /// 是否将房间分割转换成空间分割
         /// </summary>
-        public bool RoomSqToSpaceSq { get; set; }
+        public bool RoomSqToSpaceSq { get; set; } = false;
+
+    }
+
+    public class FailuresItem
+    {
+        public FailuresItem()
+        {
+
+        }
+        public FailuresItem(IEnumerable<ElementId> ids)
+        {
+            Items.AddRange(ids);
+        }
+        public List<ElementId> Items { get; private set; } = new List<ElementId>();
+    }
+    /// <summary>
+    /// 空间错误机制
+    /// </summary>
+    public class FailuresPreprocessor : IFailuresPreprocessor
+    {
+        /*
+         * 创建警告时,如果一个区域已经存在多个空间,创建警告时会把所有警告空间进行捕获
+         */
+
+        #region 构造函数
+        public FailuresPreprocessor()
+        {
+            Items = new List<FailuresItem>();
+        }
+        public FailuresPreprocessor(bool append) : this()
+        {
+            Append = append;
+        }
+        #endregion
+        #region 相关操纵选项
+        /// <summary>
+        /// 是否追加捕获信息
+        /// </summary>
+        private bool Append { get; set; }
+        public void SetOperate(bool continueAdd)
+        {
+            Append = continueAdd;
+        }
 
+        public List<FailuresItem> Items { get; private set; }
+        #endregion
+
+        public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
+        {
+            IList<FailureMessageAccessor> messages = failuresAccessor.GetFailureMessages();
+            if (messages.Count == 0)
+                return FailureProcessingResult.Continue;
+            foreach (FailureMessageAccessor message in messages)
+            {
+                var currentSeverity = message.GetSeverity();
+                switch (currentSeverity)
+                {
+                    case FailureSeverity.Error:
+                        {
+                            if (message.HasResolutions())
+                                failuresAccessor.ResolveFailure(message);
+                            break;
+                        }
+                    case FailureSeverity.Warning:
+                        {
+                            if (Append)
+                            {
+                                var elementIds = message.GetFailingElementIds();
+                                if (elementIds.Any())
+                                {
+                                    Items.Add(new FailuresItem(elementIds.ToList()));
+                                }
+                            }
+
+                            failuresAccessor.DeleteWarning(message);
+                            break;
+                        }
+                }
+            }
+            return FailureProcessingResult.ProceedWithCommit;
+        }
     }
+    #endregion
 }

+ 7 - 0
MBI/ToolCommand/ToolCommand.csproj

@@ -75,6 +75,9 @@
     <Compile Include="WinLocation.xaml.cs">
       <DependentUpon>WinLocation.xaml</DependentUpon>
     </Compile>
+    <Compile Include="WinRoomDataTrans.xaml.cs">
+      <DependentUpon>WinRoomDataTrans.xaml</DependentUpon>
+    </Compile>
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\SAGA.DotNetUtils\SAGA.DotNetUtils.csproj">
@@ -91,6 +94,10 @@
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
     </Page>
+    <Page Include="WinRoomDataTrans.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
   </ItemGroup>
   <ItemGroup>
     <None Include="packages.config" />

+ 31 - 0
MBI/ToolCommand/WinRoomDataTrans.xaml

@@ -0,0 +1,31 @@
+<Window x:Class="ToolCommand.WinRoomDataTrans"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:local="clr-namespace:ToolCommand"
+             mc:Ignorable="d" 
+             Width="300" SizeToContent="Height" WindowStartupLocation="CenterOwner">
+    <Grid Margin="5">
+        <Grid.RowDefinitions>
+            <RowDefinition Height="*"></RowDefinition>
+            <RowDefinition Height="Auto"></RowDefinition>
+        </Grid.RowDefinitions>
+        <GroupBox>
+            <Grid>
+                <Grid.RowDefinitions>
+                    <RowDefinition></RowDefinition>
+                    <RowDefinition></RowDefinition>
+                    <RowDefinition></RowDefinition>
+                </Grid.RowDefinitions>
+                <RadioButton x:Name="rdo1" Margin="5" Grid.Row="0" IsChecked="True" Content="仅复制房间信息到已有空间"></RadioButton>
+                <RadioButton x:Name="rdo2" Margin="5" Grid.Row="1" Content="根据房间补全空间信息(刷新)"></RadioButton>
+                <RadioButton x:Name="rdo3" Margin="5" Grid.Row="2"  Content="根据房间补全空间信息(增量)"></RadioButton>
+            </Grid>
+        </GroupBox>
+        <StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" >
+            <Button Height="23" Width="60"  Margin="5" IsDefault="True" Content="确定"  Click="Button_Click"></Button>
+            <Button Height="23" Width="60"  Margin="5" IsCancel="True" Content="取消"  Background="White" Click="Button_Click_1"></Button>
+        </StackPanel>
+    </Grid>
+</Window>

+ 56 - 0
MBI/ToolCommand/WinRoomDataTrans.xaml.cs

@@ -0,0 +1,56 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace ToolCommand
+{
+    /// <summary>
+    /// WinRoomDataTrans.xaml 的交互逻辑
+    /// </summary>
+    public partial class WinRoomDataTrans : Window
+    {
+        public WinRoomDataTrans()
+        {
+            InitializeComponent();
+        }
+
+        private void Button_Click(object sender, RoutedEventArgs e)
+        {
+            this.DialogResult = true;
+        }
+
+        private void Button_Click_1(object sender, RoutedEventArgs e)
+        {
+            this.DialogResult = false;
+        }
+
+        public int GetResult()
+        {
+            if (rdo1.IsChecked==true)
+            {
+                return 1;
+            }
+            if (rdo2.IsChecked == true)
+            {
+                return 2;
+            }
+            if (rdo3.IsChecked == true)
+            {
+                return 3;
+            }
+
+            return 1;
+        }
+    }
+}