microstation 0.8.3 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Manifest.txt +12 -2
- data/cad_files/drawing_faatitle_in_non_default_model.dgn +0 -0
- 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/cad_files/seed2d.dgn +0 -0
- data/cad_files/seed3d.dgn +0 -0
- data/lib/microstation/version.rb +1 -1
- data/spec/microstation/app_spec.rb +184 -0
- data/spec/microstation/configuration_spec.rb +131 -0
- data/spec/microstation/drawing_spec.rb +245 -0
- data/spec/microstation/functions_spec.rb +36 -0
- data/spec/microstation/tag_set_spec.rb +159 -0
- data/spec/microstation/template_spec.rb +159 -0
- data/spec/microstation/text_node_spec.rb +67 -0
- data/spec/microstation/text_spec.rb +42 -0
- data/spec/microstation_spec.rb +47 -0
- data/spec/spec_helper.rb +97 -0
- metadata +13 -4
- data/bin/microstation +0 -231
- data/cad_files/test.dgn +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9e258964e3bdc19c8148e0c28f075c20e4a3b7432671d4738eeb928ec2d3e54
|
4
|
+
data.tar.gz: 24656d582226c6d708c2bb2dc1f05a4e5109bb0ebcd6e2c75ea1c94d0377f495
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b251be1af95e568c99fd52ad9cf02ead81681b1decf5c799b35a0d674cb96c457c3011c737658bab1ce52d4620dae59800f0f2a93fbcd4b9b22a09847b4ce9c6
|
7
|
+
data.tar.gz: 8d6220c777a73e1d90182469aa77511a3ceffe8970b94ddb1155d15b1d878ccfdc41a0eb20bfb858c03e55512f9891ad7a739feff2dfc5fb8902b7dc8d68b389
|
data/Manifest.txt
CHANGED
@@ -7,15 +7,15 @@ Manifest.txt
|
|
7
7
|
README.adoc
|
8
8
|
Rakefile
|
9
9
|
bin/dgn2pdf
|
10
|
-
bin/microstation
|
11
10
|
bin/dgn_template
|
12
11
|
bin/pw_print
|
13
12
|
cad_files/drawing_faatitle_in_non_default_model.dgn
|
14
13
|
cad_files/drawing_no_block.dgn
|
15
14
|
cad_files/drawing_with_3_block.dgn
|
16
15
|
cad_files/drawing_with_block.dgn
|
16
|
+
cad_files/drawing_with_text.dgn
|
17
17
|
cad_files/seed2d.dgn
|
18
|
-
cad_files/
|
18
|
+
cad_files/seed3d.dgn
|
19
19
|
lib/microstation.rb
|
20
20
|
lib/microstation/app.rb
|
21
21
|
lib/microstation/cad_input_queue.rb
|
@@ -79,3 +79,13 @@ plot/png.plt
|
|
79
79
|
plot/tiff.plt
|
80
80
|
plot/wmbw.tbl
|
81
81
|
plot/wmcolor.tbl
|
82
|
+
spec/microstation/app_spec.rb
|
83
|
+
spec/microstation/configuration_spec.rb
|
84
|
+
spec/microstation/drawing_spec.rb
|
85
|
+
spec/microstation/functions_spec.rb
|
86
|
+
spec/microstation/tag_set_spec.rb
|
87
|
+
spec/microstation/template_spec.rb
|
88
|
+
spec/microstation/text_node_spec.rb
|
89
|
+
spec/microstation/text_spec.rb
|
90
|
+
spec/microstation_spec.rb
|
91
|
+
spec/spec_helper.rb
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/cad_files/seed2d.dgn
CHANGED
Binary file
|
Binary file
|
data/lib/microstation/version.rb
CHANGED
@@ -0,0 +1,184 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../spec_helper'
|
4
|
+
|
5
|
+
describe Microstation::App do
|
6
|
+
|
7
|
+
after(:all) do
|
8
|
+
app.quit rescue nil
|
9
|
+
end
|
10
|
+
describe '#initialize' do
|
11
|
+
describe 'visibility' do
|
12
|
+
it 'is invisible with no options' do
|
13
|
+
app = Microstation::App.new
|
14
|
+
_(app).wont_be :visible
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'can be set with option' do
|
18
|
+
app = Microstation::App.new(visible: true)
|
19
|
+
_(app).must_be :visible
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe 'an open Microstation App' do
|
26
|
+
after(:all) do
|
27
|
+
app.quit rescue nil
|
28
|
+
end
|
29
|
+
let(:app) { Microstation::App.new }
|
30
|
+
|
31
|
+
it 'loads the constants' do
|
32
|
+
app
|
33
|
+
_(Microstation::MSD::MsdElementTypeTag).must_equal 37
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '#can_open?' do
|
37
|
+
it 'is true for dgn and dwg files' do
|
38
|
+
%w[dgn dwg].each do |ext|
|
39
|
+
name = "test.#{ext}"
|
40
|
+
_(app.can_open?(name)).must_equal true
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'is false for other filetypes' do
|
45
|
+
%w[pdf doc jpg pgn].each do |ext|
|
46
|
+
name = "test.#{ext}"
|
47
|
+
_(app.can_open?(name)).wont_equal true
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe 'open_drawing' do
|
53
|
+
describe 'when valid drawing' do
|
54
|
+
let(:path) { drawing_path('drawing_with_text.dgn') }
|
55
|
+
|
56
|
+
it 'returns a drawing' do
|
57
|
+
drawing = app.open_drawing(path)
|
58
|
+
_(drawing).must_be_instance_of Microstation::Drawing
|
59
|
+
drawing.close
|
60
|
+
end
|
61
|
+
|
62
|
+
describe 'when given a block' do
|
63
|
+
it 'yield the drawing to the block' do
|
64
|
+
app.open_drawing(path) do |d|
|
65
|
+
_(d).must_be_instance_of Microstation::Drawing
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'closes the drawing after block returns' do
|
70
|
+
_(app.active_design_file).must_be_nil
|
71
|
+
app.open_drawing(path) do |d|
|
72
|
+
_(d).must_be_instance_of Microstation::Drawing
|
73
|
+
_(app.active_design_file).must_be_instance_of Microstation::Drawing
|
74
|
+
end
|
75
|
+
_(app.active_design_file).must_be_nil
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe 'when a non existent drawing' do
|
81
|
+
it 'raises an error' do
|
82
|
+
_ { app.open_drawing('a_bogus_file.dgn') }.must_raise Microstation::Error
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
describe '#ole_obj' do
|
88
|
+
it 'returns an instance of the WIN32OLE' do
|
89
|
+
_(app.ole_obj).must_be_instance_of WIN32OLE
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe '#create_scanner' do
|
94
|
+
it 'can yield a Microstation::Scan::Criteria' do
|
95
|
+
scan = app.create_scanner do |sc|
|
96
|
+
_(sc).must_be_instance_of Microstation::Scan::Criteria
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'can accept a name' do
|
101
|
+
scanner = app.create_scanner(:my_scanner) do |sc|
|
102
|
+
sc.include_textual
|
103
|
+
sc.include_tags
|
104
|
+
end
|
105
|
+
_(scanner).must_be_instance_of Microstation::Scan::Criteria
|
106
|
+
_(app.scanners[:my_scanner]).must_be_same_as scanner
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
describe '#normalize_name' do
|
111
|
+
it 'returns the name if the name is absolute' do
|
112
|
+
_(app.normalize_name('c:/my_drawings/test.dgn').to_s).must_equal 'c:/my_drawings/test.dgn'
|
113
|
+
end
|
114
|
+
|
115
|
+
# describe "with relative path" do
|
116
|
+
# let(:app){ Microstation::App.new}
|
117
|
+
# let(:drawing_name){ "test.dgn"}
|
118
|
+
|
119
|
+
# describe "when project dir is set" do
|
120
|
+
# app.project_dir = "c:/projects/new"
|
121
|
+
# _(app.normalize_name(drawing_name)).must_equal "c:/projects/new/#{drawing_name}"
|
122
|
+
# end
|
123
|
+
|
124
|
+
# describe "when project dir is not set" do
|
125
|
+
# _(app.normalize_name(drawing_name)).must_equal (Pathname.getwd + drawing_name).to_s
|
126
|
+
# end
|
127
|
+
|
128
|
+
# end
|
129
|
+
end
|
130
|
+
|
131
|
+
it 'has a username method' do
|
132
|
+
_(app.username).must_equal ENV['USERNAME']
|
133
|
+
end
|
134
|
+
|
135
|
+
describe '#new_drawing' do
|
136
|
+
let(:new_path) { output_path('new_drawing.dgn') }
|
137
|
+
|
138
|
+
after do
|
139
|
+
app.close_active_drawing
|
140
|
+
File.delete(new_path) if File.exist? new_path
|
141
|
+
end
|
142
|
+
|
143
|
+
it 'needs a filename' do
|
144
|
+
_ { app.new_drawing }.must_raise
|
145
|
+
end
|
146
|
+
|
147
|
+
it 'raises an error if drawing exists' do
|
148
|
+
path = drawing_path('drawing_with_text.dgn')
|
149
|
+
_ { app.new_drawing(path) }.must_raise
|
150
|
+
end
|
151
|
+
|
152
|
+
it 'creates a drawing if the drawing path is new' do
|
153
|
+
drawing = app.new_drawing(new_path)
|
154
|
+
_(drawing).must_be_instance_of Microstation::Drawing
|
155
|
+
end
|
156
|
+
|
157
|
+
describe 'when given a block' do
|
158
|
+
it 'yields the drawing to a block if a block is given' do
|
159
|
+
app.new_drawing(new_path) do |d|
|
160
|
+
_(d).must_be_instance_of Microstation::Drawing
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
it 'closes drawing after block returns' do
|
165
|
+
_(app.active_design_file).must_be_nil
|
166
|
+
app.new_drawing(new_path) do |d|
|
167
|
+
_(d).must_be_instance_of Microstation::Drawing
|
168
|
+
_(app.active_design_file).must_be_instance_of Microstation::Drawing
|
169
|
+
end
|
170
|
+
_(app.active_design_file).must_be_nil
|
171
|
+
end
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
describe 'render_template' do
|
176
|
+
describe 'with a valid dgn' do
|
177
|
+
let(:dgn) { drawing_path('drawing_with_block.dgn') }
|
178
|
+
|
179
|
+
it 'completes' do
|
180
|
+
app.render_template(dgn)
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
@@ -0,0 +1,131 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../spec_helper'
|
4
|
+
|
5
|
+
describe Microstation::Configuration do
|
6
|
+
include Minitest::Hooks
|
7
|
+
before(:all) do
|
8
|
+
@app = Microstation::App.new
|
9
|
+
config_app(@app)
|
10
|
+
end
|
11
|
+
|
12
|
+
after(:all) do
|
13
|
+
@app.quit rescue nil
|
14
|
+
end
|
15
|
+
|
16
|
+
let(:config) { Microstation::Configuration.new(@app) }
|
17
|
+
let(:defined_name) { 'new_variable' }
|
18
|
+
let(:defined_value) { 'new_variable_value' }
|
19
|
+
let(:undefined_name) { 'undefined_variable' }
|
20
|
+
|
21
|
+
before do
|
22
|
+
config.remove_variable(undefined_name)
|
23
|
+
config.set!(defined_name, defined_value)
|
24
|
+
end
|
25
|
+
|
26
|
+
describe '#remove_variable' do
|
27
|
+
it 'removes an existing variable' do
|
28
|
+
_(config[defined_name]).must_equal defined_value
|
29
|
+
config.remove_variable(defined_name)
|
30
|
+
_(config[defined_name]).must_be_nil
|
31
|
+
end
|
32
|
+
|
33
|
+
it "doesn't error if variable nonexistent" do
|
34
|
+
config.remove_variable 'this_bogus_variable_should_not_exist'
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe '#[]' do
|
39
|
+
it 'should check if value exists' do
|
40
|
+
skip
|
41
|
+
config_mock = Minitest::Mock.new
|
42
|
+
config_mock.expect :exists?, true
|
43
|
+
config.stub :[], config_mock do
|
44
|
+
config['undefined']
|
45
|
+
end
|
46
|
+
config_mock.verify
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'should return the configuration variable if exists' do
|
50
|
+
_(config[defined_name]).must_equal defined_value
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'should return nil if not exists' do
|
54
|
+
_(config[undefined_name]).must_be_nil
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe '[]=, setting variables' do
|
59
|
+
describe 'value not existing yet' do
|
60
|
+
it 'should set the variable' do
|
61
|
+
_(config[undefined_name]).must_be_nil
|
62
|
+
config[undefined_name] = 'its set'
|
63
|
+
_(config[undefined_name]).must_equal 'its set'
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe 'value existing' do
|
68
|
+
it 'should raise variable defined if force option is false' do
|
69
|
+
_ { config[defined_name] = 'my new value' }.must_raise ::Microstation::VariableDefined
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'should keep existing value' do
|
73
|
+
_(config[defined_name]).must_equal defined_value
|
74
|
+
_ { config[defined_name] = 'my new value' }.must_raise
|
75
|
+
_(config[defined_name]).must_equal defined_value
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'should change the variable if force is true' do
|
79
|
+
_(config[defined_name]).must_equal(defined_value)
|
80
|
+
config.set!(defined_name, 'my new value')
|
81
|
+
_(config[defined_name]).must_equal 'my new value'
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
describe '#exists' do
|
87
|
+
it 'should return true if config variable exists' do
|
88
|
+
_((config).exists?(defined_name)).must_equal true
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should return false if config variable doesn't exist" do
|
92
|
+
_(config.exists?(undefined_name)).wont_equal true
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
describe '#prepend' do
|
97
|
+
describe 'variable exists' do
|
98
|
+
it 'should prepend the value' do
|
99
|
+
value_before = config[defined_name]
|
100
|
+
config.prepend(defined_name, 'added')
|
101
|
+
value_after = config[defined_name]
|
102
|
+
_(value_after).must_equal "added;#{value_before}"
|
103
|
+
end
|
104
|
+
|
105
|
+
describe 'variable nonexistent' do
|
106
|
+
it 'should add the value' do
|
107
|
+
value_before = config[undefined_name]
|
108
|
+
config.prepend(undefined_name, 'added')
|
109
|
+
value_after = config[undefined_name]
|
110
|
+
_(value_after).must_equal 'added'
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
describe '#expand' do
|
117
|
+
let(:dir) {}
|
118
|
+
|
119
|
+
before do
|
120
|
+
config['DIR'] = 'c:/Users/Tom'
|
121
|
+
end
|
122
|
+
|
123
|
+
after do
|
124
|
+
config.remove_variable('DIR')
|
125
|
+
end
|
126
|
+
|
127
|
+
it 'should expand the string' do
|
128
|
+
_(config.expand('$(DIR)/project')).must_equal 'c:/Users/Tom/project'
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
@@ -0,0 +1,245 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../spec_helper'
|
4
|
+
|
5
|
+
$LOAD_PATH.unshift(File.join(__dir__, '../lib'))
|
6
|
+
|
7
|
+
# require 'minitest/spec'
|
8
|
+
# require 'minitest/autorun'
|
9
|
+
|
10
|
+
describe 'Lets start the Microstation once' do
|
11
|
+
include Minitest::Hooks
|
12
|
+
before(:all) do
|
13
|
+
@app = Microstation::App.new
|
14
|
+
config_app(@app)
|
15
|
+
end
|
16
|
+
|
17
|
+
after(:all) do
|
18
|
+
@app.quit rescue nil
|
19
|
+
end
|
20
|
+
|
21
|
+
describe 'a drawing created with app.new drawing' do
|
22
|
+
let(:drawing) { new_drawing('temp.dgn', seedfile: 'seed2d') }
|
23
|
+
|
24
|
+
it 'should be active drawing' do
|
25
|
+
_(drawing).must_be :active?
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should have an ole_obj' do
|
29
|
+
_(drawing.ole_obj).must_be_instance_of WIN32OLE
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '#author' do
|
33
|
+
it "should be '' for new drawing" do
|
34
|
+
skip
|
35
|
+
_(drawing.author).must_equal ''
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should set author if given a new author' do
|
39
|
+
drawing.author = 'A newer author'
|
40
|
+
_(drawing.author).must_equal 'A newer author'
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '#title' do
|
45
|
+
it "should be '' to start" do
|
46
|
+
expect(drawing.title).must_equal('')
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'should set title if given a new title' do
|
50
|
+
drawing.title = 'a new title'
|
51
|
+
expect(drawing.title).must_equal 'a new title'
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe '#keywords' do
|
56
|
+
it 'should be empty string to start' do
|
57
|
+
_(drawing.keywords).must_equal ''
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'should set keywords if given a string of words' do
|
61
|
+
drawing.keywords = 'project, rcl, new'
|
62
|
+
_(drawing.keywords).must_equal 'project, rcl, new'
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe '#comments' do
|
67
|
+
it 'should be nil to start' do
|
68
|
+
_(drawing.comments).must_equal ''
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'should be able to be set' do
|
72
|
+
drawing.comments = 'these are comments'
|
73
|
+
_(drawing.comments).must_equal 'these are comments'
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'should be able to save as pdf' do
|
78
|
+
drawing.save_as_pdf
|
79
|
+
end
|
80
|
+
|
81
|
+
describe 'revision count' do
|
82
|
+
it 'should have a revision_count' do
|
83
|
+
_(drawing).must_respond_to(:revision_count)
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'should forward revision count to ole_obj' do
|
87
|
+
skip
|
88
|
+
ole = drawing.ole_obj
|
89
|
+
ole.stub :DesignRevisionCount, true do
|
90
|
+
assert drawing.revision_count
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
describe 'pdf_name' do
|
96
|
+
describe 'with no args' do
|
97
|
+
it 'should equal the drawing path with ext changed' do
|
98
|
+
drawing.stub(:name, 'Drawing Name.dgn') do
|
99
|
+
_(drawing.pdf_name.to_s).must_equal 'Drawing Name.pdf'
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
describe 'with arg for name' do
|
105
|
+
it 'should equal the arg and the current directory' do
|
106
|
+
_(drawing.pdf_name('my_drawing').to_s).must_equal('my_drawing.pdf')
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
describe 'save_as_pdf' do
|
112
|
+
it 'should find the pdf name with pdf_name rules' do
|
113
|
+
skip
|
114
|
+
path = drawing.path
|
115
|
+
_(drawing).to receive(:pdf_name).with('testfile', nil)
|
116
|
+
drawing.save_as_pdf('testfile')
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
describe 'scanning' do
|
121
|
+
it 'should have a #create_scanner' do
|
122
|
+
scanner = drawing.create_scanner(:test)
|
123
|
+
_(scanner).must_be_instance_of Microstation::Scan::Criteria
|
124
|
+
end
|
125
|
+
|
126
|
+
it 'should scan the drawing' do
|
127
|
+
scanner = drawing.create_scanner(:test) do |scan|
|
128
|
+
_(scan).must_be_instance_of Microstation::Scan::Criteria
|
129
|
+
end
|
130
|
+
drawing.scan_model(scanner)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
describe '#scan_text' do
|
135
|
+
it 'only yields textual items' do
|
136
|
+
drawing.scan_text do |item|
|
137
|
+
_(item.class).must_equal(Microstation::Text || Microstation::TextNode)
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
describe '#update_tagset' do
|
143
|
+
describe 'when 1 block exists' do
|
144
|
+
end
|
145
|
+
|
146
|
+
describe 'when 1 block not in default drawing' do
|
147
|
+
let(:drawing) { new_drawing('test.dgn', seedfile: 'drawing_faatitle_in_non_default_model.dgn') }
|
148
|
+
let(:app) { @app }
|
149
|
+
|
150
|
+
it 'finds tagsets in drawing' do
|
151
|
+
tagsets = drawing.tagsets_in_drawing.to_a
|
152
|
+
_(tagsets.size).must_be :>, 0
|
153
|
+
end
|
154
|
+
|
155
|
+
it 'updates tagset' do
|
156
|
+
ts = drawing.find_tagset_instance_by_name('faatitle')
|
157
|
+
ts_title = ts['title1'].to_s
|
158
|
+
_(ts_title).must_equal('TITLE 1')
|
159
|
+
drawing.update_tagset('faatitle', { 'title1' => 'MY NEW TITLE' })
|
160
|
+
ts = drawing.find_tagset_instance_by_name('faatitle')
|
161
|
+
_(ts['title1'].to_s).must_equal('MY NEW TITLE')
|
162
|
+
end
|
163
|
+
end
|
164
|
+
describe 'when multiple blocks' do
|
165
|
+
let(:drawing) { new_drawing('test.dgn', seedfile: 'drawing_with_3_block.dgn') }
|
166
|
+
let(:panel_atts) { { 'brk_1_service' => 'OUTLETS', 'brk_2_service' => 'AIR CONDITIONER' } }
|
167
|
+
let(:app) { @app }
|
168
|
+
|
169
|
+
before do
|
170
|
+
before_new_drawing
|
171
|
+
end
|
172
|
+
|
173
|
+
describe '#save_tagsets' do
|
174
|
+
it 'saves the atts to a file' do
|
175
|
+
drawing.save_tagsets_to_file("#{Microstation::ROOT}drawing_atts.txt")
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
describe 'with no microstation_id' do
|
180
|
+
it 'errors' do
|
181
|
+
_ { drawing.update_tagset('electrical_panel_42', panel_atts) }.must_raise Microstation::MultipleUpdateError
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
describe 'when multiple blocks exist and microstation_id' do
|
186
|
+
it 'updates drawing with block' do
|
187
|
+
ts = drawing.find_tagset_instance_by_name_and_id('electrical_panel_42', 324)
|
188
|
+
_(ts.brk_1_service).must_equal('')
|
189
|
+
_(ts.brk_2_service).must_equal('')
|
190
|
+
panel = panel_atts.merge({ 'microstation_id' => 324 })
|
191
|
+
drawing.update_tagset('electrical_panel_42', panel)
|
192
|
+
ts = drawing.find_tagset_instance_by_name_and_id('electrical_panel_42', 324)
|
193
|
+
_(ts.brk_2_service).must_equal('AIR CONDITIONER')
|
194
|
+
_(ts.brk_1_service).must_equal('OUTLETS')
|
195
|
+
end
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
199
|
+
describe '#get_text' do
|
200
|
+
describe 'drawing with no text' do
|
201
|
+
let(:drawing) { open_existing_drawing('drawing_no_block.dgn') }
|
202
|
+
it 'returns empty array if text has no text' do
|
203
|
+
_(drawing.get_text.to_a).must_equal([])
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
207
|
+
describe 'drawing_with_text in block' do
|
208
|
+
let(:drawing) { open_existing_drawing('drawing_with_block.dgn') }
|
209
|
+
let(:text_in_drawing) do
|
210
|
+
['text1 {{ a1 }}',
|
211
|
+
'text2 {{ a2 }}',
|
212
|
+
'text3 {{ a3 }}',
|
213
|
+
"node1 {{ a4 }}\nnode1 {{ a5 }}",
|
214
|
+
"node2 {{ a7 }}\nnode2 {{ a7 }}",
|
215
|
+
'text a1 again {{ a1 }}']
|
216
|
+
end
|
217
|
+
|
218
|
+
it 'gets all the text if drawing has text' do
|
219
|
+
text_from_drawing = drawing.get_text
|
220
|
+
_(text_from_drawing.to_a.sort).must_equal(text_in_drawing.sort)
|
221
|
+
end
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
describe '2d and 3d' do
|
226
|
+
describe 'when have a 2d drawing' do
|
227
|
+
let(:drawing) { new_drawing('temp.dgn', seedfile: 'seed2d') }
|
228
|
+
|
229
|
+
it 'should be 2d and not 3d two_d? ' do
|
230
|
+
_(drawing).must_be :two_d?
|
231
|
+
_(drawing).wont_be :three_d?
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
describe 'when we have a 3d drawing' do
|
236
|
+
let(:drawing) { new_drawing('temp.dgn', seedfile: 'seed3d') }
|
237
|
+
|
238
|
+
it 'should be 3d and not 2d' do
|
239
|
+
_(drawing).must_be :three_d?
|
240
|
+
_(drawing).wont_be :two_d?
|
241
|
+
end
|
242
|
+
end
|
243
|
+
end
|
244
|
+
end
|
245
|
+
end
|