Belle-Ve Bricks

Custom Creations, Unforgettable Impressions.

bonsai front
bonsai front

Lego Creator (10281) Bonsai Tree Construction Kit Blog

Trusted by Over 392 Distinctive Clients
Custom model
Bring Your Idea to Life
bonsai front

Released alongside the Flower Bouquet set (10280) on 1st January 2021, as part of the LEGO® Botanical Collection, was this Creator Expert Bonsai Tree model for adults (18+): a celebration of the ancient art of bonsai, a Japanese term which literally translates to ‘planted in a container’. The art originated in China over 2,000 years ago but was since copied and adapted by the Japanese into their culture.

If you would like buy this set it is available to purchase from:

LEGO UK
LEGO US
Amazon UK
Amazon US

IMAGE 20
IMAGE 3
IMAGE 4

The ultimate aim of the bonsai is to create a miniaturized but realistic representation of nature in the form of a tree achieved through a combination of Asian horticultural and aesthetic traditions of dwarfing and shaping the growth of natural elements.

With this expertly devised, botanical construction and display kit, the builder can custom arrange the LEGO® elements (in a two-for-the-price-of-one deal) to suit their own whim, by either opting for pink cherry blossom or light green leaves (with darker, emerald shoots for budding growths)to crown the network of brown tree limbs below. With the pink option, you get the quirky inclusion of tiny pink frogs (with one brown frog resting atop the tree limbs), nesting amidst the blossom.

IMAGE 5

‘One Tree, Two Varieties’…

So proclaims an opening passage in the instructions booklet as you are invited to create a realistic and unique bonsai that can be remodelled and tended to much in the same way as you would a real bonsai, only here you don’t need to wait for the seasons to change to swap your arrangement from luscious green to shocking pink.

IMAGE 6


The booklet also makes tongue-in-cheek mention how this bonsai kit will thrive and long outlive real trees if you take care of it by nurturing and pruning its growth. It doesn’t say anything about watering it though!

IMAGE 2

It is currently priced £44.99/$54.99 and at the time of writing, remains Out Of Stock on Lego’s website. For the sake of this blogger’s sense of calm (not to mention safety), it is a good job he procured one of these fine items in time for his partner’s 50th birthday.

IMAGE 8

Currently, the oldest known bonsai tree is over a thousand years old. If properly pampered with constant care and maintenance, real life bonsais can typically outlive, by twenty five percent, a tree of the same species in nature.

This set was designed by Nicholas Vas who continues the LEGO® tradition of including unusual pieces within culturally-diverse sets that represent something else: see the Spring Chinese Lantern Festival (80107) with its six protruding blue bananas that apex the gazebo.

IMAGE 9

He is well known for using frogs in his set, but possibly employs them here as a Feng Shui totem, with the belief that they attract prosperity and protect the owner against misfortune. The frog remains a good luck symbol in many cultures that depend on rain for rich and bountiful crops, and its inclusion here constitutes a neat Easter Egg to be discovered amongst the kit’s 878 pieces. The set’s dimensions are 7.5”/20cm wide by 7”/18cm.

IMAGE 10

The container for this LEGO® bonsai is a shiny black rectangular pot paced over a traditionally-slatted wood-effect stand. The two complement each other perfectly and together create a beautiful display piece that will fit any location.

IMAGE 11
IMAGE 12
IMAGE 13
IMAGE 14

Once those sections are in place, you can then get stuck into modelling the tree elements which look deceptively simple to assemble but, thanks to complex brick design, with elements fitting together like a three-dimensional jigsaw in which each component depends on the adjoining ones for the stability of the whole, it can be a pernickety obstacle to overcome.

IMAGE 15
IMAGE 16
IMAGE 17
IMAGE 18
IMAGE 19

However, once properly constructed, the trunk and its branches should provide a sturdy enough foundation upon which you can dress with the fauna and foliage elements. And that’s where the fun begins for the more discerning LEGO® builder, allowing them to marvel at their own fluid creations, and make adjustments for seasonal climates.

IMAGE 20

The leaf pieces have been made from a plant-based plastic produced using sustainably sourced sugarcane. The joy with this set is the choice to express one’s creativity with the freedom to model limbs and apply the greenery or cherry blossom in different ways.

IMAGE 21

Excellent display value here neatly complements the interactive aspects of the piece with its multiple creative options: either one can work in conjunction with other models as surrounding foliage to further maximise display potential.

IMAGE 22
IMAGE 23

However, be wary that whatever creations you achieve might prove fragile and vulnerable to the slightest wayward touch. Just between us, but I did have to rescue my partner’s build more than a couple of times upon hearing her cries of frustration with some of the more fiddly aspects of construction.

IMAGE 24
IMAGE 25
IMAGE 26
IMAGE 27

For that reason, this blogger recommends that you add the loose pebble bricks (supplied in two separate bags) at the end of your build as opposed to midway through construction (as the booklet advises) lest you wish to sacrifice any sense of harmony, peace and tranquillity achieved which was surely the ultimate goal of this bonsai building kit in the first place. Hopefully, the pink frogs will keep any trouble at bay!

IMAGE 28
IMAGE 29

Let us know what you think by dropping a comment below!

<div class="badge-base LI-profile-badge" data-locale="en_US" data-size="large" data-theme="dark" data-type="HORIZONTAL" data-vanity="ferdi-vol" data-version="v1"><a class="badge-base__link LI-simple-link" href="https://www.linkedin.com/in/%E2%9C%85-ferdi-vol-corporate-gifts/?trk=profile-badge"></a></div>
/* Auto generated, hash = 5dceu9kevqjdyuy2uw1atqrsu */
//TODO: Break this file down so that we can actually unit test it.
(function(window) {
  /**
  * Renders all unrendred LinkedIn Badges on the page
  */
  window.LIRenderAll = function () {
    var CALLBACK_NAME     = 'LIBadgeCallback', //Must match callback on helpers.js
        BADGE_NAMES       = '.LI-profile-badge, .LI-entity-badge',
        // TODO -- tracking param for other badge types
        TRACKING_PARAM    = 'profile-badge',
        responsesReceived = 0, //Keeps track of number of responses recieved for proper cleanup when finished
        expectedResponses = 0, //Keeps track of number of responses to expect
        scripts           = [ ], //Keeps track of scripts added for proper cleanup when finished
        childScripts      = {}, //Keeps track of child scripts to render
        badges            = Array.prototype.slice.call(document.querySelectorAll(BADGE_NAMES));

    var i, len, badge, rendered;
    for (i = 0, len = badges.length;  i < len; i++) {
      badge    = badges[i];
      rendered =  badge.getAttribute('data-rendered');
      if (!rendered) {
        expectedResponses++;
        badge.setAttribute('data-rendered', true);
        renderBadge(badge);
      }
    }

    function isCNDomain() {
      if (typeof window !== "undefined") {
        var hostName = window.location && window.location.hostname ||  '';
        return (/linkedin(-ei)?.cn$/).test(hostName);
      }

      return false;
    }

    function generateUrl(isEI) {
      var domainPrefix = isEI ? 'https://badges.linkedin-ei' : 'https://badges.linkedin';
      if (isCNDomain()) {
        return domainPrefix + ".cn/";
      }

      return domainPrefix + ".com/";
    }

    function getBadgeKeyQueryParams(badge) {
      return Array.prototype.slice.call(badge.attributes).filter(function (attr) {
        return attr.name.lastIndexOf('data-key-', 0) !== -1;
      }).map(function (attr) {
        // Most browsers automatically lowercase the attribute name when its being read
        // We are calling lowercase on it again to ensure consistency for any browsers that are lagging behind.
        return encodeURIComponent(attr.name.replace('data-', '').toLowerCase()) + '=' + encodeURIComponent(attr.value);
      });
    }

    /*
    * Renders a single badge on the page
    * @param badge: div element of badge to render
    */
    function renderBadge(badge) {
      var size       = badge.getAttribute('data-size'),
          locale     = badge.getAttribute('data-locale'),
          type       = badge.getAttribute('data-type'),
          theme      = badge.getAttribute('data-theme'),
          vanity     = badge.getAttribute('data-vanity'),
          version    = badge.getAttribute('data-version'),
          isEI       = badge.hasAttribute('data-ei'),
          entity     = badge.getAttribute('data-entity'),
          isCreatePage = badge.hasAttribute('data-iscreate'),
          uid        = Math.round(1000000 * Math.random()),
          baseUrl = generateUrl(isEI),
          queryParams = [
            'locale=' + encodeURIComponent(locale),
            'badgetype=' + encodeURIComponent(type),
            'badgetheme=' + encodeURIComponent(theme),
            'uid=' + encodeURIComponent(uid),
            'version=' + encodeURIComponent(version)
          ],
          url;

      if (version === 'v2') {
        baseUrl += 'view';
        queryParams.push('badgesize=' + encodeURIComponent(size));
        queryParams.push('entity=' + encodeURIComponent(entity));
        queryParams = queryParams.concat(getBadgeKeyQueryParams(badge));
      } else {
        baseUrl += 'profile';
        queryParams.push('maxsize=' + encodeURIComponent(size));
        queryParams.push('trk=' + encodeURIComponent(TRACKING_PARAM));
        queryParams.push('vanityname=' + encodeURIComponent(vanity));
      }

      if (isCreatePage) {
        queryParams.push('fromCreate=true');
      }

      url = baseUrl + '?' + queryParams.join('&');
      badge.setAttribute('data-uid' , uid);
      jsonp(url); //Calls responseHandler when done
    }

    /**
    * Handles a response from the server. Finds badge matching badgeUid and inserts badgeHtml there
    * @param badgeHtml: String representing contents of the badge
    * @param badgeUid: UID of the badge to target
    **/
    function responseHandler(badgeHtml, badgeUid) {
      responsesReceived ++;

      var i, badge, uid, isCreate;
      var defaultWidth = 330 // max possible width
      var defaultHeight = 300 // max possible height

      for (i = 0, len = badges.length; i < len; i++) {
        badge = badges[i];
        // isCreate needed to prevent reloading artdeco script tag
        isCreate = badge.getAttribute('data-iscreate');
        uid   = parseInt(badge.getAttribute('data-uid'), 10);
        if (uid === badgeUid) {
          var badgeMarkup = `<body>${badgeHtml}</body>`
          var iframe = document.createElement('iframe');
          iframe.onload = function() {
            var iframeBody = iframe.contentWindow.document.body;
            // 5 px buffer to avoid the badge border being cut off.
            iframe.setAttribute('height', (iframeBody.scrollHeight || defaultHeight) + 5);
            iframe.setAttribute('width', (iframeBody.scrollWidth || defaultWidth) + 5);
          };
          iframe.setAttribute('frameBorder', '0');
          iframe.style.display = 'block';
          badge.appendChild(iframe);
          iframe.contentWindow.document.open();
          iframe.contentWindow.document.write(badgeMarkup);
          iframe.contentWindow.document.close();
          replaceScriptTags(badge, isCreate);
        }
      }
      tryClean();
    }

  // These functions are needed because badge markup is added via innerHtml property which does not run script tags
  function replaceScriptTags(node, isCreate) {
    if (shouldReplaceNode(node, isCreate)) {
      node.parentNode.replaceChild(cloneScriptNode(node), node);
      childScripts[node.src] = true;
    } else {
      var i = 0,
          children = node.childNodes;
      while (i < children.length) {
        replaceScriptTags(children[i++], isCreate);
      }
    }
    return node;
  }

  function shouldReplaceNode(node, isCreate) {
    return isScriptNode(node) && !childScripts[node.src] && (!isCreate || (isCreate && !node.getAttribute('data-isartdeco')));
  }

  function isScriptNode(node) {
    return node.tagName === 'SCRIPT';
  }

  function cloneScriptNode(node){
    var script  = document.createElement("script");
    for( var i = node.attributes.length-1; i >= 0; i-- ) {
      script.setAttribute( node.attributes[i].name, node.attributes[i].value );
    }
    return script;
  }

    // Gets all incoming responses
    window[CALLBACK_NAME] = responseHandler;

    /**
    * Tries to clean added tags
    **/
    function tryClean() {
      //Clean up after all requests are done..
      //Accounts for people including script more than once
      var done = (responsesReceived >= expectedResponses && expectedResponses > 0) || responsesReceived >= badges.length;
      if (done) {
        delete window[CALLBACK_NAME];

        // remove all script tags
        scripts.map(function(script){
          document.body.removeChild(script);
        });

      }
    }

    /*
    * Makes Jsonp request, responses handles by CALLBACK_NAME
    * @param url String: url of server to make request to
    */
    function jsonp(url) {
      var script = document.createElement('script');
      script.src = url;
      scripts.push(script);
      document.body.appendChild(script);
    }
  };

  if (document.readyState === 'complete') {
    window.LIRenderAll();
  } else {
    window.addEventListener('load', window.LIRenderAll, false);
  }

})(window);
Popular Posts