Skip to content

Commit

Permalink
Merge pull request #1228 from mcneel/1.27
Browse files Browse the repository at this point in the history
Fix on `Add From` component.
  • Loading branch information
kike-garbo authored Nov 29, 2024
2 parents 2ed75f3 + 5e1e99a commit cd9db28
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ void ReconstructFormByCurves
IList<Rhino.Geometry.Curve> profiles
)
{
if (!document.IsFamilyDocument || document.OwnerFamily.FamilyCategoryId.ToBuiltInCategory() != ARDB.BuiltInCategory.OST_Mass)
if (!document.IsFamilyDocument || !document.OwnerFamily.IsConceptualMassFamily)
throw new Exceptions.RuntimeArgumentException("Document", "This component can run only on a Mass Family document");

var planes = new List<Rhino.Geometry.Plane>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,31 +73,34 @@ Brep brep
}
}
}
else if (brep.TryGetExtrusion(out var extrusion) && (extrusion.CapCount == 2 || !extrusion.IsClosed(0)))
else if (document.OwnerFamily.IsConceptualMassFamily)
{
using (var sketchPlane = ARDB.SketchPlane.Create(document, extrusion.GetProfilePlane(0.0).ToPlane()))
using (var referenceArray = new ARDB.ReferenceArray())
if (brep.TryGetExtrusion(out var extrusion) && (extrusion.CapCount == 2 || !extrusion.IsClosed(0)))
{
try
using (var sketchPlane = ARDB.SketchPlane.Create(document, extrusion.GetProfilePlane(0.0).ToPlane()))
using (var referenceArray = new ARDB.ReferenceArray())
{
foreach (var curve in extrusion.Profile3d(new ComponentIndex(ComponentIndexType.ExtrusionBottomProfile, 0)).ToCurveMany())
referenceArray.Append(new ARDB.Reference(document.FamilyCreate.NewModelCurve(curve, sketchPlane)));
try
{
foreach (var curve in extrusion.Profile3d(new ComponentIndex(ComponentIndexType.ExtrusionBottomProfile, 0)).ToCurveMany())
referenceArray.Append(new ARDB.Reference(document.FamilyCreate.NewModelCurve(curve, sketchPlane)));

ReplaceElement
(
ref form,
document.FamilyCreate.NewExtrusionForm
ReplaceElement
(
!cutting,
referenceArray,
extrusion.PathLineCurve().Line.Direction.ToXYZ(GeometryEncoder.ModelScaleFactor)
)
);
return;
}
catch (Autodesk.Revit.Exceptions.InvalidOperationException)
{
document.Delete(referenceArray.OfType<ARDB.Reference>().Select(x => x.ElementId).ToArray());
ref form,
document.FamilyCreate.NewExtrusionForm
(
!cutting,
referenceArray,
extrusion.PathLineCurve().Line.Direction.ToXYZ(GeometryEncoder.ModelScaleFactor)
)
);
return;
}
catch (Autodesk.Revit.Exceptions.InvalidOperationException)
{
document.Delete(referenceArray.OfType<ARDB.Reference>().Select(x => x.ElementId).ToArray());
}
}
}
}
Expand Down

0 comments on commit cd9db28

Please sign in to comment.