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,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)
@@ -0,0 +1,5 @@
1
+ module Microstation
2
+
3
+ VERSION = '0.8.6'
4
+
5
+ end