Code: Select all
(defun c:wire-edm ()
(setq program-number (getint "\nUnesite broj programa (4 cifre): "))
(setq use-r (getstring "\nKoristiti R za lukove? (Da/Ne): "))
(setq use-r (eq (strcase use-r) "DA"))
(setq contours (ssget '((0 . "LWPOLYLINE"))))
(setq output-file (open "wire_edm_program.cnc" "w"))
(write-line "%" output-file)
(write-line (strcat "O" (itoa program-number)) output-file)
(write-line "N1 G90" output-file)
(write-line "N2 G92 X0 Y0" output-file)
(write-line "N3 G41" output-file)
(setq i 4)
(setq contour-count (sslength contours))
(repeat contour-count
(setq contour-entity (ssname contours (setq contour-count (1- contour-count))))
(setq contour-data (entget contour-entity))
(setq vertices (vlax-curve-getCoordinates contour-entity))
(setq bulge-list (vlax-curve-getBulges contour-entity))
(setq start-pt (car vertices))
(setq start-x (car start-pt))
(setq start-y (cadr start-pt))
(if (or (/= start-x 0) (/= start-y 0))
(progn
(write-line (strcat "N" (itoa i) " G00 X" (rtos start-x 2 4) " Y" (rtos start-y 2 4)) output-file)
(write-line (strcat "N" (itoa (setq i (1+ i))) " M60") output-file)
)
)
(setq prev-pt nil)
(foreach vertex vertices
(setq x (car vertex))
(setq y (cadr vertex))
(if prev-pt
(progn
(setq bulge (nth (vl-position prev-pt vertices) bulge-list))
(if (/= bulge 0.0)
(progn
(setq start-pt prev-pt))
(setq end-pt vertex))
(setq center (vlax-curve-getPointAtBulge contour-entity (vl-position prev-pt vertices))))
(setq radius (distance center start-pt))
(if use-r
(write-line (strcat "N" (itoa i) " G02 X" (rtos (car end-pt) 2 4) " Y" (rtos (cadr end-pt) 2 4) " R" (rtos radius 2 4)) output-file)
(write-line (strcat "N" (itoa i) " G02 X" (rtos (car end-pt) 2 4) " Y" (rtos (cadr end-pt) 2 4) " I" (rtos (- (car center) (car start-pt)) 2 4) " J" (rtos (- (cadr center) (cadr start-pt)) 2 4)) output-file)
)
(setq i (1+ i))
)
(progn
(write-line (strcat "N" (itoa i) " G01 X" (rtos x 2 4) " Y" (rtos y 2 4)) output-file)
(setq i (1+ i))
)
)
)
)
(setq prev-pt vertex))
)
(if (> contour-count 1)
(progn
(write-line (strcat "N" (itoa i) " M50") output-file)
(setq i (1+ i))
(setq next-start-pt (car (vlax-curve-getCoordinates (ssname contours (1- contour-count)))))
(write-line (strcat "N" (itoa i) " G00 X" (rtos (car next-start-pt) 2 4) " Y" (rtos (cadr next-start-pt) 2 4)) output-file)
(write-line (strcat "N" (itoa (setq i (1+ i))) " M60") output-file)
)
)
)
(write-line (strcat "N" (itoa i) " M02") output-file)
(write-line "%" output-file)
(close output-file)
(princ "\nG-code generisan i sacuvan u 'wire_edm_program.cnc'")
)
Can somebody help me