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 with the [product_page] shortcode.

Theme Compatibility

When choosing the theme make sure it declares WooCommerce support. It's worth checking how the product page looks like. 3DPrint follows theme's layout, so keep in mind that some themes may have a layout with the product image on top and the description at the bottom. And if you choose a standard 2-column layout theme make sure that the product image column is wide enough as this will be the column where the product 3D viewer is displayed.

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.

  • Pack models.

    Pack multiple STL models from ZIP file to fit into the build tray (STL only). This allows uploading multiple models but the overall size is limited to the printer's build tray.

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, 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 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.

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

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

Coatings

Coatings can be used for painting, sanding, polishing, acetone smoothing. Depending on the setup may also work as material colors.

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".

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.

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.

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.

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 ).

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 use Loco Translate and can not find the source text try clicking the sync button.

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

Troubleshooting

Overview

If something doesn't work as expected:

  • 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 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.