module Microstation::ModelTrait

Public Instance Methods

activate() click to toggle source
# File lib/microstation/model_trait.rb, line 69
def activate
  ole_obj.Activate
end
active?() click to toggle source
# File lib/microstation/model_trait.rb, line 22
def active?
  ole_obj.IsActive
end
add_element(el) click to toggle source
# File lib/microstation/model_trait.rb, line 82
def add_element(el)
  if el.respond_to? :ole_obj
    el = el.ole_obj
    ole_obj.AddElement(el)
    self
  end
end
change_text_suffix(reg,offset) click to toggle source
# File lib/microstation/model_trait.rb, line 49
def change_text_suffix(reg,offset)
  get_matching_text(reg) do |t,md|
    pre = md[1]
    suff = Integer( md[2] ) + offset
    t.replace "#{pre}#{suff}"
  end
end
find_by_id(id) click to toggle source
# File lib/microstation/model_trait.rb, line 16
def find_by_id(id)
  ele = ole_obj.GetElementById64(id) rescue nil
  return nil unless ele
  app.ole_to_ruby(ele)
end
get_matching_text(re) { |t,md| ... } click to toggle source
# File lib/microstation/model_trait.rb, line 34
def get_matching_text(re)
  result = []
  get_selected_text.each do |t|
    md = re.match( t)
    if md
      if block_given?
        yield t,md
      else
        result << t
      end
    end
    result
  end
end
get_selected_elements() click to toggle source
# File lib/microstation/model_trait.rb, line 26
def get_selected_elements
  Enumerator.new(ole_obj.GetSelectedElements,app)
end
get_selected_text() click to toggle source
# File lib/microstation/model_trait.rb, line 30
def get_selected_text
  get_selected_elements.select{|t| t.textual?}
end
get_tagsets_in_model_hash(ts_name: nil, base_element_id: nil,&block) click to toggle source
# File lib/microstation/model_trait.rb, line 125
def get_tagsets_in_model_hash(ts_name: nil, base_element_id: nil,&block)
  tags = scan_tags_filtered(ts_name: ts_name, base_element_id: base_element_id)
  tags_to_hash(tags, &block)
end
get_tagsets_in_model_hash_old() { |result_hash| ... } click to toggle source
# File lib/microstation/model_trait.rb, line 130
def get_tagsets_in_model_hash_old
  results = []
  tsets  = scan_tags.group_by{|t| t.tagset_name}
  tsets.each do |tsname, tags|
    elements = tags.group_by{|t| t.base_element_id}
    elements.each do |id, tag_elts|
      result_hash = {
        name: tsname,
        model: name,
        tags: tag_elts,
        base_element_id: id,
      }
      if block_given?
        yield result_hash
      else
        results << result_hash
      end
    end
    results unless block_given?
  end 

end
locked?() click to toggle source
# File lib/microstation/model_trait.rb, line 73
def locked?
  ole_obj.IsLocked?
end
name() click to toggle source

include TS::TagSetTrait

# File lib/microstation/model_trait.rb, line 12
def name
  ole_obj.name
end
readonly?() click to toggle source
# File lib/microstation/model_trait.rb, line 65
def readonly?
  ole_obj.IsReadOnly
end
scan_model(criteria=nil) { |item| ... } click to toggle source

Scan the model with @param [Scan::Criteria] criteria - the criteria to scan @yield the item

# File lib/microstation/model_trait.rb, line 157
def scan_model(criteria=nil)
  #    binding.pry
  criteria = criteria || create_scanner(:nullscanner)
  scan_result = ole_run_scan(criteria)
  return [] unless scan_result
  #   binding.pry
  scan_enum = ::Microstation::Enumerator.new(scan_result, app)
  result =  []
  if block_given?
    scan_enum.each do |item|
      yield item
    end
  else
    scan_enum.each do |item|
      result << item
    end
  end

  return result unless block_given?
end
scan_tags_filtered( ts_name: nil, base_element_id: nil,&block) click to toggle source
# File lib/microstation/model_trait.rb, line 94
def scan_tags_filtered( ts_name: nil, base_element_id: nil,&block)
  case [ts_name, base_element_id]
      in [nil, nil]
      scan_tags(&block)
      in [String,nil]
      scan_tags.select{ |t| t.tagset_name == ts_name }
      in [String, Numeric]
      scan_tags.select{ |t| t.tagset_name == ts_name && t.base_element_id == base_element_id }
      in [nil, Numeric]
      scan_tags.select{ |t| t.base_element_id == base_element_id  }

  end
end
select_element(el) click to toggle source
# File lib/microstation/model_trait.rb, line 61
def select_element(el)
  ole_obj.SelectElement(el.ole_obj)
end
select_tagset_instances() click to toggle source
# File lib/microstation/model_trait.rb, line 90
def select_tagset_instances

end
tags_to_hash(tags) { |result_hash| ... } click to toggle source
# File lib/microstation/model_trait.rb, line 108
def tags_to_hash(tags)
  return to_enum(__callee__,tags) unless block_given?
  tsets = tags.group_by{ |t| t.tagset_name }
  tsets.each do |tsname, tags|
    elements = tags.group_by{|t| t.base_element_id}
    elements.each do |id, tag_elts|
      result_hash = {
        name: tsname,
        model: name,
        tags: tag_elts,
        base_element_id: id,
      }
      yield result_hash
    end
  end
end
to_s() click to toggle source
# File lib/microstation/model_trait.rb, line 77
def to_s
  "Microstation::Model-#{name}"
end
unselect_element(el) click to toggle source
# File lib/microstation/model_trait.rb, line 57
def unselect_element(el)
  ole_obj.UnselectElement(el.ole_obj)
end

Private Instance Methods

ole_run_scan(criteria) click to toggle source
# File lib/microstation/model_trait.rb, line 181
def ole_run_scan(criteria)
  criteria.resolve
  scan_result = self.ole_obj.Scan(criteria.ole_obj) rescue nil
end