Radial Grids

Dear Members
Is there anyone who knows how we can create Radial Gridlines by Dynamo ?

Thanks a lot!

do you have a sketch of what you want?
you give us very little information to work with

1 Like

Thank You for answering. Yes i want to draw some gridlines like this :

what am i seeing is this autocad?

No it is Revit Grids. my question is how to draw it by dynamo.

drawing this in dynamo is almost impossible, too irregular
you can get to the lines by extracting it from revit giving you the coordinates tho

1 Like

thanks
what about simple radial grids? which nodes we should use to draw simple radial grids ?

LineByStartPointEndPoint
CircleByCentreAndRadius (something like that)
maybe an intersect node to cut lines
GridByLine

1 Like

Thank you!

radial grids.dyn (16.3 KB)

4 Likes

Thank you so much

If a post solves your question, be sure to mark it as solved. :slight_smile:

Excuse me Mr Rijsmus, I couldn’t open your .dyn file. which version of dynamo you worked with ?

its dynamo 2.0.2
but its super simple to recreate if you look at the picture
you learn aswell

good luck

1 Like

@Marcel_Rijsmus great start…but I think there is more to the question, than what you have answered here.

Mainly that aside from the Grid.ByLine the OP can create more complicated Grids using the Multi-Segment Grid class. I talked about creating those here: Multi-Segment grids

Now in this particular case we are dealing with simple line based grids as well as potentially a multi-segment grid where multiple arcs/lines would be used to create it. Please keep in mind that MultiSegmentGrids can only be created from Lines and Arcs. Below is a little bit more robust interpretation of the answer that @Marcel_Rijsmus posted.

Couple things worth noting:

  • I added a Element.SetParameterByName node at the end of the routine for creating the linear Grids. I bet that creating grids is not the end of the road here. Vertical grids usually have numbers i think. The other ones would have letters. (I will leave that for the OP to sort out)
  • I also broke down the ellipse curve into lines and arcs, so that OP understands the kind of input that is needed for the multi-segment grids.
  • There are nodes that trim the ellipse at start and end. The reason I did that was to make sure that the curves that we are feeding into the MultiSegmentGrid creation python nodes, is not a closed curve (circle, ellipse etc.). Revit doesn’t allow closed curve grids. So I basically cut the curve back a little at each end to add a small gap in the curve.
  • just for shits and giggles I also extended the lines a little. it’s just better looking this way.

Result:

Here’s the Python code:

# Copyright(c) 2019, Konrad K Sobon
# @arch_laboratory, http://archi-lab.net

import clr
clr.AddReference('ProtoGeometry')
import Autodesk.DesignScript.Geometry

clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)

clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application

clr.AddReference("RevitAPI")
from Autodesk.Revit.DB import *

import System
from System import Array
from System.Collections.Generic import *

import sys
pyt_path = r'C:\Program Files (x86)\IronPython 2.7\Lib'
sys.path.append(pyt_path)

def create_grid(type, curves, plane):
	typeId = UnwrapElement(type).Id
	plane = Plane.CreateByNormalAndOrigin(XYZ(0,0,1), XYZ(0,0,0))
	sketchPlane = SketchPlane.Create(doc, plane)
	curveLoop = CurveLoop()
	for i in curves:
		c = i.ToRevitType()
		curveLoop.Append(c)
	gridId = MultiSegmentGrid.Create(doc, typeId, curveLoop, sketchPlane.Id)
	return doc.GetElement(gridId)

try:
    errorReport = None
    TransactionManager.Instance.EnsureInTransaction(doc)
    output = []
    for i in IN[1]:
    	output.append(create_grid(IN[0], i, IN[2]))
    TransactionManager.Instance.TransactionTaskDone()

except:
    import traceback
    errorReport = traceback.format_exc()

if None == errorReport:
    OUT = output
else:
    OUT = errorReport
11 Likes

Sorry @Konrad_K_Sobon, i don’t want to start whining, but it was all about drawing it in dynamo (see post 4).
I do appreciate your solution tho, there is lots to learn from your script and thats why i’m here, so thnx.
If i look at the picture in post 2 of the stadium (supposing it is) there are curves there that are not an ellipse.
Would it be possible to do this in dynamo?
When all like your post who’s gonna push you a bit more?

3 Likes

@Marcel_Rijsmus no need to apologize. The OP wasn’t super specific with the question. It usually happens when someone asks: “how do I do X?” and then during the conversation it comes out that what really was needed was Y.

It was my interpretation of the question that the task at hand was create Grids in Revit. More importantly, given that some of them were not regular lines, and that said capability doesn’t yet exist in Dynamo, I thought that your answer could have been expanded on.

Now, regarding your question. Yes, I think its a stadium design. I don’t think that part matters at all. I will leave it to the OP to figure out how to draw the actual geometry in Dynamo. It’s possible. That’s part of what designers do. What I thought was the challenge for the more technically inclined crew on this forum, was how to transform the geometry into actual grid objects in Revit. Most beginners don’t get that distinction at first. People honestly think that there is a “bake” button in Dynamo, like there is one in Grasshopper. Unfortunately some things are not as straight forward. That’s what my answer was geared towards. These irregular and compound grids are possible, but there are some rules. I wanted to make sure that the OP knows about them. That’s all.

Cheers!

-K

3 Likes

Thanks so much for your kind help.

Since the grids are already in revit, lets turn this 180 around and take it from there
Use categories, set to grids
use all elements of category next
use element geometry or element location and have those lines in dynamo.
Element.types and all elements of type is probably another way to get there

1 Like

thanks . you mean if I have these grids now in revit I can select them in dynamo and have it there. then it will be parametric ? can we make change on it by dynamo then ?