Alien
June 24, 2024, 12:37pm
21
Doesn’t work with points or lines properly.
Point.PruneDuplicates is the node which you seek.
There is no equivalent for lines, and the ones which I have seen (IMO) haven’t been accurate enough to be used in production.
Alien
June 24, 2024, 2:29pm
23
Take the lines, convert to string… See if they match?
I’ve done it that way before, but have also toyed with this algorithm to compare how similar the string representations are:
In information theory, linguistics, and computer science, the Levenshtein distance is a string metric for measuring the difference between two sequences. The Levenshtein distance between two words is the minimum number of single-character edits (insertions, deletions or substitutions) required to change one word into the other. It is named after Soviet mathematician Vladimir Levenshtein, who defined the metric in 1965.
Levenshtein distance may also be referred to as edit distance, although that ...
Alien
June 24, 2024, 2:40pm
25
Fun! But realistically comparing the .X, .Y and .Z would make more sense surely if you wanted a , “nearly”.
the xyz start/end points of an arc could be the same as the start/end points of a line though.
Drops values after N (3?) decimal places, which means that depending on your units (think in a civil context where even in M they exceed the level of complexity). As a result those users get many false positives.
A comparison of point pairs is required to do this well. Something like compare L1’s point 1 to L2’s point 1 and if it matches compare L1’s point 2 to L2’s point 2. This doesn’t account for ‘reversed’ lines though which many users wind up wanting until they don’t…
Usually when you have well structured data I find there are easier ways to accomplish what the comparison is after (i.e. topology).
Alien
June 24, 2024, 2:47pm
28
I was talking about just comparing line to line.
If it’s line in Dynamo it says, “line” if it’s arc it says “arc” …
So that’s not hard to extract?
Yep! There’s a few ways to do.
However, I am worried we are venturing into the realm of “this node would be cool to have” .
My original question was regarding nodes people depend on that existed already (in popular packages), but have not been updated.
Alien
June 24, 2024, 2:48pm
30
Sorreh! I shall kerb my enthusiasm
Package:
ABT (Elements.Rotate)
Node Name:
Rotate
Details:
Hi John I remember I once search all the package and want to find a node which can rotate a group of Revit.I only find the node called “Rotate” from the package called “ABT” or “Elements.Rotation” can do it perfectly.The package is very old now.Here’s screenshot.You may have a look at it.
Here’s the video of how I use this node to rotate a group.
I’m guessing the OOTB one does not work for groups?
If so, we should probably make it work with Groups
Ah I see, there is not a node for generic element rotation in OOTB. Just Family Instances
Package:
Modelical
Node Name:
CenterLocation
Details:
This is a very useful node.I found it appears in many packages but the one from the Modelical is the one I choose.However the package is still very up to date.But I see in other post it‘s categorized as needs update.
You can make a note of this one.Maybe it will get update in the future.Maybe not.Your work is kind like saving nodes from a sinking boat.Hahaha.This node is not in hurry.But we can wait if it’s not updated after a year.You may renew it.
Alien
June 28, 2024, 7:32am
37
I was messing about with that the other day…
Because I was annoyed a centre of a bounding box didn’t work well for an L-shaped room.
Pole_of_inaccessibility.dyn (12.2 KB)
Posting an update here to let everyone know that the following nodes will be removed from Rhythm in the coming weeks:
opened 05:25PM - 19 Feb 20 UTC
## Future Rhythm Deprecations
_(Promoted to OOTB 🤗. Note: This idea was borrow… ed from @andydandy74)_
| OOTB | Rhythm | Related PR |
| --- | --- | --- |
| Area.Boundaries | Areas.Boundaries| https://github.com/DynamoDS/DynamoRevit/pull/2482 |
| Element.GetIntersectingElementsOfCategory | Elements.GetIntersectingElementsOfCategory | https://github.com/DynamoDS/DynamoRevit/pull/2456 |
| Element.GetJoinedElements | Elements.JoinedElements | https://github.com/DynamoDS/DynamoRevit/pull/2454 |
| Element.SetPinnedStatus | Element.SetPinnedStatus | https://github.com/DynamoDS/DynamoRevit/pull/2454 |
| ElevationMarker.ByViewTypeLocation | ElevationMarker.CreateElevationMarker | https://github.com/DynamoDS/DynamoRevit/pull/2480 |
| ElevationMarker.CreateElevationByMarkerIndex | ElevationMarker.CreateElevationByMarkerIndex | https://github.com/DynamoDS/DynamoRevit/pull/2480 |
| FamilyInstance.Room | FamilyInstances.Room | https://github.com/DynamoDS/DynamoRevit/pull/2484 |
| FamilyInstance.Space | FamilyInstances.Space | https://github.com/DynamoDS/DynamoRevit/pull/2484 |
| Dimension.SetAboveValue | Dimensions.SetAboveValue | https://github.com/DynamoDS/DynamoRevit/pull/2481 |
| Dimension.SetBelowValue | Dimensions.SetBelowValue | https://github.com/DynamoDS/DynamoRevit/pull/2481 |
| Dimension.AboveValue | Dimensions.AboveValue | https://github.com/DynamoDS/DynamoRevit/pull/2481 |
| Dimension.BelowValue | Dimensions.BelowValue | https://github.com/DynamoDS/DynamoRevit/pull/2481 |
| Sheets | Sheets | https://github.com/DynamoDS/DynamoRevit/pull/2512 |
| Sheet.Titleblock | Sheet.Titleblock | https://github.com/DynamoDS/DynamoRevit/pull/2584 |
| Sheet.Schedules | Sheet.GetViewportsAndViews | https://github.com/DynamoDS/DynamoRevit/pull/2584 |
| Sheet.Viewports | Sheet.GetViewportsAndViews | https://github.com/DynamoDS/DynamoRevit/pull/2584 |
| Tags.SetHeadPosition | Tag.SetHeadLocation | https://github.com/DynamoDS/DynamoRevit/pull/2640 |
| Tags.SetLeaderElbowPosition | Tag.SetLeaderElbow | https://github.com/DynamoDS/DynamoRevit/pull/2640 |
| Tags.SetLeaderEndPosition | Tag.SetLeaderEnd | https://github.com/DynamoDS/DynamoRevit/pull/2640 |
| Tags.GetHeadPosition | Tag.HeadLocation | https://github.com/DynamoDS/DynamoRevit/pull/2640 |
| Tags.GetLeaderElbow | Tag.LeaderElbow | https://github.com/DynamoDS/DynamoRevit/pull/2640 |
| Tags.GetLeaderEnd | Tag.LeaderEnd | https://github.com/DynamoDS/DynamoRevit/pull/2640 |
| View Family Types | View Family Types | https://github.com/DynamoDS/DynamoRevit/pull/2512 |
| View.Origin | View.Origin | https://github.com/DynamoDS/DynamoRevit/pull/2602 |
| View.SetCropBox | View.SetCropRegion | https://github.com/DynamoDS/DynamoRevit/pull/2602 |
| Viewport.BySheetViewLocation | Viewport.Create | https://github.com/DynamoDS/DynamoRevit/pull/2483 |
| Viewport.BoxCenter | Viewport.BoxCenter | https://github.com/DynamoDS/DynamoRevit/pull/2579 |
| Viewport.BoxOutline | Viewport.LocationData | https://github.com/DynamoDS/DynamoRevit/pull/2579 |
| Viewport.LabelOutline | Viewport.LabelOutline | https://github.com/DynamoDS/DynamoRevit/pull/2579 |
| Viewport.SetBoxCenter | Viewport.SetBoxCenter | https://github.com/DynamoDS/DynamoRevit/pull/2579 |
If these are being deprecated in lieu of ootb ill be keen to know if viewport get/set box centre will consider true box centre without outlying grids/annotations.
For viewport alignment workflows these generally require temporary view isolation of a nonvisible category to get/set properly. Revitapi methods don’t account for this as comes in my experience and return the centre of the box when selected vs the crop.
The Rhythm node just returns the box center as is, which is the same as the OOTB. So at this time it does not do what you mentioned.
However, a node to do that would be nice.