microstation 0.8.6 → 0.8.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +26 -29
- data/Rakefile +45 -45
- data/bin/dgn2pdf +5 -6
- data/bin/dgn_template +23 -25
- data/bin/pw_print +11 -13
- data/cad_files/drawing_no_block.dgn +0 -0
- data/cad_files/drawing_with_3_block.dgn +0 -0
- data/cad_files/drawing_with_block.dgn +0 -0
- data/cad_files/drawing_with_text.dgn +0 -0
- data/lib/microstation/app.rb +91 -87
- data/lib/microstation/cad_input_queue.rb +10 -20
- data/lib/microstation/cell.rb +6 -18
- data/lib/microstation/changer.rb +3 -3
- data/lib/microstation/configuration.rb +33 -50
- data/lib/microstation/criteria_creation_t.rb +4 -8
- data/lib/microstation/dir.rb +27 -59
- data/lib/microstation/directory.rb +2 -7
- data/lib/microstation/drawing.rb +103 -102
- data/lib/microstation/element.rb +55 -68
- data/lib/microstation/enumerator.rb +4 -9
- data/lib/microstation/errors.rb +0 -5
- data/lib/microstation/event_handler.rb +1 -5
- data/lib/microstation/ext/pathname.rb +12 -14
- data/lib/microstation/ext/win32ole.rb +0 -2
- data/lib/microstation/extensions/faa.rb +12 -34
- data/lib/microstation/file_tests.rb +15 -50
- data/lib/microstation/functions.rb +10 -20
- data/lib/microstation/graphics.rb +6 -13
- data/lib/microstation/line.rb +2 -6
- data/lib/microstation/model.rb +11 -20
- data/lib/microstation/model_trait.rb +40 -40
- data/lib/microstation/ole_cad_input_message.rb +25 -34
- data/lib/microstation/ole_helper.rb +58 -66
- data/lib/microstation/pdf_support.rb +7 -16
- data/lib/microstation/point3d.rb +17 -30
- data/lib/microstation/primitive_command_interface.rb +8 -14
- data/lib/microstation/properties.rb +29 -17
- data/lib/microstation/property_handler.rb +6 -8
- data/lib/microstation/scan/color.rb +1 -8
- data/lib/microstation/scan/criteria.rb +17 -33
- data/lib/microstation/scan/klass.rb +8 -12
- data/lib/microstation/scan/level.rb +2 -9
- data/lib/microstation/scan/line_style.rb +4 -12
- data/lib/microstation/scan/line_weight.rb +1 -3
- data/lib/microstation/scan/range.rb +2 -8
- data/lib/microstation/scan/scan_trait.rb +48 -51
- data/lib/microstation/scan/subtype.rb +0 -10
- data/lib/microstation/scan/type.rb +9 -15
- data/lib/microstation/scan_trait.rb +13 -20
- data/lib/microstation/scanner.rb +1 -11
- data/lib/microstation/tag.rb +12 -21
- data/lib/microstation/tag_set.rb +52 -71
- data/lib/microstation/tag_set_trait.rb +6 -10
- data/lib/microstation/tagged_element.rb +16 -28
- data/lib/microstation/template.rb +15 -14
- data/lib/microstation/template_info.rb +35 -49
- data/lib/microstation/template_runner.rb +14 -22
- data/lib/microstation/text.rb +15 -19
- data/lib/microstation/text_node.rb +17 -26
- data/lib/microstation/ts/attribute.rb +16 -20
- data/lib/microstation/ts/instance.rb +28 -38
- data/lib/microstation/ts/tagset_trait.rb +5 -12
- data/lib/microstation/types.rb +0 -3
- data/lib/microstation/version.rb +1 -3
- data/lib/microstation/wrap.rb +3 -10
- data/lib/microstation.rb +53 -68
- data/spec/microstation/app_spec.rb +49 -46
- data/spec/microstation/configuration_spec.rb +45 -43
- data/spec/microstation/drawing_spec.rb +103 -101
- data/spec/microstation/functions_spec.rb +18 -12
- data/spec/microstation/tag_set_spec.rb +57 -55
- data/spec/microstation/template_spec.rb +41 -42
- data/spec/microstation/text_node_spec.rb +16 -14
- data/spec/microstation/text_spec.rb +10 -8
- data/spec/microstation_spec.rb +18 -17
- data/spec/spec_helper.rb +18 -18
- metadata +26 -12
data/lib/microstation/drawing.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
require_relative
|
2
|
-
require_relative
|
3
|
-
require_relative
|
4
|
-
require_relative
|
5
|
-
require_relative
|
6
|
-
require
|
1
|
+
require_relative "properties"
|
2
|
+
require_relative "tag_set_trait"
|
3
|
+
require_relative "model"
|
4
|
+
require_relative "errors"
|
5
|
+
require_relative "scan_trait"
|
6
|
+
require "liquid"
|
7
7
|
# /
|
8
8
|
# // MessageId: DISP_E_PARAMNOTFOUND
|
9
9
|
# //
|
@@ -23,14 +23,14 @@ module Microstation
|
|
23
23
|
#
|
24
24
|
# Initialize drawing
|
25
25
|
#
|
26
|
-
# @param app [<Application>] the app instance
|
26
|
+
# @param app [<Application>] the app instance
|
27
27
|
# @param ole [<WIN32OLIE>] the ole object returned from app.ole_obj
|
28
28
|
#
|
29
29
|
def initialize(app, ole)
|
30
30
|
@app = app
|
31
31
|
@ole_obj = ole
|
32
32
|
@find_tagset_instances_called = false
|
33
|
-
@app.register_handler(
|
33
|
+
@app.register_handler("ISaveAsEvents_AfterSaveAs") do |*_args|
|
34
34
|
@drawing_saved = true
|
35
35
|
end
|
36
36
|
end
|
@@ -60,13 +60,13 @@ module Microstation
|
|
60
60
|
def copy(name: nil, dir: nil)
|
61
61
|
if dir.nil?
|
62
62
|
lname = name || copy_name
|
63
|
-
dir_path =
|
63
|
+
dir_path = dirname
|
64
64
|
else
|
65
65
|
lname = name || self.name
|
66
66
|
dir_path = Pathname(dir)
|
67
67
|
end
|
68
68
|
copy_path = dir_path + lname
|
69
|
-
FileUtils.copy
|
69
|
+
FileUtils.copy path.to_s, copy_path.to_s, verbose: true
|
70
70
|
end
|
71
71
|
|
72
72
|
# save the drawing as a pdf file
|
@@ -108,9 +108,9 @@ module Microstation
|
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
111
|
-
def wait_save_event(
|
111
|
+
def wait_save_event(_secs, interval = 0.5)
|
112
112
|
elapsed = 0
|
113
|
-
while
|
113
|
+
while !@drawing_saved && elapsed <= 5
|
114
114
|
elapsed += interval
|
115
115
|
sleep(interval)
|
116
116
|
WIN32OLE_EVENT.message_loop
|
@@ -129,8 +129,8 @@ module Microstation
|
|
129
129
|
# @criteria [Scan::Criteria]
|
130
130
|
# @yield
|
131
131
|
def scan_model(criteria, model: default_model_reference, &block)
|
132
|
-
criteria
|
133
|
-
model
|
132
|
+
criteria ||= create_scan_criteria
|
133
|
+
model ||= default_model_reference
|
134
134
|
model.scan_model(criteria, &block)
|
135
135
|
end
|
136
136
|
|
@@ -139,23 +139,23 @@ module Microstation
|
|
139
139
|
#
|
140
140
|
# calls scan_all_with_block
|
141
141
|
# calls scal_all_with_hash
|
142
|
-
def scan_all(criteria
|
142
|
+
def scan_all(criteria)
|
143
143
|
return to_enum(__callee__, criteria) unless block_given?
|
144
|
+
result = [] if block_given?
|
144
145
|
each_model do |m|
|
145
146
|
m.scan_model(criteria) do |r|
|
146
147
|
if block_given?
|
147
|
-
yield r
|
148
|
+
yield m, r
|
148
149
|
else
|
149
|
-
result << r
|
150
|
+
result << [m, r]
|
150
151
|
end
|
151
152
|
end
|
152
|
-
|
153
153
|
end
|
154
154
|
end
|
155
155
|
|
156
|
-
def get_text
|
156
|
+
def get_text
|
157
157
|
result = []
|
158
|
-
scan_text do |te|
|
158
|
+
scan_text do |_model, te|
|
159
159
|
if block_given?
|
160
160
|
yield te.to_s
|
161
161
|
else
|
@@ -167,25 +167,25 @@ module Microstation
|
|
167
167
|
|
168
168
|
# scan all text and text regions in all
|
169
169
|
# models
|
170
|
-
# @yield [String] text that is found
|
170
|
+
# @yield [Model,String] text that is found
|
171
171
|
def scan_text(&block)
|
172
172
|
scan_all(text_criteria, &block)
|
173
173
|
end
|
174
174
|
|
175
175
|
# scan all tags in drawing and
|
176
|
-
# @yield [Tag] to the block
|
176
|
+
# @yield [Model,Tag] to the block
|
177
177
|
def scan_tags(&block)
|
178
178
|
scan_all(tags_criteria, &block)
|
179
179
|
end
|
180
180
|
|
181
181
|
# scan all cells in drawing and
|
182
|
-
# @yield [Cell] to the block
|
182
|
+
# @yield [Model,Cell] to the block
|
183
183
|
def scan_cells(&block)
|
184
184
|
scan_all(cells_criteria, &block)
|
185
185
|
end
|
186
186
|
|
187
187
|
def scan_text_in_cells(&block)
|
188
|
-
scan_cells do |c|
|
188
|
+
scan_cells do |_model, c|
|
189
189
|
c.text_elements(&block)
|
190
190
|
end
|
191
191
|
end
|
@@ -258,9 +258,14 @@ module Microstation
|
|
258
258
|
app.eval_cexpression(string)
|
259
259
|
end
|
260
260
|
|
261
|
+
# Close the drawing
|
261
262
|
def close
|
262
263
|
@drawing_closed = true
|
263
|
-
|
264
|
+
begin
|
265
|
+
ole_obj.Close
|
266
|
+
rescue
|
267
|
+
nil
|
268
|
+
end
|
264
269
|
@ole_obj = nil
|
265
270
|
end
|
266
271
|
|
@@ -268,17 +273,22 @@ module Microstation
|
|
268
273
|
@drawing_closed
|
269
274
|
end
|
270
275
|
|
276
|
+
# Return the pdf name for the drawing.
|
277
|
+
#
|
278
|
+
# If a name is provided use the name provided otherwise use the drawing name
|
279
|
+
#
|
280
|
+
# @param name [String, nil] @return a Pathname from the name or drawing name
|
271
281
|
def pdf_name(name = nil)
|
272
|
-
name
|
273
|
-
|
282
|
+
name ||= self.name
|
283
|
+
Pathname(name).sub_ext(".pdf")
|
274
284
|
end
|
275
285
|
|
276
286
|
def pdf_driver
|
277
|
-
app.windows_path(
|
287
|
+
app.windows_path((::Microstation.plot_driver_directory + "pdf-bw.plt").to_s)
|
278
288
|
end
|
279
289
|
|
280
290
|
def pen_table
|
281
|
-
app.windows_path(
|
291
|
+
app.windows_path((::Microstation.plot_driver_directory + "wmbw.tbl"))
|
282
292
|
end
|
283
293
|
|
284
294
|
# iterate through each model in the drawing
|
@@ -300,18 +310,17 @@ module Microstation
|
|
300
310
|
# Create a new model
|
301
311
|
# @param [String] name - the name of the model
|
302
312
|
# @param [String] template - the template to use for the model
|
303
|
-
def new_model(name,template = nil)
|
313
|
+
def new_model(name, template = nil)
|
304
314
|
template_ole = template ? template.ole_obj : app.ole_obj.ActiveDesignFile.DefaultModelReference
|
305
|
-
el = app.ole_obj.ActiveDesignFile.Models.Add(template_ole,name,"Added ")
|
306
|
-
|
307
|
-
m
|
315
|
+
el = app.ole_obj.ActiveDesignFile.Models.Add(template_ole, name, "Added ")
|
316
|
+
model_from_ole(el).activate
|
308
317
|
end
|
309
318
|
|
310
319
|
# Active a model
|
311
320
|
# @param name [String] a
|
312
321
|
def activate_model(name)
|
313
322
|
model = find_model(name)
|
314
|
-
model
|
323
|
+
model&.activate
|
315
324
|
end
|
316
325
|
|
317
326
|
# Find the model in the drawing
|
@@ -336,6 +345,7 @@ module Microstation
|
|
336
345
|
|
337
346
|
def get_selected_elements
|
338
347
|
return [] unless has_active_model?
|
348
|
+
|
339
349
|
active_model.get_selected_elements
|
340
350
|
end
|
341
351
|
|
@@ -343,12 +353,12 @@ module Microstation
|
|
343
353
|
active_model.get_selected_text
|
344
354
|
end
|
345
355
|
|
346
|
-
def get_matching_text(re
|
347
|
-
active_model.get_matching_text(re
|
356
|
+
def get_matching_text(re, &block)
|
357
|
+
active_model.get_matching_text(re, &block)
|
348
358
|
end
|
349
359
|
|
350
|
-
def change_text_suffix(reg,offset)
|
351
|
-
active_model.change_text_suffix(reg,offset)
|
360
|
+
def change_text_suffix(reg, offset)
|
361
|
+
active_model.change_text_suffix(reg, offset)
|
352
362
|
end
|
353
363
|
|
354
364
|
# activate the model with name
|
@@ -359,10 +369,11 @@ module Microstation
|
|
359
369
|
model = find_model(name)
|
360
370
|
|
361
371
|
return unless model
|
372
|
+
|
362
373
|
model.activate
|
363
374
|
end
|
364
375
|
|
365
|
-
|
376
|
+
alias_method :activate_model, :change_model
|
366
377
|
|
367
378
|
#
|
368
379
|
# Returns the model names
|
@@ -397,7 +408,7 @@ module Microstation
|
|
397
408
|
range_diff = app_ole_obj.Point3dSubtract(range.High, range.Low)
|
398
409
|
extent = app_ole_obj.Point3dScale(range_diff, zoom)
|
399
410
|
|
400
|
-
oview_origin = app_ole_obj.Point3dSubtract(range.Low, app_ole_obj.Point3dScale(extent,0.5))
|
411
|
+
oview_origin = app_ole_obj.Point3dSubtract(range.Low, app_ole_obj.Point3dScale(extent, 0.5))
|
401
412
|
oview.Origin = oview_origin
|
402
413
|
oview.Extents = extent
|
403
414
|
oview.Redraw
|
@@ -407,7 +418,7 @@ module Microstation
|
|
407
418
|
#
|
408
419
|
# Save the drawing
|
409
420
|
#
|
410
|
-
# @return [void]
|
421
|
+
# @return [void]
|
411
422
|
#
|
412
423
|
def save
|
413
424
|
ole_obj.Save
|
@@ -417,19 +428,19 @@ module Microstation
|
|
417
428
|
active_model.add_element(line)
|
418
429
|
end
|
419
430
|
|
420
|
-
def create_scanner(name
|
421
|
-
app.create_scanner(name
|
431
|
+
def create_scanner(name, &block)
|
432
|
+
app.create_scanner(name, &block)
|
422
433
|
end
|
423
434
|
|
424
435
|
# used
|
425
|
-
def create_tagset_instances_bak
|
436
|
+
def create_tagset_instances_bak
|
426
437
|
result = []
|
427
438
|
@find_tagset_instances_called = true
|
428
439
|
filtered = if block_given?
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
440
|
+
get_tagsets_in_drawing_hash.select(&filter)
|
441
|
+
else
|
442
|
+
get_tagsets_in_drawing_hash
|
443
|
+
end
|
433
444
|
binding.pry
|
434
445
|
filtered.map do |h|
|
435
446
|
element_id = h[:base_element_id]
|
@@ -458,21 +469,20 @@ module Microstation
|
|
458
469
|
|
459
470
|
def create_tagset_instance_from_tagset_hash(h)
|
460
471
|
ts = tagsets[h[:name]]
|
461
|
-
ts.create_instance(
|
472
|
+
ts.create_instance(h[:base_element_id], h[:tags], h[:model])
|
462
473
|
end
|
463
474
|
|
464
475
|
def save_tagsets_to_file(name)
|
465
|
-
require
|
466
|
-
::File.
|
476
|
+
require "json"
|
477
|
+
::File.write(name, get_tagsets_in_drawing_hash.to_a.to_json)
|
467
478
|
end
|
468
479
|
|
469
|
-
#used
|
470
|
-
def get_tagsets_in_drawing_hash(ts_name: nil, base_element_id: nil)
|
471
|
-
return to_enum(__callee__, ts_name: ts_name, base_element_id: base_element_id) unless
|
480
|
+
# used
|
481
|
+
def get_tagsets_in_drawing_hash(ts_name: nil, base_element_id: nil, &block)
|
482
|
+
return to_enum(__callee__, ts_name: ts_name, base_element_id: base_element_id) unless block
|
483
|
+
|
472
484
|
each_model do |m|
|
473
|
-
m.get_tagsets_in_model_hash(ts_name: ts_name, base_element_id: base_element_id)
|
474
|
-
yield tsi
|
475
|
-
end
|
485
|
+
m.get_tagsets_in_model_hash(ts_name: ts_name, base_element_id: base_element_id, &block)
|
476
486
|
end
|
477
487
|
end
|
478
488
|
|
@@ -484,7 +494,7 @@ module Microstation
|
|
484
494
|
create_tagset_instances(ts_name: name).first
|
485
495
|
end
|
486
496
|
|
487
|
-
def find_tagset_instance_by_name_and_id(name,id)
|
497
|
+
def find_tagset_instance_by_name_and_id(name, id)
|
488
498
|
create_tagset_instances(ts_name: name, base_element_id: id).first
|
489
499
|
end
|
490
500
|
|
@@ -498,26 +508,25 @@ module Microstation
|
|
498
508
|
results << ts
|
499
509
|
end
|
500
510
|
end
|
501
|
-
|
502
511
|
end
|
503
512
|
return results unless block_given?
|
504
513
|
end
|
505
514
|
|
506
|
-
|
515
|
+
def update_tagset(name, h_local = {})
|
507
516
|
tset_instances = select_tagset_instances_by_name(name)
|
508
517
|
case tset_instances.size
|
509
518
|
when 0
|
510
|
-
raise
|
519
|
+
raise "no tagset found"
|
511
520
|
when 1
|
512
521
|
ts = tset_instances.first
|
513
522
|
ts.update(h_local)
|
514
523
|
else
|
515
|
-
if
|
524
|
+
if h_local.instance_of?(Array) && h_local.all? { |l| l.instance_of?(Hash) }
|
516
525
|
h_local.each do |update_hash|
|
517
526
|
ts = find_tagset_instance_from_hash(tset_instances, update_hash)
|
518
527
|
ts.update(update_hash)
|
519
528
|
end
|
520
|
-
elsif h_local.
|
529
|
+
elsif h_local.instance_of?(Hash)
|
521
530
|
ts = find_tagset_instance_from_hash(tset_instances, h_local)
|
522
531
|
ts.update(h_local)
|
523
532
|
else
|
@@ -527,33 +536,35 @@ module Microstation
|
|
527
536
|
end
|
528
537
|
|
529
538
|
def find_tagset_instance_from_hash(ti_array, h_local)
|
530
|
-
id = h_local.fetch(
|
539
|
+
id = h_local.fetch("microstation_id", :not_found)
|
531
540
|
if id == :not_found || id.nil?
|
532
541
|
name = ti_array.first.name
|
533
542
|
|
534
|
-
raise MultipleUpdateError,
|
543
|
+
raise MultipleUpdateError,
|
544
|
+
"found #{ti_array.size} instances for tagset #{name}; Need a microstation_id for hash"
|
535
545
|
end
|
536
|
-
ts = ti_array.find{|ti| ti.microstation_id == id}
|
546
|
+
ts = ti_array.find { |ti| ti.microstation_id == id }
|
537
547
|
end
|
538
548
|
|
539
549
|
def update_tagsets(ts_arg)
|
540
550
|
return if ts_arg == []
|
541
551
|
return if ts_arg == {}
|
542
|
-
|
552
|
+
|
553
|
+
ts_array = [ts_arg] if ts_arg.instance_of?(Hash)
|
543
554
|
ts_array.each do |hash_pair|
|
544
555
|
update_tagset(hash_pair.keys[0], hash_pair.values[0])
|
545
556
|
end
|
546
557
|
end
|
547
558
|
|
548
559
|
def update_error
|
549
|
-
raise ArgumentError,
|
560
|
+
raise ArgumentError, "Argument must be an array of hashes"
|
550
561
|
end
|
551
562
|
|
552
563
|
def update_tagsets_from_template_structure(ts_arg)
|
553
564
|
ts_arg.each do |h|
|
554
|
-
inst_array = h[
|
565
|
+
inst_array = h["instances"]
|
555
566
|
inst_array.each do |ts_hash|
|
556
|
-
update_tagset(ts_hash[
|
567
|
+
update_tagset(ts_hash["tagset_name"], ts_hash["attributes"])
|
557
568
|
end
|
558
569
|
end
|
559
570
|
end
|
@@ -561,26 +572,24 @@ module Microstation
|
|
561
572
|
#
|
562
573
|
# returns the internal ole_obj
|
563
574
|
#
|
564
|
-
# @return [WIN32OLE]
|
575
|
+
# @return [WIN32OLE]
|
565
576
|
#
|
566
577
|
def ole_obj
|
567
578
|
is_ok = true
|
568
579
|
begin
|
569
580
|
@ole_obj.Name
|
570
|
-
rescue
|
581
|
+
rescue => e
|
571
582
|
is_ok = false
|
572
583
|
end
|
573
584
|
|
574
|
-
unless is_ok || drawing_closed?
|
575
|
-
binding.pry
|
576
|
-
end
|
585
|
+
binding.pry unless is_ok || drawing_closed?
|
577
586
|
|
578
587
|
@ole_obj
|
579
588
|
end
|
580
589
|
|
581
590
|
def find_line_element
|
582
591
|
line = nil
|
583
|
-
|
592
|
+
scan_lines do |el|
|
584
593
|
line = el if el.microstation_type == MSD::MsdElementTypeLine
|
585
594
|
end
|
586
595
|
line
|
@@ -590,35 +599,32 @@ module Microstation
|
|
590
599
|
app.to_ole_point3d(pt)
|
591
600
|
end
|
592
601
|
|
593
|
-
def create_line(p1,p2,el = nil)
|
602
|
+
def create_line(p1, p2, el = nil)
|
594
603
|
# el = find_line_element
|
595
|
-
pt1,pt2 = [p1,p2].map{ |p| to_ole_point3d(p) }
|
596
|
-
el
|
604
|
+
pt1, pt2 = [p1, p2].map { |p| to_ole_point3d(p) }
|
605
|
+
el ||= WIN32OLE_VARIANT::Nothing
|
597
606
|
el = el.ole_obj if el.respond_to? :ole_obj
|
598
607
|
begin
|
599
|
-
ole = app.ole_obj.CreateLineElement2(el, pt1,pt2)
|
608
|
+
ole = app.ole_obj.CreateLineElement2(el, pt1, pt2)
|
600
609
|
return nil unless ole
|
610
|
+
|
601
611
|
app.wrap(ole)
|
602
|
-
rescue Exception =>
|
603
|
-
puts
|
612
|
+
rescue Exception => e
|
613
|
+
puts e.message bb
|
604
614
|
puts "class: #{el.class}"
|
605
|
-
|
606
|
-
end
|
615
|
+
nil
|
616
|
+
end
|
607
617
|
end
|
608
618
|
|
609
|
-
|
610
619
|
def to_point(pt)
|
611
620
|
app.to_point(pt)
|
612
621
|
end
|
613
622
|
|
614
|
-
|
615
623
|
protected
|
616
624
|
|
617
625
|
def normalize_update_hash(h)
|
618
626
|
h = h.to_h if h.respond_to?(:to_h)
|
619
|
-
if h.
|
620
|
-
h = h.map_keys{|k| k.to_s}
|
621
|
-
end
|
627
|
+
h = h.map_keys { |k| k.to_s } if h.is_a? Hash
|
622
628
|
h
|
623
629
|
end
|
624
630
|
|
@@ -633,7 +639,6 @@ module Microstation
|
|
633
639
|
q << "Print colormode monochrome"
|
634
640
|
q << "Print Execute #{windows_path}"
|
635
641
|
end
|
636
|
-
|
637
642
|
end
|
638
643
|
|
639
644
|
def get_model_for_scan(model = nil)
|
@@ -643,28 +648,28 @@ module Microstation
|
|
643
648
|
end
|
644
649
|
|
645
650
|
def model_from_ole(ole)
|
646
|
-
Model.new(app,self,ole)
|
651
|
+
Model.new(app, self, ole)
|
647
652
|
end
|
648
653
|
|
649
|
-
def copy_name(backup_str =
|
650
|
-
lname =
|
654
|
+
def copy_name(backup_str = ".copy")
|
655
|
+
lname = name.dup
|
651
656
|
ext = File.extname(lname)
|
652
657
|
name = "#{File.basename(lname, ext)}#{backup_str}#{ext}"
|
653
658
|
end
|
654
659
|
|
655
660
|
def pdf_path(name: nil, dir: nil)
|
656
|
-
name
|
657
|
-
dir = Pathname(dir ||
|
661
|
+
name ||= self.name
|
662
|
+
dir = Pathname(dir || dirname).expand_path
|
658
663
|
dir.mkpath unless dir.directory?
|
659
664
|
dir + pdf_name(name)
|
660
665
|
end
|
661
666
|
|
662
667
|
def ole_line_element_klass
|
663
|
-
@line_element ||= ole_classes.find{|c| c.name ==
|
668
|
+
@line_element ||= ole_classes.find { |c| c.name == "_LineElement" }
|
664
669
|
end
|
665
670
|
|
666
671
|
def ole_element_klass
|
667
|
-
@element_class ||= ole_classes.find{|c| c.name ==
|
672
|
+
@element_class ||= ole_classes.find { |c| c.name == "_Element" }
|
668
673
|
end
|
669
674
|
|
670
675
|
def app_ole_obj
|
@@ -672,15 +677,11 @@ module Microstation
|
|
672
677
|
end
|
673
678
|
|
674
679
|
def typelib
|
675
|
-
@typelib
|
680
|
+
@typelib ||= app_ole_obj.ole_typelib
|
676
681
|
end
|
677
682
|
|
678
683
|
def ole_classes
|
679
684
|
@ole_classes ||= typelib.ole_classes
|
680
685
|
end
|
681
|
-
|
682
|
-
|
683
|
-
|
684
686
|
end
|
685
|
-
|
686
687
|
end
|