今天是個好日子,心情比較沉悶,對自己將來的何去何從又迷茫了。
今天來把上一個月所弄的東西來和大家分享一下。希望大家都來指出不好的地方。
前段時間做了一個讀取產品BOM信息的程序。剛開始覺得挺困難,后來慢慢的研究,最終還是解決了。不多說了,看看代碼就知道了。寫的有點亂(最鬧心的地方)
001 |
''' <summary> |
002 |
''' 獲取BOM視圖 |
003 |
''' </summary> |
004 |
''' <param name="path1">文件路徑</param> |
005 |
''' <param name="dt"></param> |
006 |
''' <remarks></remarks> |
007 |
Public Sub GetBom( ByVal path1 As String , ByVal dt As DataTable) |
008 |
009 |
dt.Columns.Add( "母件圖號" ) |
010 |
011 |
dt.Columns.Add( "級別" ) |
012 |
013 |
Dim edmBOMView As IEdmBomView '聲明IedmBomView對象,用來獲取BOM視圖 |
014 |
015 |
Dim edmBomManager As IEdmBomMgr '定義IEdmBomMgr對象,用來操作BOM |
016 |
017 |
file8 = vault.GetFileFromPath(path1) '根據文件路徑來獲取文件 |
018 |
019 |
Dim edmBomArray() As EdmBomLayout '定義BOM的樣式 |
020 |
021 |
edmBomManager = vault.CreateUtility(EdmUtility.EdmUtil_BomMgr) '創建IEdmBomMgr實例 |
022 |
023 |
edmBomManager.GetBomLayouts(edmBomArray) '獲取BOM的樣式 |
024 |
025 |
For i As Integer = 0 To UBound(edmBomArray) '根據BOM的樣式來獲取BOM視圖 |
026 |
027 |
edmBOMView = file8.GetComputedBOM(edmBomArray(i).mlLayoutID, _ |
028 |
file8.CurrentVersion, "default" , -1) |
029 |
030 |
Next |
031 |
032 |
Dim bomRows As Array = Array.CreateInstance( GetType (EdmBomCell), 1) '定義承裝BOM行的數組 |
033 |
034 |
edmBOMView.GetRows(bomRows) '從視圖中獲取BOM的所有行 |
035 |
Dim bomClunms As Array = Array.CreateInstance( GetType (EdmBomColumn), 1) '定義承裝BOM列的數組 |
036 |
037 |
edmBOMView.GetColumns(bomClunms) '獲取BOM的所有列 |
038 |
039 |
Dim column As EdmBomColumn '定義BOM列類型的變量 |
040 |
041 |
For k As Integer = 0 To bomClunms.Length - 1 '循環列數組來獲取列名,添加到DataTable中 |
042 |
043 |
column = bomClunms.GetValue(k) |
044 |
045 |
dt.Columns.Add(column.mbsCaption, GetType ( String )) |
046 |
047 |
Next |
048 |
049 |
Dim j As Integer = bomRows.GetLength(bomRows.Rank - 1) '獲取BOM行數 |
050 |
051 |
Dim cell As IEdmBomCell '定義行變量 |
052 |
053 |
Dim hjPath As String |
054 |
055 |
Dim level, fisLevel As Integer |
056 |
057 |
Dim r As Integer = 1 |
058 |
059 |
For Each cell In bomRows '循環行,并把行數據添加到DataTable中 |
060 |
Dim dr As DataRow = dt.NewRow() |
061 |
062 |
Dim pa As String = cell.GetPathName() |
063 |
064 |
dt.AcceptChanges() |
065 |
#p#分頁標題#e#
066 |
For j = 0 To bomClunms.Length - 1 |
067 |
068 |
Dim column1 As EdmBomColumn = bomClunms.GetValue(j) |
069 |
070 |
Dim b As Integer = cell.GetTreeLevel() |
071 |
072 |
level = cell.GetTreeLevel + 1 |
073 |
074 |
Dim value As New Object |
075 |
076 |
hjPath = cell.GetPathName() |
077 |
078 |
Dim poComputedValue As New Object |
079 |
080 |
Dim config As String |
081 |
082 |
cell.GetVar(column1.mlVariableID, column1.meType, value, poComputedValue, config, True ) |
083 |
084 |
dr( "級別" ) = b + 1 |
085 |
086 |
dr(j + 2) = value.ToString() |
087 |
088 |
Next |
089 |
090 |
dt.Rows.Add(dr) |
091 |
092 |
If dr( "是否自制焊件" ) = "焊件" Then |
093 |
094 |
GetRef(hjPath, level, dr( "圖號" ), dr( "零件類型" )) |
095 |
096 |
End If |
097 |
098 |
r += 1 |
099 |
Next |
100 |
AdjustTable(dt) '對DataTable進行處理 填充DataTable中的母件圖號列 |
101 |
102 |
103 |
End Sub |
104 |
''' <summary> |
105 |
''' 輸出格式 |
106 |
''' </summary> |
107 |
''' <param name="dt"></param> |
108 |
''' <remarks></remarks> |
109 |
Private Sub AdjustTable( ByVal dt As DataTable) |
110 |
111 |
For i As Integer = 0 To dt.Rows.Count - 1 |
112 |
113 |
Try |
114 |
If i = 0 Then |
115 |
116 |
Continue For |
117 |
118 |
End If |
119 |
120 |
If dt.Rows(i)( "級別" ) - dt.Rows(i - 1)( "級別" ) = 0 Then |
121 |
122 |
dt.Rows(i)( "母件圖號" ) = dt.Rows(i - 1)( "母件圖號" ) |
123 |
124 |
ElseIf dt.Rows(i)( "級別" ) - dt.Rows(i - 1)( "級別" ) > 0 Then |
125 |
126 |
dt.Rows(i)( "母件圖號" ) = dt.Rows(i - 1)( "圖號" ).ToString |
127 |
128 |
Else |
129 |
130 |
dt.Rows(i)( "母件圖號" ) = GetPre(i, dt) |
131 |
132 |
End If |
133 |
134 |
Catch ex As Exception |
135 |
'MsgBox(ex.Message.ToString) |
136 |
End Try |
137 |
138 |
Next |
139 |
End Sub |
140 |
''' <summary> |
141 |
''' 調整輸出格式 |
142 |
''' </summary> |
143 |
''' <param name="i"></param> |
144 |
''' <param name="dt"></param> |
145 |
''' <returns></returns> |
146 |
''' <remarks></remarks> |
147 |
Private Function GetPre( ByVal i As Integer , ByVal dt As DataTable) As String |
148 |
149 |
Dim strSre As String = dt(0)( "圖號" ).ToString |
150 |
151 |
For j As Integer = i - 1 To 0 Step -1 |
152 |
153 |
Try |
154 |
If dt.Rows(j)( "級別" ) = dt.Rows(i)( "級別" ) Then |
155 |
156 |
strSre = dt.Rows(j)( "母件圖號" ).ToString |
157 |
158 |
Exit For |
159 |
160 |
ElseIf dt.Rows(j)( "級別" ) < dt.Rows(i)( "級別" ) Then |
161 |
162 |
strSre = dt.Rows(j)( "圖號" ).ToString |
163 |
164 |
Exit For |
165 |
166 |
End If |
167 |
Catch ex As Exception |
168 |
'MsgBox(ex.Message.ToString) |
169 |
End Try |
170 |
|
171 |
172 |
Next |
173 |
174 |
Return strSre |
175 |
176 |
End Function |
相關文章
- 2021-08-01Visual Basic與AutoCAD二次開發PDF下載
- 2021-08-01Mastering AutoCAD Civil 3D 2010PDF下載
- 2021-01-01AutoCAD 2007中文版自學手冊—入門提高篇 光盤文件下
- 2020-12-28AutoCAD2007簡體中文版32位帶破解文件免費下載
- 2016-02-22VisualBasic與AutoCAD二次開發教程下載
- 2015-02-26銘筑舍計-王大姐住宅平面立面大樣施工圖及效果圖
- 2014-02-25CAD的PLT文件查看工具免費下載
- 2014-01-09遼河左岸精裝修樣板房施工圖-H7中式風格施工圖
- 2013-08-20化工研究院信息管理大樓施工圖免費下載
- 2013-03-04ABB公司M2QA電機CAD圖庫dxf格式文件