2024 Method
Changes 0
M

FillPatternElement.Create

Description:
Creates a new FillPatternElement.
public static FillPatternElement Create(
	Document document,
	FillPattern fillPattern
)
Return Value FillPatternElement The newly created FillPatternElement.
// Create a complex fill pattern
public void CreateComplexFillPattern(Document doc)
{
    // Create the fill pattern
    FillPattern fillPattern = new FillPattern("API-created", FillPatternTarget.Model,
                                              FillPatternHostOrientation.ToHost);

    // Add grids
    List<FillGrid> grids = new List<FillGrid>();

    //Horizontal lines.  
    // The arguments: origin, offset (vertical distance between lines), 
    // angle, shift (delta between location of start point per line)
    // The last two arguments are the segments: e.g. 1.0 units on, 
    // 0.1 units off (units are Revit units (ft))
    grids.Add(CreateGrid(new UV(0, 0.1), 0.5, 0, 0.55, 1.0, 0.1));
    grids.Add(CreateGrid(new UV(0, 0.5), 0.5, 0, 0.55, 1.0, 0.1));

    // Vertical lines.  
    grids.Add(CreateGrid(new UV(0, 0.1), 0.55, Math.PI / 2, 0.5, 0.4, 0.6));
    grids.Add(CreateGrid(new UV(1.0, 0.1), 0.55, Math.PI / 2, 0.5, 0.4, 0.6));

    fillPattern.SetFillGrids(grids);

    // Create the fill pattern element. Now document is modified; transaction is needed
    using (Transaction t = new Transaction(doc, "Create fill pattern"))
    {
       t.Start();
       FillPatternElement patternElement = FillPatternElement.Create(doc, fillPattern);
       t.Commit();
    }
}

// Creates and returns a new fill grid
private FillGrid CreateGrid(UV origin, double offset, double angle,
                            double shift, params double[] segments)
{
    FillGrid fillGrid = new FillGrid();
    fillGrid.Origin = origin;
    fillGrid.Offset = offset;
    fillGrid.Angle = angle;
    fillGrid.Shift = shift;
    List<double> segmentsList = new List<double>();
    foreach (double d in segments)
    {
        segmentsList.Add(d);
    }
    fillGrid.SetSegments(segmentsList);

    return fillGrid;
}