autocad 0.4.6 → 0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop/minitest.yml +2 -2
  3. data/.rubocop/strict.yml +4 -4
  4. data/.rubocop.yml +36 -33
  5. data/CHANGELOG.md +5 -5
  6. data/LICENSE.txt +21 -21
  7. data/README.md +134 -39
  8. data/Rakefile +26 -10
  9. data/exe/autocad +3 -3
  10. data/gemfiles/rubocop.gemfile +2 -1
  11. data/lib/autocad/app.rb +127 -28
  12. data/lib/autocad/arc.rb +3 -0
  13. data/lib/autocad/block.rb +11 -6
  14. data/lib/autocad/block_reference.rb +33 -4
  15. data/lib/autocad/bounding_box.rb +202 -0
  16. data/lib/autocad/dim_style.rb +4 -0
  17. data/lib/autocad/drawing.rb +873 -172
  18. data/lib/autocad/element.rb +217 -25
  19. data/lib/autocad/errors.rb +9 -0
  20. data/lib/autocad/filter.rb +502 -168
  21. data/lib/autocad/layer.rb +129 -41
  22. data/lib/autocad/layout.rb +120 -0
  23. data/lib/autocad/line.rb +154 -55
  24. data/lib/autocad/message_box.rb +95 -95
  25. data/lib/autocad/model.rb +217 -89
  26. data/lib/autocad/mtext.rb +189 -110
  27. data/lib/autocad/plot.rb +45 -0
  28. data/lib/autocad/plot_configuration.rb +372 -0
  29. data/lib/autocad/point.rb +7 -0
  30. data/lib/autocad/point3d.rb +18 -11
  31. data/lib/autocad/pviewport.rb +136 -21
  32. data/lib/autocad/selection_filter.rb +358 -180
  33. data/lib/autocad/selection_set.rb +140 -61
  34. data/lib/autocad/selection_set_adapter.rb +187 -8
  35. data/lib/autocad/spline.rb +27 -0
  36. data/lib/autocad/text.rb +66 -11
  37. data/lib/autocad/text_style.rb +4 -0
  38. data/lib/autocad/version.rb +1 -1
  39. data/lib/autocad/viewport.rb +57 -0
  40. data/lib/autocad.rb +126 -30
  41. data/lib/faa/cleanup.rb +137 -0
  42. data/lib/win32ole_helper.rb +52 -0
  43. data/rbs_collection.lock.yaml +38 -18
  44. data/sig/generated/autocad/app.rbs +278 -251
  45. data/sig/generated/autocad/arc.rbs +6 -3
  46. data/sig/generated/autocad/block.rbs +8 -5
  47. data/sig/generated/autocad/block_reference.rbs +99 -59
  48. data/sig/generated/autocad/bounding_box.rbs +78 -0
  49. data/sig/generated/autocad/dim_style.rbs +6 -0
  50. data/sig/generated/autocad/drawing.rbs +597 -158
  51. data/sig/generated/autocad/element.rbs +233 -166
  52. data/sig/generated/autocad/errors.rbs +29 -23
  53. data/sig/generated/autocad/filter.rbs +388 -60
  54. data/sig/generated/autocad/layer.rbs +76 -19
  55. data/sig/generated/autocad/layout.rbs +64 -0
  56. data/sig/generated/autocad/line.rbs +128 -25
  57. data/sig/generated/autocad/message_box.rbs +81 -81
  58. data/sig/generated/autocad/model.rbs +115 -41
  59. data/sig/generated/autocad/mtext.rbs +123 -0
  60. data/sig/generated/autocad/plot.rbs +26 -0
  61. data/sig/generated/autocad/plot_configuration.rbs +176 -0
  62. data/sig/generated/autocad/point.rbs +7 -0
  63. data/sig/generated/autocad/point3d.rbs +70 -66
  64. data/sig/generated/autocad/pviewport.rbs +64 -0
  65. data/sig/generated/autocad/selection_filter.rbs +226 -50
  66. data/sig/generated/autocad/selection_set.rbs +112 -37
  67. data/sig/generated/autocad/selection_set_adapter.rbs +235 -28
  68. data/sig/generated/autocad/spline.rbs +22 -0
  69. data/sig/generated/autocad/text.rbs +66 -7
  70. data/sig/generated/autocad/text_style.rbs +6 -0
  71. data/sig/generated/autocad/viewport.rbs +19 -2
  72. data/sig/generated/autocad.rbs +140 -68
  73. data/sig/generated/faa/cleanup.rbs +53 -0
  74. data/sig/generated/win32ole_helper.rbs +9 -0
  75. data/sig/prototype/lib/autocad/app.rbs +3 -1
  76. data/sig/prototype/lib/autocad/bounding_box.rbs +15 -0
  77. data/sig/prototype/lib/autocad/drawing.rbs +6 -0
  78. data/sig/prototype/lib/autocad/layer.rbs +5 -0
  79. data/sig/prototype/lib/autocad/viewport.rbs +7 -0
  80. data/sig/prototype/lib/autocad.rbs +1 -1
  81. metadata +29 -5
  82. data/event_handler.log +0 -24
  83. data/sig/generated/autocad/text_node.rbs +0 -37
@@ -0,0 +1,176 @@
1
+ # Generated from lib/autocad/plot_configuration.rb with RBS::Inline
2
+
3
+ module Autocad
4
+ class PlotConfiguration < Element
5
+ # Get the name of the plot configuration
6
+ # @rbs return String
7
+ def name: () -> String
8
+
9
+ # Set the plot device configuration file
10
+ # @rbs name: String
11
+ # @rbs return void
12
+ def device_name=: (String name) -> void
13
+
14
+ # Get the current plot device configuration name
15
+ # @rbs return String
16
+ def device_name: () -> String
17
+
18
+ # Read current configuration properties from OLE object
19
+ # @rbs return Hash[Symbol, Object]
20
+ def read_ole: (?untyped ole) -> Hash[Symbol, Object]
21
+
22
+ # Write configuration settings to OLE object
23
+ # @rbs value: Hash[Symbol, Object]
24
+ # @rbs return void
25
+ def write_ole: (Hash[Symbol, Object] value) -> void
26
+
27
+ # Get plot origin point in millimeters
28
+ # @rbs return Point3d
29
+ def plot_origin: () -> Point3d
30
+
31
+ # Set plot origin point
32
+ # @rbs ...: Numeric | Array[Numeric] | Point3d
33
+ # @rbs return void
34
+ # @raise [ArgumentError] For invalid coordinate values
35
+ def plot_origin=: ...
36
+
37
+ # Get current plot style mode
38
+ # @rbs return Symbol
39
+ def plot_style_mode: () -> Symbol
40
+
41
+ def plot_style_mode_variable: () -> untyped
42
+
43
+ # Check if using color-dependent plot styles
44
+ # @rbs return bool
45
+ def color_style_mode?: () -> bool
46
+
47
+ # Check if using named plot styles
48
+ # @rbs return bool
49
+ def named_style_mode?: () -> bool
50
+
51
+ # Configure multiple plot settings at once
52
+ # @rbs kwargs: Hash{Symbol => Object} -- See write_ole for valid keys
53
+ # @rbs return void
54
+ # @example Configure for PDF output
55
+ # setup(
56
+ # device_name: "AutoCAD PDF.pc3",
57
+ # media_name: "ANSI_D",
58
+ # style_sheet: "monochrome.ctb",
59
+ # plot_type: :layout
60
+ # )
61
+ def setup: () -> void
62
+
63
+ # Update configuration with merged values
64
+ # @rbs value: Hash{Symbol => Object} -- Partial configuration updates
65
+ # @rbs return void
66
+ def update: (Hash value) -> void
67
+
68
+ # Print current configuration to console
69
+ # @rbs return void
70
+ def display_setup: () -> void
71
+
72
+ # Copy settings from another configuration
73
+ # @rbs pc: PlotConfiguration -- Source configuration
74
+ # @rbs return void
75
+ def copy_plot_configuration: (PlotConfiguration pc) -> void
76
+
77
+ def plot_style_mode=: (untyped sym) -> untyped
78
+
79
+ # ANSI B landscape paper size name
80
+ # @rbs return String -- Canonical name "ANSI_B_(17.00_x_11.00_Inches)"
81
+ def ansi_b_landscape: () -> String
82
+
83
+ def ansi_d_landscape: () -> untyped
84
+
85
+ # Refresh plot device information
86
+ # @rbs return void
87
+ # @note Required after changing device configurations
88
+ def refresh: () -> void
89
+
90
+ def style_sheet=: (untyped style) -> untyped
91
+
92
+ def style_sheet: () -> untyped
93
+
94
+ # The media devices available to for plotting
95
+ # @rbs return Array[String]
96
+ def device_names: () -> Array[String]
97
+
98
+ # The current device_name for printing as its Canonomical Name
99
+ # use this name when changing
100
+ # @rbs return String
101
+ def canonical_media_name: () -> String
102
+
103
+ def canonomical_media_name=: (untyped name) -> untyped
104
+
105
+ # The available paper sizes for the configured device. Use this
106
+ # when setting the media_name:
107
+ # @rbs return Array[String]
108
+ # @note Call refresh() first if device was changed
109
+ def media_names: () -> Array[String]
110
+
111
+ def locale_media_name: () -> untyped
112
+
113
+ # Returns the different plot tables. Use one of these
114
+ # when setting style_sheet
115
+ # @rbs return Array[String] -- CTB/STB file names
116
+ def plot_style_table_names: () -> Array[String]
117
+
118
+ # The different plot bounds or types
119
+ # @rbs return Array[Symbol]
120
+ def plot_types: () -> Array[Symbol]
121
+
122
+ # @rbs return Array[Float, Float] -- the numerator and denominator for a custom scale
123
+ def custom_scale: () -> Array[Float, Float]
124
+
125
+ # The different paper units
126
+ # @rbs return Array[Symbol]
127
+ def paper_units_types: () -> Array[Symbol]
128
+
129
+ # Get current paper units
130
+ # @rbs return Symbol -- :inches, :mm, or :pixels
131
+ def paper_units: () -> Symbol
132
+
133
+ # Conversion factor to millimeters based on paper units
134
+ # @rbs return Float
135
+ # @example
136
+ # inches: 25.4 (mm per inch)
137
+ # pixels: 25.4/96 (mm per pixel at 96 DPI)
138
+ def paper_units_scale_factor: () -> Float
139
+
140
+ private
141
+
142
+ # Convert paper units symbol to OLE constant
143
+ # @rbs unit: Symbol -- Valid values: :inches, :mm, :pixels
144
+ # @rbs return Integer -- OLE constant (ACAD::Ac*)
145
+ # @raise [ArgumentError] For invalid paper units
146
+ def paper_units_to_ole: (Symbol unit) -> Integer
147
+
148
+ # Convert OLE paper units constant to symbol
149
+ # @rbs unit: Integer -- OLE constant (ACAD::Ac*)
150
+ # @rbs return Symbol -- :inches, :mm, or :pixels
151
+ def paper_units_from_ole: (Integer unit) -> Symbol
152
+
153
+ # Convert rotation degrees to OLE constant
154
+ # @rbs degree: Integer -- Valid values: 0, 90, 180, 270
155
+ # @rbs return Integer -- OLE constant (ACAD::Ac*degrees)
156
+ # @raise [ArgumentError] For invalid rotation values
157
+ def rotation_degree_to_ole: (Integer degree) -> Integer
158
+
159
+ # Convert OLE rotation constant to degrees
160
+ # @rbs rot: Integer -- OLE constant (ACAD::Ac*degrees)
161
+ # @rbs return Integer -- 0, 90, 180, or 270
162
+ def rotation_ole_to_degree: (Integer rot) -> Integer
163
+
164
+ # Convert OLE plot type constant to symbol
165
+ # @rbs typ: Integer -- OLE constant (ACAD::Ac*)
166
+ # @rbs return Symbol -- :display, :extents, :layout, :limits, :view, or :window
167
+ def plot_type_ole_to_sym: (Integer typ) -> Symbol
168
+
169
+ # Convert plot type symbol to OLE constant
170
+ # @rbs typ: Symbol -- Valid values:
171
+ # :display, :extents, :layout, :limits, :view, :window
172
+ # @rbs return Integer -- OLE constant (ACAD::Ac*)
173
+ # @raise [ArgumentError] For invalid plot types
174
+ def plot_type_to_ole: (Symbol typ) -> Integer
175
+ end
176
+ end
@@ -0,0 +1,7 @@
1
+ # Generated from lib/autocad/point.rb with RBS::Inline
2
+
3
+ module Autocad
4
+ class Point < Element
5
+ def coordinates: () -> untyped
6
+ end
7
+ end
@@ -1,66 +1,70 @@
1
- # Generated from lib/autocad/point3d.rb with RBS::Inline
2
-
3
- module Autocad
4
- class Point3d
5
- def self.cartesian_to_polar: (untyped x, untyped y) -> untyped
6
-
7
- def self.from_polar_degrees: (untyped r, untyped a) -> untyped
8
-
9
- def self.from_ole: (untyped ole) -> untyped
10
-
11
- def self.polar_to_cartesian: (untyped r, untyped a) -> untyped
12
-
13
- # convert array of points to array of x,y coordinates
14
- # array can be [ Point3d, Point3d, ..]
15
- # array can be [ [x,y,z], [x,y,z], [x,y,z] ..]
16
- # array can be [x,y, x1, y1, x2,y2, x3,y3]
17
- # array can be [[x,y], [x2,y2], [x3,y3]]
18
- # all coordinates are converted to float
19
- # z coordinates are ignored
20
- # @rbs return Array[Float]
21
- def self.pts_to_array: (untyped pts) -> Array[Float]
22
-
23
- def self.array_to_ole: (untyped ar) -> untyped
24
-
25
- attr_reader x: untyped
26
-
27
- attr_reader y: untyped
28
-
29
- attr_reader z: untyped
30
-
31
- def initialize: (?untyped _x, ?untyped _y, ?untyped _z, ?x: untyped, ?y: untyped, ?z: untyped) -> untyped
32
-
33
- # @rbs other: Point3d | [Float,Float,Float]
34
- def +: (Point3d | [ Float, Float, Float ] other) -> untyped
35
-
36
- def distance_to: (untyped other) -> untyped
37
-
38
- # @rbs return [Float,Float, Float]
39
- def deconstruct: () -> [ Float, Float, Float ]
40
-
41
- # @rbs return { x: Float, y: Float, z: Float}
42
- def deconstruct_keys: () -> { x: Float, y: Float, z: Float }
43
-
44
- # @rbs return [Float,Float, Float]
45
- def to_ary: () -> [ Float, Float, Float ]
46
-
47
- # @rbs other: Point3d | [Float,Float,Float]
48
- def -: (Point3d | [ Float, Float, Float ] other) -> untyped
49
-
50
- def to_xy: () -> untyped
51
-
52
- def xy_bounds: (untyped other) -> untyped
53
-
54
- def to_s: () -> untyped
55
-
56
- # @rbs return [Float,Float, Float]
57
- def to_a: () -> [ Float, Float, Float ]
58
-
59
- # @rbs return Point3d -- return a Point3d at [0,0,0]
60
- def zero: () -> Point3d
61
-
62
- def to_cartesian: () -> untyped
63
-
64
- def to_ole: () -> untyped
65
- end
66
- end
1
+ # Generated from lib/autocad/point3d.rb with RBS::Inline
2
+
3
+ module Autocad
4
+ class Point3d
5
+ # @rbs return Point3d -- return a Point3d at [0,0,0]
6
+ def self.zero: () -> Point3d
7
+
8
+ def self.cartesian_to_polar: (untyped x, untyped y) -> untyped
9
+
10
+ def self.from_polar_degrees: (untyped r, untyped a) -> untyped
11
+
12
+ def self.from_ole: (untyped ole) -> untyped
13
+
14
+ def self.polar_to_cartesian: (untyped r, untyped a) -> untyped
15
+
16
+ # convert array of points to array of x,y coordinates
17
+ # array can be [ Point3d, Point3d, ..]
18
+ # array can be [ [x,y,z], [x,y,z], [x,y,z] ..]
19
+ # array can be [x,y, x1, y1, x2,y2, x3,y3]
20
+ # array can be [[x,y], [x2,y2], [x3,y3]]
21
+ # all coordinates are converted to float
22
+ # z coordinates are ignored
23
+ # @rbs return Array[Float]
24
+ def self.pts_to_array: (untyped pts) -> Array[Float]
25
+
26
+ def self.array_to_ole: (untyped ar) -> untyped
27
+
28
+ attr_reader x: untyped
29
+
30
+ attr_reader y: untyped
31
+
32
+ attr_reader z: untyped
33
+
34
+ def initialize: (?untyped _x, ?untyped _y, ?untyped _z, ?x: untyped, ?y: untyped, ?z: untyped) -> untyped
35
+
36
+ # @rbs other: Point3d | [Float,Float,Float]
37
+ def +: (Point3d | [ Float, Float, Float ] other) -> untyped
38
+
39
+ def distance_to: (untyped other) -> untyped
40
+
41
+ # @rbs return [Float,Float, Float]
42
+ def deconstruct: () -> [ Float, Float, Float ]
43
+
44
+ # @rbs return { x: Float, y: Float, z: Float}
45
+ def deconstruct_keys: () -> { x: Float, y: Float, z: Float }
46
+
47
+ # @rbs return [
48
+ def to_ary: () -> untyped
49
+
50
+ # @rbs other: Point3d | [Float,Float,Float]
51
+ def -: (Point3d | [ Float, Float, Float ] other) -> untyped
52
+
53
+ def to_xy: () -> untyped
54
+
55
+ # @rbs model_space: bool
56
+ # @return Autocad::Point
57
+ def to_acad_point: (?bool model_space) -> untyped
58
+
59
+ def xy_bounds: (untyped other) -> untyped
60
+
61
+ def to_s: () -> untyped
62
+
63
+ # @rbs return [Float,Float, Float]
64
+ def to_a: () -> [ Float, Float, Float ]
65
+
66
+ def to_cartesian: () -> untyped
67
+
68
+ def to_ole: () -> untyped
69
+ end
70
+ end
@@ -0,0 +1,64 @@
1
+ # Generated from lib/autocad/pviewport.rb with RBS::Inline
2
+
3
+ module Autocad
4
+ class PViewport < Element
5
+ # the viewport width
6
+ # @rbs return Float
7
+ def width: () -> Float
8
+
9
+ def width_inches: () -> untyped
10
+
11
+ def height_inches: () -> untyped
12
+
13
+ def pviewport?: () -> untyped
14
+
15
+ # change the viewport to front_view direction
16
+ def front_view: () -> untyped
17
+
18
+ def top_view: () -> untyped
19
+
20
+ def right_view: () -> untyped
21
+
22
+ def isometric_view: () -> untyped
23
+
24
+ # the viewport height
25
+ # @rbs return Float
26
+ def height: () -> Float
27
+
28
+ # @rbs return bool
29
+ def on?: () -> bool
30
+
31
+ # turn on the view
32
+ # @rbs return void
33
+ def on: () -> void
34
+
35
+ # turn of the display of viewport
36
+ # @rbs return void
37
+ def off: () -> void
38
+
39
+ # the standard scale from Autocad AcViewportScale enum converted to symbol
40
+ # @rbs return Symbol
41
+ def standard_scale: () -> Symbol
42
+
43
+ def standard_scale=: (untyped scale) -> untyped
44
+
45
+ def standard_scale_ole_to_symbol: (untyped scale) -> untyped
46
+
47
+ def standard_scale_symbol_to_ole: (untyped scale) -> untyped
48
+
49
+ # set a custom scale for model objects
50
+ # @rbs scale: Float
51
+ def custom_scale=: (Float scale) -> untyped
52
+
53
+ def lock_display: () -> untyped
54
+
55
+ # specifies the lock stat fo the viewports display. When locked, cant
56
+ # change view
57
+ # @rbs return bool
58
+ def display_locked?: () -> bool
59
+
60
+ def unlock_display: () -> untyped
61
+
62
+ def each: () -> untyped
63
+ end
64
+ end
@@ -1,50 +1,226 @@
1
- # Generated from lib/autocad/selection_filter.rb with RBS::Inline
2
-
3
- module Autocad
4
- class SelectionFilter
5
- attr_reader types: untyped
6
-
7
- attr_reader values: untyped
8
-
9
- def initialize: () -> untyped
10
-
11
- def has_filters?: () -> untyped
12
-
13
- # Logical Operators
14
- def and: (*untyped conditions) -> untyped
15
-
16
- def or: (*untyped conditions) -> untyped
17
-
18
- def xor: (untyped condition1, untyped condition2) -> untyped
19
-
20
- def not: (untyped condition) -> untyped
21
-
22
- # Relational Operators
23
- # f.type("Circle").greater_than(5)
24
- def greater_than: (untyped value) -> untyped
25
-
26
- def less_than: (untyped value) -> untyped
27
-
28
- def equal_to: (untyped value) -> untyped
29
-
30
- def not_equal_to: (untyped value) -> untyped
31
-
32
- def block_reference: (?untyped name) -> untyped
33
-
34
- def name: (untyped value) -> untyped
35
-
36
- def type: (untyped kind) -> untyped
37
-
38
- def layer: (untyped name) -> untyped
39
-
40
- def visible: (?untyped vis) -> untyped
41
-
42
- def color: (untyped num) -> untyped
43
-
44
- def paper_space: () -> untyped
45
-
46
- def model_space: () -> untyped
47
-
48
- def contains: (untyped str) -> untyped
49
- end
50
- end
1
+ # Generated from lib/autocad/selection_filter.rb with RBS::Inline
2
+
3
+ module Autocad
4
+ # Builds AutoCAD selection filter criteria using group codes
5
+ #
6
+ # Provides a fluent interface for creating complex entity filters
7
+ # based on AutoCAD DXF group codes and logical operations.
8
+ #
9
+ # Key Features:
10
+ # - Logical operators (AND, OR, NOT, XOR)
11
+ # - Comparison operators (>, <, =, !=)
12
+ # - Entity property filters (type, layer, color)
13
+ # - Text content matching
14
+ # - Space-specific filtering (model/paper)
15
+ #
16
+ # @example Create a filter for red circles
17
+ # filter = SelectionFilter.new
18
+ # .and(
19
+ # SelectionFilter.new.type("CIRCLE"),
20
+ # SelectionFilter.new.color(1)
21
+ # )
22
+ #
23
+ # @example Complex filter with nested conditions
24
+ # filter = SelectionFilter.new
25
+ # .and(
26
+ # SelectionFilter.new.layer("WALLS"),
27
+ # SelectionFilter.new.or(
28
+ # SelectionFilter.new.type("LINE"),
29
+ # SelectionFilter.new.type("POLYLINE")
30
+ # )
31
+ # )
32
+ class SelectionFilter
33
+ # @rbs attr_reader types: Array[Integer] -- AutoCAD group codes (e.g., 0=Entity type)
34
+ # @rbs attr_reader values: Array[untyped] -- Filter values matching group codes
35
+ attr_reader types: untyped
36
+
37
+ # @rbs attr_reader types: Array[Integer] -- AutoCAD group codes (e.g., 0=Entity type)
38
+ # @rbs attr_reader values: Array[untyped] -- Filter values matching group codes
39
+ attr_reader values: untyped
40
+
41
+ # Initialize empty filter
42
+ # @return [void]
43
+ # @rbs return void
44
+ def initialize: () -> void
45
+
46
+ # Check if filter has any conditions
47
+ # @return [Boolean] True if filter has conditions
48
+ # @example Skip empty filter
49
+ # next unless filter.has_filters?
50
+ # @rbs return bool
51
+ def has_filters?: () -> bool
52
+
53
+ # Logical AND combination of filters
54
+ # @param conditions [Array<SelectionFilter>] Filters to combine
55
+ # @return [self] The filter for chaining
56
+ # @example Combine multiple conditions with AND
57
+ # filter.and(
58
+ # SelectionFilter.new.type("LINE"),
59
+ # SelectionFilter.new.layer("WALLS")
60
+ # )
61
+ # @rbs *conditions: Array[SelectionFilter] -- Filters to combine
62
+ # @rbs return SelectionFilter
63
+ def and: (*Array[SelectionFilter] conditions) -> SelectionFilter
64
+
65
+ # Logical OR combination of filters
66
+ # @param conditions [Array<SelectionFilter>] Filters to combine
67
+ # @return [self] The filter for chaining
68
+ # @example Match entities on multiple layers
69
+ # filter.or(
70
+ # SelectionFilter.new.layer("WALLS"),
71
+ # SelectionFilter.new.layer("DOORS")
72
+ # )
73
+ # @rbs *conditions: Array[SelectionFilter]
74
+ # @rbs return SelectionFilter
75
+ def or: (*Array[SelectionFilter] conditions) -> SelectionFilter
76
+
77
+ # Logical XOR combination of two filters
78
+ # @param condition1 [SelectionFilter] First filter
79
+ # @param condition2 [SelectionFilter] Second filter
80
+ # @return [self] The filter for chaining
81
+ # @example Select entities that match exactly one condition
82
+ # filter.xor(
83
+ # SelectionFilter.new.type("CIRCLE"),
84
+ # SelectionFilter.new.layer("SPECIAL")
85
+ # )
86
+ # @rbs condition1: SelectionFilter
87
+ # @rbs condition2: SelectionFilter
88
+ # @rbs return SelectionFilter
89
+ def xor: (SelectionFilter condition1, SelectionFilter condition2) -> SelectionFilter
90
+
91
+ # Logical NOT for a filter condition
92
+ # @param condition [SelectionFilter] Filter to negate
93
+ # @return [self] The filter for chaining
94
+ # @example Select everything except circles
95
+ # filter.not(SelectionFilter.new.type("CIRCLE"))
96
+ # @rbs condition: SelectionFilter
97
+ # @rbs return SelectionFilter
98
+ def not: (SelectionFilter condition) -> SelectionFilter
99
+
100
+ # Greater than comparison
101
+ # @param value [Numeric] Comparison value
102
+ # @return [self] The filter for chaining
103
+ # @example Find circles with radius > 5
104
+ # filter.type("CIRCLE").greater_than(5)
105
+ # @rbs value: Numeric -- Comparison value
106
+ # @rbs return SelectionFilter
107
+ def greater_than: (Numeric value) -> SelectionFilter
108
+
109
+ # Less than comparison
110
+ # @param value [Numeric] Comparison value
111
+ # @return [self] The filter for chaining
112
+ # @example Find circles with radius < 10
113
+ # filter.type("CIRCLE").less_than(10)
114
+ # @rbs value: Numeric -- Comparison value
115
+ # @rbs return SelectionFilter
116
+ def less_than: (Numeric value) -> SelectionFilter
117
+
118
+ # Equal to comparison
119
+ # @param value [Numeric] Comparison value
120
+ # @return [self] The filter for chaining
121
+ # @example Find circles with radius = 7.5
122
+ # filter.type("CIRCLE").equal_to(7.5)
123
+ # @rbs value: Numeric -- Comparison value
124
+ # @rbs return SelectionFilter
125
+ def equal_to: (Numeric value) -> SelectionFilter
126
+
127
+ # Not equal to comparison
128
+ # @param value [Numeric] Comparison value
129
+ # @return [self] The filter for chaining
130
+ # @example Find circles with radius != 5
131
+ # filter.type("CIRCLE").not_equal_to(5)
132
+ # @rbs value: Numeric -- Comparison value
133
+ # @rbs return SelectionFilter
134
+ def not_equal_to: (Numeric value) -> SelectionFilter
135
+
136
+ # Filter by block references
137
+ # @param name [String, nil] Optional block name pattern
138
+ # @return [self] The filter for chaining
139
+ # @example Find any block reference
140
+ # filter.block_reference
141
+ # @example Find specific block
142
+ # filter.block_reference("DOOR")
143
+ # @rbs name: String? -- Optional block name pattern
144
+ # @rbs return SelectionFilter
145
+ def block_reference: (?String? name) -> SelectionFilter
146
+
147
+ # Filter by entity name/type
148
+ # @param value [String] Entity type name (e.g., "CIRCLE")
149
+ # @return [self] The filter for chaining
150
+ # @example Filter by entity name
151
+ # filter.name("CIRCLE")
152
+ # @rbs value: String -- Entity type name (e.g., "CIRCLE")
153
+ # @rbs return SelectionFilter
154
+ def name: (String value) -> SelectionFilter
155
+
156
+ # Filter by entity type
157
+ # @param kind [String] Entity type name (e.g., "CIRCLE")
158
+ # @return [self] The filter for chaining
159
+ # @example Filter for lines
160
+ # filter.type("LINE")
161
+ # @rbs kind: String -- Entity type name (e.g., "CIRCLE")
162
+ # @rbs return SelectionFilter
163
+ def type: (String kind) -> SelectionFilter
164
+
165
+ # Filter by layer name
166
+ # @param name [String] Layer name
167
+ # @return [self] The filter for chaining
168
+ # @example Filter for entities on a specific layer
169
+ # filter.layer("WALLS")
170
+ # @rbs name: String -- Layer name
171
+ # @rbs return SelectionFilter
172
+ def layer: (String name) -> SelectionFilter
173
+
174
+ # Filter by visibility state
175
+ # @param vis [Boolean] True for visible entities
176
+ # @return [self] The filter for chaining
177
+ # @example Filter for visible entities
178
+ # filter.visible(true)
179
+ # @example Filter for hidden entities
180
+ # filter.visible(false)
181
+ # @rbs vis: bool -- True for visible entities
182
+ # @rbs return SelectionFilter
183
+ def visible: (?bool vis) -> SelectionFilter
184
+
185
+ # Filter by color index
186
+ # @param num [Integer] AutoCAD color number (0-256)
187
+ # @return [self] The filter for chaining
188
+ # @example Filter for red entities (color 1)
189
+ # filter.color(1)
190
+ # @rbs num: Integer -- AutoCAD color number (0-256)
191
+ # @rbs return SelectionFilter
192
+ def color: (Integer num) -> SelectionFilter
193
+
194
+ # Filter for paper space entities
195
+ # @return [self] The filter for chaining
196
+ # @example Filter for paper space entities
197
+ # filter.paper_space
198
+ # @rbs return SelectionFilter
199
+ def paper_space: () -> SelectionFilter
200
+
201
+ # Filter for model space entities
202
+ # @return [self] The filter for chaining
203
+ # @example Filter for model space entities
204
+ # filter.model_space
205
+ # @rbs return SelectionFilter
206
+ def model_space: () -> SelectionFilter
207
+
208
+ # Filter text content using wildcards
209
+ # @param str [String] Search pattern (e.g., "*REV*")
210
+ # @return [self] The filter for chaining
211
+ # @example Find text containing "REVISION"
212
+ # filter.contains("*REVISION*")
213
+ # @rbs str: String -- Search pattern (e.g., "*REV*")
214
+ # @rbs return SelectionFilter
215
+ def contains: (String str) -> SelectionFilter
216
+
217
+ # Helper method for text content matching
218
+ # @param str [String] Text to search for
219
+ # @return [self] The filter for chaining
220
+ # @example Find text containing specific content
221
+ # filter.has_text("Revision")
222
+ # @rbs str: String -- Text to search for
223
+ # @rbs return SelectionFilter
224
+ def has_text: (String str) -> SelectionFilter
225
+ end
226
+ end