diff --git a/CompoLib/ParametricCompoVM.vb b/CompoLib/ParametricCompoVM.vb
new file mode 100644
index 0000000..95fe587
--- /dev/null
+++ b/CompoLib/ParametricCompoVM.vb
@@ -0,0 +1,131 @@
+Imports System.IO
+Imports System.Windows.Forms.AxHost
+Imports EgtUILib.EgtInterface
+Imports EgtWPFLib5
+
+Public Class ParametricCompoVM
+ Inherits SceneUserControlVM
+
+ Public Enum ParamType As Integer
+ BOOL = 1
+ INT = 2
+ LEN = 3
+ DOUB = 4
+ STR = 5
+ End Enum
+
+ Private Const LUA_CMP_VARS As String = "CMP"
+ Friend Const LUA_VALUE As String = LUA_CMP_VARS & ".V"
+ Const LUA_NAME As String = LUA_CMP_VARS & ".N"
+ Const LUA_TYPE As String = LUA_CMP_VARS & ".T"
+
+ Private sLuaPath As String = String.Empty
+
+ Sub New(sFile As String)
+ ' Recupero path cartella che contiene i componenti
+ GetMainPrivateProfileString(K_COMPO, COMPO_DIR, "", sLuaPath)
+ sLuaPath &= sFile
+ LoadParamList()
+ ' aggiorno visualizzazione
+ EgtSetView(VT.TOP, False)
+ EgtZoom(ZM.ALL)
+ End Sub
+
+ Public Overrides Sub LoadParamList()
+ ParamList.Clear()
+ EgtLuaExecFile(sLuaPath)
+ Dim sPar As String = "0"
+ EgtLuaGetGlobStringVar("CMP.Npar", sPar)
+ Dim nPar As Integer = CInt(sPar)
+ ParamList.Add(New _TextBlockParam("Messaggio", "RETTANGOLO", Visibility.Visible))
+ 'ParamList.Add(New _TextBoxParam("L", "300", Visibility.Visible))
+ 'ParamList.Add(New _TextBoxParam("H", "200", Visibility.Visible))
+ ' Pulisco lista variabili
+ ' Recupero nome, tipo e valore delle variabili globali
+ For i As Integer = 1 To nPar
+ Dim NewCompo As GenericParam = Nothing
+ If NameTypeValueFromLua(i, NewCompo) Then
+ ParamList.Add(NewCompo)
+ End If
+ Next
+ End Sub
+
+ Private Sub ExecLua()
+ '' recupero i valori nelle box
+ 'Dim l_TextBox As _TextBoxParam = DirectCast(ParamList(1), _TextBoxParam)
+ 'Dim h_TextBox As _TextBoxParam = DirectCast(ParamList(2), _TextBoxParam)
+ '' verifico che siano validi
+ 'If String.IsNullOrEmpty(l_TextBox.sValue) Then l_TextBox.sValue = "0"
+ 'If String.IsNullOrEmpty(h_TextBox.sValue) Then h_TextBox.sValue = "0"
+
+ Dim nVeinCtx As Integer = Map.refSceneHostVM.MainScene.GetCtx()
+ If Not File.Exists(sLuaPath) Then
+ EgtOutLog("Matching error: missing file (" & sLuaPath & ")")
+ Return
+ End If
+ ' Parsing
+ EgtLuaExecFile(sLuaPath)
+ EgtSetCurrentContext(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")
+ End Sub
+
+ Public Overrides Sub Conferma()
+ End Sub
+
+ Public Overrides Sub Annulla()
+ End Sub
+
+ Public Overrides Sub ShowPreview()
+ ExecLua()
+ EgtDraw()
+ End Sub
+
+ Private Sub Close()
+ 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
+ Select Case nType
+ Case ParamType.BOOL
+ Dim Compo As New _CheckBoxParam(sName, ParamType.BOOL)
+ Param = Compo
+ Return EgtLuaGetGlobBoolVar(LUA_VALUE & nInd.ToString(), Compo.IsChecked)
+ Case ParamType.INT
+ Dim Compo As New _TextBoxParam(sName, ParamType.INT)
+ Param = Compo
+ Return EgtLuaGetGlobIntVar(LUA_VALUE & nInd.ToString(), Compo.sValue)
+ Case ParamType.LEN
+ Dim Compo As New _TextBoxParam(sName, ParamType.LEN)
+ Param = Compo
+ Return EgtLuaGetGlobNumVar(LUA_VALUE & nInd.ToString(), Compo.sValue)
+ Case ParamType.DOUB
+ Dim Compo As New _TextBoxParam(sName, ParamType.DOUB)
+ Param = Compo
+ Return EgtLuaGetGlobNumVar(LUA_VALUE & nInd.ToString(), Compo.sValue)
+ Case ParamType.STR
+ Dim Compo As New _TextBoxParam(sName, ParamType.STR)
+ Param = Compo
+ Return EgtLuaGetGlobStringVar(LUA_VALUE & nInd.ToString(), Compo.sValue)
+ End Select
+ Return False
+ End Function
+
+End Class
\ No newline at end of file
diff --git a/Constants/ConstGen.vb b/Constants/ConstGen.vb
index 0c173b2..cd3d415 100644
--- a/Constants/ConstGen.vb
+++ b/Constants/ConstGen.vb
@@ -32,6 +32,8 @@
Public Const MACHINES_DFL_DIR As String = "Machines"
' Sottodirettorio di default per toolmakers
Public Const TOOLMAKERS_DFL_DIR As String = "ToolMakers"
+ ' Sottodirettorio di configurazione
+ Public Const COMPO_DIR As String = "Compo_Dir"
' Sottodirettorio del Vein 3D
Public Const VEIND3D_DIR As String = "Vein3D_Dir"
diff --git a/Constants/ConstIni.vb b/Constants/ConstIni.vb
index 5357d2d..ff21787 100644
--- a/Constants/ConstIni.vb
+++ b/Constants/ConstIni.vb
@@ -7,6 +7,7 @@
Public Const K_LINEWIDTH As String = "LineWidth"
Public Const K_CUSTOMCOLORS As String = "CustomColors"
Public Const K_VEIND3D As String = "Vein3D"
+ Public Const K_COMPO As String = "Compo"
Public Const K_THEMA As String = "Thema"
Public Const K_LASTNGEDIR As String = "LastNgeDir"
Public Const K_LASTIMPDIR As String = "LastImpDir"
diff --git a/EgtStone3D.vbproj b/EgtStone3D.vbproj
index 5fd48ee..b548e23 100644
--- a/EgtStone3D.vbproj
+++ b/EgtStone3D.vbproj
@@ -106,6 +106,7 @@
AboutBoxV.xaml
+
EgtColorPickerV.xaml
diff --git a/SceneButton/SceneButtonV.xaml.vb b/SceneButton/SceneButtonV.xaml.vb
index 2417d65..4b65cde 100644
--- a/SceneButton/SceneButtonV.xaml.vb
+++ b/SceneButton/SceneButtonV.xaml.vb
@@ -9,6 +9,7 @@
Public m_RotateUC As SceneUserControlV
Public m_MoveUC As SceneUserControlV
Public m_PanelUC As SceneUserControlV
+ Public m_ParametricCompoUC As SceneUserControlV
#End Region ' Fields & Properties
@@ -112,6 +113,25 @@
m_PanelUC = Nothing
End Sub
+ Public Sub LoadParametricCompoUC(sFileName As String)
+ If IsNothing(m_ParametricCompoUC) Then
+ m_ParametricCompoUC = New SceneUserControlV
+ Dim m_ParametricCompoVM As New ParametricCompoVM(sFileName)
+ m_ParametricCompoUC.DataContext = m_ParametricCompoVM
+ Grid.SetColumn(m_ParametricCompoUC, 0)
+ Grid.SetRow(m_ParametricCompoUC, 0)
+ Grid.SetColumnSpan(m_ParametricCompoUC, 2)
+ Grid.SetRowSpan(m_ParametricCompoUC, 3)
+ MainGrid.Children.Add(m_ParametricCompoUC)
+ End If
+ End Sub
+
+ Public Sub RemoveParametricCompoUC()
+ MainGrid.Children.Remove(m_ParametricCompoUC)
+ m_ParametricCompoUC = Nothing
+ End Sub
+
+
#End Region ' Methods
End Class
diff --git a/SceneButton/SceneButtonVM.vb b/SceneButton/SceneButtonVM.vb
index 7f053e6..1980841 100644
--- a/SceneButton/SceneButtonVM.vb
+++ b/SceneButton/SceneButtonVM.vb
@@ -400,8 +400,7 @@ Module SceneCmd
#Region "METHODS"
Public Sub Exec(Flag)
- Dim _SceneHostVM As SceneHostVM = DirectCast(Map.refSceneHostV.DataContext, SceneHostVM)
- Dim nVeinCtx As Integer = _SceneHostVM.MainScene.GetCtx()
+ Dim nVeinCtx As Integer = Map.refSceneHostVM.MainScene.GetCtx()
Select Case Flag
Case EGT_AUTOPAIR
EgtSetCurrentContext(nVeinCtx)
@@ -436,6 +435,10 @@ Module SceneCmd
ExportProjectNge()
Case "Delete"
SolidManagerM.Delete(Map.refSceneHostVM.m_nIdPart)
+ Case "Rettangolo"
+ Map.refSceneButtonV.LoadParametricCompoUC("Rettangolo" & ".lua")
+ Case "Poligono"
+ Map.refSceneButtonV.LoadParametricCompoUC("Poligono" & ".lua")
Case Else
Dim x As Boolean = False
End Select
diff --git a/SceneHost/SceneHostV.xaml.vb b/SceneHost/SceneHostV.xaml.vb
index 2a69485..4c192bf 100644
--- a/SceneHost/SceneHostV.xaml.vb
+++ b/SceneHost/SceneHostV.xaml.vb
@@ -1,6 +1,4 @@
-Imports EgtUILib
-Imports EgtUILib.EgtInterface
-Imports EgtWPFLib5
+Imports EgtUILib.EgtInterface
Public Class SceneHostV
diff --git a/SceneUserControl/SceneUserControlVM.vb b/SceneUserControl/SceneUserControlVM.vb
index 41711a7..41c529e 100644
--- a/SceneUserControl/SceneUserControlVM.vb
+++ b/SceneUserControl/SceneUserControlVM.vb
@@ -372,7 +372,6 @@ End Class
Public Class _CheckBoxParam
Inherits GenericParam
-
#Region "FIELDS & PROPERTIES"
Public Event CheckChanged(sender As Object, checked As Boolean)