microstation 0.4.1 → 0.8.3

Sign up to get free protection for your applications and to get access to all the features.
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