microstation 0.8.6 → 0.8.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +26 -29
  3. data/Rakefile +45 -45
  4. data/bin/dgn2pdf +5 -6
  5. data/bin/dgn_template +23 -25
  6. data/bin/pw_print +11 -13
  7. data/cad_files/drawing_no_block.dgn +0 -0
  8. data/cad_files/drawing_with_3_block.dgn +0 -0
  9. data/cad_files/drawing_with_block.dgn +0 -0
  10. data/cad_files/drawing_with_text.dgn +0 -0
  11. data/lib/microstation/app.rb +91 -87
  12. data/lib/microstation/cad_input_queue.rb +10 -20
  13. data/lib/microstation/cell.rb +6 -18
  14. data/lib/microstation/changer.rb +3 -3
  15. data/lib/microstation/configuration.rb +33 -50
  16. data/lib/microstation/criteria_creation_t.rb +4 -8
  17. data/lib/microstation/dir.rb +27 -59
  18. data/lib/microstation/directory.rb +2 -7
  19. data/lib/microstation/drawing.rb +103 -102
  20. data/lib/microstation/element.rb +55 -68
  21. data/lib/microstation/enumerator.rb +4 -9
  22. data/lib/microstation/errors.rb +0 -5
  23. data/lib/microstation/event_handler.rb +1 -5
  24. data/lib/microstation/ext/pathname.rb +12 -14
  25. data/lib/microstation/ext/win32ole.rb +0 -2
  26. data/lib/microstation/extensions/faa.rb +12 -34
  27. data/lib/microstation/file_tests.rb +15 -50
  28. data/lib/microstation/functions.rb +10 -20
  29. data/lib/microstation/graphics.rb +6 -13
  30. data/lib/microstation/line.rb +2 -6
  31. data/lib/microstation/model.rb +11 -20
  32. data/lib/microstation/model_trait.rb +40 -40
  33. data/lib/microstation/ole_cad_input_message.rb +25 -34
  34. data/lib/microstation/ole_helper.rb +58 -66
  35. data/lib/microstation/pdf_support.rb +7 -16
  36. data/lib/microstation/point3d.rb +17 -30
  37. data/lib/microstation/primitive_command_interface.rb +8 -14
  38. data/lib/microstation/properties.rb +29 -17
  39. data/lib/microstation/property_handler.rb +6 -8
  40. data/lib/microstation/scan/color.rb +1 -8
  41. data/lib/microstation/scan/criteria.rb +17 -33
  42. data/lib/microstation/scan/klass.rb +8 -12
  43. data/lib/microstation/scan/level.rb +2 -9
  44. data/lib/microstation/scan/line_style.rb +4 -12
  45. data/lib/microstation/scan/line_weight.rb +1 -3
  46. data/lib/microstation/scan/range.rb +2 -8
  47. data/lib/microstation/scan/scan_trait.rb +48 -51
  48. data/lib/microstation/scan/subtype.rb +0 -10
  49. data/lib/microstation/scan/type.rb +9 -15
  50. data/lib/microstation/scan_trait.rb +13 -20
  51. data/lib/microstation/scanner.rb +1 -11
  52. data/lib/microstation/tag.rb +12 -21
  53. data/lib/microstation/tag_set.rb +52 -71
  54. data/lib/microstation/tag_set_trait.rb +6 -10
  55. data/lib/microstation/tagged_element.rb +16 -28
  56. data/lib/microstation/template.rb +15 -14
  57. data/lib/microstation/template_info.rb +35 -49
  58. data/lib/microstation/template_runner.rb +14 -22
  59. data/lib/microstation/text.rb +15 -19
  60. data/lib/microstation/text_node.rb +17 -26
  61. data/lib/microstation/ts/attribute.rb +16 -20
  62. data/lib/microstation/ts/instance.rb +28 -38
  63. data/lib/microstation/ts/tagset_trait.rb +5 -12
  64. data/lib/microstation/types.rb +0 -3
  65. data/lib/microstation/version.rb +1 -3
  66. data/lib/microstation/wrap.rb +3 -10
  67. data/lib/microstation.rb +53 -68
  68. data/spec/microstation/app_spec.rb +49 -46
  69. data/spec/microstation/configuration_spec.rb +45 -43
  70. data/spec/microstation/drawing_spec.rb +103 -101
  71. data/spec/microstation/functions_spec.rb +18 -12
  72. data/spec/microstation/tag_set_spec.rb +57 -55
  73. data/spec/microstation/template_spec.rb +41 -42
  74. data/spec/microstation/text_node_spec.rb +16 -14
  75. data/spec/microstation/text_spec.rb +10 -8
  76. data/spec/microstation_spec.rb +18 -17
  77. data/spec/spec_helper.rb +18 -18
  78. metadata +26 -12
@@ -1,71 +1,58 @@
1
1
  module Microstation
2
-
3
-
4
-
5
2
  class Point3d
6
-
7
3
  class << self
8
-
9
4
  def ole_point3d?(ole)
10
- ole.class == WIN32OLE_RECORD && ole.typename == 'Point3d'
5
+ ole.instance_of?(WIN32OLE_RECORD) && ole.typename == "Point3d"
11
6
  end
12
7
 
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]
8
+ def cartesian_to_polar(x, y)
9
+ r = Math.sqrt(x * x + y * y)
10
+ angle = Angle.radians(Math.atan2(y, x))
11
+ [r, angle]
17
12
  end
18
13
 
19
- def from_polar_degrees(r,a)
20
-
14
+ def from_polar_degrees(r, a)
21
15
  end
22
16
 
23
17
  def from_ole(ole)
24
18
  new(ole.X, ole.Y, ole.Z)
25
19
  end
26
20
 
27
- def polar_to_cartesian(r,a)
28
-
21
+ def polar_to_cartesian(r, a)
29
22
  end
30
-
31
23
  end
32
24
 
33
25
  attr_reader :x, :y, :z
34
26
 
35
- def initialize(x=0,y=0,z=0)
27
+ def initialize(x = 0, y = 0, z = 0)
36
28
  @x = x
37
29
  @y = y
38
30
  @z = z
39
31
  end
40
32
 
41
-
42
- def +(pt)
43
- case pt
33
+ def +(other)
34
+ case other
44
35
  when Point3d
45
- self.class.new(self.x + pt.x, self.y + pt.y, self.z + pt.z)
36
+ self.class.new(x + other.x, y + other.y, z + other.z)
46
37
  when Array
47
- self.class.new(self.x + pt[0], self.y + pt[1])
38
+ self.class.new(x + other[0], y + other[1])
48
39
  end
49
40
  end
50
41
 
51
- def -(pt)
52
- case pt
42
+ def -(other)
43
+ case other
53
44
  when Point3d
54
- self.class.new(self.x - pt.x, self.y - pt.y, self.z - pt.z)
45
+ self.class.new(x - other.x, y - other.y, z - other.z)
55
46
  when Array
56
- self.class.new(self.x - pt[0], self.y - pt[1])
47
+ self.class.new(x - other[0], y - other[1])
57
48
  end
58
49
  end
59
50
 
60
51
  def zero
61
- new(0.0,0.0,0,0)
52
+ new(0.0, 0.0, 0, 0)
62
53
  end
63
54
 
64
55
  def to_cartesian
65
-
66
56
  end
67
-
68
57
  end
69
-
70
-
71
58
  end
@@ -1,5 +1,4 @@
1
1
  module PrimitiveCommandInterface
2
-
3
2
  def Keyin(keyin)
4
3
  end
5
4
 
@@ -12,17 +11,14 @@ module PrimitiveCommandInterface
12
11
  def Cleanup
13
12
  end
14
13
 
15
- def Dynamics(pt,view,drawmode)
14
+ def Dynamics(pt, view, drawmode)
16
15
  end
17
16
 
18
17
  def Start
19
18
  end
20
-
21
-
22
19
  end
23
20
 
24
- class LineCreation
25
-
21
+ class LineCreation
26
22
  include PrimitiveCommandInterface
27
23
 
28
24
  attr_reader :points
@@ -32,25 +28,24 @@ class LineCreation
32
28
  @points = Array.new(2)
33
29
  end
34
30
 
35
- def DataPoint(pt, view)
31
+ def DataPoint(pt, _view)
36
32
  case points.compact.size
37
33
  when 0
38
34
  app.ole_obj.CommandState.StartDynamics
39
35
  @points[0] = pt
40
36
  app.show_prompt "Place end point"
41
37
  when 1
42
- @points[1] = pt
38
+ @points[1] = pt
43
39
  line_from_pts(@points)
44
40
  @points[0] = @points[1]
45
41
  end
46
42
  end
47
43
 
44
+ def Dynamics(pt, _view, _drawmode)
45
+ return unless @points.compact.size == 1
48
46
 
49
- def Dynamics(pt, view, drawmode)
50
- if @points.compact.size == 1
51
- @points[1] = pt
52
- line = line_from_pts(@points)
53
- end
47
+ @points[1] = pt
48
+ line = line_from_pts(@points)
54
49
  end
55
50
 
56
51
  def Reset
@@ -62,5 +57,4 @@ class LineCreation
62
57
  app.show_command "VBA PlaceLine Example"
63
58
  app.show_prompt "Select start of line"
64
59
  end
65
-
66
60
  end
@@ -1,61 +1,73 @@
1
1
  module Microstation
2
-
3
2
  module Properties
4
-
5
3
  def author=(var = nil)
6
4
  if var
7
5
  @ole_obj.Author = var
8
6
  else
9
- @ole_obj.Author rescue nil
7
+ begin
8
+ @ole_obj.Author
9
+ rescue
10
+ nil
11
+ end
10
12
  end
11
-
12
13
  end
13
14
 
14
- alias_method :author, :author=
15
+ alias_method :author, :author=
15
16
 
16
17
  def subject=(var = nil)
17
18
  if var
18
19
  @ole_obj.Subject = var
19
20
  else
20
- @ole_obj.Subject rescue nil
21
+ begin
22
+ @ole_obj.Subject
23
+ rescue
24
+ nil
25
+ end
21
26
  end
22
-
23
27
  end
24
28
 
25
- alias_method :subject, :subject=
29
+ alias_method :subject, :subject=
26
30
 
27
31
  def comments=(var = nil)
28
32
  if var
29
33
  @ole_obj.Comments = var
30
34
  else
31
- @ole_obj.Comments rescue nil
35
+ begin
36
+ @ole_obj.Comments
37
+ rescue
38
+ nil
39
+ end
32
40
  end
33
41
  end
34
42
 
35
- alias_method :comments, :comments=
43
+ alias_method :comments, :comments=
36
44
 
37
45
  def title=(var = nil)
38
46
  if var
39
47
  @ole_obj.Title = var
40
48
  else
41
- @ole_obj.Title rescue nil
49
+ begin
50
+ @ole_obj.Title
51
+ rescue
52
+ nil
53
+ end
42
54
  end
43
55
  end
44
56
 
45
- alias_method :title,:title=
57
+ alias_method :title, :title=
46
58
 
47
59
  def keywords=(var = nil)
48
60
  if var
49
61
  @ole_obj.Keywords = var
50
62
  else
51
- @ole_obj.Keywords rescue nil
63
+ begin
64
+ @ole_obj.Keywords
65
+ rescue
66
+ nil
67
+ end
52
68
  end
53
69
  end
54
70
 
55
-
56
71
  alias_method :keywords, :keywords=
57
-
58
72
  end
59
-
60
-
61
73
  end
@@ -1,7 +1,5 @@
1
1
  module Microstation
2
-
3
2
  class PropertyHandler
4
-
5
3
  attr_reader :ole_obj
6
4
 
7
5
  def initialize(ole)
@@ -10,29 +8,31 @@ module Microstation
10
8
 
11
9
  def has_property?(value)
12
10
  prop = ole_obj.SelectByAccessString(value)
13
- !!(prop)
11
+ !!prop
14
12
  end
15
13
 
16
14
  def [](property)
17
15
  return unless has_property?(property)
16
+
18
17
  ole_obj.GetValue
19
18
  end
20
19
 
21
20
  def get_property_as_point3d(property)
22
21
  return unless has_property?(property)
22
+
23
23
  ole_pt = ole_obj.GetValueAsPoint3d
24
24
  Point3d.new(ole_pt)
25
25
  end
26
26
 
27
-
28
- def []=(property,value)
27
+ def []=(property, value)
29
28
  return unless has_property?(property)
29
+
30
30
  ole_obj.SetValue(value)
31
31
  end
32
32
 
33
33
  def property_names
34
34
  names = ole_obj.GetAccessStrings
35
- result = []
35
+ result = []
36
36
  names.each do |e|
37
37
  if block_given?
38
38
  yield e
@@ -42,7 +42,5 @@ module Microstation
42
42
  end
43
43
  result unless block_given?
44
44
  end
45
-
46
45
  end
47
-
48
46
  end
@@ -1,9 +1,6 @@
1
1
  module Microstation
2
-
3
2
  module Scan
4
-
5
3
  module Color
6
-
7
4
  def color_inclusions
8
5
  @color_inclusions ||= []
9
6
  end
@@ -23,16 +20,12 @@ module Microstation
23
20
 
24
21
  def resolve_color_scans
25
22
  return unless color_inclusions.size > 0
23
+
26
24
  reset_ole_colors
27
25
  color_inclusions.each do |color|
28
26
  ole_obj.IncludeColor(color)
29
27
  end
30
28
  end
31
-
32
29
  end
33
-
34
30
  end
35
31
  end
36
-
37
-
38
-
@@ -1,30 +1,23 @@
1
- require_relative 'klass'
2
- require_relative 'type'
3
- require_relative 'level'
4
- require_relative 'color'
5
- require_relative 'line_style'
6
- require_relative 'line_weight'
7
- require_relative 'subtype'
8
- require_relative 'range'
1
+ require_relative "klass"
2
+ require_relative "type"
3
+ require_relative "level"
4
+ require_relative "color"
5
+ require_relative "line_style"
6
+ require_relative "line_weight"
7
+ require_relative "subtype"
8
+ require_relative "range"
9
9
 
10
10
  module Microstation
11
-
12
11
  class App
13
-
14
12
  def create_ole_scan_criteria
15
13
  ole_obj.CreateObjectInMicroStation("MicroStationDGN.ElementScanCriteria")
16
14
  end
17
-
18
15
  end
19
-
20
16
  end
21
17
 
22
18
  module Microstation
23
-
24
19
  module Scan
25
-
26
20
  class Criteria
27
-
28
21
  include Scan::Klass
29
22
  include Scan::Type
30
23
  include Scan::Level
@@ -34,25 +27,23 @@ module Microstation
34
27
  include Scan::Subtype
35
28
  include Scan::Range
36
29
 
37
- attr_reader :app
30
+ attr_reader :app, :ole_obj
38
31
 
39
- def self.create_scanner(name=nil, app,&block)
40
- sc = create(name,app)
32
+ def self.create_scanner(name = nil, app, &block)
33
+ sc = create(name, app)
41
34
  return sc unless block
42
- block.arity < 1 ? sc.instance_eval(&block) : block.call(sc)
35
+
36
+ (block.arity < 1) ? sc.instance_eval(&block) : block.call(sc)
43
37
  sc
44
38
  end
45
39
 
46
- def self.create(name=nil,app)
40
+ def self.create(name = nil, app)
47
41
  sc = new(app)
48
- if name.nil?
49
- name = "anon#{app.scanners.size + 1}"
50
- end
42
+ name = "anon#{app.scanners.size + 1}" if name.nil?
51
43
  app.scanners[name] = sc
52
44
  sc
53
45
  end
54
46
 
55
-
56
47
  def initialize(app)
57
48
  @app = app
58
49
  @ole_obj = @app.create_ole_scan_criteria
@@ -74,16 +65,9 @@ module Microstation
74
65
  @ole_obj = nil
75
66
  end
76
67
 
77
- def ole_obj
78
- @ole_obj
79
- end
80
-
81
- def method_missing(method,*args)
82
- @ole_obj.send(method,*args)
68
+ def method_missing(method, *args)
69
+ @ole_obj.send(method, *args)
83
70
  end
84
-
85
-
86
71
  end
87
72
  end
88
-
89
73
  end
@@ -1,15 +1,12 @@
1
1
  module Microstation
2
-
3
2
  module Scan
4
-
5
3
  module Klass
6
-
7
- # msdElementClassPrimary # 0 (&H0)
8
- # msdElementClassPatternComponent #1 (&H1)
9
- # msdElementClassConstruction #2 (&H2)
10
- # msdElementClassDimension #3 (&H3)
11
- # msdElementClassPrimaryRule #4 (&H4)
12
- # msdElementClassLinearPatterned #5 (&H5)
4
+ # msdElementClassPrimary # 0 (&H0)
5
+ # msdElementClassPatternComponent #1 (&H1)
6
+ # msdElementClassConstruction #2 (&H2)
7
+ # msdElementClassDimension #3 (&H3)
8
+ # msdElementClassPrimaryRule #4 (&H4)
9
+ # msdElementClassLinearPatterned #5 (&H5)
13
10
  # msdElementClassContructionRule #6 (&H6)
14
11
 
15
12
  def class_inclusions
@@ -23,7 +20,7 @@ module Microstation
23
20
 
24
21
  def reset_ole_classes
25
22
  ole_obj.ExcludeAllClasses
26
- end
23
+ end
27
24
 
28
25
  def include_class(klass)
29
26
  class_inclusions << klass
@@ -31,13 +28,12 @@ module Microstation
31
28
 
32
29
  def resolve_class_scans
33
30
  return unless class_inclusions.size > 0
31
+
34
32
  reset_ole_classes
35
33
  class_inclusions.each do |klass|
36
34
  ole_obj.IncludeClass(klass)
37
35
  end
38
36
  end
39
-
40
37
  end
41
38
  end
42
-
43
39
  end
@@ -1,9 +1,6 @@
1
1
  module Microstation
2
-
3
2
  module Scan
4
-
5
3
  module Level
6
-
7
4
  def level_inclusions
8
5
  @level_inclusions ||= []
9
6
  end
@@ -11,7 +8,7 @@ module Microstation
11
8
  def include_level(level)
12
9
  level_inclusions << level
13
10
  end
14
-
11
+
15
12
  def reset_levels
16
13
  reset_ole_levels
17
14
  @level_inclusions = []
@@ -23,16 +20,12 @@ module Microstation
23
20
 
24
21
  def resolve_level_scans
25
22
  return unless level_inclusions.size > 0
23
+
26
24
  reset_ole_levels
27
25
  level_inclusions.each do |level|
28
26
  ole_obj.IncludeLevel(level)
29
27
  end
30
28
  end
31
-
32
29
  end
33
-
34
30
  end
35
-
36
31
  end
37
-
38
-
@@ -1,13 +1,11 @@
1
1
  module Microstation
2
-
3
2
  module Scan
4
-
5
3
  module LineStyle
6
-
7
4
  def linestyles
8
- @app.active_design_file.LineStyles rescue []
5
+ @app.active_design_file.LineStyles
6
+ rescue
7
+ []
9
8
  end
10
-
11
9
 
12
10
  def linestyle_inclusions
13
11
  @linestyle_inclusions ||= []
@@ -28,18 +26,12 @@ module Microstation
28
26
 
29
27
  def resolve_linestyle_scans
30
28
  return unless linestyle_inclusions.size > 0
29
+
31
30
  reset_ole_linestyles
32
31
  linestyle_inclusions.each do |linestyle|
33
32
  ole_obj.IncludeLineStyle(linestyle)
34
33
  end
35
34
  end
36
-
37
35
  end
38
-
39
36
  end
40
-
41
37
  end
42
-
43
-
44
-
45
-
@@ -1,9 +1,6 @@
1
1
  module Microstation
2
-
3
2
  module Scan
4
-
5
3
  module LineWeight
6
-
7
4
  def lineweight_inclusions
8
5
  @lineweight_inclusions ||= []
9
6
  end
@@ -23,6 +20,7 @@ module Microstation
23
20
 
24
21
  def resolve_lineweight_scans
25
22
  return unless lineweight_inclusions.size > 0
23
+
26
24
  reset_ole_lineweights
27
25
  lineweight_inclusions.each do |lineweight|
28
26
  ole_obj.IncludeLineWeight(lineweight)
@@ -1,19 +1,13 @@
1
1
  module Microstation
2
-
3
2
  module Scan
4
-
5
3
  module Range
6
-
7
4
  def include_within_range(range)
8
5
  ole_obj.IncludeOnlyWithinRange(range)
9
6
  end
10
7
 
11
- def range_from_points(pt1,pt2)
12
- app.Range3dFromPoint3dPoint3d(pt1,pt2)
8
+ def range_from_points(pt1, pt2)
9
+ app.Range3dFromPoint3dPoint3d(pt1, pt2)
13
10
  end
14
-
15
11
  end
16
12
  end
17
-
18
-
19
13
  end
@@ -1,51 +1,48 @@
1
- module Microstation
2
-
3
-
4
- module ScanTrait
5
-
6
- def create_scanner(&block)
7
- app.create_scanner(&block)
8
- end
9
-
10
- def scan_graphical(&block)
11
- sc = create_scanner
12
- sc.ExcludeNonGraphical
13
- self.scan(sc,&block)
14
- end
15
-
16
- def scan_text(&block)
17
- sc = create_scanner do
18
- include_textual
19
- end
20
- self.scan(sc,&block)
21
- end
22
-
23
- def scan(criteria)
24
- scan_result = ole_run_scan(criteria)
25
- return [] unless scan_result
26
- scan_enum = Microstation::Enumerator.new(scan_result)
27
- result = []
28
- if block_given?
29
- scan_enum.each do |item|
30
- yield item
31
- end
32
- else
33
- scan_enum.each do |item|
34
- result << item
35
- end
36
- end
37
-
38
- return result unless block_given?
39
- end
40
-
41
- private
42
-
43
- def ole_run_scan(criteria)
44
- criteria.resolve
45
- scan_result = self.ole_obj.Scan(criteria.ole_obj) rescue nil
46
- end
47
-
48
-
49
- end
50
-
51
- end
1
+ module Microstation
2
+ module ScanTrait
3
+ def create_scanner(&block)
4
+ app.create_scanner(&block)
5
+ end
6
+
7
+ def scan_graphical(&block)
8
+ sc = create_scanner
9
+ sc.ExcludeNonGraphical
10
+ scan(sc, &block)
11
+ end
12
+
13
+ def scan_text(&block)
14
+ sc = create_scanner do
15
+ include_textual
16
+ end
17
+ scan(sc, &block)
18
+ end
19
+
20
+ def scan(criteria, &block)
21
+ scan_result = ole_run_scan(criteria)
22
+ return [] unless scan_result
23
+
24
+ scan_enum = Microstation::Enumerator.new(scan_result)
25
+ result = []
26
+ if block
27
+ scan_enum.each(&block)
28
+ else
29
+ scan_enum.each do |item|
30
+ result << item
31
+ end
32
+ end
33
+
34
+ return result unless block
35
+ end
36
+
37
+ private
38
+
39
+ def ole_run_scan(criteria)
40
+ criteria.resolve
41
+ scan_result = begin
42
+ ole_obj.Scan(criteria.ole_obj)
43
+ rescue
44
+ nil
45
+ end
46
+ end
47
+ end
48
+ end
@@ -1,9 +1,6 @@
1
1
  module Microstation
2
-
3
2
  module Scan
4
-
5
3
  module Subtype
6
-
7
4
  def subtype_inclusions
8
5
  @subtype_inclusions ||= []
9
6
  end
@@ -28,13 +25,6 @@ module Microstation
28
25
  ole_obj.IncludeSubtype(subtype)
29
26
  end
30
27
  end
31
-
32
28
  end
33
-
34
29
  end
35
-
36
30
  end
37
-
38
-
39
-
40
-