microstation 0.8.5 → 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 -44
- 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 +57 -72
- 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 +36 -22
@@ -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
|