Enjoy FREE standard delivery on orders over $59.99
Last Day 49% OFF🔥Multi-function drawing ruler
Last Day 49% OFF🔥Multi-function drawing ruler
Last Day 49% OFF🔥Multi-function drawing ruler
Last Day 49% OFF🔥Multi-function drawing ruler
Last Day 49% OFF🔥Multi-function drawing ruler
Last Day 49% OFF🔥Multi-function drawing ruler
Last Day 49% OFF🔥Multi-function drawing ruler
Last Day 49% OFF🔥Multi-function drawing ruler
Last Day 49% OFF🔥Multi-function drawing ruler
Last Day 49% OFF🔥Multi-function drawing ruler
1 / 10
Last Day 49% OFF🔥Multi-function drawing ruler
Last Day 49% OFF🔥Multi-function drawing ruler
Last Day 49% OFF🔥Multi-function drawing ruler
Last Day 49% OFF🔥Multi-function drawing ruler
Last Day 49% OFF🔥Multi-function drawing ruler
Last Day 49% OFF🔥Multi-function drawing ruler
Last Day 49% OFF🔥Multi-function drawing ruler
Last Day 49% OFF🔥Multi-function drawing ruler
Last Day 49% OFF🔥Multi-function drawing ruler
Last Day 49% OFF🔥Multi-function drawing ruler
mysite

Last Day 49% OFF🔥Multi-function drawing ruler

$24.99 $49.00
29 sold
Quantity
Qty 973 in stock

Shipping:

  • United States: 7 to 10 business days(Ship from California)
  • Canada: 7 to 10 business days(Ship from Ottawa)
  • United Kingdom: 7 to 10 business days(Ship from London)
  • Europe: 7 to 10 business days(Ship from United Kingdom)
  • Australia: 7 to 10 business days(Ship from Canberra)

    Designed for portability, this is intended to be a portable stationery item that fits in your notepad like a glove. Not only does it work great as a straight and curved metallic ruler, but it is also a compass and a protractor. With a in hand, you will be well-equipped to draw perfect circles and patterns effortlessly.

     This is a highly portable multi-functional stationery item with many more handy capabilities than a traditional compass. It doesn't poke holes through the paper as it has no sharp point, and yet is still stable enough to not move around thanks to the specially designed rolling base. 

 

    This is an innovative pocket-sized drawing tool tailor-made for designers, artists, architects, journal enthusiasts, mandalas lovers, illustrators, tattoo artists,   students, and creative professionals.

 

gGqUif2gxdSGFuuy5Mke1IkNcDG/0lM/FCpA

undefined

undefined

undefined

undefined

undefined




undefined

undefined

You May Also Like Don't Like These?
/** @private {string} */ class SpzCustomAnchorScroll extends SPZ.BaseElement { static deferredMount() { return false; } constructor(element) { super(element); /** @private {Element} */ this.scrollableContainer_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.viewport_ = this.getViewport(); this.initActions_(); } setTarget(containerId, targetId) { this.containerId = '#' + containerId; this.targetId = '#' + targetId; } scrollToTarget() { const container = document.querySelector(this.containerId); const target = container.querySelector(this.targetId); const {scrollTop} = container; const eleOffsetTop = this.getOffsetTop_(target, container); this.viewport_ .interpolateScrollIntoView_( container, scrollTop, scrollTop + eleOffsetTop ); } initActions_() { this.registerAction( 'scrollToTarget', (invocation) => this.scrollToTarget(invocation?.caller) ); this.registerAction( 'setTarget', (invocation) => this.setTarget(invocation?.args?.containerId, invocation?.args?.targetId) ); } /** * @param {Element} element * @param {Element} container * @return {number} * @private */ getOffsetTop_(element, container) { if (!element./*OK*/ getClientRects().length) { return 0; } const rect = element./*OK*/ getBoundingClientRect(); if (rect.width || rect.height) { return rect.top - container./*OK*/ getBoundingClientRect().top; } return rect.top; } } SPZ.defineElement('spz-custom-anchor-scroll', SpzCustomAnchorScroll); const STRENGTHEN_TRUST_URL = "/api/strengthen_trust/settings"; class SpzCustomStrengthenTrust extends SPZ.BaseElement { constructor(element) { super(element); this.renderElement_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.xhr_ = SPZServices.xhrFor(this.win); const renderId = this.element.getAttribute('render-id'); SPZCore.Dom.waitForChild( document.body, () => !!document.getElementById(renderId), () => { this.renderElement_ = SPZCore.Dom.scopedQuerySelector( document.body, `#${renderId}` ); if (this.renderElement_) { this.render_(); } this.registerAction('track', (invocation) => { this.track_(invocation.args); }); } ); } render_() { this.fetchData_().then((data) => { if (!data) { return; } SPZ.whenApiDefined(this.renderElement_).then((apis) => { apis?.render(data); document.querySelector('#strengthen-trust-render-1728540568666').addEventListener('click',(event)=>{ if(event.target.nodeName == 'A'){ this.track_({type: 'trust_content_click'}); } }) }); }); } track_(data = {}) { const track = window.sa && window.sa.track; if (!track) { return; } track('trust_enhancement_event', data); } parseJSON_(string) { let result = {}; try { result = JSON.parse(string); } catch (e) {} return result; } fetchData_() { return this.xhr_ .fetchJson(STRENGTHEN_TRUST_URL) .then((responseData) => { if (!responseData || !responseData.data) { return null; } const data = responseData.data; const moduleSettings = (data.module_settings || []).reduce((result, moduleSetting) => { return result.concat(Object.assign(moduleSetting, { logos: (moduleSetting.logos || []).map((item) => { return moduleSetting.logos_type == 'custom' ? this.parseJSON_(item) : item; }) })); }, []); return Object.assign(data, { module_settings: moduleSettings, isEditor: window.self !== window.top, }); }); } } SPZ.defineElement('spz-custom-strengthen-trust', SpzCustomStrengthenTrust);