Hello.
Has someone an idea how to create subdivisons on toposolids with polycurves?
Hello.
Has someone an idea how to create subdivisons on toposolids with polycurves?
Hi @genossealex last time i tried i couldnt get it to work with subdivision…probably just me…for sure
i can get it to work with add points, move points, create split, set the splitline, reset etc…but not subdivision…CreateSubDivision(Document, ElementId, IList<CurveLoop>) Method i can take a look later and try go more deep why…but maybe @c.poupin could have an idea
![]()
@genossealex The Revit version matters to answer this question
Yes exackly guees topsolid first comes with 2024 and guess in 26 we have method where we can create subdivide and create excavete with same method…but cant get to work last time i play around with it…my bad heheheh
I use Revit 2025.4.4
Here is an example that has been tested with Revit 2026, but it should also work with Revit 2025.
import clr
import sys
import System
from System import Array
from System.Collections.Generic import List, IList, Dictionary, HashSet
#
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
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
#Preparing input from dynamo to revit
topoElem = UnwrapElement(IN[0])
dsCurves= IN[1]
rvtCurves = List[DB.Curve]([c.ToRevitType() for c in dsCurves.Curves()])
rvtCurveLoop = CurveLoop.Create(rvtCurves)
lst_rvtCurveLoop = List[CurveLoop]()
lst_rvtCurveLoop.Add(rvtCurveLoop)
#Do some action in a Transaction
TransactionManager.Instance.EnsureInTransaction(doc)
subdivision = topoElem.CreateSubDivision(doc, lst_rvtCurveLoop)
TransactionManager.Instance.TransactionTaskDone()
OUT = subdivision, topoElem
this works perfect.
thank you very much ![]()