Đến nội dung


Hình ảnh
- - - - -

các sử dụng tài nguyên trong list đã chọn!?


  • Please log in to reply
5 replies to this topic

#1 Duyphupc

Duyphupc

    biết pan

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

Đã gửi 30 November 2013 - 10:45 PM

em đang phải vẽ vòng bi với các kích thước cho trước là

d: Độ lớn trục

D:Đường kính vòng bi

B:Độ dày vòng bi

Các bác có thể giúp em code tạo một cái list cho trước rồi người dùng nhập đầu vào là d tiếp đến sẽ tìm trong list và trả ra các giá trị là D và B k ạ!! Thanhk các Bác nhiều


  • -1

#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 30 November 2013 - 11:02 PM

Gởi file "tài nguyên" hoặc công thức thể hiện sự liên hệ giữa d, D và B lên forum thì mới khả dĩ.


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


#3 Duyphupc

Duyphupc

    biết pan

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

Đã gửi 01 December 2013 - 08:28 AM

 (setq then-lst (list '(8 2 2 1.2 1)   '(10 3 3 1.8 1.4)

(setq obi-lst('(12 5 6) '(4 8 9) '(5 7 8) )

giả sử thông số đầu của các list là thông số trục!! Bạn giúp tớ code cho người dùng nhập vào một thông số trục rồi chương trình tìm và so sánh trong list rồi đưa ra một danh sách gồm 3 phần tử.

(defun vetruc (;|dt km k1 k2 k3 k hn kct vtv|; / ans)
  (setq dt-lst  (list -10  10  10.5 11   11.5 12   14   15 16
17   18  19   20   21 22   24   25 26
28   30  32   34   35 36   38   40 42
45   48  50   52   55 60   63   65 70
75   80  85   90   95 100  105  110 115
120  125  130  140  150 160  10000

 

      )
(defun vetruc (;|dt km k1 k2 k3 k hn kct vtv|; / ans)
  (setq dt-lst  (list -10  10  10.5 11   11.5 12   14   15 16
17   18  19   20   21 22   24   25 26
28   30  32   34   35 36   38   40 42
45   48  50   52   55 60   63   65 70
75   80  85   90   95 100  105  110 115
120  125  130  140  150 160  10000
 
(defun vetruc (;|dt km k1 k2 k3 k hn kct vtv|; / ans)
  (setq dt-lst  (list -10  10  10.5 11   11.5 12   14   15 16
17   18  19   20   21 22   24   25 26
28   30  32   34   35 36   38   40 42
45   48  50   52   55 60   63   65 70
75   80  85   90   95 100  105  110 115
120  125  130  140  150 160  10000

 

      )
 (setq then-lst (list '(8 2 2 1.2 1)   '(10 3 3 1.8 1.4)
'(12 4 4 2.5 1.8)  '(17 5 5 3 2.3)
'(22 6 6 3.5 2.8)  '(30 8 7 4 2.8)
'(38 10 8 5 3.3)   '(44 12 8 5 3.3)
'(50 14 9 5.5 3.8) '(58 16 10 6 4.3)
'(65 18 11 7 4.4)  '(75 20 12 7.5 4.9)
'(85 22 14 9 5.4)  '(95 25 14 9 5.4)
'(110 28 16 10 6.4)
'(130 32 18 11 7.4)
'(150 36 20 12 8.4)
'(170 40 22 13 9.4)
'(200 45 25 15 10.4)
'(230 56 32 20 12.4)
 
'(12 4 4 2.5 1.8)  '(17 5 5 3 2.3)
'(22 6 6 3.5 2.8)  '(30 8 7 4 2.8)
'(38 10 8 5 3.3)   '(44 12 8 5 3.3)
'(50 14 9 5.5 3.8) '(58 16 10 6 4.3)
'(65 18 11 7 4.4)  '(75 20 12 7.5 4.9)
'(85 22 14 9 5.4)  '(95 25 14 9 5.4)
'(110 28 16 10 6.4)
'(130 32 18 11 7.4)
'(150 36 20 12 8.4)
'(170 40 22 13 9.4)
'(200 45 25 15 10.4)
'(230 56 32 20 12.4)
      )

  • -1

#4 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 01 December 2013 - 09:46 AM

Câu hỏi của bạn đã lãnh đủ 2 dấu trừ của ai đó tặng, ấy là do bạn mà thôi.

(defun C:OBI( / obi-lst d vitri)
 (setq obi-lst '((12 5 6) (4 8 9) (5 7 8)))
 (initget 7) (setq d (getint "\nNhap do lon truc: "))
 (if (setq vitri (vl-position d (car obi-lst)))
  (list d (nth vitri (cadr obi-lst)) (nth vitri (caddr obi-lst)))
  (alert "Khong co B va D tuong ung voi gia tri d")))
 

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


#5 quansla

quansla

    biết lệnh xclip

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

Đã gửi 01 December 2013 - 10:08 AM

Nếu ít có thể tạo dạng '(  (d1  D1  B1)

                                        (d2  D2  B2)

                                        (d3  D3 B3)

                                         .......

                                      )

 

 

Muốn truy xuất giá trị nào dùng hàm (foreach i ....) duyệt tất cả các tập hợp con trong tập hợp trên , nếu có  (car i) = phần tử so sánh thì trả về (cadr i) (caddr i)...

Hình như nếu dùng dạng ( d1 . ( D1 B1)) rồi dùng hàm assoc cũng được và nhanh hơn, nhưng giờ chưa có máy có Cad, và cũng chưa có giữ liệu ban đầu chính thức nên mình không kiểm tra được

 

 

 

Nếu số liệu nhiều và để tiện cho việc lấy data tập nguồn (từ txt,quét ...) thì phần tạo danh sách ban đầu, có thể dùng hàm mapcar

 

 

 

(setq lst1 '(12 5 6) lst2 '(4 8 9) lst3 '(5 7 8))

(mapcar '(lambda(x y x) (list x y z)) lst1 lst2 lst3)

 

hix, không có cad chưa kiểm duyệt đâu nhé,


  • 0

#6 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 01 December 2013 - 10:27 AM

@Quansla:

(mapcar '(lambda(x y x) (list x y z)) lst1 lst2 lst3)

Hàm trên có thể viết gọn hơn như sau:

(mapcar 'list lst1 lst2 lst3)


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