public void MySampelMethod()
    {
        // This will create the following CAD hierarchy:
        //-------------------------------------------------
        //
        //   + MyRootAssembly       [assembly root]
        //   |
        //   +---+- sample-group    [empty part]
        //       |
        //       +- sample-box      [part with box geometry]
        //

        // example file path where the STEP file will be written
        const string FILEPATH = @"C:\Users\me\Documents\file.step";

        // create new StepFile instance
        StepFile stepFile = new StepFile(FILEPATH, "MyRootAssembly");

        // add a Group to StepFile and get the groups id
        int groupId = stepFile.AddGroup(
            name: "sample-group",                       // name of the part
            position: new Vector3(0, 0, 0),             // Group position relative to parent position
            rotation: new Vector3(90, 0, 0),            // Group rotation relative to parent rotation
            parentId: stepFile.ASSEMBLY_ROOT_ID         // id of parent object (ASSEMBLY_ROOT_ID is 0)
            );

        // add a Box to StepFile
        stepFile.AddBox(
            name: "sample-box",                         // name of the part
            position: new Vector3(0, 0, 0),             // Box position (based on the center of the box) relative to parent position
            dimension: new Vector3(10, 10, 10),         // dimension of the box (length, width, height)
            rotation: new Vector3(0, 0, 0),             // Box rotation (rotated around box center) relative to parent rotation
            color: Color.Red,                           // color of the Box
            parentId: groupId                           // id of the parent object
            );

        // write the StepFile to file system
        bool result = stepFile.WriteFile();
    }
        static void Main(string[] args)
        {
            // http://patorjk.com/software/taag/#p=testall&f=Graffiti&t=Step%20Writer%20
            Console.WriteLine(@"               
   _________________    _      __    _ __         
  / __/_  __/ __/ _ \  | | /| / /___(_) /____ ____
 _\ \  / / / _// ___/  | |/ |/ / __/ / __/ -_) __/
/___/ /_/ /___/_/      |__/|__/_/ /_/\__/\__/_/   

            ");

            Console.WriteLine(
                "Write simple geometry data into STEP AP214 (ISO-10303) file format.\n"
                + "version: " + typeof(StepFile).Assembly.GetName().Version + " [pre-release] \n"
                );

            const string FILEPATH = @"C:\Users\me\Documents\local\file.step";

            Console.WriteLine("Want to write the STEP file with sample content to:\n" + FILEPATH + " ?");
            Console.ReadKey();
            Console.WriteLine("...working...");

            StepFile stepFile = new StepFile(FILEPATH, "RootAssembly");

            stepFile.AddBox(
                name: "origin",
                position: new Vector3(0, 0, 0),
                dimension: new Vector3(10, 10, 10),
                rotation: new Vector3(0, 0, 0),
                color: Color.Red,
                parentId: 0
                );

            // let's build a sample workstation

            int workstationId = stepFile.AddGroup(
                name: "workstation",
                position: new Vector3(0, 0, 0),
                rotation: new Vector3(0, 0, 0),
                parentId: 0
                );

            int tableId = stepFile.AddGroup(
                name: "table",
                position: new Vector3(0, 0, 0),
                rotation: new Vector3(0, 0, 0),
                parentId: workstationId
                );

            int stuffId = stepFile.AddGroup(
                name: "stuff",
                position: new Vector3(0, 0, 630),
                rotation: new Vector3(0, 0, 0),
                parentId: workstationId
                );

            int foundationId = stepFile.AddGroup(
                name: "foundation",
                position: new Vector3(0, 0, 0),
                rotation: new Vector3(0, 0, 0),
                parentId: tableId
                );

            stepFile.AddBox(
                name: "leg1",
                position: new Vector3(-750, -250, 300),
                dimension: new Vector3(100, 100, 600),
                rotation: new Vector3(0, 0, 0),
                color: Color.Green,
                parentId: foundationId
                );

            stepFile.AddBox(
                name: "leg2",
                position: new Vector3(750, -250, 300),
                dimension: new Vector3(100, 100, 600),
                rotation: new Vector3(0, 0, 0),
                color: Color.Green,
                parentId: foundationId
                );

            stepFile.AddBox(
                name: "leg3",
                position: new Vector3(-750, 250, 300),
                dimension: new Vector3(100, 100, 600),
                rotation: new Vector3(0, 0, 0),
                color: Color.Green,
                parentId: foundationId
                );

            stepFile.AddBox(
                name: "leg4",
                position: new Vector3(750, 250, 300),
                dimension: new Vector3(100, 100, 600),
                rotation: new Vector3(0, 0, 0),
                color: Color.Green,
                parentId: foundationId
                );

            stepFile.AddBox(
                name: "tabletop",
                position: new Vector3(0, 0, 615),
                dimension: new Vector3(1600, 600, 30),
                rotation: new Vector3(0, 0, 0),
                color: Color.Blue,
                parentId: foundationId
                );

            int drawerId = stepFile.AddGroup(
                name: "drawer",
                position: new Vector3(-550, 0, 450),
                rotation: new Vector3(0, 0, 0),
                parentId: tableId
                );

            stepFile.AddBox(
                name: "walls",
                position: new Vector3(0, 50, 0),
                dimension: new Vector3(300, 500, 300),
                rotation: new Vector3(0, 0, 0),
                color: Color.Yellow,
                parentId: drawerId
                );

            stepFile.AddBox(
                name: "knob1",
                position: new Vector3(0, -225, 50),
                dimension: new Vector3(100, 50, 35),
                rotation: new Vector3(0, 0, 0),
                color: Color.Black,
                parentId: drawerId
                );

            stepFile.AddBox(
                name: "knob2",
                position: new Vector3(0, -225, -60),
                dimension: new Vector3(100, 50, 35),
                rotation: new Vector3(0, 0, 0),
                color: Color.Black,
                parentId: drawerId
                );

            stepFile.AddBox(
                name: "book1",
                position: new Vector3(540, 35, 30),
                dimension: new Vector3(250, 360, 60),
                rotation: new Vector3(0, 0, -35),
                color: Color.White,
                parentId: stuffId
                );

            stepFile.AddBox(
                name: "book2",
                position: new Vector3(540, 35, 90),
                dimension: new Vector3(250, 360, 60),
                rotation: new Vector3(0, 0, -38),
                color: Color.Yellow,
                parentId: stuffId
                );

            int monitorId = stepFile.AddGroup(
                name: "monitor",
                position: new Vector3(0, 170, 0),
                rotation: new Vector3(0, 0, -4),
                parentId: stuffId
                );

            stepFile.AddBox(
                name: "socket",
                position: new Vector3(0, 0, 20),
                dimension: new Vector3(250, 150, 40),
                rotation: new Vector3(0, 0, 0),
                color: Color.Black,
                parentId: monitorId
                );

            stepFile.AddBox(
                name: "arm",
                position: new Vector3(0, 0, 190),
                dimension: new Vector3(100, 30, 300),
                rotation: new Vector3(0, 0, 0),
                color: Color.Black,
                parentId: monitorId
                );

            stepFile.AddBox(
                name: "display",
                position: new Vector3(0, -10, 340),
                dimension: new Vector3(600, 20, 338),
                rotation: new Vector3(0, 0, 0),
                color: Color.Black,
                parentId: monitorId
                );

            stepFile.AddBox(
                name: "keyboard",
                position: new Vector3(-110, -75, 0),
                dimension: new Vector3(560, 185, 40),
                rotation: new Vector3(0, 0, -6),
                color: Color.Red,
                parentId: stuffId
                );

            bool result = stepFile.WriteFile();

            // alternatively you can use: byte[] data = stepFile.GetStepData();

            if (result)
            {
                Console.WriteLine("Success.");
            }
            else
            {
                Console.WriteLine("Failure.");
            }

            Console.ReadKey();
        }