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