public List <ApplicationPlaceholderObject> AlignmentToNative(Alignment alignment) { var docObj = GetExistingElementByApplicationId(alignment.applicationId); //delete and re-create line //TODO: check if can be modified if (docObj != null) { Doc.Delete(docObj.Id); } var curves = CurveToNative(alignment.curves); var placeholders = new List <ApplicationPlaceholderObject>(); var curveEnumerator = curves.GetEnumerator(); while (curveEnumerator.MoveNext() && curveEnumerator.Current != null) { var baseCurve = curveEnumerator.Current as DB.Curve; DB.ModelCurve revitCurve = Doc.Create.NewModelCurve(baseCurve, NewSketchPlaneFromCurve(baseCurve, Doc)); var lineStyles = revitCurve.GetLineStyleIds().First(); placeholders.Add(new ApplicationPlaceholderObject() { applicationId = alignment.applicationId, ApplicationGeneratedId = revitCurve.UniqueId, NativeObject = revitCurve }); } return(placeholders); }
public List <ApplicationPlaceholderObject> ModelCurveToNative(ModelCurve speckleCurve) { var docObj = GetExistingElementByApplicationId(speckleCurve.applicationId); //delete and re-create line //TODO: check if can be modified if (docObj != null) { Doc.Delete(docObj.Id); } var curves = CurveToNative(speckleCurve.baseCurve); var placeholders = new List <ApplicationPlaceholderObject>(); var curveEnumerator = curves.GetEnumerator(); while (curveEnumerator.MoveNext() && curveEnumerator.Current != null) { var baseCurve = curveEnumerator.Current as DB.Curve; DB.ModelCurve revitCurve = Doc.Create.NewModelCurve(baseCurve, NewSketchPlaneFromCurve(baseCurve, Doc)); var lineStyles = revitCurve.GetLineStyleIds(); var lineStyleId = lineStyles.FirstOrDefault(x => Doc.GetElement(x).Name == speckleCurve.lineStyle); if (lineStyleId != null) { revitCurve.LineStyle = Doc.GetElement(lineStyleId); } placeholders.Add(new ApplicationPlaceholderObject() { applicationId = speckleCurve.applicationId, ApplicationGeneratedId = revitCurve.UniqueId, NativeObject = revitCurve }); //Report.Log($"Created ModelCurve {revitCurve.Id}"); } return(placeholders); }
public List <ApplicationPlaceholderObject> ModelCurvesFromEnumerator(IEnumerator curveEnum, ICurve speckleLine) { var placeholders = new List <ApplicationPlaceholderObject>(); while (curveEnum.MoveNext() && curveEnum.Current != null) { var curve = curveEnum.Current as DB.Curve; // Curves must be bound in order to be valid model curves if (!curve.IsBound) { curve.MakeBound(speckleLine.domain.start ?? 0, speckleLine.domain.end ?? Math.PI * 2); } DB.ModelCurve revitCurve = null; if (Doc.IsFamilyDocument) { revitCurve = Doc.FamilyCreate.NewModelCurve(curve, NewSketchPlaneFromCurve(curve, Doc)); } else { revitCurve = Doc.Create.NewModelCurve(curve, NewSketchPlaneFromCurve(curve, Doc)); } Report.Log($"Created ModelCurve {revitCurve.Id}"); placeholders.Add(new ApplicationPlaceholderObject() { applicationId = (speckleLine as Base).applicationId, ApplicationGeneratedId = revitCurve.UniqueId, NativeObject = revitCurve }); } return(placeholders); }
// This is to support raw geometry being sent to Revit (eg from rhino, gh, autocad...) public List <ApplicationPlaceholderObject> ModelCurveToNative(ICurve speckleLine) { // if it comes from GH it doesn't have an applicationId, the use the hash id if ((speckleLine as Base).applicationId == null) { (speckleLine as Base).applicationId = (speckleLine as Base).id; } var docObj = GetExistingElementByApplicationId((speckleLine as Base).applicationId); if (docObj != null) { Doc.Delete(docObj.Id); } var placeholders = new List <ApplicationPlaceholderObject>(); var curveEnumerator = CurveToNative(speckleLine).GetEnumerator(); while (curveEnumerator.MoveNext() && curveEnumerator.Current != null) { var curve = curveEnumerator.Current as DB.Curve; // Curves must be bound in order to be valid model curves if (!curve.IsBound) { curve.MakeBound(speckleLine.domain.start ?? 0, speckleLine.domain.end ?? Math.PI * 2); } DB.ModelCurve revitCurve = Doc.Create.NewModelCurve(curve, NewSketchPlaneFromCurve(curve, Doc)); placeholders.Add(new ApplicationPlaceholderObject() { applicationId = (speckleLine as Base).applicationId, ApplicationGeneratedId = revitCurve.UniqueId, NativeObject = revitCurve }); } return(placeholders); }
public ApplicationPlaceholderObject ModelCurveToNative(ModelCurve speckleCurve) { var docObj = GetExistingElementByApplicationId(speckleCurve.applicationId); //TODO: support poliline/polycurve lines var baseCurve = CurveToNative(speckleCurve.baseCurve).get_Item(0); //delete and re-create line //TODO: check if can be modified if (docObj != null) { Doc.Delete(docObj.Id); } DB.ModelCurve revitCurve = Doc.Create.NewModelCurve(baseCurve, NewSketchPlaneFromCurve(baseCurve)); var lineStyles = revitCurve.GetLineStyleIds(); var lineStyleId = lineStyles.FirstOrDefault(x => Doc.GetElement(x).Name == speckleCurve.lineStyle); if (lineStyleId != null) { revitCurve.LineStyle = Doc.GetElement(lineStyleId); } return(new ApplicationPlaceholderObject() { applicationId = speckleCurve.applicationId, ApplicationGeneratedId = revitCurve.UniqueId, NativeObject = revitCurve }); }
public ModelCurve ModelCurveToSpeckle(DB.ModelCurve revitCurve) { var speckleCurve = new ModelCurve(CurveToSpeckle(revitCurve.GeometryCurve), revitCurve.LineStyle.Name); speckleCurve.elementId = revitCurve.Id.ToString(); speckleCurve.applicationId = revitCurve.UniqueId; speckleCurve.units = ModelUnits; return(speckleCurve); }
public RoomBoundaryLine RoomBoundaryLineToSpeckle(DB.ModelCurve revitCurve) { var speckleCurve = new RoomBoundaryLine(CurveToSpeckle(revitCurve.GeometryCurve)); speckleCurve.elementId = revitCurve.Id.ToString(); speckleCurve.applicationId = revitCurve.UniqueId; speckleCurve.units = ModelUnits; return(speckleCurve); }
public SpaceSeparationLine SpaceSeparationLineToSpeckle(DB.ModelCurve revitCurve) { var speckleCurve = new SpaceSeparationLine(CurveToSpeckle(revitCurve.GeometryCurve)); speckleCurve.elementId = revitCurve.Id.ToString(); speckleCurve.applicationId = revitCurve.UniqueId; speckleCurve.units = ModelUnits; Report.Log($"Converted SpaceSeparationLine {revitCurve.Id}"); return(speckleCurve); }
// This is to support raw geometry being sent to Revit (eg from rhino, gh, autocad...) public ApplicationPlaceholderObject ModelCurveToNative(ICurve speckleLine) { // if it comes from GH it doesn't have an applicationId, the use the hash id if ((speckleLine as Base).applicationId == null) { (speckleLine as Base).applicationId = (speckleLine as Base).id; } var docObj = GetExistingElementByApplicationId((speckleLine as Base).applicationId); var baseCurve = CurveToNative(speckleLine).get_Item(0); if (docObj != null) { Doc.Delete(docObj.Id); } DB.ModelCurve revitCurve = Doc.Create.NewModelCurve(baseCurve, NewSketchPlaneFromCurve(baseCurve)); return(new ApplicationPlaceholderObject() { applicationId = (speckleLine as Base).applicationId, ApplicationGeneratedId = revitCurve.UniqueId, NativeObject = revitCurve }); }