Module: Microstation
- Defined in:
- lib/microstation/model.rb,
lib/microstation.rb,
lib/microstation/app.rb,
lib/microstation/dir.rb,
lib/microstation/dir.rb,
lib/microstation/tag.rb,
lib/microstation/cell.rb,
lib/microstation/line.rb,
lib/microstation/text.rb,
lib/microstation/wrap.rb,
lib/microstation/errors.rb,
lib/microstation/changer.rb,
lib/microstation/drawing.rb,
lib/microstation/element.rb,
lib/microstation/element.rb,
lib/microstation/element.rb,
lib/microstation/element.rb,
lib/microstation/element.rb,
lib/microstation/element.rb,
lib/microstation/point3d.rb,
lib/microstation/scanner.rb,
lib/microstation/tag_set.rb,
lib/microstation/version.rb,
lib/microstation/graphics.rb,
lib/microstation/template.rb,
lib/microstation/directory.rb,
lib/microstation/functions.rb,
lib/microstation/scan/type.rb,
lib/microstation/text_node.rb,
lib/microstation/enumerator.rb,
lib/microstation/file_tests.rb,
lib/microstation/properties.rb,
lib/microstation/scan/color.rb,
lib/microstation/scan/klass.rb,
lib/microstation/scan/level.rb,
lib/microstation/scan/range.rb,
lib/microstation/scan_trait.rb,
lib/microstation/model_trait.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/event_handler.rb,
lib/microstation/scan/criteria.rb,
lib/microstation/scan/criteria.rb,
lib/microstation/tag_set_trait.rb,
lib/microstation/template_info.rb,
lib/microstation/extensions/faa.rb,
lib/microstation/extensions/faa.rb,
lib/microstation/tagged_element.rb,
lib/microstation/cad_input_queue.rb,
lib/microstation/scan/line_style.rb,
lib/microstation/scan/scan_trait.rb,
lib/microstation/template_runner.rb,
lib/microstation/ts/tagset_trait.rb,
lib/microstation/property_handler.rb,
lib/microstation/scan/line_weight.rb,
lib/microstation/criteria_creation_t.rb,
lib/microstation/ole_cad_input_message.rb
Overview
##define DISP_E_PARAMNOTFOUND HRESULT_TYPEDEF(0x80020004L)
Defined Under Namespace
Modules: CriteriaCreationT, ElementTrait, FileTests, Functions, Graphics, InputType, MSD, Microstation, ModelTrait, OleCollection, PdfSupport, Properties, Scan, ScanTrait, TS, TagSetTrait
Classes: App, Arc, BSplineCurve, BSplineSurface, CadInputQueue, Capabilities, Cell, Changer, Configuration, DefaultModel, Definition, Dir, Directory, Drawing, Element, Ellipse, Enumerator, EventHandler, ExistingFile, Line, Model, OLE_CadInputMessage, Point3d, PropertyHandler, Scanner, Tag, TagSet, TagSets, TaggedElement, Template, TemplateInfo, TemplateRunner, Text, TextNode, VariableDefined
Constant Summary
collapse
- ROOT =
Pathname(__dir__).parent
- TEMPLATES_PATH =
ROOT + "templates"
- Error =
Class.new(::RuntimeError)
- NonDGNFile =
Class.new(Error)
- FileNotFound =
Class.new(Error)
- MultipleUpdateError =
Class.new(Error)
- VERSION =
"0.8.7"
Class Attribute Summary collapse
Class Method Summary
collapse
-
.change_drawing {|Drawing| ... } ⇒ Object
starts an app with drawing, opens a temp copy of the drawing and yields it saves the drawing with with name or output_dir same name.
-
.default_drawing_options ⇒ Object
-
.dgn2pdf(dir, outdir = dir) ⇒ Object
-
.directory(path) ⇒ Object
-
.drawings_in_dir(dir) ⇒ Object
gets all dwg and dgn dfiles in a directory.
-
.dump_template_info(dgn, dir: nil, tagset_filter: nil, visible: false) ⇒ Object
-
.dump_template_info_for_dir(dir, **options) ⇒ Object
-
.get_all_text(file) ⇒ Object
-
.get_text(file, &block) ⇒ Object
-
.needs_extending?(ole) ⇒ Boolean
-
.open_drawing ⇒ Object
starts app, opens drawing, and yields the drawing before closing drawing and quitting the app.
-
.plot_driver_directory ⇒ Object
-
.root ⇒ Object
-
.run(options = {}, &block) ⇒ Object
-
.run_templates_in_dir ⇒ Object
-
.save_as_pdf(d) ⇒ Object
-
.save_current_drawing(dir, exit: true) ⇒ Object
-
.save_current_drawing_as_pdf(dir) ⇒ Object
-
.scan_text(file, &block) ⇒ Object
-
.use_template(template, context, options = {}) ⇒ Object
-
.win_fs ⇒ Object
-
.with_drawings ⇒ Object
-
.with_drawings_in_dir(dir) ⇒ Object
opens all the drawings in a drawing by calling open drawing.
Class Attribute Details
.default_app_options ⇒ Object
Returns the value of attribute default_app_options.
48
49
50
|
# File 'lib/microstation.rb', line 48
def default_app_options
@default_app_options
end
|
.default_error_proc ⇒ Object
38
39
40
|
# File 'lib/microstation.rb', line 38
def default_error_proc
@default_error_proc ||= ->(e, f) { puts "Couldn't open drawing #{f}" }
end
|
Class Method Details
.change_drawing {|Drawing| ... } ⇒ Object
starts an app with drawing, opens a temp copy of the drawing and yields it saves the drawing with with name or output_dir same name
87
88
89
|
# File 'lib/microstation.rb', line 87
def change_drawing(...)
App.change_drawing(...)
end
|
.default_drawing_options ⇒ Object
42
43
44
|
# File 'lib/microstation.rb', line 42
def default_drawing_options
{read_only: true, error_proc: default_error_proc}
end
|
.dgn2pdf(dir, outdir = dir) ⇒ Object
116
117
118
119
120
121
|
# File 'lib/microstation.rb', line 116
def dgn2pdf(dir, outdir = dir)
drawings = drawings_in_dir(dir)
with_drawings(drawings) do |drawing|
drawing.save_as_pdf(name: drawing.name, dir: outdir)
end
end
|
.directory(path) ⇒ Object
2
3
4
|
# File 'lib/microstation/directory.rb', line 2
def self.directory(path)
Directory.new(path)
end
|
.drawings_in_dir(dir) ⇒ Object
gets all dwg and dgn dfiles in a directory
93
94
95
96
|
# File 'lib/microstation.rb', line 93
def drawings_in_dir(dir)
dirpath = Pathname.new(dir).expand_path
drawings = dirpath.glob("*.d{gn,wg,xf}").sort_by { _1.basename(".*").to_s.downcase }
end
|
.dump_template_info(dgn, dir: nil, tagset_filter: nil, visible: false) ⇒ Object
107
108
109
110
111
112
|
# File 'lib/microstation.rb', line 107
def dump_template_info(dgn, dir: nil, tagset_filter: nil, visible: false)
drawing = Pathname(dgn).expand_path
output_dir = dir || drawing.parent
template = TemplateInfo.new(drawing, tagset_filter: tagset_filter, visible: visible)
template.dump(output_dir)
end
|
.dump_template_info_for_dir(dir, **options) ⇒ Object
98
99
100
101
102
103
104
105
|
# File 'lib/microstation.rb', line 98
def dump_template_info_for_dir(dir, **options)
drawings = drawings_in_dir(dir)
raise "no drawings in dir #{dir}" if drawings.empty?
with_drawings(drawings) do |drawing|
template = TemplateInfo.new(drawing, **options)
template.dump(dir)
end
end
|
.get_all_text(file) ⇒ Object
157
158
159
160
161
|
# File 'lib/microstation.rb', line 157
def get_all_text(file)
App.open_drawing(file) do |d|
d.get_all_text
end
end
|
.get_text(file, &block) ⇒ Object
151
152
153
154
155
|
# File 'lib/microstation.rb', line 151
def get_text(file, &block)
App.open_drawing(file) do |d|
d.get_text(&block)
end
end
|
.needs_extending?(ole) ⇒ Boolean
2
3
4
|
# File 'lib/microstation/wrap.rb', line 2
def self.needs_extending?(ole)
ole.instance_of?(WIN32OLE) && (!ole.respond_to? :text?)
end
|
.open_drawing ⇒ Object
starts app, opens drawing, and yields the drawing before closing drawing and quitting the app
130
131
132
|
# File 'lib/microstation.rb', line 130
def open_drawing(...)
App.open_drawing(...)
end
|
.plot_driver_directory ⇒ Object
58
59
60
|
# File 'lib/microstation.rb', line 58
def plot_driver_directory
root + "plot"
end
|
.root ⇒ Object
54
55
56
|
# File 'lib/microstation.rb', line 54
def root
ROOT
end
|
.run(options = {}, &block) ⇒ Object
188
189
190
|
# File 'lib/microstation.rb', line 188
def run(options = {}, &block)
App.run(options, &block)
end
|
.run_templates_in_dir ⇒ Object
.save_as_pdf(d) ⇒ Object
30
31
32
33
34
35
36
|
# File 'lib/microstation.rb', line 30
def save_as_pdf(d)
run do |app|
drawing = app.current_drawing
drawing.save_as_pdf(dir: d)
drawing.close
end
end
|
.save_current_drawing(dir, exit: true) ⇒ Object
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
|
# File 'lib/microstation.rb', line 163
def save_current_drawing(dir, exit: true)
if exit
run do |app|
drawing = app.current_drawing
drawing.copy(dir: dir)
drawing.save_as_pdf(dir: dir)
drawing.close
end
else
app = App.new
drawing = app.current_drawing
drawing.copy(dir: dir)
drawing.save_as_pdf(dir: dir)
app
end
end
|
.save_current_drawing_as_pdf(dir) ⇒ Object
180
181
182
183
184
185
186
|
# File 'lib/microstation.rb', line 180
def save_current_drawing_as_pdf(dir)
App.run do |app|
drawing = app.current_drawing
drawing.save_as_pdf(dir: dir)
drawing.close
end
end
|
.scan_text(file, &block) ⇒ Object
145
146
147
148
149
|
# File 'lib/microstation.rb', line 145
def scan_text(file, &block)
App.open_drawing(file) do |d|
d.scan_text(&block)
end
end
|
.use_template(template, context, options = {}) ⇒ Object
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
# File 'lib/microstation.rb', line 62
def use_template(template, context, options = {})
def context.binding
binding
end
options = {readonly: true}
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_fs ⇒ Object
39
40
41
|
# File 'lib/microstation/app.rb', line 39
def self.win_fs
@windows_fs ||= Windows::FileSystem.new
end
|
.with_drawings ⇒ Object
141
142
143
|
# File 'lib/microstation.rb', line 141
def with_drawings(...)
App.with_drawings(...)
end
|
.with_drawings_in_dir(dir) ⇒ Object
opens all the drawings in a drawing by calling open drawing
136
137
138
139
|
# File 'lib/microstation.rb', line 136
def with_drawings_in_dir(dir, ...)
drawings = drawings_in_dir(dir)
with_drawings(drawings, ...)
end
|