microstation 0.8.6 → 0.8.7
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/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
@@ -1,53 +1,51 @@
|
|
1
1
|
module Microstation
|
2
|
-
|
3
2
|
class Capabilities
|
4
|
-
|
5
3
|
attr_reader :variable, :capabilities
|
6
4
|
|
7
|
-
def initialize(config,variable)
|
5
|
+
def initialize(config, variable)
|
8
6
|
@config = config
|
9
7
|
@variable = variable
|
10
8
|
@capabilities = get_capabilities
|
11
9
|
end
|
12
10
|
|
13
11
|
def get_capabilities
|
14
|
-
@capabilities = @config[variable].split(
|
12
|
+
@capabilities = @config[variable].split(";")
|
15
13
|
end
|
16
14
|
|
17
|
-
|
18
15
|
def search(name)
|
19
|
-
@capabilities.select{|c| c =~ Regexp.new(Regexp.escape(name), Regexp::IGNORECASE)}
|
16
|
+
@capabilities.select { |c| c =~ Regexp.new(Regexp.escape(name), Regexp::IGNORECASE) }
|
20
17
|
end
|
21
18
|
|
22
19
|
def enabled
|
23
|
-
@capabilities.select{|c| c.start_with?(
|
20
|
+
@capabilities.select { |c| c.start_with?("+") }
|
24
21
|
end
|
25
22
|
|
26
23
|
def disabled
|
27
|
-
@capabilities.select{|c| c.start_with?(
|
24
|
+
@capabilities.select { |c| c.start_with?("-") }
|
28
25
|
end
|
29
26
|
|
30
27
|
def enabled?(name)
|
31
28
|
capa = remove_prefix(name)
|
32
|
-
@capabilities.any?{|c| c == "+#{capa}"}
|
29
|
+
@capabilities.any? { |c| c == "+#{capa}" }
|
33
30
|
end
|
34
31
|
|
35
32
|
def disabled?(name)
|
36
33
|
capa = remove_prefix(name)
|
37
|
-
@capabilities.any?{|c| c == "-#{capa}"}
|
34
|
+
@capabilities.any? { |c| c == "-#{capa}" }
|
38
35
|
end
|
39
36
|
|
40
37
|
def write_configuration
|
41
|
-
caps = @capabilities.uniq.join(
|
38
|
+
caps = @capabilities.uniq.join(";")
|
42
39
|
@config.set!(variable, caps)
|
43
40
|
end
|
44
41
|
|
45
42
|
def prepend(value)
|
46
|
-
@config.prepend(variable,value)
|
43
|
+
@config.prepend(variable, value)
|
47
44
|
end
|
48
45
|
|
49
46
|
def enable(name)
|
50
47
|
return if enabled?(name) && !disabled?(name)
|
48
|
+
|
51
49
|
capa = remove_prefix(name)
|
52
50
|
@capabilities.delete("-#{capa}")
|
53
51
|
@capabilities.unshift("+#{capa}")
|
@@ -57,7 +55,8 @@ module Microstation
|
|
57
55
|
end
|
58
56
|
|
59
57
|
def disable(name)
|
60
|
-
return if disabled?(name)
|
58
|
+
return if disabled?(name) && !enabled?(name)
|
59
|
+
|
61
60
|
capa = remove_prefix(name)
|
62
61
|
capabilities.delete("+#{name}")
|
63
62
|
@capabilities.unshift("-#{capa}")
|
@@ -67,76 +66,67 @@ module Microstation
|
|
67
66
|
end
|
68
67
|
|
69
68
|
def remove_prefix(name)
|
70
|
-
if name =~ /[+-](.+)/
|
71
|
-
name = Regexp.last_match(1)
|
72
|
-
end
|
69
|
+
name = Regexp.last_match(1) if name =~ /[+-](.+)/
|
73
70
|
name
|
74
71
|
end
|
75
|
-
|
76
|
-
|
77
72
|
end
|
78
73
|
|
79
74
|
class VariableDefined < ::StandardError
|
80
75
|
end
|
81
76
|
|
82
|
-
|
83
77
|
class App
|
84
|
-
|
85
78
|
def with_config
|
86
|
-
|
87
79
|
end
|
88
|
-
|
89
80
|
end
|
90
81
|
|
91
82
|
class Configuration
|
92
|
-
|
93
83
|
def initialize(app)
|
94
84
|
@app = app
|
95
85
|
end
|
96
86
|
|
97
|
-
def prepend(variable,value)
|
87
|
+
def prepend(variable, value)
|
98
88
|
if exists?(variable)
|
99
89
|
old_value = get(variable)
|
100
90
|
new_value = "#{value};#{old_value}"
|
101
91
|
else
|
102
92
|
new_value = value.to_s
|
103
93
|
end
|
104
|
-
set!(variable,new_value)
|
94
|
+
set!(variable, new_value)
|
105
95
|
end
|
106
96
|
|
107
|
-
def append(variable,value)
|
97
|
+
def append(variable, value)
|
108
98
|
if exists?(variable)
|
109
99
|
old_value = get(variable)
|
110
100
|
new_value = "#{old_value};#{value}"
|
111
101
|
else
|
112
102
|
new_value = value.to_s
|
113
103
|
end
|
114
|
-
set!(variable,new_value)
|
104
|
+
set!(variable, new_value)
|
115
105
|
end
|
116
106
|
|
117
107
|
def [](variable)
|
118
108
|
return nil unless exists? variable
|
109
|
+
|
119
110
|
get(variable)
|
120
111
|
end
|
121
112
|
|
122
|
-
|
123
113
|
def remove_variable(variable)
|
124
114
|
workspace.RemoveConfigurationVariable variable
|
125
115
|
end
|
126
116
|
|
127
|
-
def set(key,value,options = {})
|
128
|
-
raise VariableDefined unless should_update?(key,options)
|
129
|
-
set!(key,value)
|
130
|
-
end
|
117
|
+
def set(key, value, options = {})
|
118
|
+
raise VariableDefined unless should_update?(key, options)
|
131
119
|
|
132
|
-
|
133
|
-
self.remove_variable(key)
|
134
|
-
workspace.AddConfigurationVariable(key,value)
|
120
|
+
set!(key, value)
|
135
121
|
end
|
136
122
|
|
123
|
+
def set!(key, value)
|
124
|
+
remove_variable(key)
|
125
|
+
workspace.AddConfigurationVariable(key, value)
|
126
|
+
end
|
137
127
|
|
138
|
-
def []=(key,value)
|
139
|
-
set(key,value)
|
128
|
+
def []=(key, value)
|
129
|
+
set(key, value)
|
140
130
|
end
|
141
131
|
|
142
132
|
def exists?(value)
|
@@ -144,15 +134,15 @@ module Microstation
|
|
144
134
|
end
|
145
135
|
|
146
136
|
def capabilities_all
|
147
|
-
@workmode_all ||= Capabilities.new(self,
|
137
|
+
@workmode_all ||= Capabilities.new(self, "_USTN_CAPABILITY")
|
148
138
|
end
|
149
139
|
|
150
|
-
|
151
140
|
def expand(string)
|
152
141
|
workspace.ExpandConfigurationVariable(string)
|
153
142
|
end
|
154
143
|
|
155
144
|
private
|
145
|
+
|
156
146
|
def workspace
|
157
147
|
@app.active_workspace
|
158
148
|
end
|
@@ -161,17 +151,15 @@ module Microstation
|
|
161
151
|
workspace.ConfigurationVariableValue(variable)
|
162
152
|
end
|
163
153
|
|
164
|
-
def should_update?(key,options={force: false})
|
154
|
+
def should_update?(key, options = {force: false})
|
165
155
|
return true unless exists? key
|
166
|
-
force = options.fetch(:force){ false}
|
167
|
-
return !!force
|
168
|
-
end
|
169
156
|
|
157
|
+
force = options.fetch(:force) { false }
|
158
|
+
!!force
|
159
|
+
end
|
170
160
|
end
|
171
161
|
|
172
|
-
|
173
162
|
class App
|
174
|
-
|
175
163
|
def capabilities(mode = :all)
|
176
164
|
case mode
|
177
165
|
when :all
|
@@ -183,11 +171,6 @@ module Microstation
|
|
183
171
|
else
|
184
172
|
configuration_capabilities_all
|
185
173
|
end
|
186
|
-
|
187
174
|
end
|
188
|
-
|
189
175
|
end
|
190
|
-
|
191
|
-
|
192
|
-
|
193
176
|
end
|
@@ -1,23 +1,19 @@
|
|
1
1
|
module Microstation
|
2
|
-
|
3
2
|
module CriteriaCreationT
|
4
|
-
|
5
3
|
def text_criteria
|
6
|
-
app.scanners[:textual] || app.create_scanner(:textual){ include_textual}
|
4
|
+
app.scanners[:textual] || app.create_scanner(:textual) { include_textual }
|
7
5
|
end
|
8
6
|
|
9
7
|
def graphic_criteria
|
10
|
-
app.scanners[:graphical] || app.create_scanner(:graphical){ ExcludeNonGraphical}
|
8
|
+
app.scanners[:graphical] || app.create_scanner(:graphical) { ExcludeNonGraphical }
|
11
9
|
end
|
12
10
|
|
13
11
|
def tags_criteria
|
14
|
-
app.scanners[:tags] || app.create_scanner(:tags){ include_tags}
|
12
|
+
app.scanners[:tags] || app.create_scanner(:tags) { include_tags }
|
15
13
|
end
|
16
14
|
|
17
15
|
def cells_criteria
|
18
|
-
app.scanners[:cells] || app.create_scanner(:cells){ include_cells}
|
16
|
+
app.scanners[:cells] || app.create_scanner(:cells) { include_cells }
|
19
17
|
end
|
20
|
-
|
21
18
|
end
|
22
|
-
|
23
19
|
end
|
data/lib/microstation/dir.rb
CHANGED
@@ -1,15 +1,13 @@
|
|
1
|
-
require_relative
|
2
|
-
require
|
1
|
+
require_relative "pdf_support"
|
2
|
+
require "fileutils"
|
3
3
|
module Microstation
|
4
|
-
|
5
4
|
class Dir
|
6
|
-
|
7
5
|
include PdfSupport
|
8
6
|
include FileUtils::Verbose
|
9
7
|
|
10
8
|
attr_reader :dir, :relative_pdf_path
|
11
9
|
|
12
|
-
def initialize(dir,pdf_path=nil)
|
10
|
+
def initialize(dir, pdf_path = nil)
|
13
11
|
@dir = Pathname(dir).expand_path
|
14
12
|
@relative_pdf_path = set_relative_pdf_path(pdf_path)
|
15
13
|
end
|
@@ -24,7 +22,7 @@ module Microstation
|
|
24
22
|
end
|
25
23
|
|
26
24
|
def ==(other)
|
27
|
-
|
25
|
+
dir == other.dir && relative_pdf_path == other.relative_pdf_path
|
28
26
|
end
|
29
27
|
|
30
28
|
def to_path
|
@@ -43,7 +41,6 @@ module Microstation
|
|
43
41
|
path.exist?
|
44
42
|
end
|
45
43
|
|
46
|
-
|
47
44
|
def mkdir
|
48
45
|
@dir.mkdir
|
49
46
|
end
|
@@ -53,23 +50,21 @@ module Microstation
|
|
53
50
|
end
|
54
51
|
|
55
52
|
def +(other)
|
56
|
-
self.class.new(
|
53
|
+
self.class.new(path + other)
|
57
54
|
end
|
58
55
|
|
59
|
-
|
60
|
-
def copy(drawing,dir)
|
56
|
+
def copy(drawing, dir)
|
61
57
|
cp drawing, dir
|
62
58
|
end
|
63
59
|
|
64
|
-
def select_by_name(
|
60
|
+
def select_by_name(re)
|
65
61
|
re = Regexp.new(re)
|
66
|
-
drawing_files.select{|n| n.to_path =~ re}
|
62
|
+
drawing_files.select { |n| n.to_path =~ re }
|
67
63
|
end
|
68
64
|
|
69
|
-
|
70
65
|
def find_by_name(re)
|
71
66
|
re = Regexp.new(re)
|
72
|
-
drawing_files.find{|n| n.to_path =~ re}
|
67
|
+
drawing_files.find { |n| n.to_path =~ re }
|
73
68
|
end
|
74
69
|
|
75
70
|
def drawings
|
@@ -81,13 +76,13 @@ module Microstation
|
|
81
76
|
end
|
82
77
|
|
83
78
|
def sort(array_of_files)
|
84
|
-
sort_lambda = @sort_by || lambda{|f| f.path.to_s}
|
79
|
+
sort_lambda = @sort_by || lambda { |f| f.path.to_s }
|
85
80
|
array_of_files.sort_by(&sort_lambda)
|
86
81
|
end
|
87
82
|
|
88
83
|
def drawing_files
|
89
84
|
return @drawing_files if @drawing_files
|
90
|
-
set_drawing_files(drawings.map{|dwg| Microstation::Drawing::File.new(dwg)}
|
85
|
+
set_drawing_files(drawings.map { |dwg| Microstation::Drawing::File.new(dwg) })
|
91
86
|
@drawing_files
|
92
87
|
end
|
93
88
|
|
@@ -95,14 +90,12 @@ module Microstation
|
|
95
90
|
@drawing_files = sort(dfiles)
|
96
91
|
end
|
97
92
|
|
98
|
-
|
99
93
|
def pdf_generation_complete?
|
100
|
-
drawing_files.all?{|d|
|
94
|
+
drawing_files.all? { |d| !d.needs_pdf? }
|
101
95
|
end
|
102
96
|
|
103
|
-
|
104
97
|
def pdf_files(dir = pdf_dirname)
|
105
|
-
sort(drawing_files).map{|p| p.pdf_name(dir)}
|
98
|
+
sort(drawing_files).map { |p| p.pdf_name(dir) }
|
106
99
|
end
|
107
100
|
|
108
101
|
def concat_pdfs(files)
|
@@ -110,12 +103,12 @@ module Microstation
|
|
110
103
|
end
|
111
104
|
|
112
105
|
def drawing_files_needing_pdf(dir = pdf_dirname)
|
113
|
-
drawing_files.select{|d| d.needs_pdf?(dir) }
|
106
|
+
drawing_files.select { |d| d.needs_pdf?(dir) }
|
114
107
|
end
|
115
108
|
|
116
109
|
def print_pdfs(dir = pdf_dirname)
|
117
|
-
with_drawing_files(
|
118
|
-
drawing.save_as_pdf(:
|
110
|
+
with_drawing_files(drawing_files_needing_pdf) do |drawing|
|
111
|
+
drawing.save_as_pdf(dir: dir)
|
119
112
|
end
|
120
113
|
end
|
121
114
|
|
@@ -125,33 +118,30 @@ module Microstation
|
|
125
118
|
end
|
126
119
|
|
127
120
|
def find_pdftk(dirs = nil)
|
128
|
-
require
|
129
|
-
@pdftk = PdfForms.new(
|
121
|
+
require "pdf_forms"
|
122
|
+
@pdftk = PdfForms.new("e:/tools/pdftk-1.44/bin/pdftk.exe")
|
130
123
|
end
|
131
124
|
|
132
125
|
def pdftk
|
133
|
-
@pdftk ||= find_pdftk(dirs= nil)
|
126
|
+
@pdftk ||= find_pdftk(dirs = nil)
|
134
127
|
end
|
135
128
|
|
136
|
-
|
137
|
-
|
138
|
-
pdftk.cat(files,name.to_s)
|
129
|
+
def concat_pdfs(files, name)
|
130
|
+
pdftk.cat(files, name.to_s)
|
139
131
|
puts "generated #{name}"
|
140
132
|
end
|
141
133
|
|
142
|
-
|
143
|
-
|
144
134
|
def get_meta_for_drawings
|
145
135
|
@drawing_files = nil
|
146
136
|
files = []
|
147
|
-
with_drawing_files(
|
137
|
+
with_drawing_files(drawings) do |drawing|
|
148
138
|
files << Microstation::Drawing::File.from_drawing(drawing)
|
149
139
|
end
|
150
140
|
set_drawing_files(files)
|
151
141
|
end
|
152
142
|
|
153
143
|
def with_drawing_files(dwgs = drawing_files, &block)
|
154
|
-
Microstation.with_drawings(dwgs
|
144
|
+
Microstation.with_drawings(dwgs, &block)
|
155
145
|
end
|
156
146
|
|
157
147
|
def pdf_dirname
|
@@ -167,22 +157,15 @@ module Microstation
|
|
167
157
|
Pathname(rel_path)
|
168
158
|
end
|
169
159
|
|
170
|
-
|
171
160
|
def relative_pdf_path=(path)
|
172
161
|
@relative_pdf_path = set_relative_path(path)
|
173
162
|
end
|
174
|
-
|
175
|
-
|
176
|
-
|
177
163
|
end
|
178
164
|
end
|
179
165
|
|
180
166
|
module Microstation
|
181
|
-
|
182
167
|
class Drawing
|
183
|
-
|
184
168
|
class File
|
185
|
-
|
186
169
|
include PdfSupport
|
187
170
|
|
188
171
|
attr_reader :keywords, :creator, :path
|
@@ -197,7 +180,6 @@ module Microstation
|
|
197
180
|
@path.to_path
|
198
181
|
end
|
199
182
|
|
200
|
-
|
201
183
|
def initialize(path)
|
202
184
|
@path = Pathname(path)
|
203
185
|
end
|
@@ -210,12 +192,10 @@ module Microstation
|
|
210
192
|
@path.dirname
|
211
193
|
end
|
212
194
|
|
213
|
-
|
214
|
-
@drawing = drawing
|
215
|
-
end
|
195
|
+
attr_writer :drawing
|
216
196
|
|
217
197
|
def mtime
|
218
|
-
|
198
|
+
path.mtime
|
219
199
|
end
|
220
200
|
|
221
201
|
def title
|
@@ -223,11 +203,11 @@ module Microstation
|
|
223
203
|
end
|
224
204
|
|
225
205
|
def app_open_drawing(app, &block)
|
226
|
-
draw = app.open_drawing(
|
206
|
+
draw = app.open_drawing(path, &block)
|
227
207
|
end
|
228
208
|
|
229
209
|
def open_drawing(&block)
|
230
|
-
Microstation.open_drawing(
|
210
|
+
Microstation.open_drawing(path, &block)
|
231
211
|
end
|
232
212
|
|
233
213
|
def get_meta(dwg)
|
@@ -235,18 +215,6 @@ module Microstation
|
|
235
215
|
@keywords = dwg.keywords
|
236
216
|
@creator = dwg.creator
|
237
217
|
end
|
238
|
-
|
239
218
|
end
|
240
|
-
|
241
|
-
|
242
219
|
end
|
243
220
|
end
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
@@ -1,11 +1,9 @@
|
|
1
1
|
module Microstation
|
2
|
-
|
3
2
|
def self.directory(path)
|
4
3
|
Directory.new(path)
|
5
4
|
end
|
6
5
|
|
7
6
|
class Directory
|
8
|
-
|
9
7
|
def self.drawings_in_dir(dir)
|
10
8
|
new(dir).drawings
|
11
9
|
end
|
@@ -21,7 +19,7 @@ module Microstation
|
|
21
19
|
end
|
22
20
|
|
23
21
|
def find_drawing(name)
|
24
|
-
drawings.find{|pn| pn.to_s == name }
|
22
|
+
drawings.find { |pn| pn.to_s == name }
|
25
23
|
end
|
26
24
|
|
27
25
|
def drawings
|
@@ -37,10 +35,7 @@ module Microstation
|
|
37
35
|
end
|
38
36
|
|
39
37
|
def templates
|
40
|
-
Pathname.glob(path +
|
38
|
+
Pathname.glob(path + "*.yaml")
|
41
39
|
end
|
42
|
-
|
43
|
-
|
44
40
|
end
|
45
|
-
|
46
41
|
end
|