Skip to content

Commit

Permalink
add more visualizations
Browse files Browse the repository at this point in the history
  • Loading branch information
NeVeSpl committed Oct 9, 2024
1 parent ccd465f commit 63f360a
Show file tree
Hide file tree
Showing 11 changed files with 112 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@ internal sealed class CurveHandler : TypeHandler<Curve>
[CodeToString]
protected override IEnumerable<VisualizationItem> GetVisualization(SnoopableContext context, Curve curve)
{
if (curve is Line line)
{
yield return new VisualizationItem("Line", "Origin", new CubeDrawingVisual(line.Origin, VisualizationItem.Accent1Color));
yield return new VisualizationItem("Line", "Direction", new ArrowDrawingVisual(line.Origin, line.Direction, VisualizationItem.Accent2Color));
}

if (curve.IsBound)
{
var startPoint = curve.GetEndPoint(0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,12 @@ protected override IEnumerable<VisualizationItem> GetVisualization(SnoopableCont
{
var curve = edge.AsCurve();

if (curve is Line line)
{
//yield return new VisualizationItem("Edge", "AsCurve().Origin", new CubeDrawingVisual(line.Origin, VisualizationItem.Accent1Color));
//yield return new VisualizationItem("Edge", "AsCurve().Direction", new ArrowDrawingVisual(line.Origin, line.Direction, VisualizationItem.Accent2Color));
}

if (curve.IsBound)
{
var startPoint = curve.GetEndPoint(0);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Autodesk.Revit.DB;
using NSourceGenerators;
using RevitDBExplorer.Domain.DataModel.ValueContainers.Base;
Expand Down Expand Up @@ -40,14 +41,51 @@ protected override IEnumerable<SnoopableObject> Snooop(SnoopableContext context,
protected override bool CanBeVisualized(SnoopableContext context, Element element) => element is not ElementType;
[CodeToString]
protected override IEnumerable<VisualizationItem> GetVisualization(SnoopableContext context, Element element)
{
{
var bb = element.get_BoundingBox(null);
var refPoint = bb.CenterPoint();

if (element is FamilyInstance familyInstance)
{
yield return new VisualizationItem("FamilyInstance", "FacingOrientation", new ArrowDrawingVisual(refPoint, familyInstance.FacingOrientation, VisualizationItem.Accent1Color));
yield return new VisualizationItem("FamilyInstance", "HandOrientation", new ArrowDrawingVisual(refPoint, familyInstance.HandOrientation, VisualizationItem.Accent2Color));

var totalTransform = familyInstance.GetTotalTransform();
var transformedOrgin = totalTransform.OfPoint(XYZ.Zero);

yield return new VisualizationItem("FamilyInstance", "GetTotalTransform", new VectorDrawingVisual(XYZ.Zero, transformedOrgin, VisualizationItem.Accent3Color));

if (familyInstance.HasSweptProfile())
{
var profile = familyInstance.GetSweptProfile();
var sweptProfile = profile.GetSweptProfile();
//yield return new VisualizationItem("FamilyInstance", "GetSweptProfile().GetSweptProfile().Curves", new CurvesDrawingVisual(sweptProfile.Curves.ToEnumerable().ToArray(), VisualizationItem.Accent3Color));
}
}


if (element is Wall wall)
{
yield return new VisualizationItem("Wall", "Orientation", new ArrowDrawingVisual(refPoint, wall.Orientation, VisualizationItem.Accent1Color));
}

if (element.Location is not null)
{
if (element.Location is LocationPoint locationPoint)
{
yield return new VisualizationItem("Element", "Location.Point", new CubeDrawingVisual(locationPoint.Point, VisualizationItem.PointColor));
}
if (element.Location is LocationCurve locationCurve)
{
yield return new VisualizationItem("Element", "Location.Curve", new CurveDrawingVisual(locationCurve.Curve, VisualizationItem.PointColor));
}
}

if (bb != null && (bb.Max != null) && (bb.Min != null))
{
yield return new VisualizationItem("Element", "get_BoundingBox(null).Min", new CrossDrawingVisual(bb.Min, VisualizationItem.StartColor));
yield return new VisualizationItem("Element", "get_BoundingBox(null).Max", new CrossDrawingVisual(bb.Max, VisualizationItem.EndColor));
}
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,13 @@ protected override IEnumerable<VisualizationItem> GetVisualization(SnoopableCont
{
if (rebar.IsRebarShapeDriven())
{
var bb = rebar.get_BoundingBox(null);
var center = (bb.Min + bb.Max) / 2;
var refPoint = rebar.get_BoundingBox(null).CenterPoint();


var rebarShapeDrivenAccessor = rebar.GetShapeDrivenAccessor();
var normal = rebarShapeDrivenAccessor.Normal;

yield return new VisualizationItem("Rebar", "GetShapeDrivenAccessor().Normal", new ArrowDrawingVisual(center, normal, VisualizationItem.NormalColor));
yield return new VisualizationItem("Rebar", "GetShapeDrivenAccessor().Normal", new ArrowDrawingVisual(refPoint, normal, VisualizationItem.NormalColor));

var curves = rebar.GetCenterlineCurves(false, true, true, MultiplanarOption.IncludeOnlyPlanarCurves, 0);
var startPoint = curves.First().GetEndPoint(0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,20 @@ internal sealed class SolidHandler : TypeHandler<Solid>
protected override bool CanBeVisualized(SnoopableContext context, Solid solid) => true;
protected override IEnumerable<VisualizationItem> GetVisualization(SnoopableContext context, Solid solid)
{
XYZ centroid = null;
try
{
centroid = solid.ComputeCentroid();
}
catch
{

}
if (centroid != null)
{
yield return new VisualizationItem("Solid", "ComputeCentroid", new CubeDrawingVisual(centroid, VisualizationItem.PointColor));
}

yield return new VisualizationItem("Solid", "*", new SolidDrawingVisual(solid, VisualizationItem.SolidColor));
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using Autodesk.Revit.DB;
using RevitDBExplorer.Domain.DataModel.ValueContainers.Base;
using RevitExplorer.Visualizations.DrawingVisuals;

// (c) Revit Database Explorer https://github.com/NeVeSpl/RevitDBExplorer/blob/main/license.md

Expand All @@ -25,6 +26,14 @@ protected override string ToLabel(SnoopableContext context, Transform transform)
return $"Transform: {id}";
}



protected override bool CanBeVisualized(SnoopableContext context, Transform transform) => true;


protected override IEnumerable<VisualizationItem> GetVisualization(SnoopableContext context, Transform transform)
{
var transformedOrgin = transform.OfPoint(XYZ.Zero);
yield return new VisualizationItem("Transform", "*", new VectorDrawingVisual(XYZ.Zero, transformedOrgin, VisualizationItem.Accent3Color));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,10 @@ internal class VisualizationItem
public readonly static Color StartColor = new Color(0, 255, 0);
public readonly static Color EndColor = new Color(255, 0, 0);
public readonly static Color CurveColor = new Color(80, 175, 228);
public readonly static Color PointColor = new Color(255, 69, 0);
public readonly static Color PointColor = new Color(0, 0, 255);
public readonly static Color Accent1Color = new Color(0, 255, 255);
public readonly static Color Accent2Color = new Color(255, 0, 255);
public readonly static Color Accent3Color = new Color(255, 255, 0);


public string Group { get; set; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,16 @@ namespace Autodesk.Revit.DB
{
internal static class BoundingBoxXYZExtensions
{
public static XYZ CenterPoint(this BoundingBoxXYZ bb)
{
if ((bb?.Max != null) && (bb?.Min != null))
{
return bb.Min.Add(0.5 * bb.Max.Subtract(bb.Min));
}
return XYZ.Zero;
}


public static IList<Line> GetEdges(this BoundingBoxXYZ bb)
{
var min = bb.Transform.OfPoint(bb.Min);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using System.Collections.Generic;

// (c) Revit Database Explorer https://github.com/NeVeSpl/RevitDBExplorer/blob/main/license.md

namespace Autodesk.Revit.DB
{
public static class CurveArrayExtensions
{
public static IEnumerable<Curve> ToEnumerable(this CurveArray array)
{
foreach (Curve curve in array)
{
yield return curve;
}
}
}
}
2 changes: 1 addition & 1 deletion sources/RevitDBExplorer/RevitDBExplorer.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@
<PackageReference Include="NSourceGenerators.CodeToString" Version="0.4.0" />
<PackageReference Include="RevitExplorer.Augmentations" Version="1.2.0.$(RevitYear)" />
<PackageReference Include="RevitExplorer.Scripting" Version="1.3.0.$(RevitYear)" />
<PackageReference Include="RevitExplorer.Visualizations" Version="1.3.7.$(RevitYear)" />
<PackageReference Include="RevitExplorer.Visualizations" Version="1.3.9.$(RevitYear)" />
<PackageReference Include="SimMetrics.Net" Version="1.0.5" />
</ItemGroup>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
<controls:TextBoxWithPlaceholder Text="{Binding DatabaseQuery, Mode=TwoWay, Delay=1000, UpdateSourceTrigger=PropertyChanged}"
AutocompleteItemProvider="{Binding DatabaseQueryAutocompleteItemProvider}"
IsPopupOpen="{Binding IsPopupOpen}"
Placeholder="Query Revit database with RDQ">
Placeholder="Query Revit database">
<!--ToolTip="{Binding DatabaseQueryToolTip}"
ToolTipService.ShowDuration="50000"-->

Expand Down

0 comments on commit 63f360a

Please sign in to comment.