Stream(ArrayList data, ExtensibleStorageField storageField) { Field field = storageField.Field; Entity entity = storageField.Entity; data.Add(new Snoop.Data.ClassSeparator(typeof(Field))); data.Add(new Snoop.Data.String("Container Type", field.ContainerType.ToString())); data.Add(new Snoop.Data.String("Documentation", field.Documentation)); if (field.KeyType != null) { data.Add(new Snoop.Data.String("Key Type", field.KeyType.ToString())); } data.Add(new Snoop.Data.String("Value Type", field.ValueType.ToString())); data.Add(new Snoop.Data.String("Unit Type", field.UnitType.ToString())); Schema schema = field.Schema; if (schema != null) { data.Add(new Snoop.Data.Object("Schema", schema)); Object value = null; DisplayUnitType dut = DisplayUnitType.DUT_UNDEFINED; Type[] typeParameters = new Type[2] { typeof(Field), typeof(Autodesk.Revit.DB.DisplayUnitType) }; MethodInfo methodInfo = typeof(Entity).GetMethod("Get", typeParameters); // try to get a valid display unit type here. if (field.UnitType != UnitType.UT_Undefined) { dut = m_activeDoc.GetUnits().GetFormatOptions(field.UnitType).DisplayUnits; } switch (field.ContainerType) { case ContainerType.Simple: { //MethodInfo genericGet = methodInfo.MakeGenericMethod(field.ValueType); MethodInfo genericGet = methodInfo.MakeGenericMethod(new Type[] { field.ValueType }); Object[] parameters = new Object[2] { field, dut }; value = genericGet.Invoke(entity, parameters); break; } case ContainerType.Array: { String typeName = typeof(IList <int>).AssemblyQualifiedName.Replace(typeof(int).AssemblyQualifiedName, field.ValueType.AssemblyQualifiedName); Type type = Type.GetType(typeName); //MethodInfo genericGet = methodInfo.MakeGenericMethod(type); MethodInfo genericGet = methodInfo.MakeGenericMethod(new Type[] { type }); Object[] parameters = new Object[2] { field, dut }; value = genericGet.Invoke(entity, parameters); break; } case ContainerType.Map: { //String typeName = typeof(IDictionary<int, double>).AssemblyQualifiedName.Replace( // typeof(int).AssemblyQualifiedName, field.KeyType.ToString()).Replace( // typeof(double).AssemblyQualifiedName, field.ValueType.ToString()); String typeName = typeof(IDictionary <int, double>).AssemblyQualifiedName.Replace( typeof(int).AssemblyQualifiedName, field.KeyType.AssemblyQualifiedName).Replace( typeof(double).AssemblyQualifiedName, field.ValueType.AssemblyQualifiedName); Type type = Type.GetType(typeName); //MethodInfo genericGet = methodInfo.MakeGenericMethod(type); MethodInfo genericGet = methodInfo.MakeGenericMethod(new Type[] { type }); Object[] parameters = new Object[2] { field, dut }; value = genericGet.Invoke(entity, parameters); break; } default: break; } data.Add(new Snoop.Data.String("Display Unit Type", dut.ToString())); Utils.AppendThePropertyObject(data, field.FieldName, value); } }
CollectEvent(object sender, CollectorEventArgs e) { // cast the sender object to the SnoopCollector we are expecting Collector snoopCollector = sender as Collector; if (snoopCollector == null) { Debug.Assert(false); // why did someone else send us the message? return; } // see if it is a type we are responsible for Color color = e.ObjToSnoop as Color; if (color != null) { Stream(snoopCollector.Data(), color); return; } LayoutRule layoutRule = e.ObjToSnoop as LayoutRule; if (layoutRule != null) { Stream(snoopCollector.Data(), layoutRule); return; } FormatOptions formatOptions = e.ObjToSnoop as FormatOptions; if (formatOptions != null) { Stream(snoopCollector.Data(), formatOptions); return; } CurtainGrid curtainGrid = e.ObjToSnoop as CurtainGrid; if (curtainGrid != null) { Stream(snoopCollector.Data(), curtainGrid); return; } CurtainCell curtainCell = e.ObjToSnoop as CurtainCell; if (curtainCell != null) { Stream(snoopCollector.Data(), curtainCell); return; } RebarHostData rebarHostData = e.ObjToSnoop as RebarHostData; if (rebarHostData != null) { Stream(snoopCollector.Data(), rebarHostData); return; } Leader leader = e.ObjToSnoop as Leader; if (leader != null) { Stream(snoopCollector.Data(), leader); return; } AreaVolumeSettings areaSettings = e.ObjToSnoop as AreaVolumeSettings; if (areaSettings != null) { Stream(snoopCollector.Data(), areaSettings); return; } ViewSheetSetting viewSheetSetting = e.ObjToSnoop as ViewSheetSetting; if (viewSheetSetting != null) { Stream(snoopCollector.Data(), viewSheetSetting); return; } Autodesk.Revit.UI.Events.DialogBoxData dlgBoxData = e.ObjToSnoop as Autodesk.Revit.UI.Events.DialogBoxData; if (dlgBoxData != null) { Stream(snoopCollector.Data(), dlgBoxData); return; } Construction construct = e.ObjToSnoop as Construction; if (construct != null) { Stream(snoopCollector.Data(), construct); return; } FamilyElementVisibility famElemVisib = e.ObjToSnoop as FamilyElementVisibility; if (famElemVisib != null) { Stream(snoopCollector.Data(), famElemVisib); return; } FamilyManager famManager = e.ObjToSnoop as FamilyManager; if (famManager != null) { Stream(snoopCollector.Data(), famManager); return; } FamilyParameter famParam = e.ObjToSnoop as FamilyParameter; if (famParam != null) { Stream(snoopCollector.Data(), famParam); return; } FamilyType famType = e.ObjToSnoop as FamilyType; if (famType != null) { Stream(snoopCollector.Data(), famType); return; } MEPSpaceConstruction mepSpaceConstuct = e.ObjToSnoop as MEPSpaceConstruction; if (mepSpaceConstuct != null) { Stream(snoopCollector.Data(), mepSpaceConstuct); return; } BuildingSiteExportOptions bldSiteExpOptions = e.ObjToSnoop as BuildingSiteExportOptions; if (bldSiteExpOptions != null) { Stream(snoopCollector.Data(), bldSiteExpOptions); return; } DGNExportOptions dgnExpOptions = e.ObjToSnoop as DGNExportOptions; if (dgnExpOptions != null) { Stream(snoopCollector.Data(), dgnExpOptions); return; } DWFExportOptions dwfExpOptions = e.ObjToSnoop as DWFExportOptions; if (dwfExpOptions != null) { Stream(snoopCollector.Data(), dwfExpOptions); return; } DWGExportOptions dwgExpOptions = e.ObjToSnoop as DWGExportOptions; if (dwgExpOptions != null) { Stream(snoopCollector.Data(), dwgExpOptions); return; } DWGImportOptions dwgImpOptions = e.ObjToSnoop as DWGImportOptions; if (dwgImpOptions != null) { Stream(snoopCollector.Data(), dwgImpOptions); return; } FBXExportOptions fbxExpOptions = e.ObjToSnoop as FBXExportOptions; if (fbxExpOptions != null) { Stream(snoopCollector.Data(), fbxExpOptions); return; } TrussMemberInfo trussInfo = e.ObjToSnoop as TrussMemberInfo; if (trussInfo != null) { Stream(snoopCollector.Data(), trussInfo); return; } VertexIndexPair vertIndPair = e.ObjToSnoop as VertexIndexPair; if (vertIndPair != null) { Stream(snoopCollector.Data(), vertIndPair); return; } PointElementReference ptElemRef = e.ObjToSnoop as PointElementReference; if (ptElemRef != null) { Stream(snoopCollector.Data(), ptElemRef); return; } Autodesk.Revit.DB.Architecture.BoundarySegment boundSeg = e.ObjToSnoop as Autodesk.Revit.DB.Architecture.BoundarySegment; if (boundSeg != null) { Stream(snoopCollector.Data(), boundSeg); return; } PointLocationOnCurve ptLocOnCurve = e.ObjToSnoop as PointLocationOnCurve; if (ptLocOnCurve != null) { Stream(snoopCollector.Data(), ptLocOnCurve); return; } Entity entity = e.ObjToSnoop as Entity; if (entity != null) { Stream(snoopCollector.Data(), entity); return; } Field field = e.ObjToSnoop as Field; if (field != null) { Stream(snoopCollector.Data(), field); return; } ExtensibleStorageField storeagefield = e.ObjToSnoop as ExtensibleStorageField; if (storeagefield != null) { Stream(snoopCollector.Data(), storeagefield); return; } IList <Autodesk.Revit.DB.BoundarySegment> boundSegs = e.ObjToSnoop as IList <Autodesk.Revit.DB.BoundarySegment>; if (boundSegs != null) { Stream(snoopCollector.Data(), boundSegs); return; } if (e.ObjToSnoop is KeyValuePair <String, String> ) { KeyValuePair <String, String> stringspair = (KeyValuePair <String, String>)e.ObjToSnoop; Stream(snoopCollector.Data(), stringspair); return; } Schema schema = e.ObjToSnoop as Schema; if (schema != null) { Stream(snoopCollector.Data(), schema); return; } ElementId elemId = e.ObjToSnoop as ElementId; if (elemId != null) { Stream(snoopCollector.Data(), elemId); return; } PlanViewRange plvr = e.ObjToSnoop as PlanViewRange; if (plvr != null) { Stream(snoopCollector.Data(), plvr); return; } //TF RebarConstraintsManager rbcm = e.ObjToSnoop as RebarConstraintsManager; if (rbcm != null) { Stream(snoopCollector.Data(), rbcm); return; } RebarConstrainedHandle rbch = e.ObjToSnoop as RebarConstrainedHandle; if (rbch != null) { Stream(snoopCollector.Data(), rbch); return; } RebarConstraint rbc = e.ObjToSnoop as RebarConstraint; if (rbc != null) { Stream(snoopCollector.Data(), rbc); return; } //TFEND if (Utils.IsSupportedType(e.ObjToSnoop) && e.ObjToSnoop != null) { Utils.StreamWithReflection(snoopCollector.Data(), e.ObjToSnoop.GetType(), e.ObjToSnoop); } }
Stream(ArrayList data, ExtensibleStorageField storageField) { Field field = storageField.Field; Entity entity = storageField.Entity; data.Add(new Snoop.Data.ClassSeparator(typeof(Field))); data.Add(new Snoop.Data.String("Container Type", field.ContainerType.ToString())); data.Add(new Snoop.Data.String("Documentation", field.Documentation)); if(field.KeyType != null) data.Add(new Snoop.Data.String("Key Type", field.KeyType.ToString())); data.Add(new Snoop.Data.String("Value Type", field.ValueType.ToString())); data.Add(new Snoop.Data.String("Unit Type", field.UnitType.ToString())); Schema schema = field.Schema; if (schema != null) { data.Add(new Snoop.Data.Object("Schema", schema)); Object value = null; DisplayUnitType dut = DisplayUnitType.DUT_UNDEFINED; Type[] typeParameters = new Type[2] { typeof(Field), typeof(Autodesk.Revit.DB.DisplayUnitType)}; MethodInfo methodInfo = typeof(Entity).GetMethod("Get", typeParameters); // try to get a valid display unit type here. if (field.UnitType != UnitType.UT_Undefined) dut = m_activeDoc.GetUnits().GetFormatOptions(field.UnitType).DisplayUnits; switch (field.ContainerType) { case ContainerType.Simple: { //MethodInfo genericGet = methodInfo.MakeGenericMethod(field.ValueType); MethodInfo genericGet = methodInfo.MakeGenericMethod(new Type[] { field.ValueType }); Object[] parameters = new Object[2] { field, dut }; value = genericGet.Invoke(entity, parameters); break; } case ContainerType.Array: { String typeName = typeof(IList<int>).AssemblyQualifiedName.Replace(typeof(int).AssemblyQualifiedName, field.ValueType.AssemblyQualifiedName); Type type = Type.GetType(typeName); //MethodInfo genericGet = methodInfo.MakeGenericMethod(type); MethodInfo genericGet = methodInfo.MakeGenericMethod(new Type[] { type }); Object[] parameters = new Object[2] { field, dut }; value = genericGet.Invoke(entity, parameters); break; } case ContainerType.Map: { //String typeName = typeof(IDictionary<int, double>).AssemblyQualifiedName.Replace( // typeof(int).AssemblyQualifiedName, field.KeyType.ToString()).Replace( // typeof(double).AssemblyQualifiedName, field.ValueType.ToString()); String typeName = typeof(IDictionary<int, double>).AssemblyQualifiedName.Replace( typeof(int).AssemblyQualifiedName, field.KeyType.AssemblyQualifiedName).Replace( typeof(double).AssemblyQualifiedName, field.ValueType.AssemblyQualifiedName); Type type = Type.GetType(typeName); //MethodInfo genericGet = methodInfo.MakeGenericMethod(type); MethodInfo genericGet = methodInfo.MakeGenericMethod(new Type[] { type }); Object[] parameters = new Object[2] { field, dut }; value = genericGet.Invoke(entity, parameters); break; } default: break; } data.Add(new Snoop.Data.String("Display Unit Type", dut.ToString())); Utils.AppendThePropertyObject(data, field.FieldName, value); } }