Interfaccia Minimale KFlop (studio)

Sezione riservata ai sofware sviluppati in proprio
Rispondi
Avatar utente
walgri
Moderator
Moderator
Messaggi: 4716
Iscritto il: giovedì 13 gennaio 2011, 18:37
Località: Cagliari

Interfaccia Minimale KFlop (studio)

Messaggio da walgri » mercoledì 14 ottobre 2015, 1:00

Da tanto tempo avevo intenzione di studiare più nel dettaglio l'API di programmazione della KFlop e solo da pochissimo ho iniziato con la libreria che Dynomotion mette a disposizione per .Net e il mio fidato (Iron)Python.

Ecco un primo test:
IMK_Screenshot.jpg
Due soli bottoni: quello per la scelta del file e quello che da inizio all'interpretazione, più una ovvia progressbar :lol:

Fatte queste prove, comincio a pensare davvero di poter scrivere la mia personale interfaccia grafica per la KFlop, vedrò in seguito quali strumenti/linguaggio effettivamente utilizzare.

Questo il codice del programma (richiede una installazione KFlop, anche senza scheda collegata, e Ironpython 2.7):

Codice: Seleziona tutto

import clr
clr.AddReferenceToFileAndPath("""C:\KMotion433l\KMotion\Release\KMotion_dotNet.dll""")
from KMotion_dotNet import KM_Controller

clr.AddReference('System.Windows.Forms')
clr.AddReference('System.Drawing')
from System.Windows.Forms import Application
import System.Drawing
import System.Windows.Forms

from System.Drawing import *
from System.Windows.Forms import *

class MainForm(Form):
	def __init__(self):
		self.InitializeComponent()
		
		self.num_lines = 0
		self.km = KM_Controller()
		self.km.CoordMotion.IsSimulation = True
		print "KMOtion found:", self.km.CheckConnected()
		#Setting handlers
		self.km.CoordMotion.Interpreter.InterpreterCompleted += self.InterpreterCompletedHandler
		self.km.CoordMotion.Interpreter.InterpreterStatusUpdated += self.InterpreterStatusHandler
		
		print "IsReady:", self.km.CheckIsReady()
		print "Is Sim:", self.km.CoordMotion.IsSimulation
		print "Loaded:", self.km.CoordMotion.Loaded

	def InterpreterStatusHandler(self, *args):
		print "Line:", int(args[0]), "  [", int(float(args[0]) / self.num_lines * 100) , " %]"
		self._progressBar1.Value = int(float(args[0]) / self.num_lines * 100)
		
	def InterpreterCompletedHandler(self, *args):
		print "Completato"
		self._progressBar1.Value = 100

	def InitializeComponent(self):
		self._button1 = System.Windows.Forms.Button()
		self._button2 = System.Windows.Forms.Button()
		self._textBox1 = System.Windows.Forms.TextBox()
		self._progressBar1 = System.Windows.Forms.ProgressBar()
		self._openFileDialog1 = System.Windows.Forms.OpenFileDialog()
		self.SuspendLayout()
		# 
		# button1
		# 
		self._button1.Location = System.Drawing.Point(12, 10)
		self._button1.Name = "button1"
		self._button1.Size = System.Drawing.Size(83, 26)
		self._button1.TabIndex = 0
		self._button1.Text = "GCode..."
		self._button1.UseVisualStyleBackColor = True
		self._button1.Click += self.Button1Click
		# 
		# button2
		# 
		self._button2.Location = System.Drawing.Point(12, 44)
		self._button2.Name = "button2"
		self._button2.Size = System.Drawing.Size(83, 26)
		self._button2.TabIndex = 1
		self._button2.Text = "... fresalo !"
		self._button2.UseVisualStyleBackColor = True
		self._button2.Click += self.Button2Click
		# 
		# textBox1
		# 
		self._textBox1.Location = System.Drawing.Point(101, 14)
		self._textBox1.Name = "textBox1"
		self._textBox1.Size = System.Drawing.Size(325, 20)
		self._textBox1.TabIndex = 2
		# 
		# progressBar1
		# 
		self._progressBar1.Location = System.Drawing.Point(101, 44)
		self._progressBar1.Name = "progressBar1"
		self._progressBar1.Size = System.Drawing.Size(324, 25)
		self._progressBar1.TabIndex = 3
		# 
		# openFileDialog1
		# 
		self._openFileDialog1.FileName = "openFileDialog1"
		self._openFileDialog1.ShowReadOnly = True
		# 
		# MainForm
		# 
		self.ClientSize = System.Drawing.Size(438, 79)
		self.Controls.Add(self._progressBar1)
		self.Controls.Add(self._textBox1)
		self.Controls.Add(self._button2)
		self.Controls.Add(self._button1)
		self.Name = "MainForm"
		self.Text = "Interfaccia Minimale KFlop"
		self.ResumeLayout(False)
		self.PerformLayout()
		
	def Button1Click(self, sender, e):
		if self._openFileDialog1.ShowDialog() == DialogResult.OK:
			self._textBox1.Text = self._openFileDialog1.FileName
			f = open(self._openFileDialog1.FileName, "r")
			self.num_lines = sum(1 for line in f)
			f.close()
		

	def Button2Click(self, sender, e):
		self.km.CoordMotion.Interpreter.Interpret(self._textBox1.Text)

Application.EnableVisualStyles()
form = MainForm()
Application.Run(form)
Ovviamente, non sono responsabile se lo modificate e lo utilizzate fracassandovi macchina, denti o peggio :mrgreen:

... continua
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
...stop chasing shadows, just enjoy the ride.
Aìna pantografoTelemetria per KFlopBlenderCAM STL + DXF

Avatar utente
Pedro
Moderator
Moderator
Messaggi: 6286
Iscritto il: domenica 6 aprile 2008, 18:44
Località: Roma

Re: Interfaccia Minimale KFlop (studio)

Messaggio da Pedro » mercoledì 14 ottobre 2015, 5:57

=D>

Bellissimo, minimale e funzionale
"Ho controllato molto approfonditamente," disse il computer, "e questa è sicuramente la risposta. Ad essere sinceri, penso che il problema sia che voi non abbiate mai saputo veramente qual è la domanda."

Avatar utente
walgri
Moderator
Moderator
Messaggi: 4716
Iscritto il: giovedì 13 gennaio 2011, 18:37
Località: Cagliari

Re: Interfaccia Minimale KFlop (studio)

Messaggio da walgri » mercoledì 14 ottobre 2015, 8:36

:D grazie Pedro !
Questo è un giochetto, ora si fa sul serio ! Quasi non riesco a crederci !
...stop chasing shadows, just enjoy the ride.
Aìna pantografoTelemetria per KFlopBlenderCAM STL + DXF

Avatar utente
Pedro
Moderator
Moderator
Messaggi: 6286
Iscritto il: domenica 6 aprile 2008, 18:44
Località: Roma

Re: Interfaccia Minimale KFlop (studio)

Messaggio da Pedro » mercoledì 14 ottobre 2015, 9:11

Giochetto: beh, intanto si prova che il sistema di dialogo funzioni, cosa da non poco conto e poi si procede con il resto
"Ho controllato molto approfonditamente," disse il computer, "e questa è sicuramente la risposta. Ad essere sinceri, penso che il problema sia che voi non abbiate mai saputo veramente qual è la domanda."

Rispondi

Torna a “Home Made”