Đến nội dung


Hình ảnh
- - - - -

[Nhờ giúp đỡ] Hàm ssname bị lỗi


  • Please log in to reply
4 replies to this topic

#1 duy267

duy267

    biết vẽ point

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

Đã gửi 07 March 2012 - 09:44 PM

Mình xài cad 2007. Khôn biết bị sao mà máy không nhận ra hàm ssname mặc dù các hàm ss khác vẫn nhận ra (ssnamex, ssget, sslength...). Vì vậy tất cả các lisp liên quan đến hàm ssname đều không thể xài được (trước đó vẫn xài bình thường). Nhờ anh em trên diễn đàn chỉ nguyên nhân và cách khắc phục. Xin cảm ơn.
Command: (setq ss (ssget))
Select objects: Specify opposite corner: 3 found
Select objects: <Selection set: 52>
Command: (setq ssname (ssname ss 0))
; error: bad function: <Entity name: 7efccb58>
  • 0

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 07 March 2012 - 09:56 PM

Mình xài cad 2007. Khôn biết bị sao mà máy không nhận ra hàm ssname mặc dù các hàm ss khác vẫn nhận ra (ssnamex, ssget, sslength...). Vì vậy tất cả các lisp liên quan đến hàm ssname đều không thể xài được (trước đó vẫn xài bình thường). Nhờ anh em trên diễn đàn chỉ nguyên nhân và cách khắc phục. Xin cảm ơn.
Command: (setq ss (ssget))
Select objects: Specify opposite corner: 3 found
Select objects: <Selection set: 52>
Command: (setq ssname (ssname ss 0))
; error: bad function: <Entity name: 7efccb58>

Mình xài cad 2007. Khôn biết bị sao mà máy không nhận ra hàm ssname mặc dù các hàm ss khác vẫn nhận ra (ssnamex, ssget, sslength...). Vì vậy tất cả các lisp liên quan đến hàm ssname đều không thể xài được (trước đó vẫn xài bình thường). Nhờ anh em trên diễn đàn chỉ nguyên nhân và cách khắc phục. Xin cảm ơn.
Command: (setq ss (ssget))
Select objects: Specify opposite corner: 3 found
Select objects: <Selection set: 52>
Command: (setq ssname (ssname ss 0))
; error: bad function: <Entity name: 7efccb58>

Liệu bạn có cài sẵn lisp nào khi cad khởi động, mà nó có chứa hàm do người dùng định nghĩa lại trùng tên ssname không?
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#3 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 07 March 2012 - 10:21 PM

Lý do : Bạn duy267 đặt tên biến ssname trùng với tên hàm ssname
Chạy với lần đầu tiên :
Biến ssname nhận kết quả là <Entity name: 7efccb58> -> Bạn đã thay đổi cấu trúc của hàm ssname
khi chạy với lần thứ 2 thì (ssname ss 0) -> sẽ báo lỗi ; error: bad function: <Entity name: 7efccb58>

Giai quyết : Tránh đặt trùng tên biến với tên hàm. Nếu bạn đã lỡ bị trường hợp này, bạn khởi động lại CAD nhé
  • 2

#4 LoveLisp

LoveLisp

    biết lệnh extend

  • Members
  • PipPipPip
  • 195 Bài viết
Điểm đánh giá: 20 (tàm tạm)

Đã gửi 08 March 2012 - 11:10 AM

Đây là một lỗi sơ đẳng của người lập trình, và lỗi này ... thường có nhiều người mắc! :)

Không riêng gì AutoLisp, tất cả các ngôn ngữ lập trình khác cũng vậy, nó trao đổi với lập trình viên thông qua các từ khóa (key word). Nếu dùng Visual Lisp để viết thì bạn sẽ thấy: Khi gõ đúng từ khóa thì nó sẽ chuyển thành màu xanh da trời.

Đụng đến từ khóa là điều cấm kỵ, bạn chỉ được sử dụng mà không nên thay đổi nó dù bất kỳ lý do gì. Chẳng hạn, Autolisp định nghĩa sẵn số PI (cũng là tên từ khóa). Nếu bạn gán nó một số khác thì khi cần tính diện tích - chu vi đường tròn, bạn sẽ gặp nhiều rắc rối.
  • 1

#5 duy267

duy267

    biết vẽ point

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

Đã gửi 09 March 2012 - 06:45 PM

Rất cảm ơn các bác đã giúp đỡ. Em sẽ rút kinh nghiệm sau lần này.
  • 0