//---------------------------------------------------------- public void Get_Parameter(FamilyInstance element) { try { family_data item = (family_data)family.SelectedItem; if (item != null && item.single_value != "") { if (element != null) { my_parameter_data = new ObservableCollection <parameter_data>(myFunctionSupport.View_Dimensions_FamilySymbol(doc, element, myAll_Data)); } else { Family fa = new FilteredElementCollector(doc).OfClass(typeof(Family)).Cast <Family>().Where(x => x.Name == item.single_value).First(); ObservableCollection <parameter_data> support = new ObservableCollection <parameter_data>(); if (fa.IsEditable) { Document familyDoc = doc.EditFamily(fa); FamilyManager manager = familyDoc.FamilyManager; foreach (FamilyParameter para in manager.Parameters) { try { if (para.IsInstance && para.Definition.ParameterGroup == BuiltInParameterGroup.PG_GEOMETRY && mySource.para_name_not_use.Contains(para.Definition.Name) == false && para.IsReadOnly == false) { support.Add(new parameter_data() { parameter_name = para.Definition.Name, parameter_value = myFunctionSupport.Get_Parameter_Information_Family(para, familyDoc, manager, myAll_Data), parameter = null }); } } catch (Exception) { } } familyDoc.Close(false); } my_parameter_data = support; } thong_tin_parameter.ItemsSource = my_parameter_data; CollectionView view_total = (CollectionView)CollectionViewSource.GetDefaultView(thong_tin_parameter.ItemsSource); view_total.SortDescriptions.Add(new SortDescription("parameter_name", ListSortDirection.Ascending)); } else { thong_tin_parameter.ItemsSource = null; } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public void Get_Element() { try { family_data item_family = (family_data)family.SelectedItem; type_data item_type = (type_data)type.SelectedItem; ElementMulticategoryFilter filter_category = new ElementMulticategoryFilter(mySource.my_BuiltInCategory); element = new FilteredElementCollector(doc) .WherePasses(filter_category) .WhereElementIsNotElementType() .First(x => x.Name == item_type.single_value && x.get_Parameter(BuiltInParameter.ELEM_FAMILY_PARAM).AsValueString() == item_family.single_value) as FamilyInstance; } catch (Exception ex) { //MessageBox.Show(ex.Message); } }
//---------------------------------------------------------- public void Get_Type() { try { family_data item = (family_data)family.SelectedItem; if (item != null && item.single_value != "") { my_type_data = new ObservableCollection <type_data>(my_family_data .Where(x => x.single_value == item.single_value) .First().types.Select(xx => new type_data() { type = xx, single_value = xx.Name }).OrderBy(x => x.single_value)); } else { my_type_data = new ObservableCollection <type_data>() { new type_data() { type = null, single_value = "" } }; } type.ItemsSource = my_type_data; type.SelectedIndex = 0; if (search.Text != "search" && door.IsChecked == true) { CollectionViewSource.GetDefaultView(type.ItemsSource).Refresh(); type.SelectedItem = my_type_data.First(x => x.single_value.Contains(search.Text)); } CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(type.ItemsSource); view.SortDescriptions.Add(new SortDescription("single_value", ListSortDirection.Ascending)); view.Filter = Filter_ten_vat_lieu; } catch (Exception ex) { MessageBox.Show(ex.Message); } }
//---------------------------------------------------------- public string Draw_By_Revit(UIApplication uiapp, Document doc) { string result = "F"; try { if (data_point.Count() > 0) { level_data item_level = (level_data)level.SelectedItem; family_data item_family = (family_data)family.SelectedItem; type_data item_type = (type_data)type.SelectedItem; XYZ center = new XYZ(); if (data_point[0].Count() == 2) { center = (data_point[0][0] + data_point[0][1]) / 2; } else { center = data_point[0][0]; } FamilySymbol familySymbol = item_type.type as FamilySymbol; Level level_opening = item_level.level; if (familySymbol.IsActive == false) { familySymbol.Activate(); } var instance = doc.Create.NewFamilyInstance(center, familySymbol, host_of_opening, level_opening, Autodesk.Revit.DB.Structure.StructuralType.NonStructural); double elevation_value = Convert.ToDouble(elevation.Text) / myAll_Data.list_unit_value_data[2] - item_level.elevation; if (new FilteredElementCollector(doc).OfClass(typeof(FamilySymbol)).Where(x => x.Name == host_of_opening.Name).ToList().Count() == 0 && host_of_opening.Category.Name != "Walls") { } else { if (door.IsChecked == true) { instance.get_Parameter(BuiltInParameter.INSTANCE_SILL_HEIGHT_PARAM).Set(elevation_value); if (instance.LookupParameter(mySource.para_name[0]) != null) { instance.LookupParameter(mySource.para_name[0]).Set(Convert.ToDouble(elevation.Text) / myAll_Data.list_unit_value_data[2]); } if (instance.LookupParameter(mySource.para_name[1]) != null) { instance.LookupParameter(mySource.para_name[1]).Set(0); } } else { if (host_of_opening.Category.Name != "Walls") { instance.get_Parameter(BuiltInParameter.INSTANCE_SCHEDULE_ONLY_LEVEL_PARAM).Set(item_level.level.Id); } instance.get_Parameter(BuiltInParameter.INSTANCE_ELEVATION_PARAM).Set(elevation_value); } } foreach (parameter_data data in my_parameter_data) { if (instance.LookupParameter(data.parameter_name).IsReadOnly == false) { if (data.parameter_value == "True") { instance.LookupParameter(data.parameter_name).Set(1); } else if (data.parameter_value == "False") { instance.LookupParameter(data.parameter_name).Set(0); } else { instance.LookupParameter(data.parameter_name).Set(Convert.ToDouble(data.parameter_value) / myAll_Data.list_unit_value_data[2]); } } } } result = "S"; } catch (Exception ex) { MessageBox.Show(ex.Message); } return(result); }
//---------------------------------------------------------- public string Update_By_Revit(UIApplication uiapp, Document doc) { string result = "F"; try { level_data item_level = (level_data)level.SelectedItem; family_data item_family = (family_data)family.SelectedItem; type_data item_type = (type_data)type.SelectedItem; FamilySymbol familySymbol = item_type.type as FamilySymbol; if (familySymbol.IsActive == false) { familySymbol.Activate(); } if (element.Symbol != familySymbol) { element.Symbol = familySymbol; } double elevation_value = Convert.ToDouble(elevation.Text) / myAll_Data.list_unit_value_data[2] - item_level.elevation; if (new FilteredElementCollector(doc).OfClass(typeof(FamilySymbol)).Where(x => x.Name == host_of_opening.Name).ToList().Count() == 0 && host_of_opening.Category.Name != "Walls") { } else { if (element.Category.Name == "Doors") { element.get_Parameter(BuiltInParameter.INSTANCE_SILL_HEIGHT_PARAM).Set(elevation_value); if (element.LookupParameter(mySource.para_name[0]) != null) { element.LookupParameter(mySource.para_name[0]).Set(Convert.ToDouble(elevation.Text) / myAll_Data.list_unit_value_data[2]); } if (element.LookupParameter(mySource.para_name[1]) != null) { element.LookupParameter(mySource.para_name[1]).Set(0); } } else { if (host_of_opening.Category.Name != "Walls") { element.get_Parameter(BuiltInParameter.INSTANCE_SCHEDULE_ONLY_LEVEL_PARAM).Set(item_level.level.Id); } element.get_Parameter(BuiltInParameter.INSTANCE_ELEVATION_PARAM).Set(elevation_value); } } foreach (parameter_data data in my_parameter_data) { if (data.parameter_value == "True") { element.LookupParameter(data.parameter_name).Set(1); } else if (data.parameter_value == "False") { element.LookupParameter(data.parameter_name).Set(0); } else { element.LookupParameter(data.parameter_name).Set(Convert.ToDouble(data.parameter_value) / myAll_Data.list_unit_value_data[2]); } } if (data_point.Count() > 0) { XYZ center = new XYZ(); if (data_point[0].Count() == 2) { center = (data_point[0][0] + data_point[0][1]) / 2; } else { center = data_point[0][0]; } LocationPoint location = element.Location as LocationPoint; XYZ location_point = location.Point; XYZ move_point = new XYZ(center.X - location_point.X, center.Y - location_point.Y, 0); ElementTransformUtils.MoveElement(doc, element.Id, move_point); } result = "S"; } catch (Exception ex) { MessageBox.Show(ex.Message); } return(result); }