Selasa, 18 Maret 2025

seting flatcam

Isolate routing
Tool diameter 0.003
Widt passws 2
Pas overlap 0.9
Combinan dicentang
Cur z 0.012
Travel 0.1
Feedeate 2
Multi dept centang 0.002


Pain area 
Cut z0.003
Tooldiameter 0.008
Painarea
Tool dianeter 0.01
Overlap 0.15

Senin, 10 Maret 2025

mach3

mach3 macro GetToolChangeStart(0)= untuk mengembalikan nilai coordinat awal saat toolchange m6 dijalankan x y z a b c dimulai dr x=0 contoh pada saat m6 dijalankan dia ada dikoordinat x 2 y 4 z 3 makan data ini akan disimpan code ("g0 x3 f10") = menjalnkan gcode dia akan bergerak ko x3 ActivateSignal (OUTPUT2) mengaktifkan sinyal otput high mematikannya DeactivateSignal(OUTPUT2) DoOEMButton(138)= fungsi ini seperti menekan tombol pada layar mach3 dengan mouse 138 disini no oembutton yang ada dalam tabel DoSpinCCW()= ini untuk mengaktifkan spindle dan berjaln ccw DoSpinStop() DoSpinCW() Sleep() GetABSPosition(0)= untuk mengambil nilai posisi mengembalikan type double bkan int 0 untuk x 1 y 2 z entah ini pengguna apa mesin belum jelas GetCurrentTool() mengembalikan no tool saat ini GetDRO(0)=return as double mengembalikan nilai dro dr x disini x 0 y 1 z 2 GetOEMDRO(800)=return as double mengembalikan nilai dro disini 800 menyimpan nilai dro sumbu x y 8001 z 802 SetVar(1234, 2.3456)=AS DOUBLE menyimpan nilai variable dialamat 1234 denagn nilai2.3456 disini bisa juga diakses dr gcode dengan kode ini misal g01 x #1234 GotoSafeZ()= move to save z IsActive(INPUT1)=boolean cek apakah input satu aktif IsEStop()=boolean apakh mach3 berhenti dengan e stop atau berhenti karena sudah selesai jika 1 berarti diberhentikan dengan estop IsMoving()=boo;ean apakah mesin sedang berjalan IsStopped() LoadFile(“C:\Mach3\Gcode\roadrunner.tap”) = load file gcode RunFile() jalankan MinX() =as double minimal x maksimal x maxX Message “Current tool is “ & GetCurrentTool()= menampilkan pesan Param3()=as double mengembalikan parameter dari m code misa M1200 P1.234 Q2.345 R3.456 disini param 3 adalh R2.345 param1 adalah p1.234 PlayWave(“C:\WINDOWS\Media\Windows XP Startup.wav”) memainkan file wav ProgramSafetyLockout() =boolean mengecek apakah safeti diaktifkan di config umum NextPos = Question("Enter next X position:") Code "G00 X" & NextPos = menjalankan x dengan dilaog SetFeedRate(123.456 / 60) set kecepatan feedrate sampai halaman 71

Senin, 04 September 2023

qtreadpyqt

import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QLabel, QPushButton, QVBoxLayout, QProgressBar from PyQt5.QtCore import QThread, QObject, pyqtSignal as Signal, pyqtSlot as Slot import time #The Worker class has two signals: #mewarisi dari sinyal qobjek #progress #completed #Kelas Pekerja akan memancarkan sinyal kemajuan #ketika sebagian pekerjaan telah #selesai dan sinyal selesai ketika pekerjaan telah selesai. class Worker(QObject): progress = Signal(int) completed = Signal(int) #Metode do_work() memiliki dekorator @Slot() (atau pyqtSlot). Dekorator @Slot() mengubah metode do_work() menjadi slot. #Dekorator @Slot() bersifat opsional. Namun, menghubungkan sinyal ke metode Python yang dihias dapat membantu mengurangi penggunaan memori dan membuatnya sedikit lebih cepat. #Metode do_work() menerima bilangan bulat. Ini mengulangi rentang mulai dari 1 hingga argumen. Dalam setiap iterasi, ia berhenti selama satu detik menggunakan time.sleep() dan memancarkan sinyal kemajuan dengan nilai saat ini menggunakan metode emit(). #Setelah selesai, metode do_work() memancarkan sinyal selesai dengan nilai nilai integer terakhir. #Berkomunikasi antara thread utama dan thread pekerja @Slot(int) def do_work(self): print ("halo") n=3 for i in range(1, n+1): time.sleep(1) self.progress.emit(5)#mengembalikan nilai v self.completed.emit(i)# mengembalikan nilai int v class MainWindow(QMainWindow): #First, create a signal in the MainWindow class: work_requested = Signal(int) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setGeometry(100, 100, 300, 50) self.setWindowTitle('QThread Demo') # setup widget self.widget = QWidget() layout = QVBoxLayout() self.widget.setLayout(layout) self.setCentralWidget(self.widget) self.progress_bar = QProgressBar(self) self.progress_bar.setValue(0) self.btn_start = QPushButton('Start', clicked=self.start) layout.addWidget(self.progress_bar) layout.addWidget(self.btn_start) #Second, create a Worker object and worker thread: self.worker = Worker() self.worker_thread = QThread() #Third, connect the progress and completed signal of the worker object with the methods of the main window: self.worker.progress.connect(self.update_progress)#jika terdapat sinyal progres akan dijalnkan f update progres self.worker.completed.connect(self.complete) #Fourth, connect the work_requested signal of the MainWindow with the do_work method of the worker object: self.work_requested.connect(self.worker.do_work)#konek kedalam funsi dowork self.work_requested.emit(2)#menjalankan tread 2x #Fifth, move the worker to the worker thread by calling the moveToThread() method: # move worker to the worker thread self.worker.moveToThread(self.worker_thread) #Finally, start the worker thread: # start the thread self.worker_thread.start() # show the window self.show() def start(self): #self.btn_start.setEnabled(False) n =100 self.progress_bar.setMaximum(n) self.work_requested.emit(2)#menjalankan tread 2x pengganti do work funsi diclass worker def update_progress(self, v):#nilai v diambil dari emit signal progres self.progress_bar.setValue(v) def complete(self, v): self.progress_bar.setValue(v) self.btn_start.setEnabled(True) if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() sys.exit(app.exec())

Jumat, 24 September 2021

mysql comand

perintah pada mysql 
agar bisa diakses dari lan komputer diluar server
tambahkan ip server karenq kalo belum ditambahkan akan di localhost saja
berikan ijin akses dari ip lan diluar hosrt dengan cara grant all on * .* to root@'iplankomptrluar' identified 'paswordroot'
hapus hak akses dengan drop user namauser@ipaksesnya
1.masuk database =mysql --username=root --password =amin1234
2 membuat databases baru= create database namadatabase
3 melihat database yang ada=show databases
4 masuk databases =use namadatabases
5 membuat table didatabase= create table tabelku(nama varchar(20) NOT NULL PRIMARI KEY,umur int(4));
5 melihat strukture table= describe namatable
6 masukan data ke table= insert into namatable values(isi1 ,isi2);
7 melihat isi table = select * from namatable
8 melihat isi table dari kolom tertentu = select namacolomnya from namatable 
9 melihat baris dengan no id atau nama ywng afa di komponennya = select * from tableku where id=3;
menambah user pada mysql
1 create user nama@localhost identified by 'passwordnya';
2 melihat hak akses pengguna =show grants for nama@localhost;
3 hak pada akun pengguna meliputi= 
a.all privelege hak istimewa bisa semuanya
b create bisa membuat database dan table
c drop bisa hapus database dan table
d delete hapus dari table saja
e insert masukan data ke table saja
f select membaca table saja
g update memperbarui isi table
3.memberikan hak
GRANT permission1, permission2 ON
 nama_database.nama_tabel TO
 'user_database'@'localhost';
4.
  • Memberikan semua hak istimewa ke akun pengguna untuk database tertentu :
    GRANT ALL PRIVILEGES ON nama_database.* TO 'user_database'@'localhost';
  • Memberikan semua hak istimewa ke akun pengguna untuk semua database :
    GRANT ALL PRIVILEGES ON *.* TO 
  • 'user_database'@'localhost';
  • Berikan semua hak istimewa ke akun pengguna untuk tabel tertentu dari database:
    GRANT ALL PRIVILEGES ON n
  • ama_database.nama_tabel TO 'user_database'@'localhost';
  • Berikan hanya beberapa hak istimewa ke akun pengguna untuk database tertentu:
    GRANT SELECT, INSERT, DELETE ON nama_database.* TO user_database@'localhost';
  • mencabut semua hak user DROP USER 'user_database'@'localhost'