Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
10 replies to this topic

#1 hhhhgggg

hhhhgggg

    biết dimedit

  • Members
  • PipPipPipPipPip
  • 393 Bài viết
Điểm đánh giá: 30 (tàm tạm)

Đã gửi 10 December 2008 - 05:23 PM

;================ 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 !
  • 0
Hoàng Giang

#2 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 11 December 2008 - 02:22 AM

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:
  • 0

#3 hhhhgggg

hhhhgggg

    biết dimedit

  • Members
  • PipPipPipPipPip
  • 393 Bài viết
Điểm đánh giá: 30 (tàm tạm)

Đã gửi 11 December 2008 - 07:57 AM

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 !
  • 0
Hoàng Giang

#4 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 11 December 2008 - 08:42 AM

Mình đã check lại rồi. File Lisp trên không có lỗi.
Bạn chạy thử lại đi.
  • 0

#5 hhhhgggg

hhhhgggg

    biết dimedit

  • Members
  • PipPipPipPipPip
  • 393 Bài viết
Điểm đánh giá: 30 (tàm tạm)

Đã gửi 11 December 2008 - 11:02 AM

Mình đã check lại rồi. File Lisp trên không có lỗi.
Bạn chạy thử lại đi.

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.c...Cong_coc_P6.rar
  • 0
Hoàng Giang

#6 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 11 December 2008 - 12:10 PM

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.c...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
  • 0

#7 hhhhgggg

hhhhgggg

    biết dimedit

  • Members
  • PipPipPipPipPip
  • 393 Bài viết
Điểm đánh giá: 30 (tàm tạm)

Đã gửi 11 December 2008 - 01:38 PM

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é !
  • 0
Hoàng Giang

#8 funnyzui

funnyzui

    biết vẽ arc

  • Members
  • PipPip
  • 49 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 10 September 2009 - 03:41 PM

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!
  • 0

#9 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 11 September 2009 - 01:52 AM

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))

  • 1

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#10 funnyzui

funnyzui

    biết vẽ arc

  • Members
  • PipPip
  • 49 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 04 January 2010 - 04:28 PM

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!
  • 0

#11 quocdung_acad

quocdung_acad

    biết zoom

  • Members
  • Pip
  • 13 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 04 January 2011 - 02:48 PM

đã phát hiện ra lỗi
fillter các đối tượng block có tên vkc_temp
explode nó ra
xong là scale bình thường lại :D
  • 0