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.
- checksums.yaml +4 -4
- data/.rubocop/minitest.yml +2 -2
- data/.rubocop/strict.yml +4 -4
- data/.rubocop.yml +36 -33
- data/CHANGELOG.md +5 -5
- data/LICENSE.txt +21 -21
- data/README.md +134 -39
- data/Rakefile +26 -10
- data/exe/autocad +3 -3
- data/gemfiles/rubocop.gemfile +2 -1
- data/lib/autocad/app.rb +127 -28
- data/lib/autocad/arc.rb +3 -0
- data/lib/autocad/block.rb +11 -6
- data/lib/autocad/block_reference.rb +33 -4
- data/lib/autocad/bounding_box.rb +202 -0
- data/lib/autocad/dim_style.rb +4 -0
- data/lib/autocad/drawing.rb +873 -172
- data/lib/autocad/element.rb +217 -25
- data/lib/autocad/errors.rb +9 -0
- data/lib/autocad/filter.rb +502 -168
- data/lib/autocad/layer.rb +129 -41
- data/lib/autocad/layout.rb +120 -0
- data/lib/autocad/line.rb +154 -55
- data/lib/autocad/message_box.rb +95 -95
- data/lib/autocad/model.rb +217 -89
- data/lib/autocad/mtext.rb +189 -110
- data/lib/autocad/plot.rb +45 -0
- data/lib/autocad/plot_configuration.rb +372 -0
- data/lib/autocad/point.rb +7 -0
- data/lib/autocad/point3d.rb +18 -11
- data/lib/autocad/pviewport.rb +136 -21
- data/lib/autocad/selection_filter.rb +358 -180
- data/lib/autocad/selection_set.rb +140 -61
- data/lib/autocad/selection_set_adapter.rb +187 -8
- data/lib/autocad/spline.rb +27 -0
- data/lib/autocad/text.rb +66 -11
- data/lib/autocad/text_style.rb +4 -0
- data/lib/autocad/version.rb +1 -1
- data/lib/autocad/viewport.rb +57 -0
- data/lib/autocad.rb +126 -30
- data/lib/faa/cleanup.rb +137 -0
- data/lib/win32ole_helper.rb +52 -0
- data/rbs_collection.lock.yaml +38 -18
- data/sig/generated/autocad/app.rbs +278 -251
- data/sig/generated/autocad/arc.rbs +6 -3
- data/sig/generated/autocad/block.rbs +8 -5
- data/sig/generated/autocad/block_reference.rbs +99 -59
- data/sig/generated/autocad/bounding_box.rbs +78 -0
- data/sig/generated/autocad/dim_style.rbs +6 -0
- data/sig/generated/autocad/drawing.rbs +597 -158
- data/sig/generated/autocad/element.rbs +233 -166
- data/sig/generated/autocad/errors.rbs +29 -23
- data/sig/generated/autocad/filter.rbs +388 -60
- data/sig/generated/autocad/layer.rbs +76 -19
- data/sig/generated/autocad/layout.rbs +64 -0
- data/sig/generated/autocad/line.rbs +128 -25
- data/sig/generated/autocad/message_box.rbs +81 -81
- data/sig/generated/autocad/model.rbs +115 -41
- data/sig/generated/autocad/mtext.rbs +123 -0
- data/sig/generated/autocad/plot.rbs +26 -0
- data/sig/generated/autocad/plot_configuration.rbs +176 -0
- data/sig/generated/autocad/point.rbs +7 -0
- data/sig/generated/autocad/point3d.rbs +70 -66
- data/sig/generated/autocad/pviewport.rbs +64 -0
- data/sig/generated/autocad/selection_filter.rbs +226 -50
- data/sig/generated/autocad/selection_set.rbs +112 -37
- data/sig/generated/autocad/selection_set_adapter.rbs +235 -28
- data/sig/generated/autocad/spline.rbs +22 -0
- data/sig/generated/autocad/text.rbs +66 -7
- data/sig/generated/autocad/text_style.rbs +6 -0
- data/sig/generated/autocad/viewport.rbs +19 -2
- data/sig/generated/autocad.rbs +140 -68
- data/sig/generated/faa/cleanup.rbs +53 -0
- data/sig/generated/win32ole_helper.rbs +9 -0
- data/sig/prototype/lib/autocad/app.rbs +3 -1
- data/sig/prototype/lib/autocad/bounding_box.rbs +15 -0
- data/sig/prototype/lib/autocad/drawing.rbs +6 -0
- data/sig/prototype/lib/autocad/layer.rbs +5 -0
- data/sig/prototype/lib/autocad/viewport.rbs +7 -0
- data/sig/prototype/lib/autocad.rbs +1 -1
- metadata +29 -5
- data/event_handler.log +0 -24
- 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
|
@@ -1,66 +1,70 @@
|
|
1
|
-
# Generated from lib/autocad/point3d.rb with RBS::Inline
|
2
|
-
|
3
|
-
module Autocad
|
4
|
-
class Point3d
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
# array
|
17
|
-
# array can be [
|
18
|
-
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
def
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
def
|
40
|
-
|
41
|
-
# @rbs return
|
42
|
-
def
|
43
|
-
|
44
|
-
# @rbs return
|
45
|
-
def
|
46
|
-
|
47
|
-
# @rbs
|
48
|
-
def
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
# @
|
57
|
-
def
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
def
|
65
|
-
|
66
|
-
|
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
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
def
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
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
|