microstation 0.4.1 → 0.8.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +7 -0
  2. data/.autotest +23 -23
  3. data/.rspec +2 -2
  4. data/Gemfile +29 -10
  5. data/History.txt +6 -6
  6. data/LICENSE.adoc +22 -0
  7. data/Manifest.txt +91 -60
  8. data/README.adoc +131 -0
  9. data/Rakefile +72 -30
  10. data/bin/dgn2pdf +36 -37
  11. data/bin/dgn_template +107 -0
  12. data/bin/pw_print +35 -0
  13. data/cad_files/drawing_faatitle_in_non_default_model.dgn +0 -0
  14. data/cad_files/drawing_no_block.dgn +0 -0
  15. data/cad_files/drawing_with_3_block.dgn +0 -0
  16. data/cad_files/drawing_with_block.dgn +0 -0
  17. data/cad_files/drawing_with_text.dgn +0 -0
  18. data/cad_files/seed2d.dgn +0 -0
  19. data/cad_files/seed3d.dgn +0 -0
  20. data/lib/microstation/app.rb +781 -286
  21. data/lib/microstation/cad_input_queue.rb +100 -25
  22. data/lib/microstation/cell.rb +191 -0
  23. data/lib/microstation/changer.rb +70 -0
  24. data/lib/microstation/configuration.rb +193 -57
  25. data/lib/microstation/criteria_creation_t.rb +23 -0
  26. data/lib/microstation/dir.rb +252 -252
  27. data/lib/microstation/directory.rb +46 -0
  28. data/lib/microstation/drawing.rb +686 -189
  29. data/lib/microstation/element.rb +311 -0
  30. data/lib/microstation/enumerator.rb +32 -29
  31. data/lib/microstation/errors.rb +17 -0
  32. data/lib/microstation/event_handler.rb +28 -0
  33. data/lib/microstation/ext/pathname.rb +23 -25
  34. data/lib/microstation/ext/win32ole.rb +7 -0
  35. data/lib/microstation/extensions/faa.rb +124 -0
  36. data/lib/microstation/file_tests.rb +68 -0
  37. data/lib/microstation/functions.rb +60 -0
  38. data/lib/microstation/graphics.rb +35 -0
  39. data/lib/microstation/line.rb +19 -0
  40. data/lib/microstation/model.rb +45 -0
  41. data/lib/microstation/model_trait.rb +189 -0
  42. data/lib/microstation/ole_cad_input_message.rb +101 -0
  43. data/lib/microstation/ole_helper.rb +152 -0
  44. data/lib/microstation/pdf_support.rb +40 -40
  45. data/lib/microstation/point3d.rb +71 -0
  46. data/lib/microstation/primitive_command_interface.rb +66 -0
  47. data/lib/microstation/properties.rb +61 -57
  48. data/lib/microstation/property_handler.rb +48 -0
  49. data/lib/microstation/scan/color.rb +38 -38
  50. data/lib/microstation/scan/criteria.rb +89 -85
  51. data/lib/microstation/scan/klass.rb +43 -43
  52. data/lib/microstation/scan/level.rb +38 -38
  53. data/lib/microstation/scan/line_style.rb +45 -45
  54. data/lib/microstation/scan/line_weight.rb +33 -33
  55. data/lib/microstation/scan/range.rb +19 -0
  56. data/lib/microstation/scan/scan_trait.rb +51 -0
  57. data/lib/microstation/scan/subtype.rb +40 -40
  58. data/lib/microstation/scan/type.rb +134 -109
  59. data/lib/microstation/scan_trait.rb +62 -0
  60. data/lib/microstation/scanner.rb +24 -24
  61. data/lib/microstation/tag.rb +87 -58
  62. data/lib/microstation/tag_set.rb +385 -280
  63. data/lib/microstation/tag_set_trait.rb +51 -0
  64. data/lib/microstation/tagged_element.rb +105 -0
  65. data/lib/microstation/template.rb +90 -84
  66. data/lib/microstation/template_info.rb +172 -0
  67. data/lib/microstation/template_runner.rb +65 -0
  68. data/lib/microstation/text.rb +79 -54
  69. data/lib/microstation/text_node.rb +124 -74
  70. data/lib/microstation/ts/attribute.rb +140 -139
  71. data/lib/microstation/ts/instance.rb +146 -112
  72. data/lib/microstation/ts/tagset_trait.rb +49 -0
  73. data/lib/microstation/types.rb +91 -91
  74. data/lib/microstation/version.rb +5 -0
  75. data/lib/microstation/wrap.rb +28 -214
  76. data/lib/microstation.rb +252 -88
  77. data/plot/pdf-bw.plt +164 -164
  78. data/plot/pdf.plt +163 -163
  79. data/plot/png.plt +383 -383
  80. data/plot/tiff.plt +384 -384
  81. data/plot/wmbw.tbl +324 -66
  82. data/plot/wmcolor.tbl +62 -62
  83. data/spec/microstation/app_spec.rb +184 -0
  84. data/spec/microstation/configuration_spec.rb +131 -0
  85. data/spec/microstation/drawing_spec.rb +245 -0
  86. data/spec/microstation/functions_spec.rb +36 -0
  87. data/spec/microstation/tag_set_spec.rb +159 -0
  88. data/spec/microstation/template_spec.rb +159 -0
  89. data/spec/microstation/text_node_spec.rb +67 -0
  90. data/spec/microstation/text_spec.rb +42 -0
  91. data/spec/microstation_spec.rb +47 -36
  92. data/spec/spec_helper.rb +97 -31
  93. metadata +308 -84
  94. data/.gemtest +0 -0
  95. data/README.txt +0 -75
  96. data/lib/microstation/attributes.rb +0 -35
  97. data/lib/microstation/extensions/hash.rb +0 -27
  98. data/spec/app_spec.rb +0 -267
  99. data/spec/configuration_spec.rb +0 -122
  100. data/spec/drawing_spec.rb +0 -247
  101. data/spec/drawings/new_drawing.dgn +0 -0
  102. data/spec/drawings/test.dgn +0 -0
  103. data/spec/drawings/test1.dgn +0 -0
  104. data/spec/drawings/testfile.pdf +0 -0
  105. data/spec/enumerator_spec.rb +0 -60
  106. data/spec/scanner_spec.rb +0 -155
  107. data/spec/spec_app.rb +0 -11
  108. data/spec/tag_set_spec.rb +0 -123
  109. data/spec/text_node_spec.rb +0 -92
  110. data/spec/text_spec.rb +0 -62
@@ -1,74 +1,124 @@
1
- module Microstation
2
-
3
- class TextNode < Element
4
-
5
- attr_reader :original_text, :ole_obj
6
-
7
- def initialize(ole)
8
- @ole_obj = ole
9
- @original_text = ole_to_ruby(ole)
10
- end
11
-
12
- def empty?
13
- ole_obj.TextLinesCount == 0
14
- end
15
-
16
- def text?
17
- false
18
- end
19
-
20
- def size
21
- ole_obj.TextLinesCount
22
- end
23
-
24
-
25
- def ole_to_ruby(ole)
26
- count = ole.TextLinesCount
27
- # debugger if count > 0
28
- str_array = []
29
- 1.upto(count) do |i|
30
- str_array << ole.TextLine(i)
31
- end
32
- str_array.join("\n")
33
- end
34
-
35
- def _update(text)
36
- update_ole(text)
37
- @original_text = text
38
- end
39
-
40
- def update_ole(text)
41
- ole_obj.DeleteAllTextLines
42
- text.each_line do |line|
43
- ole_obj.AddTextLine(line)
44
- end
45
- ole_obj.Redraw Microstation::MSD::MsdDrawingModeNormal
46
- ole_obj.Rewrite
47
- end
48
-
49
- def to_s
50
- @original_text.to_s
51
- end
52
-
53
- def method_missing(meth,*args,&block)
54
- dup = @original_text.dup
55
- result = dup.send(meth,*args,&block)
56
- _update(dup) unless dup == @original_text
57
- result
58
- end
59
-
60
-
61
- def method_missing2(meth,*args,&block)
62
- if meth.to_s =~ /^[A-Z]/
63
- ole_obj.send(meth,*args)
64
- else
65
- dup = @original_text.dup
66
- result = dup.send(meth,*args,&block)
67
- _update(dup) unless dup == @original_text
68
- result
69
- end
70
- end
71
-
72
- end
73
-
74
- end
1
+ module Microstation
2
+
3
+ class TextNode < Element
4
+
5
+ attr_reader :original, :ole_obj
6
+
7
+
8
+ def to_regexp
9
+ Regexp.new(original.to_s)
10
+ end
11
+
12
+
13
+ def empty?
14
+ ole_obj.TextLinesCount == 0
15
+ end
16
+
17
+ def text?
18
+ false
19
+ end
20
+
21
+ def size
22
+ ole_obj.TextLinesCount
23
+ end
24
+
25
+
26
+ def read_ole(ole)
27
+ count = ole.TextLinesCount
28
+ # debugger if count > 0
29
+ str_array = []
30
+ 1.upto(count) do |i|
31
+ str_array << ole.TextLine(i)
32
+ end
33
+ str_array.join("\n")
34
+ end
35
+
36
+ # def _update(text)
37
+ # update_ole!(text)
38
+ # @original = text
39
+ # end
40
+
41
+ def write_ole(text)
42
+ if in_cell?
43
+ write_ole_in_cell(text)
44
+ else
45
+ write_ole_regular(text)
46
+ end
47
+ end
48
+
49
+ def write_ole_regular(text)
50
+ ole_obj.DeleteAllTextLines
51
+ text.each_line do |line|
52
+ ole_obj.AddTextLine(line)
53
+ end
54
+ end
55
+
56
+ def write_ole_in_cell(text)
57
+ begin
58
+ orig_ole = ole_obj
59
+ new_text_ole = ole_obj.Clone
60
+ new_text_ole.DeleteAllTextLines
61
+ text.each_line do |line|
62
+ new_text_ole.AddTextLine(line)
63
+ end
64
+ @ole_obj = new_text_ole
65
+ rescue => e
66
+ @ole_obj = orig_ole
67
+ end
68
+ end
69
+
70
+ def update_ole!(text)
71
+ ole_obj.DeleteAllTextLines
72
+ text.each_line do |line|
73
+ ole_obj.AddTextLine(line)
74
+ end
75
+ ole_obj.Redraw Microstation::MSD::MsdDrawingModeNormal
76
+ ole_obj.Rewrite
77
+ end
78
+
79
+ def to_s
80
+ @original.to_s
81
+ end
82
+
83
+ def =~(reg)
84
+ @original =~ reg
85
+ end
86
+
87
+ def template?
88
+ !!(@original =~ /{{.+}}/)
89
+ end
90
+
91
+ def render(h={})
92
+ return self unless template?
93
+ template = Liquid::Template.parse(self.to_s)
94
+ result = template.render(h)
95
+ update(result) unless result == @original
96
+ self
97
+ end
98
+
99
+ def method_missing(meth,*args,&block)
100
+ if meth =~ /^[A-Z]/
101
+ ole_obj.send(meth,*args)
102
+ else
103
+ copy = @original.dup
104
+ result = copy.send(meth,*args,&block)
105
+ update(result) unless copy == @original
106
+ result
107
+ end
108
+ end
109
+
110
+
111
+ # def method_missing2(meth,*args,&block)
112
+ # if meth.to_s =~ /^[A-Z]/
113
+ # ole_obj.send(meth,*args)
114
+ # else
115
+ # dup = @original.dup
116
+ # result = dup.send(meth,*args,&block)
117
+ # _update(dup) unless dup == @original
118
+ # result
119
+ # end
120
+ # end
121
+
122
+ end
123
+
124
+ end
@@ -1,139 +1,140 @@
1
- module Microstation
2
- module TS
3
-
4
- class Attribute
5
-
6
- attr_reader :ole_obj
7
-
8
- # msdTagTypeCharacter 1 (&H1)
9
- # msdTagTypeShortInteger 2 (&H2)
10
- # msdTagTypeLongInteger 3 (&H3)
11
- # msdTagTypeDouble 4 (&H4)
12
- # msdTagTypeBinary 5 (&H5)
13
-
14
- TYPES = {
15
- 1 => String,
16
- 2 => Integer,
17
- 3 => Integer,
18
- 4 => Float,
19
- # 5 => Binary
20
- }
21
-
22
- RUBY_TO_MS = TYPES.invert
23
-
24
- def self.tag_type(type)
25
- if type.class == Symbol
26
- ruby_type = case type
27
- when :char
28
- String
29
- when :int
30
- Integer
31
- when :float
32
- Float
33
- else
34
- :char
35
- end
36
- else
37
- ruby_type = type
38
- end
39
-
40
- RUBY_TO_MS[ruby_type]
41
- end
42
-
43
- def att_type
44
- TYPES[type]
45
- end
46
-
47
- def initialize(ole, options = {})
48
- @ole_obj = ole
49
- @definition = options[:definer]
50
- end
51
-
52
- def close
53
- @ole_obj = nil
54
- end
55
-
56
- def tagset
57
- @definition.tagset if definition
58
- end
59
-
60
- def name
61
- @ole_obj.name
62
- end
63
-
64
- def name=(val)
65
- @ole_obj.Name = val
66
- end
67
-
68
- def options_for_attribute
69
- options = {}
70
- options[:is_hidden] = true if hidden?
71
- options[:prompt] = prompt if prompt
72
- options[:default] = default_value
73
- options[:readonly] = true if constant?
74
- end
75
-
76
- def to_s
77
- "TagDefinition: #{name}"
78
- end
79
-
80
- def constant?
81
- @ole_obj.IsConstant
82
- end
83
-
84
- def constant=(constant)
85
- bool = constant ? true : false
86
- @ole_obj.IsConstant = bool
87
- end
88
-
89
- def default
90
- @ole_obj.DefaultValue
91
- end
92
-
93
- def default=(val)
94
- @ole_obj.DefaultValue = val
95
- end
96
-
97
- def has_default?
98
- !!default
99
- end
100
-
101
- def hidden?
102
- @ole_obj.IsHidden
103
- end
104
-
105
- def hidden=(hidden)
106
- bool = hidden ? true :false
107
- @ole_obj.IsHidden = bool
108
- end
109
- def prompt
110
- @ole_obj.Prompt
111
- end
112
-
113
- def prompt=(val)
114
- @ole_obj.Prompt = val
115
- end
116
-
117
- def type
118
- TYPES[@ole_obj.TagType]
119
- end
120
-
121
- def attrib_options
122
- options = {}
123
- options[:default] = default_value if has_default?
124
- options[:readonly] = true if constant?
125
- options
126
- end
127
-
128
- def tagset_name
129
- @ole_obj.TagSetName
130
- end
131
-
132
- def ==(other)
133
- @ole_obj.Name == other.ole_obj.Name && @ole_obj.TagSetName == other.ole_obj.TagSetName && @ole_obj.TagType == other.ole_obj.TagType
134
- end
135
-
136
- end
137
-
138
- end
139
- end
1
+ module Microstation
2
+
3
+ module TS
4
+
5
+ class Attribute
6
+
7
+ attr_reader :ole_obj
8
+
9
+ # msdTagTypeCharacter 1 (&H1)
10
+ # msdTagTypeShortInteger 2 (&H2)
11
+ # msdTagTypeLongInteger 3 (&H3)
12
+ # msdTagTypeDouble 4 (&H4)
13
+ # msdTagTypeBinary 5 (&H5)
14
+
15
+ TYPES = {
16
+ 1 => String,
17
+ 2 => Integer,
18
+ 3 => Integer,
19
+ 4 => Float,
20
+ # 5 => Binary
21
+ }
22
+
23
+ RUBY_TO_MS = TYPES.invert
24
+
25
+ def self.tag_type(type)
26
+ if type.class == Symbol
27
+ ruby_type = case type
28
+ when :char
29
+ String
30
+ when :int
31
+ Integer
32
+ when :float
33
+ Float
34
+ else
35
+ :char
36
+ end
37
+ else
38
+ ruby_type = type
39
+ end
40
+
41
+ RUBY_TO_MS[ruby_type]
42
+ end
43
+
44
+ def att_type
45
+ TYPES[type]
46
+ end
47
+
48
+ def initialize(ole, options = {})
49
+ @ole_obj = ole
50
+ @definition = options[:definer]
51
+ end
52
+
53
+ def close
54
+ @ole_obj = nil
55
+ end
56
+
57
+ def tagset
58
+ @definition.tagset if definition
59
+ end
60
+
61
+ def name
62
+ @ole_obj.name
63
+ end
64
+
65
+ def name=(val)
66
+ @ole_obj.Name = val
67
+ end
68
+
69
+ def options_for_attribute
70
+ options = {}
71
+ options[:is_hidden] = true if hidden?
72
+ options[:prompt] = prompt if prompt
73
+ options[:default] = default_value
74
+ options[:readonly] = true if constant?
75
+ end
76
+
77
+ def to_s
78
+ "TagDefinition: #{name}"
79
+ end
80
+
81
+ def constant?
82
+ @ole_obj.IsConstant
83
+ end
84
+
85
+ def constant=(constant)
86
+ bool = constant ? true : false
87
+ @ole_obj.IsConstant = bool
88
+ end
89
+
90
+ def default
91
+ @ole_obj.DefaultValue
92
+ end
93
+
94
+ def default=(val)
95
+ @ole_obj.DefaultValue = val
96
+ end
97
+
98
+ def has_default?
99
+ !!default
100
+ end
101
+
102
+ def hidden?
103
+ @ole_obj.IsHidden
104
+ end
105
+
106
+ def hidden=(hidden)
107
+ bool = hidden ? true :false
108
+ @ole_obj.IsHidden = bool
109
+ end
110
+ def prompt
111
+ @ole_obj.Prompt
112
+ end
113
+
114
+ def prompt=(val)
115
+ @ole_obj.Prompt = val
116
+ end
117
+
118
+ def type
119
+ TYPES[@ole_obj.TagType]
120
+ end
121
+
122
+ def attrib_options
123
+ options = {}
124
+ options[:default] = default_value if has_default?
125
+ options[:readonly] = true if constant?
126
+ options
127
+ end
128
+
129
+ def tagset_name
130
+ @ole_obj.TagSetName
131
+ end
132
+
133
+ def ==(other)
134
+ @ole_obj.Name == other.ole_obj.Name && @ole_obj.TagSetName == other.ole_obj.TagSetName && @ole_obj.TagType == other.ole_obj.TagType
135
+ end
136
+
137
+ end
138
+
139
+ end
140
+ end