private ElementTransformParams ExtractTransformParameters() { ElementTransformParams TransFormParams = new ElementTransformParams(); if (!string.IsNullOrEmpty(this.HorizontalDistancetext.Text)) { TransFormParams.HorizontalDistance = double.Parse(this.HorizontalDistancetext.Text); } if (!string.IsNullOrEmpty(this.ElevationTxt.Text)) { TransFormParams.ElevationFromAlignment = double.Parse(this.ElevationTxt.Text); } if (!string.IsNullOrEmpty(this.DegreesTxt.Text)) { TransFormParams.RotationAngleInPlane = double.Parse(this.DegreesTxt.Text); } if (!string.IsNullOrEmpty(this.InclinationTxt.Text)) { TransFormParams.InclinationAngleInXZPlane = double.Parse(this.InclinationTxt.Text); } if (!string.IsNullOrEmpty(this.StationDistanceTxt.Text)) { TransFormParams.DistanceBetweenStations = double.Parse(this.StationDistanceTxt.Text); } TransFormParams.RotateWithAlignment = RotateWithAlignment.IsChecked; TransFormParams.CreateAlignment = CreateAlignmentInModelCheck.IsChecked; TransFormParams.CreateStationsAtEndAndStartCheck = CreateStationsAtEndAndStartCheck.IsChecked; TransFormParams.StationToStartFrom = ExtractStationPlacmentStart(); TransFormParams.StationToEndAt = ExtractStationPlacmentEnd(); return(TransFormParams); }
public ParameterValues(List <RevitPlacmenElement> revitPlaceMentPoints, string familypath, ElementTransformParams transForm) { InitializeComponent(); RevitPlaceMentPoints = revitPlaceMentPoints; FamilyPath = familypath; Transform = transForm; var FamDoc = Command.uiapp.Application.OpenDocumentFile(FamilyPath).FamilyManager; List <string> TypeNames = new List <string>(); foreach (FamilyType item in FamDoc.Types) { if (!String.IsNullOrWhiteSpace(item.Name)) { TypeNames.Add(item.Name); } } TypeNames.Sort(); TypesCmb.ItemsSource = TypeNames; TypesCmb.SelectedIndex = 0; ParamNames = new List <ParameterElement>(); foreach (FamilyParameter Famparam in FamDoc.Parameters) { //var Param = new (string, string)(Famparam.Definition.Name,""); ParamNames.Add(new ParameterElement(Famparam.Definition.Name, "")); } ParamValsDG.ItemsSource = ParamNames; }
private void Run_click(object sender, RoutedEventArgs e) { TransForm = ExtractTransformParameters(); var RevitPlaceMentPoints = LandXmlParser.ParseLandXml(LandXmlPath.Text); ParameterValues W = new ParameterValues(RevitPlaceMentPoints, FamilyPath.Text, TransForm); W.ShowDialog(); //RevitHelper.PlaceRevitFamilies(RevitPlaceMentPoints, uiDoc, FamilyPath.Text); }
internal static List <(FamilyInstance, RevitPlacmenElement)> PlaceRevitFamilies(List <RevitPlacmenElement> RevitPlacmentPoints, UIDocument uiDoc, string FamilyPath, string TypeName, ElementTransformParams transform) { List <(FamilyInstance, RevitPlacmenElement)> CreatedInstances = new List <(FamilyInstance, RevitPlacmenElement)>(); string FamilyName = string.Empty; RevitPlacmentPoints = RevitPlacmentPoints.Distinct(new ComparePlacmentPoints()).ToList(); RevitPlacmentPoints.Sort(delegate(RevitPlacmenElement c1, RevitPlacmenElement c2) { return(c1.Station.CompareTo(c2.Station)); }); using (Transaction T = new Transaction(uiDoc.Document, "Place Objects")) { T.Start(); try { uiDoc.Document.LoadFamily(FamilyPath); FamilyName = System.IO.Path.GetFileNameWithoutExtension(FamilyPath); } catch (Exception) { } try { FamilySymbol Fam = new FilteredElementCollector(uiDoc.Document).OfClass(typeof(FamilySymbol)).Cast <FamilySymbol>().FirstOrDefault(F => F.Name == TypeName && F.FamilyName == FamilyName); Fam.Activate(); if (transform.StationToStartFrom != default(double)) { RevitPlacmentPoints.RemoveAll(E => E.Station < transform.StationToStartFrom); } if (transform.StationToEndAt != default(double)) { RevitPlacmentPoints.RemoveAll(E => E.Station > transform.StationToEndAt); } for (int i = 0; i < RevitPlacmentPoints.Count; i++) { FamilyInstance FamIns = uiDoc.Document.Create.NewFamilyInstance(RevitPlacmenElement.ConvertPointToInternal(RevitPlacmentPoints[i].PlacementPoint), Fam, Autodesk.Revit.DB.Structure.StructuralType.NonStructural); RevitPlacmentPoints[i].FillAttributes(FamIns); CreatedInstances.Add((FamIns, RevitPlacmentPoints[i]));