Python script to create grids by line

Hi,
I thought there is a topic like this on the forum, but I could’t find it.
There is a Dynamo node to create a grid by line, but I want to make it in a python script and I am struggling with.
In the Revit API there is creating method:
Autodesk.Revit.DB.Grid Create(Autodesk.Revit.DB.Document document, Autodesk.Revit.DB.Line line)


I’ve tried this code but it doesn’t do the job

import clr
import math
clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
import System
clr.AddReference('RevitServices')
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument

coord = IN[0]
gridOffset = IN[1]

xlist = coord[0]
ylist = coord[1]
nx = len(xlist)
ny = len(ylist)
xlines = []
ylines =[]

doc = DocumentManager.Instance.CurrentDBDocument
TransactionManager.Instance.EnsureInTransaction(doc)

for x in xlist:	
	pointA = Point.ByCoordinates(x,ylist[0]-gridOffset,0)
	pointB = Point.ByCoordinates(x,ylist[ny-1]+gridOffset,0)
	line = Line.ByStartPointEndPoint(pointB, pointA)
	gridX = Autodesk.Revit.DB.Grid Create(doc, line)
	xlines.append(gridX)

for y in ylist:
	pointA = Point.ByCoordinates(xlist[0]-gridOffset,y,0)
	pointB = Point.ByCoordinates(xlist[nx-1]+gridOffset,y,0)
	line = Line.ByStartPointEndPoint(pointA, pointB)
	ylines.append(line)
	
TransactionManager.Instance.TransactionTaskDone()

#Assign your output to the OUT variable.
OUT = xlines, ylines

please help me with this API which seams I’m never going to understand :slight_smile:

Hi @TeoBlack

Here is simple example how to create grid by line in python. This will get you started:

4 Likes

Thank you @Kulkul it helped
there was just a “.” (dot) between “Grid.Create” missed and a .ToRevitType()

line = Line.ByStartPointEndPoint(pointB, pointA).ToRevitType()
gridX = Autodesk.Revit.DB.Grid.Create(doc, line)

Kind Regards