3D Design Software | 3D Modeling Rendering and AI | Sketchup services

Products

Trimble SketchUp Solutions

SketchUp Extensions

Bundles deals

NURBS 3D Printing / Modeling

CAD Softwares

All rendering software

Chaos Suites

SketchUp

Architectural Design-Enscape (ArchDesign) 

All Sketchup Student Customers! – New 20% Chaos Graduate Discount Offer – Ends June 30. See Below.

Note: We are offering students who have held a SketchUp Student license within the past two years, a 20% Graduate discount on 1-year licenses for Enscape, V-Ray, Veras (Solo, Premium, or Collection – Named licenses) for commercial use. – click here for offers

SketchUp
SketchUp
SketchUp
SketchUp

 Architectural Visualization – V-Ray (ArchViz)

All Sketchup Student Customers! – New 20% Chaos Graduate Discount Offer – Ends June 30. See Below.

Note: We are offering students who have held a SketchUp Student license within the past two years, a 20% Graduate discount on 1-year licenses for Enscape, V-Ray, Veras (Solo, Premium, or Collection – Named licenses) for commercial use. – click here for offers

SketchUp
SketchUp
SketchUp
SketchUp

M&E (Media & Entertainment) – V-Ray

SketchUp
SketchUp
SketchUp
SketchUp

Architectural Visualization – Corona (ArchViz)

SketchUp
SketchUp
SketchUp

Excluding Chaos Cloud, Player and Render Nodes.

Seamless in SketchUp
Seamless in SketchUp
Seamless in SketchUp
Seamless in SketchUp
Seamless in SketchUp
Seamless in SketchUp
Seamless in SketchUp
Seamless in SketchUp
hp lenovo dell

3D Workstation Laptops and Desktop Solutions | Custom Branded Workstations & Laptops

3D Modeling and Rendering Services

Training

hp lenovo dell

3D Spacemice Hardware

Scroll to Top
/* ══════════════════════════════════════════ ZWCAD Landing Page — script.js ══════════════════════════════════════════ */ (function () { 'use strict'; /* ──────────────────────────────────────── TAB SWITCHING (Overview / 2027 / Pricing) ──────────────────────────────────────── */ window.switchTab = function (tabId) { // Hide all pages document.querySelectorAll('.tab-page').forEach(function (page) { page.classList.remove('active'); }); // Deactivate all pnav tabs document.querySelectorAll('.pnav-tab').forEach(function (btn) { btn.classList.remove('active'); }); // Show target page var page = document.getElementById('page-' + tabId); if (page) page.classList.add('active'); // Activate matching tab button var btn = document.querySelector('.pnav-tab[data-tab="' + tabId + '"]'); if (btn) btn.classList.add('active'); // Scroll to top window.scrollTo({ top: 0, behavior: 'smooth' }); }; /* ──────────────────────────────────────── FEATURE TABS (within Overview section) ──────────────────────────────────────── */ window.switchFeat = function (event, featId) { var container = event.target.closest('.section') || document; container.querySelectorAll('.feat-tab').forEach(function (t) { t.classList.remove('active'); }); container.querySelectorAll('.feat-content').forEach(function (c) { c.classList.remove('active'); }); event.target.classList.add('active'); var target = document.getElementById('feat-' + featId); if (target) target.classList.add('active'); }; /* ──────────────────────────────────────── FAQ ACCORDION ──────────────────────────────────────── */ window.toggleFaq = function (el) { var item = el.parentElement; var wasOpen = item.classList.contains('open'); // Close all document.querySelectorAll('.faq-item').forEach(function (i) { i.classList.remove('open'); }); // Toggle clicked if (!wasOpen) { item.classList.add('open'); } }; /* ──────────────────────────────────────── PRICING: STANDALONE / NETWORK TABS ──────────────────────────────────────── */ window.switchPricingTab = function (el, paneId) { document.querySelectorAll('.pricing-license-tab').forEach(function (t) { t.classList.remove('active'); t.setAttribute('aria-selected', 'false'); }); document.querySelectorAll('.pricing-pane').forEach(function (p) { p.classList.remove('active'); }); el.classList.add('active'); el.setAttribute('aria-selected', 'true'); var pane = document.getElementById('pricing-pane-' + paneId); if (pane) pane.classList.add('active'); }; /* ──────────────────────────────────────── CALCULATOR ──────────────────────────────────────── */ var ACAD_PER_SEAT_YEAR = 1890 / 1.25; // ≈ £1,512 var ZWCAD_PRICES = { standard: 799, professional: 1135, mfg: 1360 }; var FLEX_UPGRADE_RATE = 0.18; var NETWORK_MULTIPLIERS = { standard: 999 / 899, professional: 1549 / 1399, mfg: 1849 / 1699 }; var calcState = { seats: 5, edition: 'standard', licType: 'standalone', upgrade: 'none', years: 3 }; window.setEdition = function (el, val) { el.closest('.btn-group').querySelectorAll('.btn-option').forEach(function (b) { b.classList.remove('active'); }); el.classList.add('active'); calcState.edition = val; recalc(); }; window.setLicType = function (el, val) { el.closest('.btn-group').querySelectorAll('.btn-option').forEach(function (b) { b.classList.remove('active'); }); el.classList.add('active'); calcState.licType = val; recalc(); }; window.setUpgrade = function (el, val) { el.closest('.btn-group').querySelectorAll('.btn-option').forEach(function (b) { b.classList.remove('active'); }); el.classList.add('active'); calcState.upgrade = val; recalc(); }; window.syncSeats = function (source) { var slider = document.getElementById('seatsSlider'); var input = document.getElementById('seatsInput'); if (!slider || !input) return; if (source === 'slider') { input.value = slider.value; } else { slider.value = Math.min(parseInt(input.value, 10) || 1, 50); } calcState.seats = parseInt(input.value, 10) || 1; recalc(); }; window.syncYears = function (source) { var slider = document.getElementById('yearsSlider'); var input = document.getElementById('yearsInput'); if (!slider || !input) return; if (source === 'slider') { input.value = slider.value; } else { slider.value = Math.min(parseInt(input.value, 10) || 1, 10); } calcState.years = parseInt(input.value, 10) || 1; recalc(); }; function fmt(n) { return '£' + Math.round(n).toLocaleString('en-GB'); } function recalc() { var seats = calcState.seats; var edition = calcState.edition; var licType = calcState.licType; var upgrade = calcState.upgrade; var years = calcState.years; // AutoCAD cost var acadPerSeatYear = ACAD_PER_SEAT_YEAR; var acadTotal = acadPerSeatYear * seats * years; // ZWCAD cost var zwPerSeat = ZWCAD_PRICES[edition]; if (licType === 'network') { zwPerSeat *= NETWORK_MULTIPLIERS[edition]; } var zwLicenceTotal = zwPerSeat * seats; var zwFlexTotal = upgrade === 'flexible' ? zwPerSeat * FLEX_UPGRADE_RATE * seats * years : 0; var zwTotal = zwLicenceTotal + zwFlexTotal; var saving = acadTotal - zwTotal; var pct = Math.round((saving / acadTotal) * 100); var editionLabels = { standard: 'Standard', professional: 'Professional', mfg: 'MFG' }; var licLabel = licType === 'network' ? 'network licence' : 'standalone licence'; var upgrLabel = upgrade === 'flexible' ? 'perpetual + flexible upgrades' : 'perpetual'; // Render var set = function (id, val) { var el = document.getElementById(id); if (el) el.textContent = val; }; set('out-seats', seats); set('out-seats2', seats); set('out-acad-seat', fmt(acadPerSeatYear) + '/yr'); set('out-years-label', years); set('out-years-label2', years); set('out-period', years); set('out-acad-total', fmt(acadTotal)); set('out-zwcad-total',fmt(zwTotal)); set('out-saving', saving > 0 ? fmt(saving) : '£0'); set('out-pct', saving > 0 ? pct + '% less than AutoCAD' : 'AutoCAD is cheaper for this config'); set('out-zwcad-seat', fmt(zwPerSeat)); var labelEl = document.getElementById('out-zwcad-label'); if (labelEl) { labelEl.textContent = 'ZWCAD ' + editionLabels[edition] + ' — per seat (' + licLabel + ' · ' + upgrLabel + ')'; } } /* ──────────────────────────────────────── INITIAL STATE ──────────────────────────────────────── */ function init() { // Check hash for initial tab var hash = window.location.hash.replace('#', ''); if (['overview', '2027', 'pricing'].indexOf(hash) !== -1) { switchTab(hash); } // Run calculator recalc(); // Animate speed bars on load setTimeout(function () { document.querySelectorAll('.speed-fill').forEach(function (bar) { var w = bar.style.width; bar.style.width = '0'; requestAnimationFrame(function () { setTimeout(function () { bar.style.width = w; }, 50); }); }); }, 200); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } })();