Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
hhhhgggg

Lisp scale theo 1 trục hay bị lỗi, nhờ sửa giúp !!!!

Các bài được khuyến nghị

;================ Scale theo 1 truc ============

;Scale the mot chieu

(DEFUN EXCUTE()

(setq oldvalue (getvar "CMDECHO"))

(setvar "CMDECHO" 0)

(princ "Chon doi tuong can scale: ")

(setq ss (ssget))

(setq P0 (getpoint "\nChon diem goc: "))

(initget 1 "X Y X S")

(setq C (getkword "\nScale theo [X,Y,Z,Scale]? :"))

(setq hs (getreal "Cho biet he so scale: "))

(DELBLOCK "vkc_temp")

(CREATEBLOCK ss P0)

(Command "-Insert" "vkc_temp" C hs P0 "")

(setq dt (entlast))

(Command "Explode" dt)

(setvar "CMDECHO" oldvalue)

(princ)

)

(DEFUN CREATEBLOCK(ss P)

(command "-Block" "vkc_temp" P ss "")

)

 

(DEFUN DELBLOCK (bname)

(if (IsExistBlock bname)

(Command "-Purge" "B" bname "Y" "Y")

)

)

(DEFUN IsExistBlock(bname / kq)

(setq kq Nil)

(setq n (length LiBlk))

(setq i 0)

(while (< i n)

(if (= bname (nth i LiBlk))

(progn

(setq i n)

(setq kq T)

)

)

(setq i (1+ i))

)

kq

)

(DEFUN CREALIBLK (/ NL)

(setq LiBlk (List))

(setq NL (tblnext "BLOCK" T))

(while NL

(setq LiBlk (append LiBlk (list (cdr (assoc 2 NL)))))

(setq NL (tblnext "BLOCK"))

)

(setq LiBlk (Acad_strlsort LiBlk))

)

(DEFUN C:XSCALE()

(CREALIBLK)

(EXCUTE)

)

(DEFUN C:XSC()

(CREALIBLK)

(EXCUTE)

)

(princ "\nHoang Giang")

(princ)

 

Các Bác ạ, cái Lisp đó chạy hay bị lỗi lắm, nó báo lỗi khi chạy :

 

Cho biet he so scale: 0.83333

Yes or No, please.

; error: Function cancelled

Redefine it [yes, no] ?

 

Rùi nó ko chạy nữa, bác Pro nào cho em xin cái Lisp Scale theo 1 phương khác hoặc sửa giúp em với !

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Líp của bạn không có lỗi gì cả. Tuy nhiên, có chỉnh sửa đôi chút để Lisp chạy tốt hơn

;================ Scale theo 1 truc ============
;Scale the mot chieu
(DEFUN EXCUTE()
(setq oldvalue (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(princ "\nChon doi tuong can scale: ")
(setq ss (ssget))
(setq P0 (getpoint "\nChon diem goc: "))
(initget 1 "X Y X S")
(setq C (getkword "\nScale theo [X,Y,Z,Scale]? :"))
(setq hs (getreal "\nCho biet he so scale: "))
(DELBLOCK "vkc_temp")
(CREATEBLOCK ss P0) 
(Command "-Insert" "vkc_temp" C hs P0 "") 
(setq dt (entlast))
(Command "Explode" dt)
(setvar "CMDECHO" oldvalue)
(princ)
)
(DEFUN CREATEBLOCK(ss P)
(command "-Block" "vkc_temp" P ss "")
)

(DEFUN DELBLOCK (bname)
(if (IsExistBlock bname)
(Command "-Purge" "B" bname "Y" "Y") 
)
)
(DEFUN IsExistBlock(bname / kq)
(setq kq Nil)
(setq n (length LiBlk))
(setq i 0)
(while ((if (= bname (nth i LiBlk))
(progn
(setq i n)
(setq kq T)
) 
)
(setq i (1+ i))
)
kq
)
(DEFUN CREALIBLK (/ NL)
(setq LiBlk (List))
(setq NL (tblnext "BLOCK" T)) 
(while NL 
(setq LiBlk (append LiBlk (list (cdr (assoc 2 NL)))))
(setq NL (tblnext "BLOCK"))
)
(setq LiBlk (Acad_strlsort LiBlk))
)
(DEFUN C:XSCALE()
(CREALIBLK)
(EXCUTE)
)
(DEFUN C:XSC()
(CREALIBLK)
(EXCUTE)
)

:cheers:

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Líp của bạn không có lỗi gì cả. Tuy nhiên, có chỉnh sửa đôi chút để Lisp chạy tốt hơn

;================ Scale theo 1 truc ============
;Scale the mot chieu
(DEFUN EXCUTE()
(setq oldvalue (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(princ "\nChon doi tuong can scale: ")
(setq ss (ssget))
(setq P0 (getpoint "\nChon diem goc: "))
(initget 1 "X Y X S")
(setq C (getkword "\nScale theo [X,Y,Z,Scale]? :"))
(setq hs (getreal "\nCho biet he so scale: "))
(DELBLOCK "vkc_temp")
(CREATEBLOCK ss P0) 
(Command "-Insert" "vkc_temp" C hs P0 "") 
(setq dt (entlast))
(Command "Explode" dt)
(setvar "CMDECHO" oldvalue)
(princ)
)
(DEFUN CREATEBLOCK(ss P)
(command "-Block" "vkc_temp" P ss "")
)

(DEFUN DELBLOCK (bname)
(if (IsExistBlock bname)
(Command "-Purge" "B" bname "Y" "Y") 
)
)
(DEFUN IsExistBlock(bname / kq)
(setq kq Nil)
(setq n (length LiBlk))
(setq i 0)
(while (< i n)
(if (= bname (nth i LiBlk))
(progn
(setq i n)
(setq kq T)
) 
)
(setq i (1+ i))
)
kq
)
(DEFUN CREALIBLK (/ NL)
(setq LiBlk (List))
(setq NL (tblnext "BLOCK" T)) 
(while NL 
(setq LiBlk (append LiBlk (list (cdr (assoc 2 NL)))))
(setq NL (tblnext "BLOCK"))
)
(setq LiBlk (Acad_strlsort LiBlk))
)
(DEFUN C:XSCALE()
(CREALIBLK)
(EXCUTE)
)
(DEFUN C:XSC()
(CREALIBLK)
(EXCUTE)
)

:cheers:

Nó vẫn báo lỗi như vậy bác Tuệ à ! Cái này nó còn do File CAD nữa. Nhưng rất hay bị lỗi như vậy. Mong bác nào sửa giúp em với !

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Bác tải File này về chạy Lisp XSC sẽ thấy lỗi !!! Và rất nhiều file bị lỗi như vậy ?

http://www.cadviet.com/upfiles/Cong_coc_P6.rar

 

 

Hãy tìm chuỗi "vkc_temp" và sửa lại thành "VKC_TEMP" trong source code trên

 

Võ Kiên Cường

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Hãy tìm chuỗi "vkc_temp" và sửa lại thành "VKC_TEMP" trong source code trên

 

Võ Kiên Cường

OK ! cảm ơn bạn nhiều nhé, mình sửa theo bạn, nó chạy tốt rùi .Cảm ơn nhiều nhé !

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Xin chào các bạn.

Topic này cũng lâu rồi, và sau 1 thời gian dùng lisp này mình xin cám ơn các bạn trên cadviet.com đã tạo ra lisp này. Bản thân mình sau khi dùng nhiều lần, thấy lisp này còn thiếu 1 chức năng là nhớ lại hệ số scale mình vừa sử dụng trước đó. Chức năng này tương tự lệnh scale trong CAD. Mình thấy chức năng này cũng cần thiết, đỡ phải đánh lại nhiều lần cùng 1 hệ số scale. Rất mong các anh chị em biết lisp có thể edit lại.

Xin cám ơn mọi người!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Xin chào các bạn.

Topic này cũng lâu rồi, và sau 1 thời gian dùng lisp này mình xin cám ơn các bạn trên cadviet.com đã tạo ra lisp này. Bản thân mình sau khi dùng nhiều lần, thấy lisp này còn thiếu 1 chức năng là nhớ lại hệ số scale mình vừa sử dụng trước đó. Chức năng này tương tự lệnh scale trong CAD. Mình thấy chức năng này cũng cần thiết, đỡ phải đánh lại nhiều lần cùng 1 hệ số scale. Rất mong các anh chị em biết lisp có thể edit lại.

Xin cám ơn mọi người!

Bạn thay dòng: (setq hs (getreal "\nCho biet he so scale: "))

 

Bằng đoạn sau:

 

(if (not hs)

(setq hs1 (getreal (strcat "\n Nhap he so scale: ")))

(setq hs1 (getreal (strcat "\n He so scale < " (rtos hs 2 5) " >: "))))

(if hs1 (setq hs hs1))

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Bạn thay dòng: (setq hs (getreal "\nCho biet he so scale: "))

 

Bằng đoạn sau:

 

(if (not hs)

(setq hs1 (getreal (strcat "\n Nhap he so scale: ")))

(setq hs1 (getreal (strcat "\n He so scale < " (rtos hs 2 5) " >: "))))

(if hs1 (setq hs hs1))

 

cám ơn bạn Thaistreetz. Vì ko thấy nút thanks!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

Đăng nhập để thực hiện theo  

×