Đến nội dung


Hình ảnh
- - - - -

Nhờ Các Cao Thủ Giúp Lisp!


  • Please log in to reply
14 replies to this topic

#1 nhunha_pro279

nhunha_pro279

    biết zoom

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

Đã gửi 29 November 2016 - 07:56 PM

Có cách để lấy hai hoặc nhiều số 0 sau dấu phẩy của số thập phân trong autolisp không. Ví dụ mình có câu lệnh 

(atof (cdr (assoc 1 (entget (car (entsel "\nChọn cao độ tim: ")))))). Giá trị cao độ được chọn là 186.000m nhưng giá trị trả về chỉ là 186.0. Mong các bác cao thủ chỉ giúp. Thanks.

 


  • 0

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 29 November 2016 - 09:13 PM

Đã biết atof sao lại bỏ qua rtos?


  • 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 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 29 November 2016 - 10:30 PM

 

Khi em chạy lệnh thì được giá trị như dưới
(atof (cdr (assoc 1 (entget (car (entsel "\nChon cao do tim: "))))))
186.0
Ý em muốn hỏi có thể lồng các hàm vào nhau như thế nào để lấy được giá trị: 186.00
Nhờ Bác Doan Van Ha chỉ giáo.

 

(rtos (atof (cdr (assoc 1 (entget (car (entsel "\nChon cao do tim: ")))))) 2 2)


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


#4 nhunha_pro279

nhunha_pro279

    biết zoom

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

Đã gửi 29 November 2016 - 10:31 PM

Khi em đánh câu lệnh thì sẽ trả về giá trị như sau:

$ (atof (cdr (assoc 1 (entget (car (entsel "\nChọn cao độ tim: "))))))
186.0

Có cách nào lồng các hàm vào nhau để lấy được giá trị: 186.00 không bác Đoàn Văn Hà?


  • 0

#5 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 29 November 2016 - 10:32 PM

Khi em đánh câu lệnh thì sẽ trả về giá trị như sau:

$ (atof (cdr (assoc 1 (entget (car (entsel "\nChọn cao độ tim: "))))))
186.0

Có cách nào lồng các hàm vào nhau để lấy được giá trị: 186.00 không bác Đoàn Văn Hà?

Tôi vừa trả lời ở trên


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


#6 nhunha_pro279

nhunha_pro279

    biết zoom

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

Đã gửi 29 November 2016 - 10:34 PM

Khi em chạy dòng lệnh như của bác thì trả về giá trị: (rtos (atof (cdr (assoc 1 (entget (car (entsel "\nChọn cao độ tim: ")))))) 2 2)

 là: 186
Trả về chuỗi bác ạ.

  • 0

#7 nhunha_pro279

nhunha_pro279

    biết zoom

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

Đã gửi 29 November 2016 - 10:37 PM

Bác cho em xin địa chỉ email được không?


  • 0

#8 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 29 November 2016 - 11:00 PM

 

Khi em chạy dòng lệnh như của bác thì trả về giá trị: (rtos (atof (cdr (assoc 1 (entget (car (entsel "\nChọn cao độ tim: ")))))) 2 2)

 là: 186
Trả về chuỗi bác ạ.

 

Ờ, chuỗi. Khi là chuỗi mới có ý nghĩa, chứ trả về real thì 2.0 và 2.00 khác nhau điều gì mà bạn phải cần?


  • 0

* 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.


#9 nhunha_pro279

nhunha_pro279

    biết zoom

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

Đã gửi 30 November 2016 - 07:39 AM

Thật ra thì không khác nhau bác ạ. Nhưng có em lisp tính cao độ khi pick tính các điểm cao độ thì nó thường làm tròn số. Ví dụ nếu là cao độ 186.00 thì khi pick kết quả sẽ là 186 nên khi trình bày trong bản vẽ sẽ không được đẹp. Đó là lý do em cần chứ về bản chất thì không có gì khác nhau ạ.


  • 0

#10 Danh Cong

Danh Cong

    biết lệnh linetype

  • Members
  • PipPipPipPip
  • 242 Bài viết
Điểm đánh giá: 40 (tàm tạm)

Đã gửi 30 November 2016 - 08:15 AM

Thật ra thì không khác nhau bác ạ. Nhưng có em lisp tính cao độ khi pick tính các điểm cao độ thì nó thường làm tròn số. Ví dụ nếu là cao độ 186.00 thì khi pick kết quả sẽ là 186 nên khi trình bày trong bản vẽ sẽ không được đẹp. Đó là lý do em cần chứ về bản chất thì không có gì khác nhau ạ.

 

Bác #DoanVanHa  trả lời đúng cho bạn rồi. Vấn đề là bạn chưa hiểu về lisp nên ko lường được kết quả?

Nghe bạn trình bày thì có vẻ bạn định tạo 1 kết quả ở dạng text có đúng không.

 

Vậy gõ thử vào cad: "DIMZIN" nhập giá trị 0. Rồi thử lại lisp của bạn xem thế nào nhé :) :)


  • 0

             ***  Vô lo - Vô nghĩ - Vô sầu hận  ***

***  Chẳng thương - Chẳng giận - Chẳng đau lòng  ***


#11 nhunha_pro279

nhunha_pro279

    biết zoom

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

Đã gửi 30 November 2016 - 08:44 AM

Cảm ơn bạn Danh Công nhé! Mình đã làm được. Bạn cho mình hỏi "DIMZIN" nhập giá trị 0 có ý nghĩa như thế nào được không ạ?


  • 0

#12 Danh Cong

Danh Cong

    biết lệnh linetype

  • Members
  • PipPipPipPip
  • 242 Bài viết
Điểm đánh giá: 40 (tàm tạm)

Đã gửi 30 November 2016 - 09:09 AM

Bạn cứ hiểu nôm na như sau:

 

0   : Không làm tròn số.

4   : loại bỏ số 0 ở đầu:                    Ví dụ 0.500  thành   .500

8   : loại bỏ số 0 ở cuối.                    Ví dụ 0.500 thành    0.5

12  : loại bỏ số 0 ở cả đầu lẫn cuối:   Ví dụ 0.500 thành     .5


  • 0

             ***  Vô lo - Vô nghĩ - Vô sầu hận  ***

***  Chẳng thương - Chẳng giận - Chẳng đau lòng  ***


#13 nhunha_pro279

nhunha_pro279

    biết zoom

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

Đã gửi 30 November 2016 - 04:02 PM

Cảm ơn bạn Danh Công!


  • 0

#14 nhunha_pro279

nhunha_pro279

    biết zoom

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

Đã gửi 02 December 2016 - 12:49 PM

Các bác ơi có đoạn autolisp nào chia được đoạn thẳng ra thành nhiều đoạn có chiều dài khác nhau không (Các đoan thẳng được chia được giới hạn bởi hai đường thằng cắt ngang đoạn thằng đó). Đây là file hình ảnh mình minh họa trong autocad https://drive.google.com/drive/recent


  • 0

#15 minhquang_skynet

minhquang_skynet

    Chưa sử dụng CAD

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

Đã gửi 02 December 2016 - 08:06 PM

các bác cho em hỏi lisp cad dùng trong những ngành công việc nào ạ , vì e chưa thạo cho lắm mong các bác chỉ giúp ... vd: với ngành công nghiệp xưởng có cần thiết phải dùng ko ạ 


  • 0