修复错误
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using System.Globalization;
|
||||
using System.Windows.Data;
|
||||
|
||||
using Color = System.Windows.Media.Color;
|
||||
|
||||
namespace ShrlAlgoToolkit.RevitAddins.Converters;
|
||||
@@ -9,23 +10,24 @@ namespace ShrlAlgoToolkit.RevitAddins.Converters;
|
||||
/// </summary>
|
||||
public class Rv2WinColorConverter : IValueConverter
|
||||
{
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
var color = (Autodesk.Revit.DB.Color)value;
|
||||
//if (Autodesk.Revit.DB.SelectedColor.InvalidColorValue)
|
||||
//{
|
||||
//}
|
||||
if (color is { IsValid: true })
|
||||
{
|
||||
var rgb = Color.FromRgb(color.Red, color.Green, color.Blue);
|
||||
return rgb;
|
||||
}
|
||||
public static Rv2WinColorConverter Instance { get; } = new Rv2WinColorConverter();
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
var color = (Autodesk.Revit.DB.Color)value;
|
||||
//if (Autodesk.Revit.DB.SelectedColor.InvalidColorValue)
|
||||
//{
|
||||
//}
|
||||
if (color is { IsValid: true })
|
||||
{
|
||||
var rgb = Color.FromRgb(color.Red, color.Green, color.Blue);
|
||||
return rgb;
|
||||
}
|
||||
|
||||
return new Color();
|
||||
}
|
||||
return new Color();
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
return value is Color rgb ? new Autodesk.Revit.DB.Color(rgb.R, rgb.G, rgb.B) : (object)Autodesk.Revit.DB.Color.InvalidColorValue;
|
||||
}
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
return value is Color rgb ? new Autodesk.Revit.DB.Color(rgb.R, rgb.G, rgb.B) : (object)Autodesk.Revit.DB.Color.InvalidColorValue;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ namespace ShrlAlgoToolkit.RevitAddins.Converters
|
||||
{
|
||||
public class SearchTypeValueConverter : IMultiValueConverter
|
||||
{
|
||||
public static SearchTypeValueConverter Instance { get; } = new SearchTypeValueConverter();
|
||||
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
|
||||
{
|
||||
var cellText = values[0] == null ? string.Empty : values[0].ToString();
|
||||
@@ -23,6 +24,7 @@ namespace ShrlAlgoToolkit.RevitAddins.Converters
|
||||
}
|
||||
public class SearchFamilyValueConverter : IMultiValueConverter
|
||||
{
|
||||
public static SearchFamilyValueConverter Instance { get; } = new SearchFamilyValueConverter();
|
||||
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
|
||||
{
|
||||
var cellText = values[0] == null ? string.Empty : values[0].ToString();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<ui:NeoWindow
|
||||
Height="300"
|
||||
Height="200"
|
||||
SizeToContent="Height"
|
||||
Title="拆分模型"
|
||||
Topmost="True"
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
MinHeight="500"
|
||||
MinWidth="275"
|
||||
Title="房间饰面"
|
||||
Background="Black"
|
||||
Width="200"
|
||||
d:DataContext="{d:DesignInstance Type=rvCivil:FloorFinishesViewModel}"
|
||||
mc:Ignorable="d"
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
using System.Windows;
|
||||
|
||||
using Autodesk.Revit.DB;
|
||||
using Autodesk.Revit.DB.IFC;
|
||||
|
||||
using Nice3point.Revit.Toolkit.External;
|
||||
|
||||
using ShrlAlgoToolkit.RevitAddins.Assists;
|
||||
@@ -12,290 +14,295 @@ namespace ShrlAlgoToolkit.RevitAddins.RvCivil;
|
||||
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
|
||||
public class SplitComsByLevelCmd : ExternalCommand
|
||||
{
|
||||
public override void Execute()
|
||||
{
|
||||
var instances = Document.OfCollector().OfClass(typeof(FamilyInstance)).Cast<FamilyInstance>().ToList();
|
||||
var errors = new List<MessageModel>();
|
||||
using (TransactionGroup tg = new(Document, "按标高拆分墙、柱"))
|
||||
{
|
||||
tg.Start();
|
||||
//墙打断
|
||||
using (Transaction trans = new(Document, "楼层分割打断构件"))
|
||||
{
|
||||
trans.Start();
|
||||
public override void Execute()
|
||||
{
|
||||
var result = MessageBox.Show("可能一定时间,请耐心等待,是否继续?", "提示", MessageBoxButton.OKCancel, MessageBoxImage.Question);
|
||||
if (result != MessageBoxResult.OK)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var instances = Document.OfCollector().OfClass(typeof(FamilyInstance)).Cast<FamilyInstance>().ToList();
|
||||
var errors = new List<MessageModel>();
|
||||
using (TransactionGroup tg = new(Document, "按标高拆分墙、柱"))
|
||||
{
|
||||
tg.Start();
|
||||
//墙打断
|
||||
using (Transaction trans = new(Document, "楼层分割打断构件"))
|
||||
{
|
||||
trans.Start();
|
||||
|
||||
var walls = Document.OfCollector().OfClass(typeof(Wall)).Cast<Wall>().ToList();
|
||||
var structuralColumns = Document.OfCollector()
|
||||
.OfClass(typeof(FamilyInstance))
|
||||
.OfCategory(BuiltInCategory.OST_StructuralColumns)
|
||||
.Cast<FamilyInstance>()
|
||||
.ToList();
|
||||
var columns = Document.OfCollector()
|
||||
.OfClass(typeof(FamilyInstance))
|
||||
.OfCategory(BuiltInCategory.OST_Columns)
|
||||
.Cast<FamilyInstance>()
|
||||
.ToList();
|
||||
var elemToSplitIds = new List<ElementId>();
|
||||
foreach (var wall in walls)
|
||||
{
|
||||
//得到墙的包围框
|
||||
var canModify = true;
|
||||
foreach (var instance in instances)
|
||||
{
|
||||
if (instance.Host != null && instance.Host.Id == wall.Id)
|
||||
{
|
||||
errors.Add(new MessageModel(wall, "有族基于当前墙无法拆分"));
|
||||
canModify = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
var walls = Document.OfCollector().OfClass(typeof(Wall)).Cast<Wall>().ToList();
|
||||
var structuralColumns = Document.OfCollector()
|
||||
.OfClass(typeof(FamilyInstance))
|
||||
.OfCategory(BuiltInCategory.OST_StructuralColumns)
|
||||
.Cast<FamilyInstance>()
|
||||
.ToList();
|
||||
var columns = Document.OfCollector()
|
||||
.OfClass(typeof(FamilyInstance))
|
||||
.OfCategory(BuiltInCategory.OST_Columns)
|
||||
.Cast<FamilyInstance>()
|
||||
.ToList();
|
||||
var elemToSplitIds = new List<ElementId>();
|
||||
foreach (var wall in walls)
|
||||
{
|
||||
//得到墙的包围框
|
||||
var canModify = true;
|
||||
foreach (var instance in instances)
|
||||
{
|
||||
if (instance.Host != null && instance.Host.Id == wall.Id)
|
||||
{
|
||||
errors.Add(new MessageModel(wall, "有族基于当前墙无法拆分"));
|
||||
canModify = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (ExporterIFCUtils.HasElevationProfile(wall))
|
||||
{
|
||||
canModify = false;
|
||||
errors.Add(new MessageModel(wall, "轮廓被修改无法拆分"));
|
||||
}
|
||||
if (ExporterIFCUtils.HasElevationProfile(wall))
|
||||
{
|
||||
canModify = false;
|
||||
errors.Add(new MessageModel(wall, "轮廓被修改无法拆分"));
|
||||
}
|
||||
|
||||
var needToDelete = false;
|
||||
if (canModify)
|
||||
{
|
||||
needToDelete = SplitWallByLevel(Document, wall, ActiveView);
|
||||
}
|
||||
var needToDelete = false;
|
||||
if (canModify)
|
||||
{
|
||||
needToDelete = SplitWallByLevel(Document, wall, ActiveView);
|
||||
}
|
||||
|
||||
if (needToDelete)
|
||||
{
|
||||
elemToSplitIds.Add(wall.Id);
|
||||
}
|
||||
}
|
||||
if (needToDelete)
|
||||
{
|
||||
elemToSplitIds.Add(wall.Id);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var column in structuralColumns)
|
||||
{
|
||||
var canModify = true;
|
||||
foreach (var instance in instances)
|
||||
{
|
||||
if (instance.Host != null && instance.Host.Id == column.Id)
|
||||
{
|
||||
errors.Add(new MessageModel(column, "有族基于当前结构柱,无法拆分"));
|
||||
canModify = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
foreach (var column in structuralColumns)
|
||||
{
|
||||
var canModify = true;
|
||||
foreach (var instance in instances)
|
||||
{
|
||||
if (instance.Host != null && instance.Host.Id == column.Id)
|
||||
{
|
||||
errors.Add(new MessageModel(column, "有族基于当前结构柱,无法拆分"));
|
||||
canModify = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var needToDelete = false;
|
||||
if (canModify)
|
||||
{
|
||||
needToDelete = SplitColumnByLevel(Document, column, ActiveView);
|
||||
}
|
||||
var needToDelete = false;
|
||||
if (canModify)
|
||||
{
|
||||
needToDelete = SplitColumnByLevel(Document, column, ActiveView);
|
||||
}
|
||||
|
||||
if (needToDelete)
|
||||
{
|
||||
elemToSplitIds.Add(column.Id);
|
||||
}
|
||||
}
|
||||
if (needToDelete)
|
||||
{
|
||||
elemToSplitIds.Add(column.Id);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var column in columns)
|
||||
{
|
||||
var canModify = true;
|
||||
foreach (var instance in instances)
|
||||
{
|
||||
if (instance.Host != null && instance.Host.Id == column.Id)
|
||||
{
|
||||
errors.Add(new MessageModel(column, "有族基于当前柱,无法拆分"));
|
||||
canModify = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
foreach (var column in columns)
|
||||
{
|
||||
var canModify = true;
|
||||
foreach (var instance in instances)
|
||||
{
|
||||
if (instance.Host != null && instance.Host.Id == column.Id)
|
||||
{
|
||||
errors.Add(new MessageModel(column, "有族基于当前柱,无法拆分"));
|
||||
canModify = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var needToDelete = false;
|
||||
if (canModify)
|
||||
{
|
||||
needToDelete = SplitColumnByLevel(Document, column, ActiveView);
|
||||
}
|
||||
var needToDelete = false;
|
||||
if (canModify)
|
||||
{
|
||||
needToDelete = SplitColumnByLevel(Document, column, ActiveView);
|
||||
}
|
||||
|
||||
if (needToDelete)
|
||||
{
|
||||
elemToSplitIds.Add(column.Id);
|
||||
}
|
||||
}
|
||||
if (needToDelete)
|
||||
{
|
||||
elemToSplitIds.Add(column.Id);
|
||||
}
|
||||
}
|
||||
|
||||
Document.Delete(elemToSplitIds);
|
||||
trans.Commit();
|
||||
}
|
||||
Document.Delete(elemToSplitIds);
|
||||
trans.Commit();
|
||||
}
|
||||
|
||||
tg.Assimilate();
|
||||
}
|
||||
tg.Assimilate();
|
||||
}
|
||||
|
||||
if (errors.Any())
|
||||
{
|
||||
if (errors.Any())
|
||||
{
|
||||
WinDialogHelper.ShowModeless<MessageWin>(new MessageViewModel(UiDocument, errors, "未解决错误"));
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("处理完成", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("处理完成", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
}
|
||||
}
|
||||
|
||||
private static bool SplitColumnByLevel(Document document, FamilyInstance column, View view)
|
||||
{
|
||||
var wallBox = column.get_BoundingBox(view);
|
||||
var minZ = wallBox.Min.Z;
|
||||
var maxZ = wallBox.Max.Z;
|
||||
var allLevels = document
|
||||
.OfClass<Level>()
|
||||
.OfCategory(BuiltInCategory.OST_Levels)
|
||||
.Cast<Level>()
|
||||
.OrderBy(o => o.Elevation)
|
||||
.ToList();
|
||||
var toSplit = document
|
||||
.OfClass<Level>()
|
||||
.OfCategory(BuiltInCategory.OST_Levels)
|
||||
.Cast<Level>()
|
||||
.Where(l => l.Elevation - minZ > 0.0001 && maxZ - l.Elevation > 0.0001)
|
||||
.OrderBy(o => o.Elevation)
|
||||
.ToList();
|
||||
private static bool SplitColumnByLevel(Document document, FamilyInstance column, View view)
|
||||
{
|
||||
var wallBox = column.get_BoundingBox(view);
|
||||
var minZ = wallBox.Min.Z;
|
||||
var maxZ = wallBox.Max.Z;
|
||||
var allLevels = document
|
||||
.OfClass<Level>()
|
||||
.OfCategory(BuiltInCategory.OST_Levels)
|
||||
.Cast<Level>()
|
||||
.OrderBy(o => o.Elevation)
|
||||
.ToList();
|
||||
var toSplit = document
|
||||
.OfClass<Level>()
|
||||
.OfCategory(BuiltInCategory.OST_Levels)
|
||||
.Cast<Level>()
|
||||
.Where(l => l.Elevation - minZ > 0.0001 && maxZ - l.Elevation > 0.0001)
|
||||
.OrderBy(o => o.Elevation)
|
||||
.ToList();
|
||||
|
||||
if (toSplit.Count == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (toSplit.Count == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var n = allLevels.FindIndex(l => l.Id == toSplit[0].Id);
|
||||
var minLevel = allLevels[0];
|
||||
if (n > 0)
|
||||
{
|
||||
minLevel = allLevels[n - 1]; //存在更低的标高时,取此标高作为底标高约束
|
||||
}
|
||||
var n = allLevels.FindIndex(l => l.Id == toSplit[0].Id);
|
||||
var minLevel = allLevels[0];
|
||||
if (n > 0)
|
||||
{
|
||||
minLevel = allLevels[n - 1]; //存在更低的标高时,取此标高作为底标高约束
|
||||
}
|
||||
|
||||
var translation = XYZ.BasisZ;
|
||||
var translation = XYZ.BasisZ;
|
||||
|
||||
var bottomEleIds = ElementTransformUtils.CopyElement(document, column.Id, translation);
|
||||
var minWall = document.GetElement(bottomEleIds.FirstOrDefault()) as FamilyInstance;
|
||||
//底部约束
|
||||
minWall.get_Parameter(BuiltInParameter.FAMILY_BASE_LEVEL_PARAM).Set(minLevel.Id);
|
||||
minWall.get_Parameter(BuiltInParameter.FAMILY_BASE_LEVEL_OFFSET_PARAM).Set(minZ - minLevel.Elevation);
|
||||
minWall.get_Parameter(BuiltInParameter.FAMILY_TOP_LEVEL_PARAM).Set(toSplit[0].Id);
|
||||
minWall.get_Parameter(BuiltInParameter.FAMILY_TOP_LEVEL_OFFSET_PARAM).Set(0);
|
||||
var bottomEleIds = ElementTransformUtils.CopyElement(document, column.Id, translation);
|
||||
var minWall = document.GetElement(bottomEleIds.FirstOrDefault()) as FamilyInstance;
|
||||
//底部约束
|
||||
minWall.get_Parameter(BuiltInParameter.FAMILY_BASE_LEVEL_PARAM).Set(minLevel.Id);
|
||||
minWall.get_Parameter(BuiltInParameter.FAMILY_BASE_LEVEL_OFFSET_PARAM).Set(minZ - minLevel.Elevation);
|
||||
minWall.get_Parameter(BuiltInParameter.FAMILY_TOP_LEVEL_PARAM).Set(toSplit[0].Id);
|
||||
minWall.get_Parameter(BuiltInParameter.FAMILY_TOP_LEVEL_OFFSET_PARAM).Set(0);
|
||||
|
||||
var maxLevel = toSplit.Last();
|
||||
var m = allLevels.FindIndex(l => l.Id == toSplit.Last().Id);
|
||||
if (m < allLevels.Count - 1)
|
||||
{
|
||||
maxLevel = allLevels[m + 1]; //存在更高的标高
|
||||
}
|
||||
var maxLevel = toSplit.Last();
|
||||
var m = allLevels.FindIndex(l => l.Id == toSplit.Last().Id);
|
||||
if (m < allLevels.Count - 1)
|
||||
{
|
||||
maxLevel = allLevels[m + 1]; //存在更高的标高
|
||||
}
|
||||
|
||||
var topEleIds = ElementTransformUtils.CopyElement(document, column.Id, translation);
|
||||
var maxWall = document.GetElement(topEleIds.FirstOrDefault()) as FamilyInstance;
|
||||
var topEleIds = ElementTransformUtils.CopyElement(document, column.Id, translation);
|
||||
var maxWall = document.GetElement(topEleIds.FirstOrDefault()) as FamilyInstance;
|
||||
|
||||
maxWall.get_Parameter(BuiltInParameter.FAMILY_BASE_LEVEL_PARAM).Set(toSplit.Last().Id);
|
||||
maxWall.get_Parameter(BuiltInParameter.FAMILY_BASE_LEVEL_OFFSET_PARAM).Set(0);
|
||||
maxWall.get_Parameter(BuiltInParameter.FAMILY_TOP_LEVEL_PARAM).Set(maxLevel.Id);
|
||||
maxWall.get_Parameter(BuiltInParameter.FAMILY_TOP_LEVEL_OFFSET_PARAM).Set(maxZ - maxLevel.Elevation);
|
||||
maxWall.get_Parameter(BuiltInParameter.FAMILY_BASE_LEVEL_PARAM).Set(toSplit.Last().Id);
|
||||
maxWall.get_Parameter(BuiltInParameter.FAMILY_BASE_LEVEL_OFFSET_PARAM).Set(0);
|
||||
maxWall.get_Parameter(BuiltInParameter.FAMILY_TOP_LEVEL_PARAM).Set(maxLevel.Id);
|
||||
maxWall.get_Parameter(BuiltInParameter.FAMILY_TOP_LEVEL_OFFSET_PARAM).Set(maxZ - maxLevel.Elevation);
|
||||
|
||||
for (var i = 0; i < toSplit.Count - 1; i++)
|
||||
{
|
||||
var baseLevel = toSplit[i];
|
||||
var topLevel = toSplit[i + 1];
|
||||
var eleIds = ElementTransformUtils.CopyElement(document, column.Id, translation);
|
||||
var wallCopy = document.GetElement(eleIds.FirstOrDefault()) as FamilyInstance;
|
||||
wallCopy.get_Parameter(BuiltInParameter.FAMILY_BASE_LEVEL_PARAM).Set(baseLevel.Id);
|
||||
wallCopy.get_Parameter(BuiltInParameter.FAMILY_BASE_LEVEL_OFFSET_PARAM).Set(0);
|
||||
for (var i = 0; i < toSplit.Count - 1; i++)
|
||||
{
|
||||
var baseLevel = toSplit[i];
|
||||
var topLevel = toSplit[i + 1];
|
||||
var eleIds = ElementTransformUtils.CopyElement(document, column.Id, translation);
|
||||
var wallCopy = document.GetElement(eleIds.FirstOrDefault()) as FamilyInstance;
|
||||
wallCopy.get_Parameter(BuiltInParameter.FAMILY_BASE_LEVEL_PARAM).Set(baseLevel.Id);
|
||||
wallCopy.get_Parameter(BuiltInParameter.FAMILY_BASE_LEVEL_OFFSET_PARAM).Set(0);
|
||||
|
||||
wallCopy.get_Parameter(BuiltInParameter.FAMILY_TOP_LEVEL_PARAM).Set(topLevel.Id);
|
||||
wallCopy.get_Parameter(BuiltInParameter.FAMILY_TOP_LEVEL_OFFSET_PARAM).Set(0);
|
||||
//if (i == levelsToSplit.Count - 2 && maxZ < maxLevel.Bottom)
|
||||
//{
|
||||
// wallCopy.get_Parameter(BuiltInParameter.WALL_TOP_OFFSET).Set(maxZ - maxLevel.Bottom);
|
||||
//}
|
||||
//Wall.Create(document, curve, wall.WallType.ViewId, levels[i].ViewId, 100, 100, false, false);
|
||||
}
|
||||
wallCopy.get_Parameter(BuiltInParameter.FAMILY_TOP_LEVEL_PARAM).Set(topLevel.Id);
|
||||
wallCopy.get_Parameter(BuiltInParameter.FAMILY_TOP_LEVEL_OFFSET_PARAM).Set(0);
|
||||
//if (i == levelsToSplit.Count - 2 && maxZ < maxLevel.Bottom)
|
||||
//{
|
||||
// wallCopy.get_Parameter(BuiltInParameter.WALL_TOP_OFFSET).Set(maxZ - maxLevel.Bottom);
|
||||
//}
|
||||
//Wall.Create(document, curve, wall.WallType.ViewId, levels[i].ViewId, 100, 100, false, false);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 切分墙体
|
||||
/// </summary>
|
||||
/// <param name="doc"></param>
|
||||
/// <param name="wall"></param>
|
||||
/// <param name="view">三维视图</param>
|
||||
/// <returns></returns>
|
||||
private static bool SplitWallByLevel(Document doc, Wall wall, View view)
|
||||
{
|
||||
var wallBox = wall.get_BoundingBox(view);
|
||||
var minZ = wallBox.Min.Z;
|
||||
var maxZ = wallBox.Max.Z;
|
||||
var allLevels = new FilteredElementCollector(doc)
|
||||
.OfClass(typeof(Level))
|
||||
.OfCategory(BuiltInCategory.OST_Levels)
|
||||
.Cast<Level>()
|
||||
.OrderBy(o => o.Elevation)
|
||||
.ToList();
|
||||
var toSplit = new FilteredElementCollector(doc)
|
||||
.OfClass(typeof(Level))
|
||||
.OfCategory(BuiltInCategory.OST_Levels)
|
||||
.Cast<Level>()
|
||||
.Where(l => l.Elevation - minZ > 0.0001 && maxZ - l.Elevation > 0.0001)
|
||||
.OrderBy(o => o.Elevation)
|
||||
.ToList();
|
||||
/// <summary>
|
||||
/// 切分墙体
|
||||
/// </summary>
|
||||
/// <param name="doc"></param>
|
||||
/// <param name="wall"></param>
|
||||
/// <param name="view">三维视图</param>
|
||||
/// <returns></returns>
|
||||
private static bool SplitWallByLevel(Document doc, Wall wall, View view)
|
||||
{
|
||||
var wallBox = wall.get_BoundingBox(view);
|
||||
var minZ = wallBox.Min.Z;
|
||||
var maxZ = wallBox.Max.Z;
|
||||
var allLevels = new FilteredElementCollector(doc)
|
||||
.OfClass(typeof(Level))
|
||||
.OfCategory(BuiltInCategory.OST_Levels)
|
||||
.Cast<Level>()
|
||||
.OrderBy(o => o.Elevation)
|
||||
.ToList();
|
||||
var toSplit = new FilteredElementCollector(doc)
|
||||
.OfClass(typeof(Level))
|
||||
.OfCategory(BuiltInCategory.OST_Levels)
|
||||
.Cast<Level>()
|
||||
.Where(l => l.Elevation - minZ > 0.0001 && maxZ - l.Elevation > 0.0001)
|
||||
.OrderBy(o => o.Elevation)
|
||||
.ToList();
|
||||
|
||||
if (toSplit.Count == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (toSplit.Count == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var n = allLevels.FindIndex(l => l.Id == toSplit[0].Id);
|
||||
var minLevel = allLevels[0];
|
||||
if (n > 0)
|
||||
{
|
||||
minLevel = allLevels[n - 1]; //存在更低的标高时,取此标高作为底标高约束
|
||||
}
|
||||
var n = allLevels.FindIndex(l => l.Id == toSplit[0].Id);
|
||||
var minLevel = allLevels[0];
|
||||
if (n > 0)
|
||||
{
|
||||
minLevel = allLevels[n - 1]; //存在更低的标高时,取此标高作为底标高约束
|
||||
}
|
||||
|
||||
var translation = XYZ.BasisZ;
|
||||
var bottomEleIds = ElementTransformUtils.CopyElement(doc, wall.Id, translation);
|
||||
var minWall = doc.GetElement(bottomEleIds.FirstOrDefault()) as Wall;
|
||||
//底部约束
|
||||
minWall.get_Parameter(BuiltInParameter.WALL_BASE_CONSTRAINT).Set(minLevel.Id);
|
||||
minWall.get_Parameter(BuiltInParameter.WALL_BASE_OFFSET).Set(minZ - minLevel.Elevation);
|
||||
minWall.get_Parameter(BuiltInParameter.WALL_HEIGHT_TYPE).Set(toSplit[0].Id);
|
||||
minWall.get_Parameter(BuiltInParameter.WALL_TOP_OFFSET).Set(0);
|
||||
var translation = XYZ.BasisZ;
|
||||
var bottomEleIds = ElementTransformUtils.CopyElement(doc, wall.Id, translation);
|
||||
var minWall = doc.GetElement(bottomEleIds.FirstOrDefault()) as Wall;
|
||||
//底部约束
|
||||
minWall.get_Parameter(BuiltInParameter.WALL_BASE_CONSTRAINT).Set(minLevel.Id);
|
||||
minWall.get_Parameter(BuiltInParameter.WALL_BASE_OFFSET).Set(minZ - minLevel.Elevation);
|
||||
minWall.get_Parameter(BuiltInParameter.WALL_HEIGHT_TYPE).Set(toSplit[0].Id);
|
||||
minWall.get_Parameter(BuiltInParameter.WALL_TOP_OFFSET).Set(0);
|
||||
|
||||
//Wall.Create(doc, (wall.Location as LocationCurve).Curve, wall.WallType.Id, minLevel.Id, minLevel.Bottom - minZ, minZ - minLevel.Bottom, wall.Flipped, Convert.ToBoolean(wall.get_Parameter(BuiltInParameter.WALL_STRUCTURAL_SIGNIFICANT).AsInteger()));
|
||||
//Wall.Create(doc, (wall.Location as LocationCurve).Curve, wall.WallType.Id, minLevel.Id, minLevel.Bottom - minZ, minZ - minLevel.Bottom, wall.Flipped, Convert.ToBoolean(wall.get_Parameter(BuiltInParameter.WALL_STRUCTURAL_SIGNIFICANT).AsInteger()));
|
||||
|
||||
var maxLevel = toSplit.Last();
|
||||
var m = allLevels.FindIndex(l => l.Id == toSplit.Last().Id);
|
||||
if (m < allLevels.Count - 1)
|
||||
{
|
||||
maxLevel = allLevels[m + 1]; //存在更高的标高
|
||||
}
|
||||
var maxLevel = toSplit.Last();
|
||||
var m = allLevels.FindIndex(l => l.Id == toSplit.Last().Id);
|
||||
if (m < allLevels.Count - 1)
|
||||
{
|
||||
maxLevel = allLevels[m + 1]; //存在更高的标高
|
||||
}
|
||||
|
||||
var topEleIds = ElementTransformUtils.CopyElement(doc, wall.Id, translation);
|
||||
doc.Regenerate();
|
||||
var maxWall = doc.GetElement(topEleIds.FirstOrDefault()) as Wall;
|
||||
var topEleIds = ElementTransformUtils.CopyElement(doc, wall.Id, translation);
|
||||
doc.Regenerate();
|
||||
var maxWall = doc.GetElement(topEleIds.FirstOrDefault()) as Wall;
|
||||
|
||||
maxWall.get_Parameter(BuiltInParameter.WALL_BASE_CONSTRAINT).Set(toSplit.Last().Id);
|
||||
maxWall.get_Parameter(BuiltInParameter.WALL_BASE_OFFSET).Set(0);
|
||||
maxWall.get_Parameter(BuiltInParameter.WALL_HEIGHT_TYPE).Set(maxLevel.Id);
|
||||
maxWall.get_Parameter(BuiltInParameter.WALL_TOP_OFFSET).Set(maxZ - maxLevel.Elevation);
|
||||
maxWall.get_Parameter(BuiltInParameter.WALL_BASE_CONSTRAINT).Set(toSplit.Last().Id);
|
||||
maxWall.get_Parameter(BuiltInParameter.WALL_BASE_OFFSET).Set(0);
|
||||
maxWall.get_Parameter(BuiltInParameter.WALL_HEIGHT_TYPE).Set(maxLevel.Id);
|
||||
maxWall.get_Parameter(BuiltInParameter.WALL_TOP_OFFSET).Set(maxZ - maxLevel.Elevation);
|
||||
|
||||
for (var i = 0; i < toSplit.Count - 1; i++)
|
||||
{
|
||||
var baseLevel = toSplit[i];
|
||||
var topLevel = toSplit[i + 1];
|
||||
var eleIds = ElementTransformUtils.CopyElement(doc, wall.Id, translation);
|
||||
doc.Regenerate();
|
||||
var wallCopy = doc.GetElement(eleIds.FirstOrDefault()) as Wall;
|
||||
wallCopy.get_Parameter(BuiltInParameter.WALL_BASE_CONSTRAINT).Set(baseLevel.Id);
|
||||
wallCopy.get_Parameter(BuiltInParameter.WALL_BASE_OFFSET).Set(0);
|
||||
for (var i = 0; i < toSplit.Count - 1; i++)
|
||||
{
|
||||
var baseLevel = toSplit[i];
|
||||
var topLevel = toSplit[i + 1];
|
||||
var eleIds = ElementTransformUtils.CopyElement(doc, wall.Id, translation);
|
||||
doc.Regenerate();
|
||||
var wallCopy = doc.GetElement(eleIds.FirstOrDefault()) as Wall;
|
||||
wallCopy.get_Parameter(BuiltInParameter.WALL_BASE_CONSTRAINT).Set(baseLevel.Id);
|
||||
wallCopy.get_Parameter(BuiltInParameter.WALL_BASE_OFFSET).Set(0);
|
||||
|
||||
wallCopy.get_Parameter(BuiltInParameter.WALL_HEIGHT_TYPE).Set(topLevel.Id);
|
||||
wallCopy.get_Parameter(BuiltInParameter.WALL_TOP_OFFSET).Set(0);
|
||||
//if (i == levelsToSplit.Count - 2 && maxZ < maxLevel.Bottom)
|
||||
//{
|
||||
// wallCopy.get_Parameter(BuiltInParameter.WALL_TOP_OFFSET).Set(maxZ - maxLevel.Bottom);
|
||||
//}
|
||||
//Wall.Create(document, curve, wall.WallType.ViewId, levels[i].ViewId, 100, 100, false, false);
|
||||
}
|
||||
wallCopy.get_Parameter(BuiltInParameter.WALL_HEIGHT_TYPE).Set(topLevel.Id);
|
||||
wallCopy.get_Parameter(BuiltInParameter.WALL_TOP_OFFSET).Set(0);
|
||||
//if (i == levelsToSplit.Count - 2 && maxZ < maxLevel.Bottom)
|
||||
//{
|
||||
// wallCopy.get_Parameter(BuiltInParameter.WALL_TOP_OFFSET).Set(maxZ - maxLevel.Bottom);
|
||||
//}
|
||||
//Wall.Create(document, curve, wall.WallType.ViewId, levels[i].ViewId, 100, 100, false, false);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
xmlns:attach="clr-namespace:ShrlAlgoToolkit.Mvvm.Attach;assembly=ShrlAlgoToolkit.Mvvm"
|
||||
xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:conv="clr-namespace:ShrlAlgoToolkit.RevitAddins.Converters"
|
||||
xmlns:local="clr-namespace:ShrlAlgoToolkit.RevitAddins.RvFamily"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:ui="https://github.com/ShrlAlgo/NeoUI"
|
||||
@@ -27,43 +28,17 @@
|
||||
Rows="*,Auto,Auto">
|
||||
<GroupBox Header="族类别">
|
||||
<ListBox
|
||||
Style="{StaticResource ChipListBoxStyle}"
|
||||
x:Name="LbCategories"
|
||||
Height="400"
|
||||
d:ItemsSource="{d:SampleData ItemCount=5}"
|
||||
DisplayMemberPath="Key"
|
||||
ItemsSource="{Binding Collection, Mode=OneWay}"
|
||||
SelectionMode="Multiple">
|
||||
<!-- <ListBox.ItemsPanel>
|
||||
<ItemsPanelTemplate>
|
||||
<WrapPanel />
|
||||
</ItemsPanelTemplate>
|
||||
</ListBox.ItemsPanel>-->
|
||||
<!-- <ListBox.ItemsPanel>
|
||||
<ItemsPanelTemplate>
|
||||
<WrapPanel />
|
||||
</ItemsPanelTemplate>
|
||||
</ListBox.ItemsPanel>-->
|
||||
<!-- <ListBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Border CornerRadius="5" />
|
||||
</DataTemplate>
|
||||
</ListBox.ItemTemplate>-->
|
||||
<!-- <ListBox.ItemContainerStyle>
|
||||
<Style />
|
||||
</ListBox.ItemContainerStyle>-->
|
||||
<b:Interaction.Triggers>
|
||||
<b:EventTrigger EventName="SelectionChanged">
|
||||
<b:InvokeCommandAction Command="{Binding GetRenameItemsCommand}" CommandParameter="{Binding SelectedItems, RelativeSource={RelativeSource AncestorType={x:Type ListBox}, Mode=FindAncestor}}" />
|
||||
</b:EventTrigger>
|
||||
</b:Interaction.Triggers>
|
||||
<!-- <ListBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<CheckBox IsChecked="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType=ListBoxItem}}" />
|
||||
<TextBlock VerticalAlignment="Center" Text="{Binding Value}" />
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</ListBox.ItemTemplate>-->
|
||||
</ListBox>
|
||||
</GroupBox>
|
||||
<DockPanel>
|
||||
@@ -97,12 +72,12 @@
|
||||
ItemsSource="{Binding RenameItems}"
|
||||
SelectionUnit="Cell">
|
||||
<DataGrid.Resources>
|
||||
<Style BasedOn="{StaticResource DefaultDataGridCellStyle}" TargetType="{x:Type DataGridCell}">
|
||||
<Style BasedOn="{StaticResource DataGridCellDefault}" TargetType="{x:Type DataGridCell}">
|
||||
<!-- <Setter Property="HorizontalAlignment" Value="Center" />
|
||||
<Setter Property="VerticalAlignment" Value="Center" />-->
|
||||
<Setter Property="attach:TextSearchAssist.IsTextMatch">
|
||||
<Setter.Value>
|
||||
<MultiBinding Converter="{StaticResource SearchFamilyValueConverter}">
|
||||
<MultiBinding Converter="{x:Static conv:SearchFamilyValueConverter.Instance}">
|
||||
<Binding Path="Content.Text" RelativeSource="{RelativeSource Mode=Self}" />
|
||||
<Binding Path="(attach:TextSearchAssist.SearchValue)" RelativeSource="{RelativeSource Mode=Self}" />
|
||||
<Binding RelativeSource="{RelativeSource Mode=Self}" />
|
||||
@@ -117,7 +92,7 @@
|
||||
</Style>
|
||||
</DataGrid.Resources>
|
||||
<DataGrid.ColumnHeaderStyle>
|
||||
<Style BasedOn="{StaticResource DefaultDataGridColumnHeaderStyle}" TargetType="{x:Type DataGridColumnHeader}">
|
||||
<Style BasedOn="{StaticResource DataGridColumnHeaderDefault}" TargetType="{x:Type DataGridColumnHeader}">
|
||||
<Setter Property="HorizontalContentAlignment" Value="Center" />
|
||||
</Style>
|
||||
</DataGrid.ColumnHeaderStyle>
|
||||
@@ -125,8 +100,8 @@
|
||||
<DataGridCheckBoxColumn
|
||||
MinWidth="80"
|
||||
Binding="{Binding IsSelected, UpdateSourceTrigger=PropertyChanged}"
|
||||
EditingElementStyle="{StaticResource DataGridCheckBoxEditingElementDefaultStyle}"
|
||||
ElementStyle="{StaticResource DataGridCheckBoxElementDefaultStyle}">
|
||||
EditingElementStyle="{StaticResource DataGridCheckBox}"
|
||||
ElementStyle="{StaticResource DataGridCheckBox}">
|
||||
<DataGridCheckBoxColumn.Header>
|
||||
<Border Background="Transparent">
|
||||
<CheckBox
|
||||
@@ -168,7 +143,7 @@
|
||||
<DataGridTextColumn
|
||||
MinWidth="80"
|
||||
Binding="{Binding NewFamilyName, UpdateSourceTrigger=PropertyChanged}"
|
||||
EditingElementStyle="{StaticResource DefaultTextBoxStyle}"
|
||||
EditingElementStyle="{StaticResource DefaultTextBox}"
|
||||
Header="新族名称">
|
||||
<DataGridTextColumn.ElementStyle>
|
||||
<Style TargetType="{x:Type TextBlock}">
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
Width="900"
|
||||
d:DataContext="{d:DesignInstance local:RenameTypeViewModel}"
|
||||
mc:Ignorable="d"
|
||||
xmlns:conv="clr-namespace:ShrlAlgoToolkit.RevitAddins.Converters"
|
||||
x:Class="ShrlAlgoToolkit.RevitAddins.RvFamily.RenameTypeView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:attach="clr-namespace:ShrlAlgoToolkit.Mvvm.Attach;assembly=ShrlAlgoToolkit.Mvvm"
|
||||
@@ -27,6 +28,7 @@
|
||||
Rows="*,Auto,Auto">
|
||||
<GroupBox Header="族类别">
|
||||
<ListBox
|
||||
Style="{StaticResource ChipListBoxStyle}"
|
||||
DisplayMemberPath="Key"
|
||||
ItemsSource="{Binding Collection, Mode=OneWay}"
|
||||
SelectionMode="Multiple"
|
||||
@@ -86,10 +88,10 @@
|
||||
SelectionUnit="Cell"
|
||||
attach:TextSearchAssist.SearchValue="{Binding Text, ElementName=TbFound, UpdateSourceTrigger=PropertyChanged}">
|
||||
<DataGrid.Resources>
|
||||
<Style BasedOn="{StaticResource DefaultDataGridCellStyle}" TargetType="{x:Type DataGridCell}">
|
||||
<Style BasedOn="{StaticResource DataGridCellDefault}" TargetType="{x:Type DataGridCell}">
|
||||
<Setter Property="attach:TextSearchAssist.IsTextMatch">
|
||||
<Setter.Value>
|
||||
<MultiBinding Converter="{StaticResource SearchTypeValueConverter}">
|
||||
<MultiBinding Converter="{x:Static conv:SearchTypeValueConverter.Instance}">
|
||||
<Binding Path="Content.Text" RelativeSource="{RelativeSource Mode=Self}" />
|
||||
<Binding Path="(attach:TextSearchAssist.SearchValue)" RelativeSource="{RelativeSource Mode=Self}" />
|
||||
<Binding RelativeSource="{RelativeSource Mode=Self}" />
|
||||
@@ -104,7 +106,7 @@
|
||||
</Style>
|
||||
</DataGrid.Resources>
|
||||
<DataGrid.ColumnHeaderStyle>
|
||||
<Style BasedOn="{StaticResource DefaultDataGridColumnHeaderStyle}" TargetType="{x:Type DataGridColumnHeader}">
|
||||
<Style BasedOn="{StaticResource DataGridColumnHeaderDefault}" TargetType="{x:Type DataGridColumnHeader}">
|
||||
<Setter Property="HorizontalContentAlignment" Value="Center" />
|
||||
<Setter Property="VerticalContentAlignment" Value="Center" />
|
||||
</Style>
|
||||
@@ -112,8 +114,8 @@
|
||||
<DataGrid.Columns>
|
||||
<DataGridCheckBoxColumn
|
||||
Binding="{Binding IsSelected, UpdateSourceTrigger=PropertyChanged}"
|
||||
EditingElementStyle="{StaticResource DataGridCheckBoxEditingElementDefaultStyle}"
|
||||
ElementStyle="{StaticResource DataGridCheckBoxElementDefaultStyle}">
|
||||
EditingElementStyle="{StaticResource DataGridCheckBox}"
|
||||
ElementStyle="{StaticResource DataGridCheckBox}">
|
||||
<DataGridCheckBoxColumn.Header>
|
||||
<CheckBox
|
||||
Content="全选"
|
||||
@@ -159,7 +161,7 @@
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn
|
||||
Binding="{Binding NewTypeName, UpdateSourceTrigger=PropertyChanged}"
|
||||
EditingElementStyle="{StaticResource DefaultTextBoxStyle}"
|
||||
EditingElementStyle="{StaticResource DefaultTextBox}"
|
||||
Header="新族类型名称"
|
||||
MinWidth="80">
|
||||
<DataGridTextColumn.ElementStyle>
|
||||
@@ -177,7 +179,7 @@
|
||||
IsEnabled="{Binding CanInput}"
|
||||
Margin="5"
|
||||
ui:InputAssist.Placeholder="前缀">
|
||||
<Binding Path="ui:InputAssist.PrefixText" UpdateSourceTrigger="PropertyChanged">
|
||||
<Binding Path="PrefixText" UpdateSourceTrigger="PropertyChanged">
|
||||
<Binding.ValidationRules>
|
||||
<validationRules:UndefinedCharRules ValidatesOnTargetUpdated="True" />
|
||||
</Binding.ValidationRules>
|
||||
@@ -187,7 +189,7 @@
|
||||
IsEnabled="{Binding CanInput}"
|
||||
Margin="5"
|
||||
ui:InputAssist.Placeholder="后缀">
|
||||
<Binding Path="ui:InputAssist.SuffixText" UpdateSourceTrigger="PropertyChanged">
|
||||
<Binding Path="SuffixText" UpdateSourceTrigger="PropertyChanged">
|
||||
<Binding.ValidationRules>
|
||||
<validationRules:UndefinedCharRules ValidatesOnTargetUpdated="True" />
|
||||
</Binding.ValidationRules>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<ui:NeoWindow
|
||||
Height="100"
|
||||
Height="150"
|
||||
MinHeight="110"
|
||||
Title="物探管网"
|
||||
Width="500"
|
||||
|
||||
@@ -110,6 +110,6 @@
|
||||
Command="{Binding ConnectCommand}"
|
||||
Content="连接管线"
|
||||
HorizontalAlignment="Stretch"
|
||||
ui:ButtonAssist.Icon="PlugConnect" />
|
||||
ui:ButtonAssist.Icon="{ui:Icon SymbolValue=PlugConnect}" />
|
||||
</ui:StackPanel>
|
||||
</ui:NeoWindow>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using Autodesk.Revit.Attributes;
|
||||
using Autodesk.Revit.DB;
|
||||
|
||||
using Nice3point.Revit.Toolkit.External;
|
||||
|
||||
|
||||
@@ -11,27 +12,34 @@ namespace ShrlAlgoToolkit.RevitAddins.RvMEP
|
||||
{
|
||||
public override void Execute()
|
||||
{
|
||||
ICollection<FamilyInstance> familyInstances;
|
||||
if (UiDocument.Selection.GetElementIds().Count > 0)
|
||||
try
|
||||
{
|
||||
ICollection<FamilyInstance> familyInstances;
|
||||
if (UiDocument.Selection.GetElementIds().Count > 0)
|
||||
{
|
||||
familyInstances = UiDocument.Selection.GetElementIds().Select(Document.GetElement).OfType<FamilyInstance>().ToList();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
familyInstances = UiDocument.SelectObjects<FamilyInstance>("请选择族实例");
|
||||
}
|
||||
Document.Invoke(
|
||||
ts =>
|
||||
{
|
||||
foreach (var ins in familyInstances)
|
||||
{
|
||||
if (ins.CanFlipWorkPlane)
|
||||
{
|
||||
ins.IsWorkPlaneFlipped = !ins.IsWorkPlaneFlipped;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
familyInstances = UiDocument.Selection.GetElementIds().Select(Document.GetElement).OfType<FamilyInstance>().ToList();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
familyInstances = UiDocument.SelectObjects<FamilyInstance>("请选择族实例");
|
||||
}
|
||||
Document.Invoke(
|
||||
ts =>
|
||||
{
|
||||
foreach (var ins in familyInstances)
|
||||
{
|
||||
if (ins.CanFlipWorkPlane)
|
||||
{
|
||||
ins.IsWorkPlaneFlipped = !ins.IsWorkPlaneFlipped;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@
|
||||
x:Class="ShrlAlgoToolkit.RevitAddins.RvMEP.HeadroomCheckView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
|
||||
xmlns:conv="clr-namespace:ShrlAlgoToolkit.RevitAddins.Converters"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:ShrlAlgoToolkit.RevitAddins.RvMEP"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
@@ -36,7 +37,7 @@
|
||||
<DataGrid.Columns>
|
||||
<DataGridCheckBoxColumn
|
||||
Binding="{Binding IsSelected}"
|
||||
ElementStyle="{StaticResource DataGridCheckBoxElementDefaultStyle}"
|
||||
ElementStyle="{StaticResource DataGridCheckBox}"
|
||||
Header="选择"
|
||||
Width="60" />
|
||||
<DataGridTextColumn
|
||||
@@ -46,7 +47,7 @@
|
||||
<DataGridTemplateColumn Header="颜色" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Border Background="{Binding Color, Converter={StaticResource Revit2MediaColorConverter}}" ToolTip="生成三维房间时的颜色" />
|
||||
<Border Background="{Binding Color, Converter={x:Static conv:Rv2WinColorConverter.Instance}}" ToolTip="生成三维房间时的颜色" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
</RadioButton.IsChecked>
|
||||
</RadioButton>
|
||||
<RadioButton Content="自定义" x:Name="LbCustom" />
|
||||
<TextBox Text="{Binding Angle, UpdateSourceTrigger=PropertyChanged}" Visibility="{Binding IsChecked, Converter={StaticResource BooleanToVisibilityConverter}, ElementName=LbCustom}" />
|
||||
<TextBox Text="{Binding Angle, UpdateSourceTrigger=PropertyChanged}" Visibility="{Binding IsChecked, Converter={x:Static ui:BooleanToVisibilityConverter.CollapsedInstance}, ElementName=LbCustom}" />
|
||||
</UniformGrid>
|
||||
</GroupBox>
|
||||
<CheckBox
|
||||
|
||||
@@ -81,7 +81,6 @@
|
||||
Content="编辑" />
|
||||
</Border>
|
||||
|
||||
<!--<syncfusion:ColorPicker Color="{Binding FillColor, Converter={StaticResource Revit2MediaColorConverter}, UpdateSourceTrigger=PropertyChanged}" />-->
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
Reference in New Issue
Block a user