microstation 0.4.1 → 0.8.3

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.
Files changed (102) hide show
  1. checksums.yaml +7 -0
  2. data/.autotest +23 -23
  3. data/.rspec +2 -2
  4. data/Gemfile +28 -10
  5. data/History.txt +6 -6
  6. data/LICENSE.adoc +22 -0
  7. data/Manifest.txt +81 -60
  8. data/README.adoc +131 -0
  9. data/Rakefile +71 -30
  10. data/bin/dgn2pdf +36 -37
  11. data/bin/dgn_template +107 -0
  12. data/bin/microstation +231 -0
  13. data/bin/pw_print +35 -0
  14. data/cad_files/drawing_faatitle_in_non_default_model.dgn +0 -0
  15. data/cad_files/drawing_no_block.dgn +0 -0
  16. data/cad_files/drawing_with_3_block.dgn +0 -0
  17. data/cad_files/drawing_with_block.dgn +0 -0
  18. data/cad_files/seed2d.dgn +0 -0
  19. data/cad_files/test.dgn +0 -0
  20. data/lib/microstation.rb +252 -88
  21. data/lib/microstation/app.rb +781 -286
  22. data/lib/microstation/cad_input_queue.rb +100 -25
  23. data/lib/microstation/cell.rb +191 -0
  24. data/lib/microstation/changer.rb +70 -0
  25. data/lib/microstation/configuration.rb +193 -57
  26. data/lib/microstation/criteria_creation_t.rb +23 -0
  27. data/lib/microstation/dir.rb +252 -252
  28. data/lib/microstation/directory.rb +46 -0
  29. data/lib/microstation/drawing.rb +690 -189
  30. data/lib/microstation/element.rb +311 -0
  31. data/lib/microstation/enumerator.rb +32 -29
  32. data/lib/microstation/errors.rb +17 -0
  33. data/lib/microstation/event_handler.rb +28 -0
  34. data/lib/microstation/ext/pathname.rb +23 -25
  35. data/lib/microstation/ext/win32ole.rb +7 -0
  36. data/lib/microstation/extensions/faa.rb +124 -0
  37. data/lib/microstation/file_tests.rb +68 -0
  38. data/lib/microstation/functions.rb +60 -0
  39. data/lib/microstation/graphics.rb +35 -0
  40. data/lib/microstation/line.rb +19 -0
  41. data/lib/microstation/model.rb +45 -0
  42. data/lib/microstation/model_trait.rb +189 -0
  43. data/lib/microstation/ole_cad_input_message.rb +101 -0
  44. data/lib/microstation/ole_helper.rb +152 -0
  45. data/lib/microstation/pdf_support.rb +40 -40
  46. data/lib/microstation/point3d.rb +71 -0
  47. data/lib/microstation/primitive_command_interface.rb +66 -0
  48. data/lib/microstation/properties.rb +61 -57
  49. data/lib/microstation/property_handler.rb +48 -0
  50. data/lib/microstation/scan/color.rb +38 -38
  51. data/lib/microstation/scan/criteria.rb +89 -85
  52. data/lib/microstation/scan/klass.rb +43 -43
  53. data/lib/microstation/scan/level.rb +38 -38
  54. data/lib/microstation/scan/line_style.rb +45 -45
  55. data/lib/microstation/scan/line_weight.rb +33 -33
  56. data/lib/microstation/scan/range.rb +19 -0
  57. data/lib/microstation/scan/scan_trait.rb +51 -0
  58. data/lib/microstation/scan/subtype.rb +40 -40
  59. data/lib/microstation/scan/type.rb +134 -109
  60. data/lib/microstation/scan_trait.rb +62 -0
  61. data/lib/microstation/scanner.rb +24 -24
  62. data/lib/microstation/tag.rb +87 -58
  63. data/lib/microstation/tag_set.rb +385 -280
  64. data/lib/microstation/tag_set_trait.rb +51 -0
  65. data/lib/microstation/tagged_element.rb +105 -0
  66. data/lib/microstation/template.rb +90 -84
  67. data/lib/microstation/template_info.rb +172 -0
  68. data/lib/microstation/template_runner.rb +65 -0
  69. data/lib/microstation/text.rb +79 -54
  70. data/lib/microstation/text_node.rb +124 -74
  71. data/lib/microstation/ts/attribute.rb +140 -139
  72. data/lib/microstation/ts/instance.rb +146 -112
  73. data/lib/microstation/ts/tagset_trait.rb +49 -0
  74. data/lib/microstation/types.rb +91 -91
  75. data/lib/microstation/version.rb +5 -0
  76. data/lib/microstation/wrap.rb +28 -214
  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. metadata +301 -86
  84. data/.gemtest +0 -0
  85. data/README.txt +0 -75
  86. data/lib/microstation/attributes.rb +0 -35
  87. data/lib/microstation/extensions/hash.rb +0 -27
  88. data/spec/app_spec.rb +0 -267
  89. data/spec/configuration_spec.rb +0 -122
  90. data/spec/drawing_spec.rb +0 -247
  91. data/spec/drawings/new_drawing.dgn +0 -0
  92. data/spec/drawings/test.dgn +0 -0
  93. data/spec/drawings/test1.dgn +0 -0
  94. data/spec/drawings/testfile.pdf +0 -0
  95. data/spec/enumerator_spec.rb +0 -60
  96. data/spec/microstation_spec.rb +0 -36
  97. data/spec/scanner_spec.rb +0 -155
  98. data/spec/spec_app.rb +0 -11
  99. data/spec/spec_helper.rb +0 -31
  100. data/spec/tag_set_spec.rb +0 -123
  101. data/spec/text_node_spec.rb +0 -92
  102. data/spec/text_spec.rb +0 -62
@@ -0,0 +1,101 @@
1
+ module Microstation
2
+
3
+
4
+ module InputType
5
+
6
+ Command = 1
7
+ Reset = 2
8
+ DataPoint = 3
9
+ Keyin = 4
10
+ Any = 5
11
+ Unassigned = 6
12
+
13
+ end
14
+
15
+
16
+ class OLE_CadInputMessage
17
+
18
+ include WIN32OLE::VARIANT
19
+ attr_reader :lastargs,:ole_obj, :app
20
+
21
+
22
+ def initialize(ole,app)
23
+ @ole_obj = ole
24
+ @app = app
25
+ end
26
+
27
+ def reset?
28
+ input_type == InputType::Reset
29
+ end
30
+
31
+ def command?
32
+ input_type == InputType::Command
33
+ end
34
+
35
+ def data_point?
36
+ input_type == InputType::DataPoint
37
+ end
38
+
39
+ def key_in?
40
+ input_type == InputType::Keyin
41
+ end
42
+
43
+ def any?
44
+ input_type == InputType::Any
45
+ end
46
+
47
+ def unassigned?
48
+ input_type == InputType::Unassigned
49
+ end
50
+
51
+ def input_type
52
+ @input_type ||= get_input_type
53
+ end
54
+
55
+ # MsdCadInputType InputType
56
+ def get_input_type()
57
+ ole_obj.InputType
58
+ end
59
+
60
+ # BSTR Keyin
61
+ def get_keyin()
62
+ ret = ole_obj._getproperty(1610743809, [], [])
63
+ @lastargs = WIN32OLE::ARGV
64
+ ret
65
+ end
66
+
67
+ # Point3d Point
68
+ def get_point()
69
+ app.to_point3d(ole_obj.Point)
70
+ end
71
+
72
+ # BSTR CommandKeyin
73
+ def get_command_keyin()
74
+ ret = ole_obj._getproperty(1610743811, [], [])
75
+ @lastargs = WIN32OLE::ARGV
76
+ ret
77
+ end
78
+
79
+ # _View View
80
+ def get_view()
81
+ ret = ole_obj._getproperty(1610743812, [], [])
82
+ @lastargs = WIN32OLE::ARGV
83
+ ret
84
+ end
85
+
86
+ # Point3d ScreenPoint
87
+ def get_screen_point()
88
+ ret = ole_obj._getproperty(1610743813, [], [])
89
+ @lastargs = WIN32OLE::ARGV
90
+ ret
91
+ end
92
+
93
+ # I4 CursorButton
94
+ def get_cursor_button()
95
+ ret = ole_obj._getproperty(1610743814, [], [])
96
+ @lastargs = WIN32OLE::ARGV
97
+ ret
98
+ end
99
+ end
100
+
101
+ end
@@ -0,0 +1,152 @@
1
+ module OleHelper
2
+
3
+ def select_ole_type(name)
4
+ if name.class == String
5
+ name = Regexp.new(name)
6
+ end
7
+ reg = Regexp.new(name.source,Regexp::IGNORECASE)
8
+ typelib.ole_classes.select do |k|
9
+ reg =~ k.name
10
+ end
11
+ end
12
+
13
+ def select_ole_method(name)
14
+ if name.class == String
15
+ name = Regexp.new(name)
16
+ end
17
+ reg = Regexp.new(name.source,Regexp::IGNORECASE)
18
+ self.ole_methods.select do |k|
19
+ reg =~ k.name
20
+ end
21
+ end
22
+
23
+ def ole_classes
24
+ typelib.ole_classes
25
+ end
26
+
27
+ def create_ole_type(type)
28
+ WIN32OLE.new(type.guid)
29
+ end
30
+
31
+ def ole_classes_detail
32
+ s = String.new
33
+ ole_classes.sort_by{|k| k.ole_type}.each do |k|
34
+ s << "#{k.name}\n\n"
35
+ s << "Type: #{k.ole_type}\n"
36
+ s << "progid: #{k.progid}\n"
37
+ s << "quid: #{k.guid}\n"
38
+ s << "------------\n\n"
39
+ end
40
+ s
41
+ end
42
+
43
+
44
+ def ole_methods_detail
45
+ s = String.new
46
+ ole_methods.each do |m|
47
+ s << "Method #{m.name}\n\n"
48
+ s << "dispid: #{m.dispid}\n"
49
+ s << "Event? #{m.event?}\n"
50
+ s << "Event interface: #{m.event_interface}\n"
51
+ s << "invoke kind: #{m.invoke_kind}\n"
52
+ s << "return type: #{m.return_type_detail}\n"
53
+ s << "visible: #{m.visible?}\n"
54
+ s << "params...\n"
55
+ m.params.each do |p|
56
+ s << "Param Name: #{p.name}\n"
57
+ s << "Optional: #{p.optional?}\n"
58
+ s << "Output? #{p.output?}\n"
59
+ s << "Detail\n"
60
+ s << "#{p.ole_type_detail}"
61
+ s << "\n\n"
62
+ end
63
+ s << "------------\n\n"
64
+ end
65
+ s
66
+ end
67
+
68
+
69
+ def each_ole_type
70
+ return enum_for(:each_ole_type) unless block_given?
71
+ typelib.ole_classes.each do |t|
72
+ yield t
73
+ end
74
+ end
75
+
76
+ def get_ole_type(name)
77
+ if name.class == String
78
+ return ole_classes.find{|t| t.name == name}
79
+ end
80
+ reg = Regexp.new(name.source, Regexp::IGNORECASE)
81
+ ole_classes.find do |t|
82
+ t.name =~ name
83
+ end
84
+ end
85
+
86
+ def typelib
87
+ self.ole_typelib
88
+ end
89
+
90
+
91
+ end
92
+
93
+
94
+ class WIN32OLE
95
+
96
+ include OleHelper
97
+
98
+ end
99
+
100
+
101
+ # def select_ole_type(name)
102
+ # if name.class == String
103
+ # name = Regexp.new(name)
104
+ # end
105
+ # reg = Regexp.new(name.source,Regexp::IGNORECASE)
106
+ # typelib.ole_classes.select do |k|
107
+ # reg =~ k.name
108
+ # end
109
+ # end
110
+
111
+ # def select_ole_method(name)
112
+ # if name.class == String
113
+ # name = Regexp.new(name)
114
+ # end
115
+ # reg = Regexp.new(name.source,Regexp::IGNORECASE)
116
+ # ole_obj.ole_methods.select do |k|
117
+ # reg =~ k.name
118
+ # end
119
+ # end
120
+
121
+ # def ole_classes
122
+ # typelib.ole_classes
123
+ # end
124
+
125
+ # def create_ole_type(type)
126
+ # WIN32OLE.new(type.guid)
127
+ # end
128
+
129
+ # def each_ole_type
130
+ # return enum_for(:each_ole_type) unless block_given?
131
+ # typelib.ole_classes.each do |t|
132
+ # yield t
133
+ # end
134
+ # end
135
+
136
+ # def get_ole_type(name)
137
+ # if name.class == String
138
+ # name = Regexp.new name
139
+ # end
140
+ # reg = Regexp.new(name.source, Regexp::IGNORECASE)
141
+ # typelib.ole_classes.find do |t|
142
+ # t.name =~ name
143
+ # end
144
+ # end
145
+
146
+
147
+
148
+ # alias :find_ole_type :get_ole_type
149
+
150
+ # def typelib
151
+ # ole_obj.ole_typelib
152
+ # end
@@ -1,40 +1,40 @@
1
- module Microstation
2
-
3
-
4
- module PdfSupport
5
-
6
- def pdf_name(output_dir=nil)
7
- name = self.basename
8
- dir = output_dir || self.dirname
9
- pdfname = Pathname(name).ext('pdf')
10
- (dir + pdfname).expand_path
11
- end
12
-
13
- def pdf_exists?(output_dir = nil)
14
- pdf_name(output_dir).file?
15
- end
16
-
17
- def file_exists?(file)
18
- file.file?
19
- end
20
-
21
- def needs_pdf?(output_dir=nil)
22
- pdf_path = pdf_name(output_dir)
23
- !file_exists?(pdf_path) || pdf_older?(pdf_path)
24
- end
25
-
26
- def pdf_older?(pdf)
27
- self.mtime > pdf.mtime
28
- end
29
-
30
-
31
- def mtime
32
- self.path.mtime
33
- end
34
-
35
-
36
- end
37
-
38
-
39
- end
40
-
1
+ module Microstation
2
+
3
+
4
+ module PdfSupport
5
+
6
+ def pdf_name(output_dir=nil)
7
+ name = self.basename
8
+ dir = output_dir || self.dirname
9
+ pdfname = Pathname(name).ext('pdf')
10
+ (dir + pdfname).expand_path
11
+ end
12
+
13
+ def pdf_exists?(output_dir = nil)
14
+ pdf_name(output_dir).file?
15
+ end
16
+
17
+ def file_exists?(file)
18
+ file.file?
19
+ end
20
+
21
+ def needs_pdf?(output_dir=nil)
22
+ pdf_path = pdf_name(output_dir)
23
+ !file_exists?(pdf_path) || pdf_older?(pdf_path)
24
+ end
25
+
26
+ def pdf_older?(pdf)
27
+ self.mtime > pdf.mtime
28
+ end
29
+
30
+
31
+ def mtime
32
+ self.path.mtime
33
+ end
34
+
35
+
36
+ end
37
+
38
+
39
+ end
40
+
@@ -0,0 +1,71 @@
1
+ module Microstation
2
+
3
+
4
+
5
+ class Point3d
6
+
7
+ class << self
8
+
9
+ def ole_point3d?(ole)
10
+ ole.class == WIN32OLE_RECORD && ole.typename == 'Point3d'
11
+ end
12
+
13
+ def cartesian_to_polar(x,y)
14
+ r = Math.sqrt(x*x + y*y)
15
+ angle = Angle.radians(Math.atan2(y,x))
16
+ [r,angle]
17
+ end
18
+
19
+ def from_polar_degrees(r,a)
20
+
21
+ end
22
+
23
+ def from_ole(ole)
24
+ new(ole.X, ole.Y, ole.Z)
25
+ end
26
+
27
+ def polar_to_cartesian(r,a)
28
+
29
+ end
30
+
31
+ end
32
+
33
+ attr_reader :x, :y, :z
34
+
35
+ def initialize(x=0,y=0,z=0)
36
+ @x = x
37
+ @y = y
38
+ @z = z
39
+ end
40
+
41
+
42
+ def +(pt)
43
+ case pt
44
+ when Point3d
45
+ self.class.new(self.x + pt.x, self.y + pt.y, self.z + pt.z)
46
+ when Array
47
+ self.class.new(self.x + pt[0], self.y + pt[1])
48
+ end
49
+ end
50
+
51
+ def -(pt)
52
+ case pt
53
+ when Point3d
54
+ self.class.new(self.x - pt.x, self.y - pt.y, self.z - pt.z)
55
+ when Array
56
+ self.class.new(self.x - pt[0], self.y - pt[1])
57
+ end
58
+ end
59
+
60
+ def zero
61
+ new(0.0,0.0,0,0)
62
+ end
63
+
64
+ def to_cartesian
65
+
66
+ end
67
+
68
+ end
69
+
70
+
71
+ end
@@ -0,0 +1,66 @@
1
+ module PrimitiveCommandInterface
2
+
3
+ def Keyin(keyin)
4
+ end
5
+
6
+ def DataPoint(pt, view)
7
+ end
8
+
9
+ def Reset
10
+ end
11
+
12
+ def Cleanup
13
+ end
14
+
15
+ def Dynamics(pt,view,drawmode)
16
+ end
17
+
18
+ def Start
19
+ end
20
+
21
+
22
+ end
23
+
24
+ class LineCreation
25
+
26
+ include PrimitiveCommandInterface
27
+
28
+ attr_reader :points
29
+
30
+ def initialize(app)
31
+ @app = app
32
+ @points = Array.new(2)
33
+ end
34
+
35
+ def DataPoint(pt, view)
36
+ case points.compact.size
37
+ when 0
38
+ app.ole_obj.CommandState.StartDynamics
39
+ @points[0] = pt
40
+ app.show_prompt "Place end point"
41
+ when 1
42
+ @points[1] = pt
43
+ line_from_pts(@points)
44
+ @points[0] = @points[1]
45
+ end
46
+ end
47
+
48
+
49
+ def Dynamics(pt, view, drawmode)
50
+ if @points.compact.size == 1
51
+ @points[1] = pt
52
+ line = line_from_pts(@points)
53
+ end
54
+ end
55
+
56
+ def Reset
57
+ app.CommandState.StartPrimitive self
58
+ @points = Array.new(2)
59
+ end
60
+
61
+ def Start
62
+ app.show_command "VBA PlaceLine Example"
63
+ app.show_prompt "Select start of line"
64
+ end
65
+
66
+ end