Module: Microstation
- Defined in:
- lib/microstation/drawing.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/model.rb,
lib/microstation/errors.rb,
lib/microstation/changer.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/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, Test2, 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.3'
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_app_options ⇒ Object
-
.default_app_options=(opts) ⇒ Object
-
.default_drawing_options ⇒ Object
-
.default_error_proc ⇒ Object
-
.default_error_proc=(p) ⇒ 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 ⇒ 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 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
95
96
97
|
# File 'lib/microstation.rb', line 95
def change_drawing(...)
App.change_drawing(...)
end
|
.default_app_options ⇒ Object
52
53
54
|
# File 'lib/microstation.rb', line 52
def default_app_options
@default_app_options
end
|
.default_app_options=(opts) ⇒ Object
56
57
58
|
# File 'lib/microstation.rb', line 56
def default_app_options=(opts)
@default_app_options = opts
end
|
.default_drawing_options ⇒ Object
44
45
46
|
# File 'lib/microstation.rb', line 44
def default_drawing_options
{read_only: true, error_proc: default_error_proc}
end
|
.default_error_proc ⇒ Object
40
41
42
|
# File 'lib/microstation.rb', line 40
def default_error_proc
@default_error_proc ||= ->(e,f){ puts "Couldn't open drawing #{f}" }
end
|
.default_error_proc=(p) ⇒ Object
48
49
50
|
# File 'lib/microstation.rb', line 48
def default_error_proc=(p)
@default_error_proc = p
end
|
.dgn2pdf(dir, outdir = dir) ⇒ Object
124
125
126
127
128
129
|
# File 'lib/microstation.rb', line 124
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
3
4
5
|
# File 'lib/microstation/directory.rb', line 3
def self.directory(path)
Directory.new(path)
end
|
.drawings_in_dir(dir) ⇒ Object
gets all dwg and dgn dfiles in a directory
101
102
103
104
|
# File 'lib/microstation.rb', line 101
def drawings_in_dir(dir)
dirpath = Pathname.new(dir).expand_path
drawings = Pathname.glob("#{dirpath}/*.d{gn,wg,xf}")
end
|
.dump_template_info(dgn, dir: nil, tagset_filter: nil, visible: false) ⇒ Object
115
116
117
118
119
120
|
# File 'lib/microstation.rb', line 115
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
106
107
108
109
110
111
112
113
|
# File 'lib/microstation.rb', line 106
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
166
167
168
169
170
|
# File 'lib/microstation.rb', line 166
def get_all_text(file)
App.open_drawing(file) do |d|
d.get_all_text
end
end
|
.get_text(file, &block) ⇒ Object
160
161
162
163
164
|
# File 'lib/microstation.rb', line 160
def get_text(file, &block)
App.open_drawing(file) do |d|
d.get_text(&block)
end
end
|
.needs_extending?(ole) ⇒ 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 ⇒ Object
starts app, opens drawing, and yields the drawing before closing drawing and quitting the app
138
139
140
|
# File 'lib/microstation.rb', line 138
def open_drawing(...)
App.open_drawing(...)
end
|
.plot_driver_directory ⇒ Object
66
67
68
|
# File 'lib/microstation.rb', line 66
def plot_driver_directory
root + "plot"
end
|
.root ⇒ Object
62
63
64
|
# File 'lib/microstation.rb', line 62
def root
ROOT
end
|
.run ⇒ Object
197
198
199
|
# File 'lib/microstation.rb', line 197
def run(...)
App.run(...)
end
|
.run_templates_in_dir ⇒ Object
131
132
133
|
# File 'lib/microstation.rb', line 131
def run_templates_in_dir(...)
App.run_templates_in_dir(...)
end
|
.save_as_pdf(d) ⇒ Object
32
33
34
35
36
37
38
|
# File 'lib/microstation.rb', line 32
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
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
|
# File 'lib/microstation.rb', line 172
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
189
190
191
192
193
194
195
|
# File 'lib/microstation.rb', line 189
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
154
155
156
157
158
|
# File 'lib/microstation.rb', line 154
def scan_text(file,&block)
App.open_drawing(file) do |d|
d.scan_text(&block)
end
end
|
.use_template(template, context, options = {}) ⇒ Object
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
# File 'lib/microstation.rb', line 70
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
37
38
39
|
# File 'lib/microstation/app.rb', line 37
def self.win_fs
@windows_fs ||= Windows::FileSystem.new
end
|
.with_drawings ⇒ Object
150
151
152
|
# File 'lib/microstation.rb', line 150
def with_drawings(...)
App.with_drawings(...)
end
|
.with_drawings_in_dir(dir) ⇒ Object
opens all the drawings in a drawing by calling open drawing
144
145
146
147
|
# File 'lib/microstation.rb', line 144
def with_drawings_in_dir(dir,...)
drawings = drawings_in_dir(dir)
with_drawings(drawings,...)
end
|