How about grabbing the Room Boundary Curves from the Revit Database and then putting them into family document via the API.
Can this level of code be put into a Dynamo Node (http://forums.autodesk.com/t5/revit-api/create-mass-from-room/td-p/3674458):
// Create family doc from template
Autodesk.Revit.DB.Document familyDoc = app.NewFamilyDocument(@“C:\ProgramData\Autodesk\RVT 2013\Family Templates\English\Metric Generic Model.rft”);
// Save the new Family - room is Room Element not defined in this sample code
string fileName = @“C:\Temp” + room.UniqueId.ToString() + “.rfa”;
familyDoc.SaveAs(fileName);
Transaction transaction = new Transaction(familyDoc, “RoomToMass”);
transaction.Start();
// Get the room boundary
SpatialElementBoundaryOptions opt = new SpatialElementBoundaryOptions();
IList<IList<Autodesk.Revit.DB.BoundarySegment>> segArray = room.GetBoundarySegments(opt);
CurveArray curveArray = new CurveArray();
// Iterate to gather the curve objects
foreach (IList<Autodesk.Revit.DB.BoundarySegment> bSegments in segArray)
{
foreach (Autodesk.Revit.DB.BoundarySegment bSegment in bSegments)
{
curveArray.Append(bSegment.Curve);
}
}
// Origin point and normal point that gives the extrusion direction
XYZ ptOrigin = new XYZ(0, 0, 0);
XYZ ptNormal = new XYZ(0, 0, 1);
// The plane to extrude the mass from
Plane plane = app.Create.NewPlane(ptNormal, ptOrigin);
SketchPlane sketchPlane = familyDoc.FamilyCreate.NewSketchPlane(plane);
// Add the CurveArray to a CurveArrArray
CurveArrArray curveArrArray = new CurveArrArray();
curveArrArray.Append(curveArray);
// Extrude the form 10 feet as test
Extrusion extrusion = familyDoc.FamilyCreate.NewExtrusion(true, curveArrArray, sketchPlane, 10);
transaction.Commit();
familyDoc.Save();
// now need to place the family…