Module: Microstation

Defined in:
lib/microstation.rb,
lib/microstation/app.rb,
lib/microstation/dir.rb,
lib/microstation/dir.rb,
lib/microstation/tag.rb,
lib/microstation/text.rb,
lib/microstation/wrap.rb,
lib/microstation/wrap.rb,
lib/microstation/drawing.rb,
lib/microstation/scanner.rb,
lib/microstation/tag_set.rb,
lib/microstation/template.rb,
lib/microstation/scan/type.rb,
lib/microstation/text_node.rb,
lib/microstation/attributes.rb,
lib/microstation/enumerator.rb,
lib/microstation/properties.rb,
lib/microstation/scan/color.rb,
lib/microstation/scan/klass.rb,
lib/microstation/scan/level.rb,
lib/microstation/pdf_support.rb,
lib/microstation/ts/instance.rb,
lib/microstation/scan/subtype.rb,
lib/microstation/ts/attribute.rb,
lib/microstation/configuration.rb,
lib/microstation/scan/criteria.rb,
lib/microstation/scan/criteria.rb,
lib/microstation/cad_input_queue.rb,
lib/microstation/scan/line_style.rb,
lib/microstation/scan/line_weight.rb

Defined Under Namespace

Modules: Attribute, MSD, PdfSupport, Properties, Scan, TS, Wrap Classes: App, CadInputQueue, Configuration, Definer, Definition, Dir, Drawing, Element, Enumerator, Scanner, Tag, TagSet, TagSets, TaggedElement, Template, Text, TextNode, VariableDefined

Constant Summary collapse

VERSION =
'0.4.1'

Class Method Summary collapse

Class Method Details

.appObject



26
27
28
# File 'lib/microstation.rb', line 26

def self.app
  Microstation::App.new
end

.dgn2pdf(dir, output = dir) ⇒ Object



58
59
60
61
62
63
# File 'lib/microstation.rb', line 58

def self.dgn2pdf(dir,output = dir)
  drawings = drawings_in_dir(dir)
  self.with_drawings(drawings) do |drawing|
    drawing.save_as_pdf(drawing.name,output)
  end
end

.drawings_in_dir(dir) ⇒ Object



53
54
55
56
# File 'lib/microstation.rb', line 53

def self.drawings_in_dir(dir)
  dirpath = Pathname.new(dir).expand_path
  drawings = Pathname.glob("#{dirpath}/*.d{gn,wg}")
end

.needs_extending?(ole) ⇒ Boolean

Returns:

  • (Boolean)


3
4
5
# File 'lib/microstation/wrap.rb', line 3

def self.needs_extending?(ole)
  ole.class == WIN32OLE && (not ole.respond_to? :text?)
end

.open_drawing(drawing, options = {}, &block) ⇒ Object



65
66
67
# File 'lib/microstation.rb', line 65

def self.open_drawing(drawing,options = {}, &block)
  Microstation::App.open_drawing(drawing,options,&block)
end

.plot_driver_directoryObject



31
32
33
# File 'lib/microstation.rb', line 31

def self.plot_driver_directory
  root + "plot"
end

.rootObject



21
22
23
# File 'lib/microstation.rb', line 21

def self.root
  Pathname.new( File.dirname(__FILE__)).parent
end

.run(options = {}, &block) ⇒ Object



78
79
80
81
82
83
84
85
86
# File 'lib/microstation.rb', line 78

def self.run(options={}, &block)
  options = {:visible => false}.merge(options)
  begin
    app = Microstation::App.new(options)
    block.arity < 1 ? app.instance_eval(&block) : block.call(app)
  ensure
    app.quit
  end
end

.use_template(template, context) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/microstation.rb', line 35

def self.use_template(template,context)
  def context.binding
    binding
  end
  opts = {:read_only => true}
  Microstation::App.run do |app|
    tmpfile = Tempfile.new('drawing')
    app.new_drawing(tmpfile,template) do |drawing|
      drawing.scan_text do |text|
        compiled_template = ERB.new(text)
        new_text = compiled_template.result(context.binding)
        text = new_text
      end
    end
  end
  tempfile.read
end

.win_fsObject



29
30
31
# File 'lib/microstation/app.rb', line 29

def self.win_fs
  @windows_fs ||= Windows::FileSystem.new
end

.with_drawings(*files, &block) ⇒ Object



74
75
76
# File 'lib/microstation.rb', line 74

def self.with_drawings(*files, &block)
  Microstation::App.with_drawings(*files,&block)
end

.with_drawings_in_dir(dir, &block) ⇒ Object



69
70
71
72
# File 'lib/microstation.rb', line 69

def self.with_drawings_in_dir(dir,&block)
  drawings = self.drawings_in_dir(dir)
  self.with_drawings(drawings,&block)
end