/// <summary> /// Set the positions of the InternalFamilyInstace from an array of uvs /// </summary> /// <param name="uvs"></param> /// <param name="faceReference"></param> private void InternalSetUvsAndFace(Autodesk.Revit.DB.UV[] uvs, Autodesk.Revit.DB.Reference faceReference) { TransactionManager.Instance.EnsureInTransaction(Document); var placePointIds = AdaptiveComponentInstanceUtils.GetInstancePlacementPointElementRefIds(InternalFamilyInstance); if (placePointIds.Count() != uvs.Length) { throw new Exception("The input list of UVs does not have the same number of values required by the adaptive component."); } // Set the position of each placement point int i = 0; foreach (var id in placePointIds) { var uv = uvs[i]; var point = Document.GetElement(id) as Autodesk.Revit.DB.ReferencePoint; var peref = Document.Application.Create.NewPointOnFace(faceReference, uv); point.SetPointElementReference(peref); i++; } TransactionManager.Instance.TransactionTaskDone(); }
/// <summary> /// Set the positions of the InternalFamilyInstace from an array of parameters and curve /// </summary> /// <param name="parms"></param> /// <param name="c"></param> private void InternalSetParamsAndCurve(double[] parms, Autodesk.Revit.DB.Reference c) { TransactionManager.Instance.EnsureInTransaction(Document); var placePointIds = AdaptiveComponentInstanceUtils.GetInstancePlacementPointElementRefIds(InternalFamilyInstance); if (placePointIds.Count() != parms.Length) { throw new Exception("The input list of parameters does not have the same number of values required by the adaptive component."); } // Set the position of each placement point int i = 0; foreach (ElementId id in placePointIds) { var t = parms[i]; var point = Document.GetElement(id) as Autodesk.Revit.DB.ReferencePoint; var ploc = new PointLocationOnCurve(PointOnCurveMeasurementType.NormalizedCurveParameter, t, PointOnCurveMeasureFrom.Beginning); var peref = Document.Application.Create.NewPointOnEdge(c, ploc); point.SetPointElementReference(peref); i++; } TransactionManager.Instance.TransactionTaskDone(); }
/// <summary> /// Set the positions of the InternalFamilyInstace from an array of uvs /// </summary> /// <param name="uvs"></param> /// <param name="faceReference"></param> private void InternalSetUvsAndFace(Autodesk.Revit.DB.UV[] uvs, Autodesk.Revit.DB.Reference faceReference) { TransactionManager.Instance.EnsureInTransaction(Document); var placePointIds = AdaptiveComponentInstanceUtils.GetInstancePlacementPointElementRefIds(InternalFamilyInstance); if (placePointIds.Count() != uvs.Length) { throw new Exception(Properties.Resources.InputUVParamsMismatch); } // Set the position of each placement point int i = 0; foreach (var id in placePointIds) { var uv = uvs[i]; var point = Document.GetElement(id) as Autodesk.Revit.DB.ReferencePoint; var peref = Document.Application.Create.NewPointOnFace(faceReference, uv); point.SetPointElementReference(peref); i++; } TransactionManager.Instance.TransactionTaskDone(); }