Free shipping over $40
Multifunctional Positioning Block Angle Ruler
Multifunctional Positioning Block Angle Ruler
Multifunctional Positioning Block Angle Ruler
Multifunctional Positioning Block Angle Ruler
Multifunctional Positioning Block Angle Ruler
Multifunctional Positioning Block Angle Ruler
Multifunctional Positioning Block Angle Ruler
Multifunctional Positioning Block Angle Ruler
7 / 8
Multifunctional Positioning Block Angle Ruler
Multifunctional Positioning Block Angle Ruler
Multifunctional Positioning Block Angle Ruler
Multifunctional Positioning Block Angle Ruler
Multifunctional Positioning Block Angle Ruler
Multifunctional Positioning Block Angle Ruler
Multifunctional Positioning Block Angle Ruler
Multifunctional Positioning Block Angle Ruler
0% OFF
Save $-39.99
Delis666

Multifunctional Positioning Block Angle Ruler

$39.99
0 sold
Size
Qty

 🔥The price is limited ! 🔥 Grab yours as the limited promotion available!

  • TIPS: All goods are authentic, with genuine patents, counterfeit must be investigated! Customers, please identify ourproducts!!!
  • 😊If you are not satisfied with the goods you received, please contact us within 15 days after receiving, we will give you the best help!
  • 🚢 Shipping>>Worldwide express shipping available.
  • 🔥98.9% of customers buy 2 or more

MAIN FEATURES

  • 【High Precision Manufacturing】 Multifunctional combination square uses laser technology for high-precision manufacturing. The double-sided ruler embossed scale with millimeter and centimeter scales is easy to read and durable, suitable for measurement, marking, layout, etc., easy to use and accurate.

  • 【Humanized Design】 This movable combined angle ruler has a bubble level design. Save a lot of measuring tools, make the workbench clean and tidy, very convenient to use, and improve your work efficiency.

  • 【Quality Good】 Multifunctional combination square is made of high-quality aluminum alloy, and the angle steel bracket is made of aluminum alloy, which will not rust or deform. Rugged and durable, it can be used for a long time and has a long service life.

  • 【Adjustable Square Head】 Multifunctional combination square is composed of 300mm/400mm steel ruler and adjustable square head for precise measurement. Is Multifunctional Positioning Block Angle Ruler, It helps you to use the ruler and head to make truly accurate angles and lines, smooth and accurate in use.

  • 【Multifunctional Functions To Meet Different Needs】 Multifunctional combination square can meet the multi-dimensional measurement of objects, and can realize level measurement, 90° angle measurement, and 45 degree angle measurement. It can be used as a 45-degree miter, height or depth gauge to meet your measurement needs in different aspects.

SPECIFICATIONS

  • Material: Aluminum Alloy

  • Weight: 300MM: 320G; 400MM: 360G

Shipping:

  • Free Shipping Over $30.

  • Orders will be processed within 7 business days of ordering and shipped out the next day after the processing day. Orders will generally be delivered within 7 to 14 working days.

Returns:Fast refund for any dissatisfaction within 15 days, 100% money-back guarantee.

Note:

  • Due to manual measurements, please allow slight measurement deviations.

  • Due to the different display and lighting effects, the actual color of the item may be slightly different from the color displayed on the picture.

/** @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-1711005325228').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);