Get ceiling sketch lines, copy, delete & paste in place

I have an apartment building with many ceilings created using the pick lines tool. Unfortunately using this tool the sketch lines remain associated with walls. If a wall moves the ceiling sketch adjusts accordingly. This is not always desired as wall thickness changes during design development.
We have found the only way to break the association is to edit sketch, copy the sketch lines, delete the lines then paste in place.

I’d like to create a graph to run on all ceilings.
So i can get all the ceilings easily.
Using the springs collector element sketch node I can also get the model lines in the sketch.
Great!

Just wondering how to copy then delete the existing lines and paste in place? Can anyone suggest relevant nodes to achieve this?

I’ll post a screenshot shortly.

Thanks.

Hmmm… I’m not sure Dynamo can edit in Sketch mode…

There is a method in the API IsMonitoringLocalElement if that could be set to False you’d be there…

If @Kulkul hasn’t solved it, I’ll have a look when I get into work tomorrow…

Apologies,

Mark

Edit: this may be useful… How to get the sketch lines of the roof

Hey,

So the MonitoringLocalElement wasn’t right, I wondered if MakeUnBound would work
http://www.revitapidocs.com/2018/31ef6a2e-0e39-a394-b6ee-4e4df56d8380.htm

So I took the python from the Springs node, outputted the profile and tried to run it on there,
but I’m getting Exception:The Input Curve is not bound… So either I’m not doing it properly or it is bound in some other method…

ceilingbound.dyn (10.1 KB)

import clr

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument

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

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

lines = IN[0]

TransactionManager.Instance.EnsureInTransaction(doc)

monitoring = lines.ToProtoType().MakeUnBound()

TransactionManager.Instance.TransactionTaskDone()

OUT = monitoring 

Apologies,

Mark

Hi @Lauren_Kruger @Mark.Ackerley

Ceilings are not yet exposed to Revit API.

1 Like

Thanks Kulkul,

Am I right that editing in sketch mode is also not possible? (for any element)

So the only method would be to copy and paste with a postable command, which wouldn’t help because you have to run it for each individual ceiling, which isn’t any quicker than doing it in Revit…

Never mind, let’s hope it gets exposed in the API :slight_smile:

Not possible.

1 Like

One wild thought… why not use floor as ceiling (with appropriate thickness and material). you can then manipulate it as you want. Only for Schedule you need to filter it.

1 Like

Thanks guys. Was worth asking but I guess we’ll just have to wait for API to catch up with users.

1 Like