Sha256: 638fdd36c524ce7c318cdc819e62a37337851e6f95efe6780cd4f77182d69dfa
Contents?: true
Size: 1.31 KB
Versions: 1
Compression:
Stored size: 1.31 KB
Contents
# require_relative "selection_filter" require_relative 'filter' module Autocad class SelectionSet attr_reader :filter_types, :filter_values, :name def initialize(name) @name = name @filter_types = [] @filter_values = [] end def has_filter? filter_types && filter_types.any? end def filter_text(str = nil) if str filter_text_containing(str) else filter do |f| f.or(f.type('TEXT'), f.type('MTEXT')) end end end # filter do |f| # st = f.type('Circle').or(f.type('Arc')) # st2 = f.layer('0').or(f.layer('1')) # f.and(st, st2) # end def filter if block_given? filter = Filter.new result = yield filter @filter_types, @filter_values = result.convert_clauses end self end # Helper methods for common operations def filter_by_type(*types) filter { |f| f.or(*types.map { |t| f.type(t) }) } end def filter_by_layer(*layers) filter { |f| f.or(*layers.map { |l| f.layer(l) }) } end def filter_text_containing(text) filter do |f| f.and(f.has_text(text), f.or(f.type('TEXT'), f.type('MTEXT'))) end end def filter_block_references(name = nil) filter { |f| f.block_reference(name) } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
autocad-0.4.6 | lib/autocad/selection_set.rb |