Getting Started

Prerequisites

3DPrint Premium is essentially a WordPress/WooCommerce plugin, so the requirements are as follows:

  • WooCommerce 3.0+
  • WordPress 4+
  • PHP-zip library (optional)
  • PHP-curl library (optional)

Keep in mind that the plugin might demand a decent hosting (VPS) if you plan to upload large models. This is because unlike 3DPrint Lite it's important to recalculate the price on the server side before adding it to cart.

If you're going to use model processing features and API make sure your server is able to connect to srv1.wp3dprinting.com:80. Check the plugin's "System Status" page for additional information.

Installation

After you purchase the plugin you should receive 3dprint.zip file, which can be installed through the WP admin area or manually using an FTP client. When it's activated you get redirected to the 3DPrint settings page. Now you can create your first 3DPrint product as shown in this video.

Basic Usage

Once the 3DPrint product is created you can use it directly on the product page or through a shortcode. The shortcode can be generated on 3DPrint->Shortcode Generator page.

Theme Compatibility

When choosing the theme make sure it declares WooCommerce support. If you have layout issues on the product page try to use the shortcode generated through 3DPrint->Shortcode Generator with "Compatibility Mode" enabled.

It is quite possible that some theme might be incompatible with the plugin so some custom CSS coding may be required, but if you can't figure it out feel free to contact us.

FAQ

Please refer to the FAQ page.

License

The plugin is open source and GPL licensed.

Configuration

Checkout/Pricing

The plugin can run in 3 modes:

  • Add to cart

    In this mode when the model is uploaded and the price is calculated the add-to-cart button appears. Notice the "..." button next to the dropdown which opens the extra options popup for showing the price request form if someting goes wrong (a model is too large, a model is irrepairable, etc)

    Important: The 3DPrint product price is calculated in the shopping cart, so it's important to include the shopping cart page in the checkout process.

  • Get a quote
  • Show the estimated price and get a quote

This option can be configured per product, so you can have a get-a-quote product and an add-to-cart product.

Please note that the minimum product price is set in the "Regular Price" field of product variations.

Product Viewer

This page contains all options related to the frontend viewer. Here you can also switch to the fullscreen mode. The fullscreen mode can also be configured per product. If you don't need to show printers, materials or coatings on the frontend/shopping cart you can hide them with "Show Printers", "Show Materials", "Show Coatings" options. Moreover you can hide the standard WooCommerce product reviews section with the "Show Reviews" option.

File Upload

Here you can configure the maximum size of a model and file extensions you allow your customers to upload. The plugin has no upload limit because it uses upload chunking. The chunk file size is configured on this page and it should not be larger than upload_max_filesize defined in php.ini.

Also there is a housekeeping feature which allows deleting files older than X number of days. This feature uses wp-cron and is scheduled to run once daily.

Plugin Updates

Here you should congifure the login which is used for getting plugin updates and using server-side features listed below (repair, optimize, etc). At the moment of writing the plugin updates are lifetime.

Model Processing

  • Model Repair.

    Try to repair uploaded models through Slic3r. Use with caution as it might mess up models.

  • Model Optimization.

    Optimize the model orientation on the printing platform to improve the efficiency of 3D printing.

  • Polygon Reduction.

    Reduce the number of polygons lowering the model quality and decreasing the file size.

If you enable one of these features the models uploaded by your clients will be sent to our servers for processing and cached for 2 days. Model processing does not require a paid subscription at the moment of writing this document.

Analyse API

The API is required to activate plugin's special features: infill calculation, support material calculation, print time calculation. If you enable the API the models uploaded by your clients will be sent to our servers for analysing and cached for 2 days. It requires purchasing the paid subscription. More information.

Form Builder

On this tab you can configure Ninja Forms 3.0+ integration (see FAQ and video tutorial ). This is useful for building custom price request forms: extra file uploads, multiple field types, conditional logic. More information is available in Ninja Forms documentation.

Important: If you change the form generated by 3DPrint keep in mind that the field key for the Message field should be named "message". The field key of the E-mail field should be called "email".

This can only be used in the "Get a Quote" mode. If you need to add extra fields in the "Add to Cart" mode consider installing Product Addons for Woocommerce.

Product Attributes

Overview

Upon activation 3DPrint plugin creates special product attributes (Material, Printer, Coating, Post-processing, Model, Filename, Infill, Scale, Unit) which can be seen on "Products -> Attributes" page. If you damage or remove attributes by mistake you can always recreate them by deactivating/activating the plugin.

Materials

The material is the first thing a customer chooses on the frontend. The most common setup is to create a set of materials and clone them setting different colors for each. However you can create a single material per material type and use coatings as colors. Keep in mind that if you assigned materials to appropriate printers a compatible printer is chosen automatically. Therefore using printers as quality presets you can combine a material and a quality preset.

Important settings: Material Type, Material Density (required to calculate the model weight).

Can charge per: 1 cm3 of Bounding Box Volume, 1 cm3 of Material Volume, 1 cm3 of Support Material, fixed Support Material charge, 1 cm3 of Removed Material Volume (bounding box volume - material volume), 1 gram of Material, 1 gram of volumetric weight (higher value of actual and volumetric weight), Fixed Price, 1 Hour of print time, +% to total price.

You have an option to offer material selection before printer selection here.

At least one active material is required for the plugin to work.

Printers

Printers can play several roles: physical devices, printing technology indicators, quality presets.

  • Physical devices.

    The most straightforward use.

  • Printing technology indicators.

    You can create several printers and name them like "FFF, SLA, Metal Printing" and use materials to calculate the price.

  • Quality presets.

    You can create a printer and clone it several times to offer different quality presets. Each printer can have different quality settings (layer height, infill, etc).

It's worth mentioning that each printer has "Materials" dropdown, so you can assign materials to appropriate printers. By default the materials dropdown is empty which means that the printer is compatible with ALL materials. When any material is selected on the frontend a compatible printer is automatically selected.

The most important settings: Printer Type, Build Tray Length/Width/Height, Minimum Model Side, Layer Height, Infill.

When the API is activated you can also click Advanced Options button and configure slicer settings and calculate the cost for energy consumption, depreciation and repairs.

Can charge per: 1 cm3 of Bounding Box Volume, 1 cm3 of Material Volume, 1 cm3 of Removed Material Volume (bounding box volume - material volume), 1 gram of Material, Fixed Price, 1 Hour of print time, +% to total price

You have an option to offer printer selection before material selection here.

At least one active printer is required for the plugin to work.

Coatings

Coatings can be used as material colors or a paint job.

All coatings have the "Materials" dropdown menu where you can assign appropriate materials. By default the materials dropdown is empty which means that the coating is compatible with ALL materials.

If your coatings are optional you can set the first coating as "None". To remove the coating color click "clear".

Can charge per: cm2 of surface area, Fixed Price, +% to total price.

Infills

This controls how densely filled the insides of your print will be. For a solid part use 100%, for an empty (and fragile) part use 0%. A value around 20% is usually enough to create a sturdy model. When the API is disabled all models are considered 100% solid. To show infills on the frontend you need to check "Show Infills" checkbox on the Settings page, "Analyse API" tab. The infill is calculated only when the API subscription is enabled. However it still can be used without the subscription in the "Get a Quote" mode.

Please note that printers have the "Infills" dropdown where you can set available infills for the printer and the "Default Infill" field which is automatically set upon printer selection.

Post-processing

Post-processing section provides a set of checkboxes which may offer sanding, polishing, support removal, etc.

All post-processing methods have the "Materials" dropdown menu where you can assign appropriate materials. By default the materials dropdown is empty which means that the post-processing is compatible with ALL materials.

Can charge per: 1 cm3 of Bounding Box Volume, 1 cm3 of Material Volume, 1 cm3 of Support Material, cm2 of surface area, fixed Support Material charge, 1 cm3 of Removed Material Volume (bounding box volume - material volume), 1 gram of Material, 1 gram of volumetric weight (higher value of actual and volumetric weight), Fixed Price, 1 Hour of print time, +% to total price.

Custom Attributes

Configuration

The attributes are created through the standard WooCommerce facility. Also you can set the attribute price on Products->Attributes page. The price can be flat or a percentage of the total, printing/material/coating price or material amount. It can also be a negative value. Video instructions on how to set up the price can be found here.

Price Requests

Overview

3DPrint plugin provides an option for customers to upload a model, choose a material and other parameters and hit the "Get a Quote" button. Once the button is pressed an email with the quote request is sent to the admin configured e-mail address. The price request can be seen in the admin area: 3DPrint -> Price Requests page. Additionally if you use Ninja Forms integration you can see it on the Ninja Forms form submissions page. Registered customers can see their price requests on the my-account page.

Once the price is set by the admin and sent to the customer the model can be added to cart by clicking the email's "buy now" link or through the "Price Requests" on the "my-account" page.

Configuration

To enable the "Get a Quote" mode navigate to 3DPrint -> Settings -> Checkout/Pricing. Also this option can be configured per product

Email Templates

Here you can create templates for the price request e-mails sent to the admin and a customer. Please note that these templates work only for the 3DPrint price requests, not for the woocommerce order confirmation e-mails. Since v2.7.1.6 you can use HTML in the templates.

Form Builder

Read me

Discount System

Configuration

3DPrint has it's own discount system where you can set a % or a flat discount for a given number of 3DPrint products being purchased.

For example you need following discount rules:

10 products = 10% discount
100 produts = 25% discount
1000 products = 50% discount

The configuration for the above example looks like this.

The discount applies in the shopping cart.

API

Overview

3DPrint performs a bunch of server side operations such as: model repair, optimization, triangulation, conversion, analysis/slicing. 3D models get uploaded to our server and cached for 2 days. We don't view, copy or distribute uploaded files. However these operations are optional and it is possible to create a totally isolated system, so the 3D models never leave your website. The diagrams below describe the workflow in more details.

Some features may require a paid subscription. Additional information can be found here.

Tips & Tricks

Slicing

At the moment 3DPrint offers several slicing programs to choose from: Cura 15.04, Cura 3.4, Slic3r 1.2.9, PrusaSlicer 2.3.2 with Cura 3.4 being the fastest and PrusaSlicer the most accurate.

To access slicer parameters the "Advanced Options" button in printer's settings should be clicked.

Important settings: Layer Height, Infill, Print Speed, Support Material.

To get the most accurate results use PrusaSlicer 2.3.2, export the configuration file from PrusaSlicer and upload it into the Prusa Configuration File field.

For other slicers try to copy all settings from your desktop software keeping in mind the most important settings mentioned above.

Important: To be able to use the slicing feature it is required to purchase a monthly or annual subscription.

Pricing

Configuring the price might be tricky and I'd suggest start with this 3D printing calculator

Keep in mind that materials, printers, coatings and post-processings can be configured to charge per: 1 cm3 of Bounding Box Volume, 1 cm3 of Material Volume, 1 cm3 of Support Material, fixed Support Material charge, 1 cm3 of Removed Material Volume (bounding box volume - material volume), 1 gram of Material, 1 gram of volumetric weight (higher value of actual and volumetric weight), Fixed Price, 1 Hour of print time, +% to total price.

Also printers have "Advanced Options" where you can configure electricity tariff, depreciation cost and repair cost.

Laser Cutting

Currently laser cutting printers DXF (2D), SVG, EPS and PDF (single page) files. Supported DXF entities: CIRCLE, ARC, LWPOLYLINE, LINE, POLYLINE, POINT, INSERT, SPLINE, ELLIPSE.

It's important to mention that in order to avoid possible confusion and problems it's better to create a separate 3DPrint product for laser cutting. Please check our FAQ for the "How do I assign a printer/material to a product?" question. When setting up a laser cutting product keep in mind that both a material and a printer should have a "laser cutting"/"laser cutting workpiece" type set in the admin. In advanced settings of the printer you can set the cutting speed and piercing time values, but they can be overriden by the corresponding settings of the material. Important: laser cutting workpieces have a thickness setting which defines the height of the model. Lastly make sure that all laser cutting workpieces are assigned to the laser cutting machine in the printer's settings.

To price it correctly you need to make the printer or material charge by hour or total cutting path (the API subscription should be enabled).

The demo is available here.

Bulk Upload

On the Shortcode Generator page you have an option to create a special shortcode which can be used to display the bulk upload form. DEMO.

The bulk upload form can be used in add-to-cart and get-a-quote mode. The mode is set in general settings of the plugin and can be overriden by product settings.

Also you can configure the plugin to group bulk price requests on the "Checkout/Pricing" tab.

The demo is available here.

Customizing

Basic

Many visual frontend changes can be made with any "Custom CSS / Custom JS" plugin. This includes adjustments like font, background color, canvas width, removal of unwanted elements.

Example: if you need to hide the product name paste the following code into your "Custom CSS" plugin:

       #product-15 .product_title { /* Hides the title for a product with ID 15 */
         display: none; 
       }
       #product-15 form.p3d-product-form { /* Adjusts the height of the right column  */
         padding-top: 0 !important;
       }
      
Here is how to find the product ID

Keep in my mind that being a WooCommerce plugin 3DPrint supports several WooCommerce plugins such as Product Addons for Woocommerce which allows adding extra fields to the product page.

Additionally there is a template addon where you can adjust the frontend layout by editing PHP files directly.

Advanced

3DPrint offers a few WP hooks such as:

  • 3dprint_upload filter

    	    /* Location: 3dprint/includes/3dprint-functions.php
    	       Can be used for additonal processing of a newly uploaded model.	
    	    */
                $output = apply_filters( '3dprint_upload', $output, $product_id, $printer_id, $material_id, $coating_id );
    	  

  • 3dprint_detect_model_format filter

    	    /* Location: 3dprint/includes/3dprint-model-functions.php
    	       Can be used for custom model format detection.	
    	    */
                $format = apply_filters( '3dprint_detect_model_format', $format );
    	  

  • 3dprint_get_model_stats filter

    	    /* Location: 3dprint/includes/3dprint-model-functions.php
    	       Can be used for getting custom model stats.	
    	    */
                $model_stats = apply_filters( '3dprint_get_model_stats', $model_stats, $filepath );
    	  

  • 3dprint_calculate_printing_cost filter

    	    /* Location: 3dprint/includes/3dprint-model-functions.php
    	       Can be used for custom price calculation.
    	    */
                $total = apply_filters( '3dprint_calculate_printing_cost', $total, $printer_id, $material_id, $coating_id, $product_info, $attributes );
    	  

  • 3dprint_activate action

    	    /* Location: 3dprint/includes/3dprint-functions.php
    	       Fired after plugin activation.
    	    */
                do_action( '3dprint_activate' );
    	  

  • 3dprint_dactivate action

    	    /* Location: 3dprint/includes/3dprint-functions.php
    	       Fired after plugin dactivation.
    	    */
                do_action( '3dprint_deactivate' );
    	  

  • p3d_handle_process_begin action

    	    /* Location: 3dprint/includes/3dprint-functions.php
    	       Fired before a model is sent to the 3dprint servers for processing.
    	    */
                do_action('p3d_handle_process_begin');
    	  

  • p3d_handle_analyse_begin action

    	    /* Location: 3dprint/includes/3dprint-functions.php
    	       Fired before a model is sent to the 3dprint servers for analysing.
    	    */
                do_action('p3d_handle_analyse_begin');
    	  

  • 3dprint_send_quote action

    	    /* Location: 3dprint/includes/3dprint-admin-price-requests-edit.php
    	       Fired before a quote is e-mailed to a customer.
    	    */
                do_action('3dprint_send_quote', $message);
    	  

  • 3dprint_after_send_quotes action

    	    /* Location: 3dprint/includes/3dprint-admin-price-requests-edit.php
    	       Fired after a quote is e-mailed to a customer.
    	    */
                do_action('3dprint_after_send_quotes');
    	  

  • 3dprint_request_price action

    	    /* Location: 3dprint/woocommerce/single-product/add-to-cart/variable.php
    	       Fired after a quote request is e-mailed to the admin.
    	    */
                do_action('3dprint_request_price');
    	  

  • 3dprint_before_displaying_materials action

    	    /* Location: 3dprint/woocommerce/single-product/add-to-cart/variable.php
    	       Fired before the 3dprint product attributes (printer, material, coating) are displayed on the frontend.
    	    */
                do_action('3dprint_before_displaying_materials');
    	  

  • 3dprint_add_to_cart_form action

    	    /* Location: 3dprint/woocommerce/single-product/add-to-cart/variable.php
    	       Fired before the closing tag of the add-to-cart form on the product page.
    	    */
                do_action( '3dprint_add_to_cart_form' );
    	  

Also there is a Javascript filter system which is very similar to the WordpPress one. The hooks are in 3dprint/includes/js/3dprint-frontend.js and start with "window.wp.hooks" code.

There is a barebones price calculation mod which can be downloaded here (can be installed just like a regular WordPress plugin ). Modify custom-price-mod.php to adjust the price in the shopping cart. Modify cpm.js to adjust the price on the product page. Keep in mind that JS files are cached by the browser, so you need to refresh the browser cache each time you edit cpm.js. Also if you have a cache plugin make sure to empty the cache each time you edit cpm.js.

If you need to add extra hooks to the code you can ask me using the contact form.

Translating

3DPrint is translation ready which means you can change any text of the plugin. The easiest to do this is to use Loco Translate plugin.

If your language does not exists click "New Language". If your language translation already exists click copy. Then select /languages/plugins/ as the translation location.

If use Loco Translate and can not find the source text try clicking the sync button.

When translating the product attributes (printer, material, coating, post-processing, etc) you may also need to adjust their names on the Products -> Attributes page.

Email templates can be translated on 3DPrint -> Email Templates page.

Troubleshooting

Overview

If something doesn't work as expected:

  • Check 3DPrint -> System Status page for errors
  • If you have layout issues try to use the shortcode generated through 3DPrint->Shortcode Generator with "Compatibility Mode" enabled.
  • Try to deactivate/activate the plugin.
  • Try to uncheck "3D Printing Product" checkbox, save the product, again check "3D Printing Product" and save.
  • Try to create a new product attribute on Products -> Attributes (this will reset the attribute cache).
  • If you use any cache plugin on the site try to empty it's cache.
  • Check the browser's console (F12) for JS errors. There might be a conflict with other plugins.
  • Try enabling WP_DEBUG mode to see PHP error messages.
  • Try to deactivate other plugins one by one (especially those which can alter the product's price, e.g. discount plugins)
  • Also try clearing your browser's cache.
  • If that doesn't work feel free to contact me, I'll be happy to help.

If you have troubles with the price calculation you can enable the "Price Debug Mode" on the Settings -> Price/Checkout page.