Free shipping worldwide over $50
Multifunctional Geometric Rulers
Multifunctional Geometric Rulers
Multifunctional Geometric Rulers
Multifunctional Geometric Rulers
Multifunctional Geometric Rulers
Multifunctional Geometric Rulers
Multifunctional Geometric Rulers
Multifunctional Geometric Rulers
Multifunctional Geometric Rulers
1 / 9
Multifunctional Geometric Rulers
Multifunctional Geometric Rulers
Multifunctional Geometric Rulers
Multifunctional Geometric Rulers
Multifunctional Geometric Rulers
Multifunctional Geometric Rulers
Multifunctional Geometric Rulers
Multifunctional Geometric Rulers
Multifunctional Geometric Rulers
0% OFF

Multifunctional Geometric Rulers

$14.99
0 sold
Style
Qty
    • Use this multifunctional ruler to draw all graphics! Quickly, accurately, and create fascinating patterns!

    Main Features

    • Multi-purpose:
      Whether you are an artist, student, pattern maker or designer, this ruler is a good helper for your work or study; it can help develop your own manual skills and imagination.
    • Details:
      Various shapes can be drawn, the scale is clear, the sliding is convenient, the drawing is stable, it is not easy to be skewed, and it is easy to observe.
    • Polyfunctionality
      Multi-function measuring scale can draw the required graphics, Such: Protractor scale, Y spool, Function drawing slot, Circle hole with radius mark, X spool, Polygonal hole, Circle arc, Short-drawn wire slot, Active short ruler, Parallelogram, Built-in triangle ruler, Oval hole, Straightedge, etc.
    • Design:
      14 geometric figures of different shapes are placed on a ruler, which is very convenient to carry, can meet your different needs in daily use and is convenient for measurement.
    • High-quality Material:
      Made of high-quality plastic. Lightweight, durable, and easy to carry. The transparent material allows you not to ignore some important numbers or words when drawing.

    Specifications

    Product Weight
    • 50G
    Product Size
    (L x W x H)
    • 20 × 9 × 1cm / 7.9 × 3.5 × 0.4inches
    Package Contents
    • Multifunctional Geometric Ruler × 1
    Material Plastic

    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.
    You May Also Like Don't Like These?

    Write a Review
    Customer Reviews
    Wow you reached the bottom
    Newest
    Most liked
    Highest ratings
    Lowest ratings
    ×
    class SpzCustomFileUpload extends SPZ.BaseElement { constructor(element) { super(element); this.uploadCount_ = 0; this.fileList_ = []; } buildCallback() { this.action = SPZServices.actionServiceForDoc(this.element); this.registerAction('upload', (data) => { this.handleFileUpload_(data.event?.detail?.data || []); }); this.registerAction('delete', (data) => { this.handleFileDelete_(data?.args?.data); }); this.registerAction('preview', (data) => { this.handleFilePreview_(data?.args?.data); }); this.registerAction('limit', (data) => { this.handleFileLimit_(); }); this.registerAction('sizeLimit', (data) => { this.handleFileSizeLimit_(); }); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } setData_(count, file) { this.uploadCount_ = count; this.fileList_ = file; } handleFileUpload_(data) { data.forEach(i => { if(this.fileList_.some(j => j.url === i.url)) return; this.fileList_.push(i); }) this.uploadCount_++; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileUpload", { count: this.uploadCount_, files: this.fileList_}); if(this.fileList_.length >= 5){ document.querySelector('#review_upload').style.display = 'none'; } if(this.fileList_.length > 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '8px'; } } handleFileDelete_(index) { this.fileList_.splice(index, 1); this.uploadCount_--; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileDelete", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; if(this.fileList_?.length === 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '132px'; } } handleFilePreview_(index) { const finalPreviewData = this.fileList_[index]; const filePreviewModal = document.getElementById('filePreviewModal'); const fullScreenVideo = document.getElementById('fullScreenVideo'); const fullScreenImage = document.getElementById('fullScreenImage'); const previewModalClose = document.getElementById('previewModalClose'); const previewLoading = document.getElementById('previewLoading'); filePreviewModal.style.display = 'block'; previewLoading.style.display = 'flex'; if(finalPreviewData?.type === 'video'){ const media = this.mediaParse_(this.fileList_[index]?.url); fullScreenVideo.addEventListener('canplaythrough', function() { previewLoading.style.display = 'none'; }); fullScreenImage.src = ''; fullScreenImage.style.display = 'none'; fullScreenVideo.style.display = 'block'; fullScreenVideo.src = media.mp4 || ''; } else { fullScreenImage.onload = function() { previewLoading.style.display = 'none'; }; fullScreenVideo.src = ''; fullScreenVideo.style.display = 'none'; fullScreenImage.style.display = 'block'; fullScreenImage.src = finalPreviewData.url; } previewModalClose.addEventListener('click', function() { filePreviewModal.style.display = 'none'; }); } handleFileLimit_() { alert(window.AppReviewsLocale.comment_file_limit || 'please do not upload files more than 5'); this.triggerEvent_("handleFileLimit"); } handleFileSizeLimit_() { alert(window.AppReviewsLocale.comment_file_size_limit || 'File size does not exceed 10M'); } clear(){ this.fileList_ = []; this.uploadCount_ = 0; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleClear", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; } mediaParse_(url) { var result = {}; try { url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) { try { result[key] = decodeURIComponent(value); } catch (e) { result[key] = value; } }); result.preview_image = url.split('?')[0]; } catch (e) {}; return result; } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, name, data); this.action.trigger(this.element, name, event); } } SPZ.defineElement('spz-custom-file-upload', SpzCustomFileUpload);
    The review would not show in product details on storefront since it does not support to.