171 lines
5.5 KiB
VB.net
171 lines
5.5 KiB
VB.net
Imports System.IO
|
|
Imports EgtUILib.EgtInterface
|
|
Imports EgtWPFLib5
|
|
|
|
Public Class ParametricCompoVM
|
|
Inherits SceneUserControlVM
|
|
|
|
#Region "FIELDS & PROPERTIES"
|
|
|
|
Private m_sLuaPath As String = String.Empty
|
|
Friend ReadOnly bFileExsist As Boolean = False
|
|
Private m_nVeinCtx As Integer
|
|
|
|
Private m_nPartId As Integer = GDB_ID.NULL
|
|
Public Property nPartId As Integer
|
|
Get
|
|
Return m_nPartId
|
|
End Get
|
|
Set(value As Integer)
|
|
m_nPartId = value
|
|
End Set
|
|
End Property
|
|
|
|
#End Region ' Fields & Properties
|
|
|
|
#Region "CONSTRUCTOR"
|
|
|
|
Sub New(sFile As String, nVeinCtx As Integer, Optional dir As String = "")
|
|
MyBase.New()
|
|
m_nVeinCtx = nVeinCtx
|
|
Title = EGT_PARAMETRIC.ToUpper()
|
|
' Recupero path cartella che contiene i componenti
|
|
If Not File.Exists(dir & sFile) Then
|
|
GetMainPrivateProfileString(K_COMPO, COMPO_DIR, "", m_sLuaPath)
|
|
' Controllo se il file esiste
|
|
m_sLuaPath &= sFile
|
|
Else
|
|
m_sLuaPath = dir & sFile
|
|
End If
|
|
If File.Exists(m_sLuaPath) Then
|
|
LoadParamList()
|
|
bFileExsist = True
|
|
Else
|
|
EgtOutLog("File " & m_sLuaPath & " non esiste nella cartella dei componenti")
|
|
End If
|
|
' aggiorno visualizzazione
|
|
EgtSetView(VT.TOP, False)
|
|
EgtZoom(ZM.ALL)
|
|
End Sub
|
|
|
|
#End Region ' Contructor
|
|
|
|
#Region "METHODS"
|
|
|
|
Public Overrides Sub LoadParamList()
|
|
' Pulisco lista variabili
|
|
ParamList.Clear()
|
|
EgtLuaExecFile(m_sLuaPath)
|
|
Dim sPar As String = "0"
|
|
EgtLuaGetGlobStringVar("CMP.Npar", sPar)
|
|
If Not String.IsNullOrEmpty(sPar) Then
|
|
Dim sName As String = String.Empty
|
|
EgtLuaGetGlobStringVar("CMP.Nome", sName)
|
|
Dim nPar As Integer = CInt(sPar)
|
|
ParamList.Add(New _TextBlockParam(EGT_MESSAGE, sName, Visibility.Visible))
|
|
' Recupero nome, tipo e valore delle variabili globali
|
|
For Index As Integer = 1 To nPar
|
|
Dim NewCompo As GenericParam = Nothing
|
|
If NameTypeValueFromLua(Index, NewCompo) Then
|
|
ParamList.Add(NewCompo)
|
|
End If
|
|
Next
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub ExecLua()
|
|
If Not File.Exists(m_sLuaPath) Then
|
|
EgtOutLog("Matching error: missing file (" & m_sLuaPath & ")")
|
|
Return
|
|
End If
|
|
' Parsing
|
|
EgtLuaExecFile(m_sLuaPath)
|
|
EgtSetCurrentContext(m_nVeinCtx)
|
|
For Index As Integer = 0 To ParamList.Count - 1
|
|
If TypeOf ParamList(Index) Is _TextBoxParam Then
|
|
Dim _TextBox As _TextBoxParam = DirectCast(ParamList(Index), _TextBoxParam)
|
|
EgtLuaSetGlobNumVar("CMP.V" & Index, CDbl(_TextBox.sValue))
|
|
ElseIf TypeOf ParamList(Index) Is _CheckBoxParam Then
|
|
Dim _CheckBox As _CheckBoxParam = DirectCast(ParamList(Index), _CheckBoxParam)
|
|
EgtLuaSetGlobBoolVar("CMP.V" & Index, _CheckBox.IsChecked)
|
|
End If
|
|
Next
|
|
EgtLuaExecLine("CMP_Draw" & "(true)")
|
|
EgtLuaResetGlobVar("CMP")
|
|
|
|
' rinomino il part con un nome univoco
|
|
Dim nPart As Integer = EgtGetLastPart()
|
|
EgtLuaSetGlobNumVar("TOOL.nId", nPart)
|
|
EgtLuaCallFunction("TOOL.RenameNewPart")
|
|
EgtLuaCallFunction("TOOL.ReorganizeEdges")
|
|
EgtLuaCallFunction("TOOL.ClearVariables")
|
|
|
|
nPartId = EgtGetLastPart()
|
|
End Sub
|
|
|
|
Public Overrides Sub Conferma()
|
|
Map.refSceneHostVM.m_bPreviewShown = False
|
|
ExecLua()
|
|
EgtDraw()
|
|
Close()
|
|
End Sub
|
|
|
|
Public Overrides Sub Annulla()
|
|
Dim PartSolidSel As PartSolidM = GetPartSolid(nPartId)
|
|
SolidManagerM.Delete(nPartId)
|
|
EgtDraw()
|
|
Close()
|
|
End Sub
|
|
|
|
Public Overrides Sub ShowPreview()
|
|
Map.refSceneHostVM.m_bPreviewShown = True
|
|
ExecLua()
|
|
EgtDraw()
|
|
End Sub
|
|
|
|
Private Sub Close()
|
|
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_ParametricCompoUC)
|
|
SolidManagerM.RefreshPartSolid(nPartId)
|
|
' debug
|
|
EgtSaveFile("D:\\Temp\\marmo\\Vein3D\\template.nge", 2)
|
|
' debug
|
|
End Sub
|
|
|
|
Private Function NameTypeValueFromLua(nInd As Integer, ByRef Param As GenericParam) As Boolean
|
|
Dim bOk As Boolean = True
|
|
Dim sName As String = String.Empty
|
|
Dim nType As Integer = 0
|
|
bOk = bOk AndAlso EgtLuaGetGlobStringVar(LUA_NAME & nInd.ToString(), sName)
|
|
bOk = bOk AndAlso EgtLuaGetGlobIntVar(LUA_TYPE & nInd.ToString(), nType)
|
|
Return bOk AndAlso FromLua(nInd, sName, nType, Param)
|
|
End Function
|
|
|
|
Private Function FromLua(nInd As Integer, sName As String, nType As Integer, ByRef Param As GenericParam) As Boolean
|
|
Dim sVal As String = String.Empty
|
|
Dim dVal As Double = 0
|
|
Dim nVal As Integer = 0
|
|
Dim bOk As Boolean
|
|
Select Case nType
|
|
Case ParamType.BOOL
|
|
bOk = EgtLuaGetGlobBoolVar(LUA_VALUE & nInd.ToString(), ParamType.BOOL)
|
|
Param = New _CheckBoxParam(sName, sVal)
|
|
Return bOk
|
|
Case ParamType.INT
|
|
bOk = EgtLuaGetGlobIntVar(LUA_VALUE & nInd.ToString(), nVal)
|
|
Param = New _TextBoxParam(sName, nVal.ToString(), nType)
|
|
Return bOk
|
|
Case ParamType.LEN, ParamType.DOUB
|
|
bOk = EgtLuaGetGlobNumVar(LUA_VALUE & nInd.ToString(), dVal)
|
|
Param = New _TextBoxParam(sName, dVal.ToString(), nType)
|
|
Return bOk
|
|
Case ParamType.STR
|
|
bOk = EgtLuaGetGlobStringVar(LUA_VALUE & nInd.ToString(), sVal)
|
|
Param = New _TextBoxParam(sName, sVal, nType)
|
|
Return bOk
|
|
End Select
|
|
Return False
|
|
End Function
|
|
|
|
#End Region ' Methods
|
|
|
|
End Class |