Initial Commit of the PDM project (ready for DWS migration)
This commit is contained in:
@@ -0,0 +1,471 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Access Bill of Materials Example (VB.NET)</title>
|
||||
<meta http-equiv="Content-Language" content="en-us">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||||
<link rel="stylesheet" type="text/css" href="ApiHelp.css">
|
||||
<style type="text/css">
|
||||
.auto-style1 {
|
||||
color: maroon;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<meta name=MS-HKWD content="VB.NET examples, bill of materials">
|
||||
<meta name=MS-HKWD content="VB.NET examples, BOM">
|
||||
<meta name=MS-HKWD content="VB.NET examples, files">
|
||||
<body>
|
||||
<h1><font size="1"><span style="font-weight: 400">SOLIDWORKS PDM Professional API Help</span></h1>
|
||||
<h1>Access Bill of Materials Example (VB.NET)</h1>
|
||||
<p><a name="top"></a>This example shows how to access the Bill of
|
||||
Materials (BOM) of a file in the vault.</p>
|
||||
<p><b>NOTE</b>: If using the primary interop assembly
|
||||
provided with SOLIDWORKS PDM Professional, see
|
||||
<a href="Using_NET_Framework_in_Applications.htm">Using .NET Framework 4.0 in
|
||||
Stand-alone Applications</a>.</p>
|
||||
<p>
|
||||
<img border="0" src="AccessBOM.gif" width="300" height="343"></p>
|
||||
|
||||
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
||||
<span style="color:green;">
|
||||
'----------------------------------------------------------------------------</span><br>
|
||||
<span style="color:green;">' Preconditions:</span><br>
|
||||
<span style="color:green;">' 1. Start Microsoft Visual Studio.</span><br>
|
||||
<span style="color:green;">' a. Click <b>File > New > Project > Visual Basic > Windows Forms Application</b>.</span><br>
|
||||
<span style="color:green;">' b. Type <b>EdmBOM</b> in <b>Name</b>.</span><br>
|
||||
<span style="color:green;">' c. Click <b>Browse</b> and navigate to the folder where to create the project.</span><br>
|
||||
<span style="color:green;">' d. Click <b>OK</b>. </span><br>
|
||||
<span style="color:green;">' e. Click <b>Show All Files</b> in the Solution Explorer toolbar and expand </span><br>
|
||||
<span style="color:green;">' <b>Form1.vb</b> in the Solution Explorer.</span><br>
|
||||
<span style="color:green;">' f. Replace the code in <b>Form1.vb</b> with <a href="#form1">this code</a>.</span><br>
|
||||
<span style="color:green;">' g. To create the
|
||||
form, replace the code in <b>Form1.Designer.vb</b> with <br>
|
||||
' <a href="#form1designer">this code</a>.</span><br>
|
||||
<span style="color:green;">' 2. Add <b>EPDM.Interop.epdm.dll</b> as a reference (right-click the project</span><br>
|
||||
<span style="color:green;">' name in the Solution Explorer, click <b>Add Reference</b>, click </span><br>
|
||||
<span style="color:green;">' <b>Assemblies > Framework</b> in the left-side panel, browse to the top folder </span><br>
|
||||
<span style="color:green;">' of your SOLIDWORKS PDM Professional installation, locate and click </span><br>
|
||||
<span style="color:green;">' <b>EPDM.Interop.epdm.dll</b>, click <b>Open</b>, click <b>Add</b>, and click <b>Close</b>).</span><br>
|
||||
<span style="color:green;">' 3. Right-click <b>EPDM.Interop.epdm</b> in References, click <b>Properties</b>, and set </span><br>
|
||||
<span style="color:green;">' <b>Embed Interop Types</b> to <b>False</b> to handle methods that pass arrays of </span><br>
|
||||
<span style="color:green;">' structures.<br>
|
||||
</span><font color="#008000">' 4. Ensure that the vault contains the BOM layout.<br>
|
||||
'</font><font color="#008000" size="2"> To inspect the
|
||||
existing layouts:<br>
|
||||
' a. Open the SOLIDWORKS PDM Professional
|
||||
Administration tool.<br>
|
||||
' b. Log into <i>vault_name</i>.<br>
|
||||
' c. Expand <i>vault_name</i><b>
|
||||
> Bills of Materials.<br>
|
||||
</b>' d. Verify that layout, BOM, exists.<br>
|
||||
' 5. Ensure that an assembly and its parts exist in the root folder of <br>
|
||||
' the vault in default configuration, @.<br>
|
||||
' 6. Ensure that one or more named Bills of Materials exist for the assembly. <br>
|
||||
' a. Open File Explorer on a <i>vault_name</i> view.<br>
|
||||
' b. Click the assembly.<br>
|
||||
' c. Click the <b>Bill of Materials</b>
|
||||
tab.<br>
|
||||
' d. Click <b>BOM</b>.<br>
|
||||
' e. If a named Bill of Materials does not exist in the BOM
|
||||
list:<br>
|
||||
' 1. Click <b>Save > Save As</b> in
|
||||
the tab toolbar. <br>
|
||||
' 2. In the Save As dialog, click <b>
|
||||
Save</b>. </font><font color="#008000"><br>
|
||||
' 7. Click <b>Debug > Start Debugging</b> or press F5.<br>
|
||||
'<br>
|
||||
' Postconditions: <br>
|
||||
' 1. Opens the Bill of Materials dialog box.<br>
|
||||
' a. Select a <i>vault_name</i> view.<br>
|
||||
' b. Click <b>Select file</b>.<br>
|
||||
' c. In the Select File dialog:<br>
|
||||
' 1. Click the assembly specified in
|
||||
Preconditions step 5.<br>
|
||||
' 2. Click <b>Open</b>.<br>
|
||||
' d. Click <b>Get BOM Info</b>.<br>
|
||||
' Displays message boxes containing:<br>
|
||||
' * Information about all named BOMs of the
|
||||
assembly.<br>
|
||||
' * Version information for the named BOMs.<br>
|
||||
' * Information about all BOM layouts in the
|
||||
vault.<br>
|
||||
' * Row and column information about a BOM
|
||||
view in the BOM layout <br>
|
||||
' for the selected assembly in
|
||||
its @ configuration.<br>
|
||||
' e. Click <b>OK</b> in each message box.<br>
|
||||
' f. Click <b>Save BOM to CSV</b>.<br>
|
||||
' Saves the BOM to <b>c:\temp\SavedBOM.csv</b>.<br>
|
||||
' 2. Close the Bill of Materials dialog box.<br>
|
||||
' 3. Verify that <b>c:\temp\SavedBOM.csv</b> is created.</font><br>
|
||||
<span style="color:green;">
|
||||
'----------------------------------------------------------------------------</span><br>
|
||||
<font color="#008000"><a name="form1"></a>'Form1.vb</font></p>
|
||||
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
||||
<span style="color:blue;">Imports</span> System.IO<br>
|
||||
<span style="color:blue;">Imports</span> System.Xml.Serialization<br>
|
||||
<span style="color:blue;">Imports</span> System.Collections<br>
|
||||
<span style="color:blue;">Imports</span> System.Collections.Generic<br>
|
||||
<span style="color:blue;">Imports</span> System.Data<br>
|
||||
<span style="color:blue;">Imports</span> System.Diagnostics<br>
|
||||
<span style="color:blue;">Imports</span> System.Windows.Forms<br>
|
||||
<span style="color:blue;">Imports</span> System.ComponentModel<br>
|
||||
<span style="color:blue;">Imports</span> EPDM.Interop.epdm<br>
|
||||
<br>
|
||||
<span style="color:blue;">Public</span> <span style="color:blue;">Class</span> <span style="color:#2b91af;">Form1</span><br>
|
||||
<br>
|
||||
<span style="color:blue;">Private</span> vault1 <span style="color:blue;">As</span> <span style="color:#2b91af;">IEdmVault5</span> = <span style="color:blue;">Nothing</span><br>
|
||||
<span style="color:blue;">Dim</span> aFile <span style="color:blue;">As</span> <span style="color:#2b91af;">IEdmFile7</span><br>
|
||||
<span style="color:blue;">Dim</span> bom <span style="color:blue;">As</span> <span style="color:#2b91af;">IEdmBom</span><br>
|
||||
<span style="color:blue;">Dim</span> bomMgr <span style="color:blue;">As</span> <span style="color:#2b91af;">IEdmBomMgr2</span><br>
|
||||
<span style="color:blue;">Dim</span> bomView <span style="color:blue;">As</span> <span style="color:#2b91af;">IEdmBomView3</span><br>
|
||||
<br>
|
||||
<span style="color:blue;">Public</span> <span style="color:blue;">Sub</span> Form1_Load(<span style="color:blue;">ByVal</span> sender <span style="color:blue;">As</span> System.<span style="color:#2b91af;">Object</span>, <span style="color:blue;">ByVal</span> e <span style="color:blue;">As</span> System.<span style="color:#2b91af;">EventArgs</span>) <span style="color:blue;">Handles</span> <span style="color:blue;">MyBase</span>.Load<br>
|
||||
<br>
|
||||
<span style="color:blue;">Try</span><br>
|
||||
<span style="color:blue;">Dim</span> vault1 <span style="color:blue;">As</span> <span style="color:#2b91af;">IEdmVault5</span> = <span style="color:blue;">New</span> <span style="color:#2b91af;">EdmVault5</span>()<br>
|
||||
<span style="color:blue;">Dim</span> vault <span style="color:blue;">As</span> <span style="color:#2b91af;">IEdmVault8</span> = <span style="color:blue;">DirectCast</span>(vault1, <span style="color:#2b91af;">IEdmVault8</span>)<br>
|
||||
<span style="color:blue;">Dim</span> Views <span style="color:blue;">As</span> <span style="color:#2b91af;">EdmViewInfo</span>() = <span style="color:blue;">Nothing</span><br>
|
||||
<br>
|
||||
vault.<b>GetVaultViews</b>(Views, <span style="color:blue;">False</span>)<br>
|
||||
VaultsComboBox.Items.Clear()<br>
|
||||
<span style="color:blue;">For</span> <span style="color:blue;">Each</span> View <span style="color:blue;">As</span> <span style="color:#2b91af;">EdmViewInfo</span> <span style="color:blue;">In</span> Views<br>
|
||||
VaultsComboBox.Items.Add(View.<b>mbsVaultName</b>)<br>
|
||||
<span style="color:blue;">Next</span><br>
|
||||
<span style="color:blue;">If</span> VaultsComboBox.Items.Count > 0 <span style="color:blue;">Then</span><br>
|
||||
VaultsComboBox.Text = <span style="color:blue;">DirectCast</span>(VaultsComboBox.Items(0), <span style="color:blue;">String</span>)<br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">If</span><br>
|
||||
<span style="color:blue;">Catch</span> ex <span style="color:blue;">As</span> System.Runtime.InteropServices.<span style="color:#2b91af;">COMException</span><br>
|
||||
<span style="color:#2b91af;">MessageBox</span>.Show(<span style="color:#a31515;">"HRESULT = 0x"</span> + ex.ErrorCode.ToString(<span style="color:#a31515;">"X"</span>) + <span style="color:#a31515;">" "</span> + ex.Message)<br>
|
||||
<span style="color:blue;">Catch</span> ex <span style="color:blue;">As</span> <span style="color:#2b91af;">Exception</span><br>
|
||||
<span style="color:#2b91af;">MessageBox</span>.Show(ex.Message)<br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">Try</span><br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">Sub</span><br>
|
||||
<br>
|
||||
<span style="color:blue;">Public</span> <span style="color:blue;">Sub</span> SelectFiles_Click(<span style="color:blue;">ByVal</span> sender <span style="color:blue;">As</span> System.<span style="color:#2b91af;">Object</span>, <span style="color:blue;">ByVal</span> e <span style="color:blue;">As</span> System.<span style="color:#2b91af;">EventArgs</span>) <span style="color:blue;">Handles</span> SelectFiles.Click<br>
|
||||
<span style="color:blue;">Try</span><br>
|
||||
File1List.Items.Clear()<br>
|
||||
<br>
|
||||
<span style="color:blue;">Dim</span> vault2 <span style="color:blue;">As</span> <span style="color:#2b91af;">IEdmVault7</span> = <span style="color:blue;">Nothing</span><br>
|
||||
<span style="color:blue;">If</span> vault1 <span style="color:blue;">Is</span> <span style="color:blue;">Nothing</span> <span style="color:blue;">Then</span><br>
|
||||
vault1 = <span style="color:blue;">New</span> <span style="color:#2b91af;">EdmVault5</span>()<br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">If</span><br>
|
||||
vault2 = <span style="color:blue;">DirectCast</span>(vault1, <span style="color:#2b91af;">IEdmVault7</span>)<br>
|
||||
<br>
|
||||
<span style="color:blue;">If</span> <span style="color:blue;">Not</span> vault1.<b>IsLoggedIn</b> <span style="color:blue;">Then</span><br>
|
||||
vault1.<b>LoginAuto</b>(VaultsComboBox.Text, <span style="color:blue;">Me</span>.Handle.ToInt32())<br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">If</span><br>
|
||||
<br>
|
||||
<span style="color:green;">'Set the initial directory in the Select File dialog</span><br>
|
||||
OpenFileDialog1.InitialDirectory = vault1.<b>RootFolderPath<br>
|
||||
</b><br>
|
||||
<span style="color:green;">'Show the Select File dialog</span><br>
|
||||
<span style="color:blue;">Dim</span> DialogResult <span style="color:blue;">As</span> System.Windows.Forms.<span style="color:#2b91af;">DialogResult</span> = <span style="color:blue;">Nothing</span><br>
|
||||
DialogResult = OpenFileDialog1.ShowDialog()<br>
|
||||
<br>
|
||||
<span style="color:blue;">If</span> <span style="color:blue;">Not</span> (DialogResult = System.Windows.Forms.<span style="color:#2b91af;">DialogResult</span>.OK) <span style="color:blue;">Then</span><br>
|
||||
<span style="color:green;">' do nothing</span><br>
|
||||
<span style="color:blue;">Else</span><br>
|
||||
<span style="color:blue;">For</span> <span style="color:blue;">Each</span> FileName <span style="color:blue;">As</span> <span style="color:blue;">String</span> <span style="color:blue;">In</span> OpenFileDialog1.FileNames<br>
|
||||
File1List.Items.Add(FileName)<br>
|
||||
aFile = vault1.<b>GetFileFromPath</b>(FileName)<br>
|
||||
<span style="color:blue;">Next</span><br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">If<br>
|
||||
</span></p>
|
||||
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE"> GetBOM.Enabled = <span style="color:blue;">True</span><br>
|
||||
SaveBOM.Enabled = <span style="color:blue;">False</span></p>
|
||||
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
||||
<br>
|
||||
<br>
|
||||
<span style="color:blue;">Catch</span> ex <span style="color:blue;">As</span> System.Runtime.InteropServices.<span style="color:#2b91af;">COMException</span><br>
|
||||
<span style="color:#2b91af;">MessageBox</span>.Show(<span style="color:#a31515;">"HRESULT = 0x"</span> + ex.ErrorCode.ToString(<span style="color:#a31515;">"X"</span>) + <span style="color:#a31515;">" "</span> + ex.Message)<br>
|
||||
<span style="color:blue;">Catch</span> ex <span style="color:blue;">As</span> <span style="color:#2b91af;">Exception</span><br>
|
||||
<span style="color:#2b91af;">MessageBox</span>.Show(ex.Message)<br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">Try</span><br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">Sub</span><br>
|
||||
<br>
|
||||
<span style="color:blue;">Public</span> <span style="color:blue;">Sub</span> GetBOM_Click(<span style="color:blue;">ByVal</span> sender <span style="color:blue;">As</span> System.<span style="color:#2b91af;">Object</span>, <span style="color:blue;">ByVal</span> e <span style="color:blue;">As</span> System.<span style="color:#2b91af;">EventArgs</span>) <span style="color:blue;">Handles</span> GetBOM.Click<br>
|
||||
<span style="color:blue;">Try</span><br>
|
||||
<br>
|
||||
<span style="color:blue;">Dim</span> vault2 <span style="color:blue;">As</span> <span style="color:#2b91af;">IEdmVault7</span> = <span style="color:blue;">Nothing</span><br>
|
||||
<span style="color:blue;">If</span> vault1 <span style="color:blue;">Is</span> <span style="color:blue;">Nothing</span> <span style="color:blue;">Then</span><br>
|
||||
vault1 = <span style="color:blue;">New</span> <span style="color:#2b91af;">EdmVault5</span>()<br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">If</span><br>
|
||||
vault2 = <span style="color:blue;">DirectCast</span>(vault1, <span style="color:#2b91af;">IEdmVault11</span>)<br>
|
||||
<span style="color:blue;">If</span> <span style="color:blue;">Not</span> vault1.<b>IsLoggedIn</b> <span style="color:blue;">Then</span><br>
|
||||
vault1.<b>LoginAuto</b>(VaultsComboBox.Text, <span style="color:blue;">Me</span>.Handle.ToInt32())<br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">If</span><br>
|
||||
<br>
|
||||
|
||||
<font color="#0000FF">If Not</font><font color="#000080"> </font>IsNothing(aFile)
|
||||
<span style="color:blue;">Then<br>
|
||||
</span><br>
|
||||
<span style="color:green;"> ' Get named BOMs and their
|
||||
versions for the selected file</span><br>
|
||||
<span style="color:blue;"> Dim</span> derivedBOMs() <span style="color:blue;">As</span> <span style="color:#2b91af;">EdmBomInfo</span> = <span style="color:blue;">Nothing</span><br>
|
||||
aFile.<b>GetDerivedBOMs</b>(derivedBOMs)<br>
|
||||
<br>
|
||||
<span style="color:blue;"> Dim</span> arrSize <span style="color:blue;">As</span> <span style="color:blue;">Integer</span><br>
|
||||
<span style="color:blue;"> Dim</span> ppoVersions() <span style="color:blue;">As</span> <span style="color:#2b91af;">EdmBomVersion</span> = <span style="color:blue;">Nothing</span><br>
|
||||
<span style="color:blue;"> Dim</span> i <span style="color:blue;">As</span> <span style="color:blue;">Integer</span> = 0<br>
|
||||
<span style="color:blue;"> Dim</span> j <span style="color:blue;">As</span> <span style="color:blue;">Integer</span> = 0<br>
|
||||
<span style="color:blue;"> Dim</span> id <span style="color:blue;">As</span> <span style="color:blue;">Integer</span><br>
|
||||
<span style="color:blue;"> Dim</span> str <span style="color:blue;">As</span> <span style="color:blue;">String</span> = <span style="color:#a31515;">""</span><br>
|
||||
<span style="color:blue;"> Dim</span> verstr <span style="color:blue;">As</span> <span style="color:blue;">String</span> = <span style="color:#a31515;">""</span><br>
|
||||
<span style="color:blue;"> Dim</span> verArrSize <span style="color:blue;">As</span> <span style="color:blue;">Integer<br>
|
||||
Dim </span>canSeeLayout<span style="color:blue;"> As Boolean<br>
|
||||
Dim </span>userID<span style="color:blue;"> As Integer<br><br> </span>
|
||||
userID = vault2.<strong>GetLoggedInWindowsUserID</strong>(vault2.<strong>Name</strong>)<br><br>
|
||||
arrSize = derivedBOMs.Length<br>
|
||||
<br>
|
||||
<span style="color:blue;"> While</span> i < arrSize<br>
|
||||
id = derivedBOMs(i).<b>mlBomID</b><br>
|
||||
bom = vault2.<b>GetObject</b>(<span style="color:#2b91af;">EdmObjectType</span>.EdmObject_BOM, id)<br>
|
||||
str = <span style="color:#a31515;">"Named BOM: "</span> & derivedBOMs(i).<b>mbsBomName</b> & vbLf &
|
||||
<span class="auto-style1">"Type of BOM as defined in EdmBomType: "</span> & vbLf
|
||||
& derivedBOMs(i).<strong>meType</strong> & vbLf & <span style="color:#a31515;">"Check-out user: "</span> & bom.<b>CheckOutUserID</b> & vbLf & <span style="color:#a31515;">"Current state: "</span> & bom.CurrentState.<b>Name</b> & vbLf & <span style="color:#a31515;">"Current version: "</span> & bom.<b>CurrentVersion</b> & vbLf & <span style="color:#a31515;">"ID: "</span> & bom.<b>FileID</b> & vbLf & <span style="color:#a31515;">"Is checked out: "</span> & bom.<b>IsCheckedOut</b><br>
|
||||
<span style="color:#2b91af;">MessageBox</span>.Show(str)<br>
|
||||
bom.<b>GetVersions</b>(ppoVersions)<br>
|
||||
verArrSize = ppoVersions.Length<br>
|
||||
<span style="color:blue;">While</span> j < verArrSize<br>
|
||||
verstr = <span style="color:#a31515;">"BOM version: "</span> & vbLf & <span style="color:#a31515;">"Type as defined in EdmBomVersionType: "</span> & ppoVersions(j).<b>meType</b> & vbLf & <span style="color:#a31515;">"Version number: "</span> & ppoVersions(j).<b>mlVersion</b> & vbLf & <span style="color:#a31515;">"Date: "</span> & ppoVersions(j).<b>moDate</b> & vbLf & <span style="color:#a31515;">"Label: "</span> & ppoVersions(j).<b>mbsTag</b> & vbLf & <span style="color:#a31515;">"Comment: "</span> & ppoVersions(j).<b>mbsComment</b><br>
|
||||
<span style="color:#2b91af;">MessageBox</span>.Show(verstr)<br>
|
||||
j = j + 1<br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">While</span><br>
|
||||
i = i + 1<br>
|
||||
<span style="color:blue;"> End</span> <span style="color:blue;">While</span><br>
|
||||
<br>
|
||||
<span style="color:green;"> ' Get a BOM view
|
||||
with the specified layout</span><br>
|
||||
bomMgr = vault2.<b>CreateUtility</b>(<span style="color:#2b91af;">EdmUtility</span>.EdmUtil_BomMgr)<br>
|
||||
<span style="color:blue;"> Dim</span> ppoRetLayouts() <span style="color:blue;">As</span> <span style="color:#2b91af;">EdmBomLayout2</span> = <span style="color:blue;">Nothing</span><br>
|
||||
<span style="color:blue;"> Dim</span> ppoRetLayout <span style="color:blue;">As</span> <span style="color:#2b91af;">EdmBomLayout2</span><br>
|
||||
bomMgr.<b>GetBomLayouts2</b>(ppoRetLayouts)</p>
|
||||
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
||||
<br>
|
||||
i = 0<br>
|
||||
arrSize = ppoRetLayouts.Length<br>
|
||||
str = <span style="color:#a31515;">""</span><br>
|
||||
<span style="color:blue;"> While</span> i < arrSize<br>
|
||||
ppoRetLayout = ppoRetLayouts(i)</p>
|
||||
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
||||
|
||||
canSeeLayout = bomMgr.<strong>CanSeeBomLayout</strong>(userID, ppoRetLayout.<strong>mlLayoutID</strong>)<br>
|
||||
str = <span style="color:#a31515;">"BOM Layout "</span> & i & <span style="color:#a31515;">": "</span> & vbLf & ppoRetLayout.<b>mbsLayoutName</b> & vbLf & <span style="color:#a31515;">"ID: "</span> & ppoRetLayout.<b>mlLayoutID<br> </b>
|
||||
str = str & <span class="auto-style1">" Logged-in user can see this layout? "</span>
|
||||
& canSeeLayout<br>
|
||||
<span style="color:blue;">If</span> ppoRetLayout.<b>mbsLayoutName</b> = <span style="color:#a31515;">"BOM"</span> <span style="color:blue;">Then</span><br>
|
||||
bomView = aFile.<b>GetComputedBOM</b>(ppoRetLayout.<b>mbsLayoutName</b>, 0, <span style="color:#a31515;">"@"</span>, <span style="color:#2b91af;">EdmBomFlag</span>.EdmBf_AsBuilt + <span style="color:#2b91af;">EdmBomFlag</span>.EdmBf_ShowSelected)<br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">If</span><br>
|
||||
<span style="color:#2b91af;">MessageBox</span>.Show(str)<br>
|
||||
i = i + 1<br>
|
||||
<span style="color:blue;"> End</span> <span style="color:blue;">While</span><br>
|
||||
<br>
|
||||
<span style="color:green;"> ' Display BOM view
|
||||
row and column information</span><br>
|
||||
<span style="color:blue;">Dim</span> ppoRows() <span style="color:blue;">As</span> <span style="color:blue;">Object</span> = <span style="color:blue;">Nothing</span><br>
|
||||
<span style="color:blue;"> Dim</span> ppoRow <span style="color:blue;">As</span> <span style="color:#2b91af;">IEdmBomCell</span><br>
|
||||
bomView.<b>GetRows</b>(ppoRows)<br>
|
||||
i = 0<br>
|
||||
arrSize = ppoRows.Length<br>
|
||||
str = <span style="color:#a31515;">""</span><br>
|
||||
<span style="color:blue;"> While</span> i < arrSize<br>
|
||||
ppoRow = ppoRows(i)<br>
|
||||
str = <span style="color:#a31515;">"BOM Row "</span> & i & <span style="color:#a31515;">": "</span> & vbLf & <span style="color:#a31515;">"Item ID: "</span> & ppoRow.<b>GetItemID</b> & vbLf & <span style="color:#a31515;">"Path name: "</span> & ppoRow.<b>GetPathName</b> & vbLf & <span style="color:#a31515;">"Tree level: "</span> & ppoRow.<b>GetTreeLevel</b> & vbLf & <span style="color:#a31515;">" Is locked? "</span> & ppoRow.<b>IsLocked</b><br>
|
||||
<span style="color:#2b91af;">MessageBox</span>.Show(str)<br>
|
||||
i = i + 1<br>
|
||||
<span style="color:blue;"> End</span> <span style="color:blue;">While</span><br>
|
||||
<br>
|
||||
<span style="color:blue;"> Dim</span> ppoColumns() <span style="color:blue;">As</span> <span style="color:#2b91af;">EdmBomColumn</span> = <span style="color:blue;">Nothing</span><br>
|
||||
bomView.<b>GetColumns</b>(ppoColumns)<br>
|
||||
i = 0<br>
|
||||
arrSize = ppoColumns.Length<br>
|
||||
str = <span style="color:#a31515;">""</span><br>
|
||||
<span style="color:blue;"> While</span> i < arrSize<br>
|
||||
str = <span style="color:#a31515;">"BOM Column "</span> & i & <span style="color:#a31515;">": "</span> & vbLf & <span style="color:#a31515;">"Header: "</span> & ppoColumns(i).<b>mbsCaption</b> & vbLf & <span style="color:#a31515;">"Column type as defined in EdmBomColumnType: "</span> & ppoColumns(i).<b>meType</b> & vbLf & <span style="color:#a31515;">"ID: "</span> & ppoColumns(i).<b>mlColumnID</b> & vbLf & <span style="color:#a31515;">"Flags: "</span> & ppoColumns(i).<b>mlFlags</b> & vbLf & <span style="color:#a31515;">"Variable ID: "</span> & ppoColumns(i).<b>mlVariableID</b> & vbLf & <span style="color:#a31515;">"Variable type as defined in EdmVariableType: "</span> & ppoColumns(i).<b>mlVariableType</b> & vbLf & <span style="color:#a31515;">"Column width: "</span> & ppoColumns(i).<b>mlWidth</b><br>
|
||||
<span style="color:#2b91af;">MessageBox</span>.Show(str)<br>
|
||||
i = i + 1<br>
|
||||
<span style="color:blue;"> End</span> <span style="color:blue;">While<br>
|
||||
</span></p>
|
||||
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
||||
SaveBOM.Enabled = <span style="color:blue;">True</span><br>
|
||||
</p>
|
||||
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
||||
<br>
|
||||
<font color="#0000FF">End If</font><br>
|
||||
<span style="color:blue;">Catch</span> ex <span style="color:blue;">As</span> System.Runtime.InteropServices.<span style="color:#2b91af;">COMException</span><br>
|
||||
<span style="color:#2b91af;">MessageBox</span>.Show(<span style="color:#a31515;">"HRESULT = 0x"</span> + ex.ErrorCode.ToString(<span style="color:#a31515;">"X"</span>) + <span style="color:#a31515;">" "</span> + ex.Message)<br>
|
||||
<span style="color:blue;">Catch</span> ex <span style="color:blue;">As</span> <span style="color:#2b91af;">Exception</span><br>
|
||||
<span style="color:#2b91af;">MessageBox</span>.Show(ex.Message)<br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">Try</span><br>
|
||||
<br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">Sub<br>
|
||||
</span></p>
|
||||
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
||||
<span style="color:blue;"> Public</span> <span style="color:blue;">Sub</span> SaveBOM_Click(<span style="color:blue;">ByVal</span> sender <span style="color:blue;">As</span> System.<span style="color:#2b91af;">Object</span>, <span style="color:blue;">ByVal</span> e <span style="color:blue;">As</span> System.<span style="color:#2b91af;">EventArgs</span>) <span style="color:blue;">Handles</span> SaveBOM.Click<br>
|
||||
<span style="color:blue;">Try</span><br>
|
||||
<br>
|
||||
<span style="color:blue;">Dim</span> vault2 <span style="color:blue;">As</span> <span style="color:#2b91af;">IEdmVault7</span> = <span style="color:blue;">Nothing</span><br>
|
||||
<span style="color:blue;">If</span> vault1 <span style="color:blue;">Is</span> <span style="color:blue;">Nothing</span> <span style="color:blue;">Then</span><br>
|
||||
vault1 = <span style="color:blue;">New</span> <span style="color:#2b91af;">EdmVault5</span>()<br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">If</span><br>
|
||||
vault2 = <span style="color:blue;">DirectCast</span>(vault1, <span style="color:#2b91af;">IEdmVault9</span>)<br>
|
||||
<span style="color:blue;">If</span> <span style="color:blue;">Not</span> vault1.<b>IsLoggedIn</b> <span style="color:blue;">Then</span><br>
|
||||
vault1.<b>LoginAuto</b>(VaultsComboBox.Text, <span style="color:blue;">Me</span>.Handle.ToInt32())<br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">If</span><br>
|
||||
<br>
|
||||
</p>
|
||||
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
||||
<span style="color:blue;">
|
||||
If</span> <span style="color:blue;">Not</span> IsNothing(aFile) <span style="color:blue;">And</span> <span style="color:blue;">Not</span> IsNothing(bomView) <span style="color:blue;">Then</span><br>
|
||||
bomView.<b>SaveToCSV</b>(<span style="color:#a31515;">"c:\temp\SavedBOM.csv"</span>, <span style="color:blue;">False</span>)<br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">If</span></p>
|
||||
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
||||
<br>
|
||||
<br>
|
||||
<span style="color:blue;">Catch</span> ex <span style="color:blue;">As</span> System.Runtime.InteropServices.<span style="color:#2b91af;">COMException</span><br>
|
||||
<span style="color:#2b91af;">MessageBox</span>.Show(<span style="color:#a31515;">"HRESULT = 0x"</span> + ex.ErrorCode.ToString(<span style="color:#a31515;">"X"</span>) + <span style="color:#a31515;">" "</span> + ex.Message)<br>
|
||||
<span style="color:blue;">Catch</span> ex <span style="color:blue;">As</span> <span style="color:#2b91af;">Exception</span><br>
|
||||
<span style="color:#2b91af;">MessageBox</span>.Show(ex.Message)<br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">Try</span><br>
|
||||
<br>
|
||||
<span style="color:blue;"> End</span> <span style="color:blue;">Sub</span></p>
|
||||
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">Class</span></p>
|
||||
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
||||
</p>
|
||||
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE" align="center">
|
||||
<a href="#top">Back to top</a> </p>
|
||||
<p style="font-family: Courier New; font-size: 13; color: #008000; background: white" class="APICODE">
|
||||
<a name="form1designer"></a>'Form1.Designer.vb</p>
|
||||
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
||||
<<span style="color:blue;">Global</span>.Microsoft.VisualBasic.CompilerServices.<span style="color:#2b91af;">DesignerGenerated</span>()> _<br>
|
||||
<span style="color:blue;">Partial</span> <span style="color:blue;">Class</span> <span style="color:#2b91af;">Form1</span><br>
|
||||
<span style="color:blue;">Inherits</span> System.Windows.Forms.<span style="color:#2b91af;">Form</span><br>
|
||||
<br>
|
||||
<span style="color:green;">'Form overrides dispose to clean up the component list.</span><br>
|
||||
<System.Diagnostics.<span style="color:#2b91af;">DebuggerNonUserCode</span>()> _<br>
|
||||
<span style="color:blue;">Protected</span> <span style="color:blue;">Overrides</span> <span style="color:blue;">Sub</span> Dispose(<span style="color:blue;">ByVal</span> disposing <span style="color:blue;">As</span> <span style="color:blue;">Boolean</span>)<br>
|
||||
<span style="color:blue;">Try</span><br>
|
||||
<span style="color:blue;">If</span> disposing <span style="color:blue;">AndAlso</span> components <span style="color:blue;">IsNot</span> <span style="color:blue;">Nothing</span> <span style="color:blue;">Then</span><br>
|
||||
components.Dispose()<br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">If</span><br>
|
||||
<span style="color:blue;">Finally</span><br>
|
||||
<span style="color:blue;">MyBase</span>.Dispose(disposing)<br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">Try</span><br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">Sub</span><br>
|
||||
<br>
|
||||
<span style="color:green;">'Required by the Windows Form Designer</span><br>
|
||||
<span style="color:blue;">Private</span> components <span style="color:blue;">As</span> System.ComponentModel.<span style="color:#2b91af;">IContainer</span><br>
|
||||
<br>
|
||||
<span style="color:green;">'NOTE: The following procedure is required by the Windows Form Designer</span><br>
|
||||
<span style="color:green;">'It can be modified using the Windows Form Designer. </span><br>
|
||||
<span style="color:green;">'Do not modify it using the code editor.</span><br>
|
||||
<System.Diagnostics.<span style="color:#2b91af;">DebuggerStepThrough</span>()> _<br>
|
||||
<span style="color:blue;">Private</span> <span style="color:blue;">Sub</span> InitializeComponent()<br>
|
||||
<span style="color:blue;">Me</span>.VaultsLabel = <span style="color:blue;">New</span> System.Windows.Forms.<span style="color:#2b91af;">Label</span>()<br>
|
||||
<span style="color:blue;">Me</span>.VaultsComboBox = <span style="color:blue;">New</span> System.Windows.Forms.<span style="color:#2b91af;">ComboBox</span>()<br>
|
||||
<span style="color:blue;">Me</span>.SelectFiles = <span style="color:blue;">New</span> System.Windows.Forms.<span style="color:#2b91af;">Button</span>()<br>
|
||||
<span style="color:blue;">Me</span>.File1List = <span style="color:blue;">New</span> System.Windows.Forms.<span style="color:#2b91af;">ListBox</span>()<br>
|
||||
<span style="color:blue;">Me</span>.GetBOM = <span style="color:blue;">New</span> System.Windows.Forms.<span style="color:#2b91af;">Button</span>()<br>
|
||||
<span style="color:blue;">Me</span>.OpenFileDialog1 = <span style="color:blue;">New</span> System.Windows.Forms.<span style="color:#2b91af;">OpenFileDialog</span>()<br>
|
||||
<span style="color:blue;">Me</span>.SaveBOM = <span style="color:blue;">New</span> System.Windows.Forms.<span style="color:#2b91af;">Button</span>()<br>
|
||||
<span style="color:blue;">Me</span>.SuspendLayout()<br>
|
||||
<span style="color:green;">'</span><br>
|
||||
<span style="color:green;">'VaultsLabel</span><br>
|
||||
<span style="color:green;">'</span><br>
|
||||
<span style="color:blue;">Me</span>.VaultsLabel.AutoSize = <span style="color:blue;">True</span><br>
|
||||
<span style="color:blue;">Me</span>.VaultsLabel.Location = <span style="color:blue;">New</span> System.Drawing.<span style="color:#2b91af;">Point</span>(36, 24)<br>
|
||||
<span style="color:blue;">Me</span>.VaultsLabel.Name = <span style="color:#a31515;">"VaultsLabel"</span><br>
|
||||
<span style="color:blue;">Me</span>.VaultsLabel.Size = <span style="color:blue;">New</span> System.Drawing.<span style="color:#2b91af;">Size</span>(91, 13)<br>
|
||||
<span style="color:blue;">Me</span>.VaultsLabel.TabIndex = 0<br>
|
||||
<span style="color:blue;">Me</span>.VaultsLabel.Text = <span style="color:#a31515;">"Select vault view:"</span><br>
|
||||
<span style="color:green;">'</span><br>
|
||||
<span style="color:green;">'VaultsComboBox</span><br>
|
||||
<span style="color:green;">'</span><br>
|
||||
<span style="color:blue;">Me</span>.VaultsComboBox.FormattingEnabled = <span style="color:blue;">True</span><br>
|
||||
<span style="color:blue;">Me</span>.VaultsComboBox.Location = <span style="color:blue;">New</span> System.Drawing.<span style="color:#2b91af;">Point</span>(39, 40)<br>
|
||||
<span style="color:blue;">Me</span>.VaultsComboBox.Name = <span style="color:#a31515;">"VaultsComboBox"</span><br>
|
||||
<span style="color:blue;">Me</span>.VaultsComboBox.Size = <span style="color:blue;">New</span> System.Drawing.<span style="color:#2b91af;">Size</span>(121, 21)<br>
|
||||
<span style="color:blue;">Me</span>.VaultsComboBox.TabIndex = 1<br>
|
||||
<span style="color:green;">'</span><br>
|
||||
<span style="color:green;">'SelectFiles</span><br>
|
||||
<span style="color:green;">'</span><br>
|
||||
<span style="color:blue;">Me</span>.SelectFiles.Location = <span style="color:blue;">New</span> System.Drawing.<span style="color:#2b91af;">Point</span>(39, 85)<br>
|
||||
<span style="color:blue;">Me</span>.SelectFiles.Name = <span style="color:#a31515;">"SelectFiles"</span><br>
|
||||
<span style="color:blue;">Me</span>.SelectFiles.Size = <span style="color:blue;">New</span> System.Drawing.<span style="color:#2b91af;">Size</span>(191, 23)<br>
|
||||
<span style="color:blue;">Me</span>.SelectFiles.TabIndex = 2<br>
|
||||
<span style="color:blue;">Me</span>.SelectFiles.Text = <span style="color:#a31515;">"Select file..."</span><br>
|
||||
<span style="color:blue;">Me</span>.SelectFiles.UseVisualStyleBackColor = <span style="color:blue;">True</span><br>
|
||||
<span style="color:green;">'</span><br>
|
||||
<span style="color:green;">'File1List</span><br>
|
||||
<span style="color:green;">'</span><br>
|
||||
<span style="color:blue;">Me</span>.File1List.FormattingEnabled = <span style="color:blue;">True</span><br>
|
||||
<span style="color:blue;">Me</span>.File1List.HorizontalScrollbar = <span style="color:blue;">True</span><br>
|
||||
<span style="color:blue;">Me</span>.File1List.Location = <span style="color:blue;">New</span> System.Drawing.<span style="color:#2b91af;">Point</span>(40, 114)<br>
|
||||
<span style="color:blue;">Me</span>.File1List.Name = <span style="color:#a31515;">"File1List"</span><br>
|
||||
<span style="color:blue;">Me</span>.File1List.SelectionMode = System.Windows.Forms.<span style="color:#2b91af;">SelectionMode</span>.MultiExtended<br>
|
||||
<span style="color:blue;">Me</span>.File1List.Size = <span style="color:blue;">New</span> System.Drawing.<span style="color:#2b91af;">Size</span>(220, 43)<br>
|
||||
<span style="color:blue;">Me</span>.File1List.TabIndex = 4<br>
|
||||
<span style="color:green;">'</span><br>
|
||||
<span style="color:green;">'GetBOM</span><br>
|
||||
<span style="color:green;">'</span><br>
|
||||
<span style="color:blue;">Me</span>.GetBOM.Enabled = <span style="color:blue;">False</span><br>
|
||||
<span style="color:blue;">Me</span>.GetBOM.Location = <span style="color:blue;">New</span> System.Drawing.<span style="color:#2b91af;">Point</span>(40, 183)<br>
|
||||
<span style="color:blue;">Me</span>.GetBOM.Name = <span style="color:#a31515;">"GetBOM"</span><br>
|
||||
<span style="color:blue;">Me</span>.GetBOM.Size = <span style="color:blue;">New</span> System.Drawing.<span style="color:#2b91af;">Size</span>(157, 23)<br>
|
||||
<span style="color:blue;">Me</span>.GetBOM.TabIndex = 6<br>
|
||||
<span style="color:blue;">Me</span>.GetBOM.Text = <span style="color:#a31515;">"Get BOM Info"</span><br>
|
||||
<span style="color:blue;">Me</span>.GetBOM.UseVisualStyleBackColor = <span style="color:blue;">True</span><br>
|
||||
<span style="color:green;">'</span><br>
|
||||
<span style="color:green;">'OpenFileDialog1</span><br>
|
||||
<span style="color:green;">'</span><br>
|
||||
<span style="color:blue;">Me</span>.OpenFileDialog1.FileName = <span style="color:#a31515;">"OpenFileDialog1"</span><br>
|
||||
<span style="color:blue;">Me</span>.OpenFileDialog1.Title = <span style="color:#a31515;">"Select File"</span><br>
|
||||
<span style="color:green;">'</span><br>
|
||||
<span style="color:green;">'SaveBOM</span><br>
|
||||
<span style="color:green;">'</span><br>
|
||||
<span style="color:blue;">Me</span>.SaveBOM.Enabled = <span style="color:blue;">False</span><br>
|
||||
<span style="color:blue;">Me</span>.SaveBOM.Location = <span style="color:blue;">New</span> System.Drawing.<span style="color:#2b91af;">Point</span>(40, 234)<br>
|
||||
<span style="color:blue;">Me</span>.SaveBOM.Name = <span style="color:#a31515;">"SaveBOM"</span><br>
|
||||
<span style="color:blue;">Me</span>.SaveBOM.Size = <span style="color:blue;">New</span> System.Drawing.<span style="color:#2b91af;">Size</span>(157, 23)<br>
|
||||
<span style="color:blue;">Me</span>.SaveBOM.TabIndex = 7<br>
|
||||
<span style="color:blue;">Me</span>.SaveBOM.Text = <span style="color:#a31515;">"Save BOM to CSV"</span><br>
|
||||
<span style="color:blue;">Me</span>.SaveBOM.UseVisualStyleBackColor = <span style="color:blue;">True</span><br>
|
||||
<span style="color:green;">'</span><br>
|
||||
<span style="color:green;">'Form1</span><br>
|
||||
<span style="color:green;">'</span><br>
|
||||
<span style="color:blue;">Me</span>.AutoScaleDimensions = <span style="color:blue;">New</span> System.Drawing.<span style="color:#2b91af;">SizeF</span>(6.0!, 13.0!)<br>
|
||||
<span style="color:blue;">Me</span>.AutoScaleMode = System.Windows.Forms.<span style="color:#2b91af;">AutoScaleMode</span>.Font<br>
|
||||
<span style="color:blue;">Me</span>.ClientSize = <span style="color:blue;">New</span> System.Drawing.<span style="color:#2b91af;">Size</span>(284, 305)<br>
|
||||
<span style="color:blue;">Me</span>.Controls.Add(<span style="color:blue;">Me</span>.SaveBOM)<br>
|
||||
<span style="color:blue;">Me</span>.Controls.Add(<span style="color:blue;">Me</span>.GetBOM)<br>
|
||||
<span style="color:blue;">Me</span>.Controls.Add(<span style="color:blue;">Me</span>.File1List)<br>
|
||||
<span style="color:blue;">Me</span>.Controls.Add(<span style="color:blue;">Me</span>.SelectFiles)<br>
|
||||
<span style="color:blue;">Me</span>.Controls.Add(<span style="color:blue;">Me</span>.VaultsComboBox)<br>
|
||||
<span style="color:blue;">Me</span>.Controls.Add(<span style="color:blue;">Me</span>.VaultsLabel)<br>
|
||||
<span style="color:blue;">Me</span>.Name = <span style="color:#a31515;">"Form1"</span><br>
|
||||
<span style="color:blue;">Me</span>.Text = <span style="color:#a31515;">"Bill of Materials"</span><br>
|
||||
<span style="color:blue;">Me</span>.ResumeLayout(<span style="color:blue;">False</span>)<br>
|
||||
<span style="color:blue;">Me</span>.PerformLayout()<br>
|
||||
<br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">Sub</span><br>
|
||||
<span style="color:blue;">Friend</span> <span style="color:blue;">WithEvents</span> VaultsLabel <span style="color:blue;">As</span> System.Windows.Forms.<span style="color:#2b91af;">Label</span><br>
|
||||
<span style="color:blue;">Friend</span> <span style="color:blue;">WithEvents</span> VaultsComboBox <span style="color:blue;">As</span> System.Windows.Forms.<span style="color:#2b91af;">ComboBox</span><br>
|
||||
<span style="color:blue;">Friend</span> <span style="color:blue;">WithEvents</span> SelectFiles <span style="color:blue;">As</span> System.Windows.Forms.<span style="color:#2b91af;">Button</span><br>
|
||||
<span style="color:blue;">Friend</span> <span style="color:blue;">WithEvents</span> File1List <span style="color:blue;">As</span> System.Windows.Forms.<span style="color:#2b91af;">ListBox</span><br>
|
||||
<span style="color:blue;">Friend</span> <span style="color:blue;">WithEvents</span> GetBOM <span style="color:blue;">As</span> System.Windows.Forms.<span style="color:#2b91af;">Button</span><br>
|
||||
<span style="color:blue;">Friend</span> <span style="color:blue;">WithEvents</span> OpenFileDialog1 <span style="color:blue;">As</span> System.Windows.Forms.<span style="color:#2b91af;">OpenFileDialog</span><br>
|
||||
<span style="color:blue;">Friend</span> <span style="color:blue;">WithEvents</span> SaveBOM <span style="color:blue;">As</span> <span style="color:#2b91af;">Button</span><br>
|
||||
<span style="color:blue;">End</span> <span style="color:blue;">Class</span></p>
|
||||
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
||||
</p>
|
||||
</font>
|
||||
<p align="center"><a href="#top">Back to top</a></p>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user