I have an idea to create diagonal dimension lines for this wall in the section view environment of Revit. I have obtained the 4 corner points of the wall. I tried using the nodes available in the package but it didn’t work. Do you have any solutions to he
Hi,
We don’t see anything from your screens
(zoom so that it is visible before using it
doesn’t matter if you don’t see all your nodes)
here is a potential avenue
code Block
S.X==C.X
&&
S.Y==C.Y;
Sincerely
christian.stan
1 Like
Hello @MeoTom and welcome iw ould try something here
2 Likes
hello, I’m going to go back to bed, I was way off topic (I hadn’t seen the Dimension)
@+
cordially
christian.stan
heheh yeah it was a long one the headline but sleep well
1 Like
Hi,
a solution using edges Reference
import clr
import sys
import System
#
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
import Autodesk.DesignScript.Geometry as DS
#import Revit API
clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *
import Autodesk.Revit.DB as DB
#import net library
from System import Array
from System.Collections.Generic import List, IList, Dictionary
clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
#import transactionManager and DocumentManager (RevitServices is specific to Dynamo)
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
import itertools
def most_distant_pair_edges(wall):
global opt
horiz_edges = []
for geo in wall.get_Geometry(opt):
if isinstance(geo, DB.Solid):
print(geo.Volume)
for edge in geo.Edges:
curve_edge = edge.AsCurve()
if isinstance(curve_edge , DB.Line) and abs(curve_edge.Direction.Z) < 0.1:
horiz_edges.append(edge)
pair_edges = [[e1, e2] for e1, e2 in itertools.combinations_with_replacement(horiz_edges, 2)]
sort_distant_pair = sorted(pair_edges,
key = lambda x : x[0].AsCurve().Distance(x[1].AsCurve().Evaluate(0.5, True)),
reverse = True )
# returns the 2 most distant pairs
return sort_distant_pair[:2]
def toList(x):
if isinstance(x, (list, dict)) or \
(hasattr(x, "GetType") and x.GetType().GetInterface("ICollection") is not None):
return x
else : return [x]
#Preparing input from dynamo to revit
lstelems = toList(UnwrapElement(IN[0]))
current_view = doc.ActiveView
out = []
opt = Options()
opt.ComputeReferences = True
opt.View = doc.ActiveView
#Do some action in a Transaction
TransactionManager.Instance.EnsureInTransaction(doc)
for wall in lstelems:
for edgeA, edgeB in most_distant_pair_edges(wall):
pta = edgeA.AsCurve().Evaluate(0.5, True)
ptb = edgeB.AsCurve().Evaluate(0.5, True)
base_line = DB.Line.CreateBound(pta, ptb)
#
refArray = ReferenceArray()
refArray.Append(edgeA.Reference)
refArray.Append(edgeB.Reference)
dim = doc.Create.NewDimension(current_view, base_line, refArray)
out.append(dim)
TransactionManager.Instance.TransactionTaskDone()
OUT = out
4 Likes