Đến nội dung


Hình ảnh
- - - - -

Bài Toán Khó Nhờ Các Pro Autolisp Giải Giúp


  • Please log in to reply
6 replies to this topic

#1 auto89

auto89

    biết pan

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

Đã gửi 27 July 2016 - 08:40 PM

em có khối hình hộp kích thước : a  x t x r và vát  cạnh xung quanh khối hộp là n x 45 độ, em muốn thể hiện hình này lên 3 hình chiếu: thẳng góc, cạnh, bằng. khi gõ lệnh em nhập giá trị thực của: a, t, r và n  và nó tự đông xuất ra 3 hình chiếu của khối hộp có kích thước như vậy.

- cho em hỏi bài toán này có lập autolisp được không

-nếu lập được pro nào rảnh thì giúp em với nhé.  bản vẽ của em nó là thế này:http://www.cadviet.c..._khoi_hop_3.pdf

Xin cám ơn mọi người đã ghé qua xem.


  • 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 27 July 2016 - 09:39 PM

Mấy cái này Autolisp làm cái rẹt, nhưng nếu bạn đưa ra được lý do thuyết phục thì khả dĩ.

(Xem thêm ở chữ ký của tôi, ý đầu tiên. Và đó cũng lý do để ai đó có thể giúp bạn hay không)


  • 2

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

auto89

    biết pan

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

Đã gửi 28 July 2016 - 06:11 AM

cám ơn bác Doan Van Ha tuy bài toán này  vẽ rất đơn giản nhưng mà nó hay được lặp lại và nó cũng là bài toán mình mới học để tập viết, ý tưởng của mình thế này . định nghĩa số thực t,a,r,n và xác định tọa độ các điểm trên hình chiếu theo t, a, r, n và dung lệnh line để nối các điểm của từng hình chiếu lại với nhau, nhưng ý tưởng này của mình đã bị that bại thảm hại ở ngay dòng nối  thử line đầu tiên trên hình chiếu bang :​

 ( defun c : ctb ( / t a r n ))

(setq t ( getreal ( "/ngia tri cua t :")))

(setq a ( getreal ( "/ngia tri cua a:")))

(setq r (getreal ( "/ngia tri cua r :")))

(setq ​n (getreal ( "/ngia tri cua n :")))

(command "line" "0,0,0" "t,0,0" "")

(princ))

bác nào biết chỉ dùm em với ạ


  • 1

#4 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 28 July 2016 - 06:56 AM

cám ơn bác Doan Van Ha tuy bài toán này  vẽ rất đơn giản nhưng mà nó hay được lặp lại và nó cũng là bài toán mình mới học để tập viết, ý tưởng của mình thế này . định nghĩa số thực t,a,r,n và xác định tọa độ các điểm trên hình chiếu theo t, a, r, n và dung lệnh line để nối các điểm của từng hình chiếu lại với nhau, nhưng ý tưởng này của mình đã bị that bại thảm hại ở ngay dòng nối  thử line đầu tiên trên hình chiếu bang :​

 ( defun c : ctb ( / t a r n ))

(setq t ( getreal ( "/ngia tri cua t :")))

(setq a ( getreal ( "/ngia tri cua a:")))

(setq r (getreal ( "/ngia tri cua r :")))

(setq ​n (getreal ( "/ngia tri cua n :")))

(command "line" "0,0,0" "t,0,0" "")

(princ))

bác nào biết chỉ dùm em với ạ

- Đỏ: khó tin, vì đây chỉ là 1 bài tập vẽ kỹ thuật.

- Xanh: nếu tập viết thì bí chỗ nào hỏi chỗ đó, đừng y/c kiểu này.

- Cách vẽ line từ điểm A(x1,y1,z1) đến điểm B(x2,y2,z2):

(command "line" (list x1 y1 z1) (list x2 y2 z2) "")


  • 2

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


#5 auto89

auto89

    biết pan

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

Đã gửi 28 July 2016 - 12:23 PM

em không có gì nói dối các bác cả các bác thì không dùng nhưng em thường dùng đi dùng lại cái khối hộp này. em xin tiếp nhận sự chỉ bảo của bác Doan Van Ha và em tự lập và xin sự chỉ bảo thêm của mọi người, em đã tự lập nó ra khối hộp nhưng khi thêm n  để vát c vào thì bị lỗi ngay, kết quả như sau :
 khi không có n:
mã đoạn code của em nó 
(defun c:ctb(/ b a r n)  
(setq t(getreal"\ngia tri cua t :"))
(setq a(getreal"\ngia tri cua a:"))
(setq r(getreal"\ngia tri cua r :"))
(setq ​n(getreal"\ngia tri cua n :"))
(command "line" (list 0 0 0) (list 0 t 0) (list a t 0) (list a 0 0) "c" "")
(command "line" (list 0 (+ t 10) 0) (list 0 (+ t r 10) 0) (list a (+ t r 10) 0) (list a (+ t 10) 0) "c" "")
(princ))
 
nhưng em thêm n vào để vát C thì bị lỗi:
 

(defun c:ctb(/ b a r )  
(setq t(getreal"\ngia tri cua t :"))
(setq a(getreal"\ngia tri cua a:"))
(setq r(getreal"\ngia tri cua r :"))
(setq ​n(getreal"\ngia tri cua n :"))
(command "line" (list n 0 0) (list 0 n 0) (list 0 (- t n) 0) (list n t 0) (list (- a n) t 0) (list a (- t n) 0) (list a n 0) (list (- a n) 0 0) "c" "")
(princ))

 
 và nó thông báo lỗi như sau:
   Command: ; error: bad argument type: numberp: nil
em thay n bằng 2 thì nó lại vát C được !? :
mã đoạn code của em nó:(defun c:ctb(/ b a r n)  
(setq t(getreal"\ngia tri cua t :"))
(setq a(getreal"\ngia tri cua a:"))
(setq r(getreal"\ngia tri cua r :"))
(setq ​n(getreal"\ngia tri cua n :"))
(command "line" (list 2 0 0) (list 0 2 0) (list 0 (- t 2) 0) (list 2 t 0) (list (- a 2) t 0) (list a (- t 2) 0) (list a 2 0) (list (- a 2) 0 0) "c" "")
(princ))
cuối cùng thì em bỏ n đi và thay bằng 2:
(defun c:ct2(/ b a r)
(setq t(getreal"\ngia tri cua t :"))
(setq a(getreal"\ngia tri cua a:"))
(setq r(getreal"\ngia tri cua r :"))
(command "line" (list 2 0 0) (list 0 2 0) (list 0 (- t 2) 0) (list 2 t 0) (list (- a 2) t 0) (list a (- t 2) 0) (list a 2 0) (list (- a 2) 0 0) "c" "")
(command "line" (list 0 (+ t 10) 0) (list 0 (+ t r 10) 0) (list a (+ t r 10) 0) (list a (+ t 10) 0) "c" "")
(command "line" (list 2 (+ t 10) 0) (list 2 (+ t r 10) 0) (list (- a 2) (+ t r 10) 0) (list (- a 2) (+ t 10) 0) "c" "")
(command "line" (list (+ a 10) (+ t 10) 0) (list (+ a 10) (+ t r 10) 0) (list (+ a 10 t) (+ t r 10) 0) (list (+ a 10 t) (+ t 10) 0) "c" "")
(command "line" (list (+ a 12) (+ t 10) 0) (list (+ a 12) (+ t r 10) 0) (list (+ a 8 t) (+ t r 10) 0) (list (+ a 8 t) (+ t 10) 0) "c" "")
(princ))
các pro chỉ giáo em với để em thêm vát C tùy ý như thế này thì vát C to quá!!!!!!!!!!!!
  • 0

#6 Danh Cong

Danh Cong

    biết lệnh hatchedit

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

Đã gửi 28 July 2016 - 01:04 PM

Bài toán của bạn đây.

Thực hiên lệnh "VE"  để vẽ nhé. 

Kích thước thì bạn tự DIM lấy vậy.   :D   :D   :D

 

Góp ý chút với bạn:

1. Bài vẽ có nhiều điểm. Bạn nên đặt tên cho từng điểm đễ dễ kiểm soát trong quá trình viết lisp.

2. Các điểm tuân theo quy luật thì bạn dùng hàm (Polar....) sẽ trực quan hơn.

 

http://www.cadviet.c...124641_ve_1.lsp


  • 1

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

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


#7 auto89

auto89

    biết pan

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

Đã gửi 28 July 2016 - 01:47 PM

cám ơn bác Danh cong nhiều nhé
  • 0