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 impact.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 HoleFinder = impact.creator.hole_finder()
10 HoleOptions = HoleFinder.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 ms is not None:
16 HoleOptions.apply_master_setting(ms)
17
18 # We can also adjust some or all of the values, if we want
19 HoleOptions.leave_original = True
20 HoleOptions.original_sub_block = True
21 HoleOptions.original_block_name = "OriginalBlock"
22 HoleOptions.original_use_palette = True
23 HoleOptions.original_palette = "Cut"
24 HoleOptions.original_leave_selected = True
25 HoleOptions.original_merge_entities = False
26
27 HoleOptions.do_left_out_offset = True
28 HoleOptions.left_out_sub_block = True
29 HoleOptions.left_out_block_name = "LeftOutBlock"
30 HoleOptions.left_out_use_palette = True
31 HoleOptions.left_out_palette = "Cut"
32 HoleOptions.left_out_offset_dist = 5.0
33 HoleOptions.left_out_number = 2
34 HoleOptions.left_out_sharp_corners = False
35 HoleOptions.left_out_leave_selected = False
36 HoleOptions.left_out_initial_offset_dist = 1.0
37 HoleOptions.left_out_use_initial_offset = True
38 HoleOptions.left_out_offset_deadends = 4.0
39 HoleOptions.left_out_merge_entities = False
40
41 HoleOptions.do_right_in_offset = True
42 HoleOptions.right_in_sub_block = True
43 HoleOptions.right_in_block_name = "RightInBlock"
44 HoleOptions.right_in_use_palette = True
45 HoleOptions.right_in_palette = "Cut"
46 HoleOptions.right_in_offset_dist = 2.0
47 HoleOptions.right_in_number = 1
48 HoleOptions.right_in_auto_fill = True
49 HoleOptions.right_in_sharp_corners = False
50 HoleOptions.right_in_leave_selected = True
51 HoleOptions.right_in_initial_offset_dist = 1.0
52 HoleOptions.right_in_use_initial_offset = False
53 HoleOptions.right_in_offset_deadends = 4.0
54 HoleOptions.right_in_merge_entities = True
55
56 HoleOptions.do_interiors = True
57 HoleOptions.do_interior_holes = False
58 HoleOptions.leave_interior_original_hole = True
59 HoleOptions.offset_interior_holes_inside = False
60 HoleOptions.offset_dist_interior_holes_inside = 2.0
61 HoleOptions.offset_interior_holes_outside = True
62 HoleOptions.offset_dist_interior_holes_outside = 3.0
63 HoleOptions.do_interior_paths = True
64 HoleOptions.leave_interior_original_paths = True
65 HoleOptions.pocket_interior_paths = True
66 HoleOptions.pocket_dist_interior_paths = 2.0
67 HoleOptions.interior_into_blocks = True
68 HoleOptions.interior_block_name = "InteriorBlockName"
69 HoleOptions.interior_use_palette = False
70 HoleOptions.interior_palette = "Cut"
71 HoleOptions.interior_merge_entities = True
72 HoleOptions.interior_sharp_corners = False
73
74 HoleFinder.hole_path_options = HoleOptions
75
76 points = [None] * 2
77 points[0] = impact.creator.vector(0, 0)
78 HoleFinder.points = points
79
80 # Perform the hole-finding operation
81 Result = HoleFinder.perform()
82
83 impact.gui.output_toolbox.add("HoleFinder result=" + str(Result))
84