public static ShareParameterExists ( Room roomObj, String paramName, Parameter &sharedParam ) : bool | ||
roomObj | Room | Room object used to get parameter |
paramName | String | parameter name to be checked |
sharedParam | Parameter | shared parameter returned |
Результат | bool |
/// <summary> /// Check to see if we need to update spreadsheet data according to this Revit room. /// We don't need to update spreadsheet rooms if Revit room: /// . Which is one unplaced room. /// . The room has area which is zero. /// . Special room which doesn't have custom shared parameter at all. /// </summary> /// <param name="activeDocument">Current active document.</param> /// <param name="roomObj">Room object to be checked.</param> /// <param name="roomArea">Room area of this Revit room.</param> /// <param name="externalId">The value of custom shared parameter of this room.</param> /// <returns>Indicates whether it succeeded to get room area and shared parameter value.</returns> private static bool ValidateRevitRoom(Document activeDocument, Room room, ref double roomArea, ref String externalId) { roomArea = 0.0f; externalId = String.Empty; if (null == room.Location || null == activeDocument.GetElement(room.LevelId)) { return(false); } // get Area of room, if converting to double value fails, skip this. // if the area is zero to less than zero, skip the update too try { // get area without unit, then converting it to double will be ok. String areaStr = RoomsData.GetProperty(activeDocument, room, BuiltInParameter.ROOM_AREA, false); roomArea = Double.Parse(areaStr); if (roomArea <= double.Epsilon) { return(false); } } catch { // parse double value failed, continue the loop return(false); } // get the shared parameter value of room Parameter externalIdSharedParam = null; bool bExist = RoomsData.ShareParameterExists(room, RoomsData.SharedParam, ref externalIdSharedParam); if (false == bExist || null == externalIdSharedParam) { return(false); } else { externalId = externalIdSharedParam.AsString(); } return(true); }
/// <summary> /// Clear all values of shared parameters /// Allow user to create more unplaced rooms and update map relationships between Revit and spreadsheet rooms. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void clearIDButton_Click(object sender, EventArgs e) { int nCount = 0; foreach (Room room in m_roomData.Rooms) { Parameter param = null; bool bExist = RoomsData.ShareParameterExists(room, RoomsData.SharedParam, ref param); if (bExist && null != param && false == String.IsNullOrEmpty(param.AsString())) { param.Set(String.Empty); nCount++; } } // update Revit rooms display if (nCount > 0) { UpdateFormDisplay(false); } }