3D model creation (Python)

3D model creation (Python)
  1# This example creates a new 3d layer and then creates a 3d model from the original 2d layer.
  2drawing = impact.active_drawing
  3layer = drawing.active_layer
  4
  5basePointString = "Centre of gravity"
  6
  7# Get the origin of the model from the Centre Of Gravity symbol if there is one.
  8basePoint = None
  9try:
 10    basePoint = impact.creator.vector(0,0)
 11except Exception as exc:
 12    impact.gui.output_toolbox.add(f"Failed to create object via impact.creator.vector(): {exc}")
 13entities = impact.active_block.recursed_entities
 14for recursed in entities:
 15    Entity = recursed.entity
 16    if Entity.entity_type == ipEntityType.etInsert:
 17        if Entity.insert_type == ipInsertType.itSymbol:
 18            if Entity.inserted_block.full_name == basePointString:
 19                basePoint = Entity.origin
 20# Get the required settings from the database
 21paletteSettings = impact.active_database.find_master_tool_setting( "<Default>", ipMasterSettingType.mst3DPalettes )
 22boardSettings = impact.active_database.find_master_tool_setting( "Carton|Carton - Silk Board", ipMasterSettingType.mst3DBoard )
 23varnishSettings = impact.active_database.find_master_tool_setting( "Gloss - High", ipMasterSettingType.mst3DVarnish )
 24foilSettings = impact.active_database.find_master_tool_setting( "Gold", ipMasterSettingType.mst3DFoil )
 25templateSettings = impact.active_database.find_master_tool_setting( "RPC Presentation - White Lights", ipMasterSettingType.mst3DTemplate )
 26
 27if not layer.layer_type == "THREE_D":
 28
 29    nameString = "New 3D Layer"
 30    typeString = "THREE_D"
 31
 32    # Add a new 3d layer and get the scene
 33    newLayer = None
 34    try:
 35        newLayer = drawing.layers.add( nameString, typeString, layer )
 36    except Exception as exc:
 37        pass
 38    impact.gui.output_toolbox.add(f"Failed to create object via drawing.layers.add(): {exc}")
 39    scene = newLayer.scene
 40
 41    if not scene.isNone():
 42
 43        # Create options for adding a 3d model
 44        options = impact.creator.three_d().create_model_options()
 45
 46        options.layer = layer
 47        options.name = "New Model"
 48        options.origin = basePoint
 49        options.fold_angle = 90
 50        options.palette_settings = paletteSettings
 51        options.board_settings = boardSettings
 52        options.varnish_settings = varnishSettings
 53        options.foil_settings = foilSettings
 54        options.template_settings = templateSettings
 55        options.quality = ip3DTextureQuality.tq3DMedium
 56        options.flags.board = True
 57        options.flags.artwork = True
 58        options.flags.varnish = True
 59        options.flags.foiling = True
 60        options.flags.embossing = True
 61        options.flags.rule_definition = True
 62
 63        # Add a 3d model and get the instance
 64        instance = None
 65        try:
 66            instance = scene.instances.add(ip3DObjectType.ot3DModel, options)
 67        except Exception as exc:
 68            pass
 69        impact.gui.output_toolbox.add(f"Failed to create object via scene.instances.add(): {exc}")
 70
 71        if not instance.isNone():
 72
 73            impact.gui.output_toolbox.add("Created instance:")
 74            impact.gui.output_toolbox.add(instance.name)
 75            impact.gui.output_toolbox.add(instance.GUID)
 76
 77            # Set the instances properties
 78            # instance.selected = True
 79            # instance.visible = True
 80            model = instance.object()
 81
 82            if not model.isNone():
 83
 84                # Configure the model
 85                # model.flatten()
 86                model.fold()
 87
 88            else:
 89
 90                impact.gui.output_toolbox.add("Model could not be retreived from the instance")
 91
 92            # Set the camera view
 93            scene.view_extents(ip3DViewType.vt3DReference)
 94            # scene.view_instance instance, ip3DViewType.vt3DReference
 95
 96        else:
 97
 98            impact.gui.output_toolbox.add("Instance could not be created")
 99
100    else:
101
102        impact.gui.output_toolbox.add("No 3d scene")
103
104else:
105
106    impact.gui.output_toolbox.add("not a 2d layer")