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
@@ -1,112 +1,146 @@
1
- module Microstation
2
- module TS
3
-
4
- class Instance
5
-
6
- include Enumerable
7
-
8
- attr_reader :elements,:tagset
9
-
10
- def initialize(ts, elements)
11
- @tagset = ts
12
- @elements = elements
13
- end
14
-
15
- def to_s
16
- "TS:Instance #{tagset.name}"
17
- end
18
-
19
- def find_attribute(name)
20
- @elements.find{|a| a.name == name.to_s}
21
- end
22
-
23
- def [](name)
24
- find_attribute(name)
25
- end
26
-
27
- def attributes
28
- @elements.map{|e| e.name}
29
- end
30
-
31
- def update_element(name,value)
32
- find_attribute(name)._update(value)
33
- end
34
-
35
- def []=(name,value)
36
- update_element(name,value)
37
- end
38
-
39
- def element_value(name)
40
- find_attribute(name).value
41
- end
42
-
43
- def to_hash
44
- result = {}
45
- @elements.each do |ele|
46
- result[ele.name] = ele.value unless (ele.value == "" || ele.value.nil?)
47
- end
48
- result
49
- end
50
-
51
- def pair(el)
52
- [el.name, el.value]
53
- end
54
-
55
- def select
56
- result = []
57
- each do |el|
58
- k,v = pair(el)
59
- save = yield k,v
60
- result << find_attribute(k) if save
61
- end
62
- self.class.new(tagset,result)
63
- end
64
-
65
- def find(&block)
66
- select(&block).first
67
- end
68
-
69
- def each
70
- @elements.each do |el|
71
- yield el
72
- end
73
- end
74
-
75
- def each_pair
76
- @elements.each do |el|
77
- yield el.name, el.value
78
- end
79
- end
80
-
81
- def map_v
82
- each_pair do |k,v|
83
- new_v = yield v
84
- update_element(k,new_v)
85
- end
86
- end
87
-
88
- def update(value_hash)
89
- value_hash = value_hash.map_kv{|k,v| [k.to_s,v.to_s] }
90
- valid_atts = attributes & value_hash.keys
91
- valid_atts.each do |att|
92
- update_element(att,value_hash[att])
93
- end
94
- end
95
-
96
- def method_missing(meth,*args,&block)
97
- base = meth.to_s.sub("=", "")
98
- if attributes.include?(base)
99
- if meth.match /(=)/
100
- update_element(base,*args)
101
- else
102
- element_value(base.to_s)
103
- end
104
- else
105
- super(meth,*args,&block)
106
- end
107
- end
108
-
109
- end
110
-
111
- end
112
- end
1
+ class Hash
2
+
3
+ def transform(&block)
4
+ reduce({}) do |result, (k,v)|
5
+ new_k,new_v = yield k,v
6
+ result[new_k] = new_v
7
+ result
8
+ end
9
+ end
10
+ end
11
+
12
+ module Microstation
13
+
14
+ module TS
15
+
16
+ class Instance
17
+
18
+ include Enumerable
19
+
20
+ attr_reader :elements,:tagset,:microstation_id, :microstation_model
21
+
22
+ def initialize(ts,id, elements, model)
23
+ @tagset = ts
24
+ @microstation_id = id
25
+ @elements = elements
26
+ @microstation_model = model
27
+ end
28
+
29
+ def name
30
+ tagset.name
31
+ end
32
+
33
+ def to_s
34
+ "TS:Instance #{tagset.name}"
35
+ end
36
+
37
+ def find_attribute(name)
38
+ @elements.find{|a| a.name == name.to_s}
39
+ end
40
+
41
+ def [](name)
42
+ find_attribute(name)
43
+ end
44
+
45
+ def attributes
46
+ @elements.map{|e| e.name}
47
+ end
48
+
49
+ def update_element(name,value)
50
+ find_attribute(name).update(value)
51
+ end
52
+
53
+ def []=(name,value)
54
+ update_element(name,value)
55
+ end
56
+
57
+ def element_value(name)
58
+ find_attribute(name).value
59
+ end
60
+
61
+ def to_hash
62
+ result = {}
63
+ @elements.each do |ele|
64
+ result[ele.name] = ele.value unless (ele.value == "" || ele.value.nil?)
65
+ end
66
+ result
67
+ end
68
+
69
+ def attribute_hash
70
+ result = {"microstation_id" => microstation_id}
71
+ each_pair do |name, value|
72
+ result[name] = value
73
+ end
74
+ result
75
+ end
76
+
77
+ def to_h
78
+ result = {'tagset_name'=> tagset.name, 'microstation_id' => microstation_id,
79
+ 'microstation_model' => microstation_model, }
80
+ result['attributes'] = attribute_hash
81
+ result
82
+ end
83
+
84
+
85
+ def pair(el)
86
+ [el.name, el.value]
87
+ end
88
+
89
+ def select
90
+ result = []
91
+ each do |el|
92
+ k,v = pair(el)
93
+ save = yield k,v
94
+ result << find_attribute(k) if save
95
+ end
96
+ self.class.new(tagset,result)
97
+ end
98
+
99
+ def find(&block)
100
+ select(&block).first
101
+ end
102
+
103
+ def each
104
+ @elements.each do |el|
105
+ yield el
106
+ end
107
+ end
108
+
109
+ def each_pair
110
+ @elements.each do |el|
111
+ yield el.name, el.value
112
+ end
113
+ end
114
+
115
+ def map_v
116
+ each_pair do |k,v|
117
+ new_v = yield v
118
+ update_element(k,new_v)
119
+ end
120
+ end
121
+
122
+ def update(value_hash)
123
+ value_hash = value_hash.transform{|k,v| [k.to_s,v.to_s] }
124
+ valid_atts = attributes & value_hash.keys
125
+ valid_atts.each do |att|
126
+ update_element(att,value_hash[att])
127
+ end
128
+ end
129
+
130
+ def method_missing(meth,*args,&block)
131
+ base = meth.to_s.sub("=", "")
132
+ if attributes.include?(base)
133
+ if meth.match /(=)/
134
+ update_element(base,*args)
135
+ else
136
+ element_value(base.to_s)
137
+ end
138
+ else
139
+ super(meth,*args,&block)
140
+ end
141
+ end
142
+
143
+ end
144
+
145
+ end
146
+ end
@@ -0,0 +1,49 @@
1
+ module Microstation
2
+
3
+ module TS
4
+
5
+
6
+ module TagSetTrait
7
+
8
+ def tagsets
9
+ @tagsets = TagSets.new(ole_obj_tagsets)
10
+ end
11
+
12
+ def tagset_names
13
+ tagsets.map{|ts| ts.name}
14
+ end
15
+
16
+ def create_tagset(name,&block)
17
+ ts = tagsets.create(name)
18
+ block.call ts if block
19
+ ts
20
+ end
21
+
22
+ def create_tagset!(name,&block)
23
+ remove_tagset(name)
24
+ create_tagset(name,&block)
25
+ end
26
+
27
+ def remove_tagset(name)
28
+ tagsets.remove(name)
29
+ end
30
+
31
+ def find_tagset(name)
32
+ tagsets[name]
33
+ end
34
+
35
+ protected
36
+
37
+ def ole_obj_tagsets
38
+ @ole_obj.TagSets
39
+ end
40
+
41
+ def ensure_tags(tags)
42
+ tags.map{|t| t.class == WIN32OLE ? app.wrap(t) : t }
43
+ end
44
+
45
+ end
46
+
47
+ end
48
+
49
+ end
@@ -1,91 +1,91 @@
1
- module Microstation
2
-
3
- module Types
4
-
5
- Line = 3
6
- Shape = 6
7
- Text = 17
8
- TextNode = 7
9
- Curve = 11
10
-
11
- end
12
-
13
- Ole_Types = {
14
- CellLibraryHeader: 1,
15
- CellHeader: 2,
16
- Line: 3,
17
- LineString: 4,
18
- GroupData: 5,
19
- Shape: 6,
20
- TextNode: 7,
21
- DigSetData: 8
22
- DesignFileHeader: 9,
23
- LevelSymbology: 10,
24
- Curve: 11,
25
- ComplexString: 12,
26
- Conic: 13,
27
- ComplexShape: 14,
28
- Ellipse: 15,
29
- Arc: 16,
30
- Text: 17,
31
- }
32
-
33
-
34
-
35
-
36
- end
37
-
38
- msdElementTypeCellLibraryHeader 1 (&H1)
39
- msdElementTypeCellHeader 2 (&H2)
40
- msdElementTypeLine 3 (&H3)
41
- msdElementTypeLineString 4 (&H4)
42
- msdElementTypeGroupData 5 (&H5)
43
- msdElementTypeShape 6 (&H6)
44
- msdElementTypeTextNode 7 (&H7)
45
- msdElementTypeDigSetData 8 (&H8)
46
- msdElementTypeDesignFileHeader 9 (&H9)
47
- msdElementTypeLevelSymbology 10 (&HA)
48
- msdElementTypeCurve 11 (&HB)
49
- msdElementTypeComplexString 12 (&HC)
50
- msdElementTypeConic 13 (&HD)
51
- msdElementTypeComplexShape 14 (&HE)
52
- msdElementTypeEllipse 15 (&HF)
53
- msdElementTypeArc 16 (&H10)
54
- msdElementTypeText 17 (&H11)
55
- msdElementTypeSurface 18 (&H12)
56
- msdElementTypeSolid 19 (&H13)
57
- msdElementTypeBsplinePole 21 (&H15)
58
- msdElementTypePointString 22 (&H16)
59
- msdElementTypeCone 23 (&H17)
60
- msdElementTypeBsplineSurface 24 (&H18)
61
- msdElementTypeBsplineBoundary 25 (&H19)
62
- msdElementTypeBsplineKnot 26 (&H1A)
63
- msdElementTypeBsplineCurve 27 (&H1B)
64
- msdElementTypeBsplineWeight 28 (&H1C)
65
- msdElementTypeDimension 33 (&H21)
66
- msdElementTypeSharedCellDefinition 34 (&H22)
67
- msdElementTypeSharedCell 35 (&H23)
68
- msdElementTypeMultiLine 36 (&H24)
69
- msdElementTypeTag 37 (&H25)
70
- msdElementTypeDgnStoreComponent 38 (&H26)
71
- msdElementTypeDgnStoreHeader 39 (&H27)
72
- msdElementType44 44 (&H2C)
73
- msdElementTypeMicroStation 66 (&H42) See ApplicationElement
74
- msdElementTypeRasterHeader 87 (&H57)
75
- msdElementTypeRasterComponent 88 (&H58)
76
- msdElementTypeRasterReference 90 (&H5A)
77
- msdElementTypeRasterReferenceComponent 91 (&H5B)
78
- msdElementTypeRasterFrame 94 (&H5E)
79
- msdElementTypeTableEntry 95 (&H5F)
80
- msdElementTypeTable 96 (&H60)
81
- msdElementTypeViewGroup 97 (&H61)
82
- msdElementTypeView 98 (&H62)
83
- msdElementTypeLevelMask 99 (&H63)
84
- msdElementTypeReferenceAttachment 100 (&H64)
85
- msdElementTypeMatrixHeader 101 (&H65)
86
- msdElementTypeMatrixIntegerData 102 (&H66)
87
- msdElementTypeMatrixDoubleData 103 (&H67)
88
- msdElementTypeMeshHeader 105 (&H69)
89
- msdElementTypeReferenceOverride 108 (&H6C)
90
- msdElementTypeNamedGroupHeader 110 (&H6E)
91
- msdElementTypeNamedGroupComponent 111 (&H6F)
1
+ module Microstation
2
+
3
+ module Types
4
+
5
+ Line = 3
6
+ Shape = 6
7
+ Text = 17
8
+ TextNode = 7
9
+ Curve = 11
10
+
11
+ end
12
+
13
+ Ole_Types = {
14
+ CellLibraryHeader: 1,
15
+ CellHeader: 2,
16
+ Line: 3,
17
+ LineString: 4,
18
+ GroupData: 5,
19
+ Shape: 6,
20
+ TextNode: 7,
21
+ DigSetData: 8
22
+ DesignFileHeader: 9,
23
+ LevelSymbology: 10,
24
+ Curve: 11,
25
+ ComplexString: 12,
26
+ Conic: 13,
27
+ ComplexShape: 14,
28
+ Ellipse: 15,
29
+ Arc: 16,
30
+ Text: 17,
31
+ }
32
+
33
+
34
+
35
+
36
+ end
37
+
38
+ msdElementTypeCellLibraryHeader 1 (&H1)
39
+ msdElementTypeCellHeader 2 (&H2)
40
+ msdElementTypeLine 3 (&H3)
41
+ msdElementTypeLineString 4 (&H4)
42
+ msdElementTypeGroupData 5 (&H5)
43
+ msdElementTypeShape 6 (&H6)
44
+ msdElementTypeTextNode 7 (&H7)
45
+ msdElementTypeDigSetData 8 (&H8)
46
+ msdElementTypeDesignFileHeader 9 (&H9)
47
+ msdElementTypeLevelSymbology 10 (&HA)
48
+ msdElementTypeCurve 11 (&HB)
49
+ msdElementTypeComplexString 12 (&HC)
50
+ msdElementTypeConic 13 (&HD)
51
+ msdElementTypeComplexShape 14 (&HE)
52
+ msdElementTypeEllipse 15 (&HF)
53
+ msdElementTypeArc 16 (&H10)
54
+ msdElementTypeText 17 (&H11)
55
+ msdElementTypeSurface 18 (&H12)
56
+ msdElementTypeSolid 19 (&H13)
57
+ msdElementTypeBsplinePole 21 (&H15)
58
+ msdElementTypePointString 22 (&H16)
59
+ msdElementTypeCone 23 (&H17)
60
+ msdElementTypeBsplineSurface 24 (&H18)
61
+ msdElementTypeBsplineBoundary 25 (&H19)
62
+ msdElementTypeBsplineKnot 26 (&H1A)
63
+ msdElementTypeBsplineCurve 27 (&H1B)
64
+ msdElementTypeBsplineWeight 28 (&H1C)
65
+ msdElementTypeDimension 33 (&H21)
66
+ msdElementTypeSharedCellDefinition 34 (&H22)
67
+ msdElementTypeSharedCell 35 (&H23)
68
+ msdElementTypeMultiLine 36 (&H24)
69
+ msdElementTypeTag 37 (&H25)
70
+ msdElementTypeDgnStoreComponent 38 (&H26)
71
+ msdElementTypeDgnStoreHeader 39 (&H27)
72
+ msdElementType44 44 (&H2C)
73
+ msdElementTypeMicroStation 66 (&H42) See ApplicationElement
74
+ msdElementTypeRasterHeader 87 (&H57)
75
+ msdElementTypeRasterComponent 88 (&H58)
76
+ msdElementTypeRasterReference 90 (&H5A)
77
+ msdElementTypeRasterReferenceComponent 91 (&H5B)
78
+ msdElementTypeRasterFrame 94 (&H5E)
79
+ msdElementTypeTableEntry 95 (&H5F)
80
+ msdElementTypeTable 96 (&H60)
81
+ msdElementTypeViewGroup 97 (&H61)
82
+ msdElementTypeView 98 (&H62)
83
+ msdElementTypeLevelMask 99 (&H63)
84
+ msdElementTypeReferenceAttachment 100 (&H64)
85
+ msdElementTypeMatrixHeader 101 (&H65)
86
+ msdElementTypeMatrixIntegerData 102 (&H66)
87
+ msdElementTypeMatrixDoubleData 103 (&H67)
88
+ msdElementTypeMeshHeader 105 (&H69)
89
+ msdElementTypeReferenceOverride 108 (&H6C)
90
+ msdElementTypeNamedGroupHeader 110 (&H6E)
91
+ msdElementTypeNamedGroupComponent 111 (&H6F)