Đến nội dung


Hình ảnh
- - - - -

Xin sửa dùm cái lisp


  • Please log in to reply
5 replies to this topic

#1 halen

halen

    biết zoom

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

Đã gửi 18 January 2010 - 10:40 AM

Em mới học viết lisp lên viết 1 cái lisp đơn gian như thế này: tính diện tích bằng cách chọn đối tượng và xuất kết quả ra file text. Lisp có nội dung:
(defun c:are( / sel ent dientich)
(setq sel (entsel "\nHay chon doi tuong: "))
(setq ent (car sel))
(command ".area" "o" ent)
(setq dientich (getvar "area"))
(princ "Dien tich la: ")
(princ dientich)
(command "osmode" os)
(princ (* s dientich))
(setq diemdat (getpoint "\nDiem dat KQ"))
(command "text" diemdat "2.2" "0" (setq kq (rtos (dientich) 2 3)))
(princ)
)

Vấn đề của em ở đây là nó không xuất được kết quả ra text mong các bác giải thích dùm. Thank
  • 0

#2 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1435 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 18 January 2010 - 11:27 AM

Em mới học viết lisp lên viết 1 cái lisp đơn gian như thế này: tính diện tích bằng cách chọn đối tượng và xuất kết quả ra file text. Lisp có nội dung:
(defun c:are( / sel ent dientich)
(setq sel (entsel "\nHay chon doi tuong: "))
(setq ent (car sel))
(command ".area" "o" ent)
(setq dientich (getvar "area"))
(princ "Dien tich la: ")
(princ dientich)
(command "osmode" os)
(princ (* s dientich))
(setq diemdat (getpoint "\nDiem dat KQ"))
(command "text" diemdat "2.2" "0" (setq kq (rtos (dientich) 2 3)))
(princ)
)
Vấn đề của em ở đây là nó không xuất được kết quả ra text mong các bác giải thích dùm. Thank

- kiểu của (setq dientich (getvar "area")) là Real, nên truơc khi dùng lệnh Princ phải đổi sang kiểu String.
- biến s trong (princ (* s dientich)) chưa khai báo
Sorry post nhầm code. Update date='Jan 18 2010, 14:35'
Lisp của bạn đây :
(defun c:are( / sel ent dientich diemdat)
(setq sel (entsel "\nHay chon doi tuong: "))
(setq ent (car sel))
(command ".area" "o" ent)
(setq dientich (rtos (getvar "area") 2 3))
(princ "\nDien tich la: ")
(princ dientich)
;;;(command "osmode" os)
;;;(princ (* s dientich))
(setq diemdat (getpoint "\nDiem dat KQ"))
(command "text" diemdat "2.2" "0" dientich)
(princ)
)

  • 0

#3 halen

halen

    biết zoom

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

Đã gửi 18 January 2010 - 02:01 PM

- kiểu của (setq dientich (getvar "area")) là Real, nên truơc khi dùng lệnh Princ phải đổi sang kiểu String.
- biến s trong (princ (* s dientich)) chưa khai báo
Lisp của bạn đây :

(defun c:are( / sel ent dientich kq diemdat)
(setq sel (entsel "\nHay chon doi tuong: "))
(setq ent (car sel))
(command ".area" "o" ent)
(type (getvar "area"))
(princ "Dien tich la: ")
(princ (setq kq (rtos dientich 2 3)))
;;;(command "osmode" os)
;;;(princ (* s dientich))
(setq diemdat (getpoint "\nDiem dat KQ"))
(command "text" diemdat "2.2" "0" kq)
(princ)
)

Cảm ơn anh Gia bach rất nhiều. Có những người như anh thì những người mới bật bẽ viết như bọn em mới lớn được. Xin cảm ơn anh. Chúc anh năm mới mạnh khỏe và thành đạt.
  • 0

#4 halen

halen

    biết zoom

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

Đã gửi 18 January 2010 - 02:33 PM

- kiểu của (setq dientich (getvar "area")) là Real, nên truơc khi dùng lệnh Princ phải đổi sang kiểu String.
- biến s trong (princ (* s dientich)) chưa khai báo
Lisp của bạn đây :

(defun c:are( / sel ent dientich kq diemdat)
(setq sel (entsel "\nHay chon doi tuong: "))
(setq ent (car sel))
(command ".area" "o" ent)
;(type (getvar "area"))
(princ "Dien tich la: ")
(princ (setq kq (rtos dientich 2 3)))
;;;(command "osmode" os)
;;;(princ (* s dientich))
(setq diemdat (getpoint "\nDiem dat KQ"))
(command "text" diemdat "2.2" "0" kq)
(princ)
)

Anh ơi em download về kiểm tra thử cái lisp anh sửa cho em nó báo nỗi như sau, nguyên văn nhé:
Command: ARE
Hay chon doi tuong: .area
Specify first corner point or [Object/Add/Subtract]: o
Select objects:
Area = 106.4594, Length = 42.9476
Command: Dien tich la: ; error: bad argument type: numberp: nil
Anh kiểm tra lại giúp em cái ah.
  • 0

#5 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1435 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 18 January 2010 - 02:40 PM

Anh ơi em download về kiểm tra thử cái lisp anh sửa cho em nó báo nỗi như sau, nguyên văn nhé:
Command: ARE
Hay chon doi tuong: .area
Specify first corner point or [Object/Add/Subtract]: o
Select objects:
Area = 106.4594, Length = 42.9476
Command: Dien tich la: ; error: bad argument type: numberp: nil
Anh kiểm tra lại giúp em cái ah.

Sorry halen.
post nhầm code. Bạn lấy lại code ở bài trên.
  • 0

#6 halen

halen

    biết zoom

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

Đã gửi 18 January 2010 - 02:45 PM

Sorry halen.
post nhầm code. Bạn lấy lại code ở bài trên.

Cảm ơn anh. em test rồi, chạy ok.
  • 0