Example use of hole-finder object¶
Example use of hole-finder object¶
1# This example shows how to use the HoleFinder and HoleOptions functionality.
2# To use, draw any geometry (say a rectangle) which forms a hole around the layer's origin.
3
4if active_drawing.isNone():
5 impact.gui.output_toolbox.add("Unable to continue: no active drawing")
6else:
7
8 # Get the HoleFinder object and set up the HoleOptions
9 hole_finder = impact.creator.hole_finder()
10 hole_options = hole_finder.create_hole_path_options()
11
12 # This allows the Hole Options to match an existing master tool setting
13 db = impact.active_database
14 ms = db.find_master_tool_setting("<<Default>>", ipMasterSettingType.mstHoleFinder)
15 if not ms.isNone():
16 hole_options.apply_master_setting(ms)
17
18 # We can also adjust some or all of the values, if we want
19 hole_options.leave_original = True
20 hole_options.original_sub_block = True
21 hole_options.original_block_name = "OriginalBlock"
22 hole_options.original_use_palette = True
23 hole_options.original_palette = "Cut"
24 hole_options.original_leave_selected = True
25 hole_options.original_merge_entities = False
26
27 hole_options.do_left_out_offset = True
28 hole_options.left_out_sub_block = True
29 hole_options.left_out_block_name = "LeftOutBlock"
30 hole_options.left_out_use_palette = True
31 hole_options.left_out_palette = "Cut"
32 hole_options.left_out_offset_dist = 5.0
33 hole_options.left_out_number = 2
34 hole_options.left_out_sharp_corners = False
35 hole_options.left_out_leave_selected = False
36 hole_options.left_out_initial_offset_dist = 1.0
37 hole_options.left_out_use_initial_offset = True
38 hole_options.left_out_offset_deadends = 4.0
39 hole_options.left_out_merge_entities = False
40
41 hole_options.do_right_in_offset = True
42 hole_options.right_in_sub_block = True
43 hole_options.right_in_block_name = "RightInBlock"
44 hole_options.right_in_use_palette = True
45 hole_options.right_in_palette = "Cut"
46 hole_options.right_in_offset_dist = 2.0
47 hole_options.right_in_number = 1
48 hole_options.right_in_auto_fill = True
49 hole_options.right_in_sharp_corners = False
50 hole_options.right_in_leave_selected = True
51 hole_options.right_in_initial_offset_dist = 1.0
52 hole_options.right_in_use_initial_offset = False
53 hole_options.right_in_offset_deadends = 4.0
54 hole_options.right_in_merge_entities = True
55
56 hole_options.do_interiors = True
57 hole_options.do_interior_holes = False
58 hole_options.leave_interior_original_hole = True
59 hole_options.offset_interior_holes_inside = False
60 hole_options.offset_dist_interior_holes_inside = 2.0
61 hole_options.offset_interior_holes_outside = True
62 hole_options.offset_dist_interior_holes_outside = 3.0
63 hole_options.do_interior_paths = True
64 hole_options.leave_interior_original_paths = True
65 hole_options.pocket_interior_paths = True
66 hole_options.pocket_dist_interior_paths = 2.0
67 hole_options.interior_into_blocks = True
68 hole_options.interior_block_name = "InteriorBlockName"
69 hole_options.interior_use_palette = False
70 hole_options.interior_palette = "Cut"
71 hole_options.interior_merge_entities = True
72 hole_options.interior_sharp_corners = False
73
74 hole_finder.hole_path_options = hole_options
75
76 points = [None] * 2
77 points[0] = impact.creator.vector(0, 0)
78 hole_finder.points = points
79
80 # Perform the hole-finding operation
81 result = hole_finder.perform()
82
83 impact.gui.output_toolbox.add("HoleFinder result=" + str(result))
84