Đến nội dung


Hình ảnh
* * * - - 17 Bình chọn

Hỏi về Lisp (thuật toán, ý tưởng, coding,...)


  • Please log in to reply
2851 replies to this topic

#2261 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 04 December 2014 - 04:56 PM

Thế thì tôi không hiểu gì hết nên không giúp được.


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


#2262 huunhantvxdts

huunhantvxdts

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 366 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 04 December 2014 - 05:13 PM

Thế thì tôi không hiểu gì hết nên không giúp được.

Nói nôm na là dữ liệu đó có thể nhập ngoài vào hoặc có trên bản vẽ rồi thì khỏi phải nhập mà là chọn nó luôn


  • 0

#2263 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 04 December 2014 - 05:16 PM

Nói nôm na là dữ liệu đó có thể nhập ngoài vào hoặc có trên bản vẽ rồi thì khỏi phải nhập mà là chọn nó luôn

 

Không phải như ý bác DoanVanHa thì khó hiểu quá bạn ơi! Bạn nói rõ ràng, cụ thể hơn đi


  • 0

#2264 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 04 December 2014 - 05:17 PM

Sao mà tôi chậm hiểu thế chứ nhỉ! Đến lần thứ 3 mà tôi vẫn chưa hiểu. Có ai hiểu không, giúp bạn í với? Hoặc giả là bạn post bản vẽ lên, hoặc giả là bạn cho ví 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.


#2265 trinhhoanghieu090

trinhhoanghieu090

    Edu level: li8

  • Members
  • PipPipPipPipPip
  • 309 Bài viết
Điểm đánh giá: 29 (tàm tạm)

Đã gửi 04 December 2014 - 06:29 PM

Theo như "ngu ý" của em thì là thế này: ý của bạn ấy là tham số đầu vào cho lisp là một con số hoặc một cái tên gì đó dạng text. Nếu nó có trên bản vẽ rồi thì kick chuột chọn, hoặc chưa có thì nhập vào bàn phím.
Còn trường hợp khác là kiểu dùng lệnh nhiều lần, giá trị đã nhập một lần khi dùng lệnh lần đầu rồi các lần sau enter luôn không cần nhập lại nữa
Nếu vẫn không đúng ý chủ thớt thì em cũng chịu, đợi chủ thớt up bản vẽ lên vậy
  • 0

#2266 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 04 December 2014 - 07:23 PM

- hi nhoc thì nghĩ đơn giản vầy ^^

(if (setq dulieu (getxxx "nhap:"))
dulieu
(progn
(setq dulieu (ssget or entsel))
...............
)
)
;_^^

  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#2267 huunhantvxdts

huunhantvxdts

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 366 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 04 December 2014 - 08:59 PM

Theo như "ngu ý" của em thì là thế này: ý của bạn ấy là tham số đầu vào cho lisp là một con số hoặc một cái tên gì đó dạng text. Nếu nó có trên bản vẽ rồi thì kick chuột chọn, hoặc chưa có thì nhập vào bàn phím.
Còn trường hợp khác là kiểu dùng lệnh nhiều lần, giá trị đã nhập một lần khi dùng lệnh lần đầu rồi các lần sau enter luôn không cần nhập lại nữa
Nếu vẫn không đúng ý chủ thớt thì em cũng chịu, đợi chủ thớt up bản vẽ lên vậy

Đúng như ý đầu của bạn rồi ở đây là các con số thôi (cộng các cao độ đó mà) trường hợp có trên bản vẽ thì chọn nó cho nhanh còn không có thì phải nhập vào, mình viết cho từng trường hợp (hoặc nhập hoặc chọn) thì được rồi. Bây giờ muốn gộp lại cho nó tiện.

Cám ơn mọi người đã quan tâm


  • 0

#2268 huunhantvxdts

huunhantvxdts

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 366 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 04 December 2014 - 09:13 PM

Sao mà tôi chậm hiểu thế chứ nhỉ! Đến lần thứ 3 mà tôi vẫn chưa hiểu. Có ai hiểu không, giúp bạn í với? Hoặc giả là bạn post bản vẽ lên, hoặc giả là bạn cho ví dụ?

Sorry bạn. Chắc bạn nghỉ quá cao siêu quá mà do mình lại diễn đạt không thấu đáo. Mình thì viết lisp dựa vào mấy cái lisp có sẵn rồi chế lại thôi nên hiểu đơn giản nên nói vậy.

Trường hợp của mình là như vậy nè:

sau khi gõ lệnh: caodo

yêu cầu nhập cao độ chuẩn.

Lúc này có thể chọn trên màn hình luôn hoặc đánh số vào,

Vậy đó.

Không biết thế này được chưa nữa

mong bạn bỏ qua nếu không hiểu


  • 0

#2269 hoangvienxd

hoangvienxd

    Chưa sử dụng CAD

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

Đã gửi 04 December 2014 - 09:28 PM

Cảm ơn 2 bạn, mình đang tập tành lisp, còn phải học hỏi nhiều  :)


  • 0

#2270 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 04 December 2014 - 09:48 PM

Sorry bạn. Chắc bạn nghỉ quá cao siêu quá mà do mình lại diễn đạt không thấu đáo. Mình thì viết lisp dựa vào mấy cái lisp có sẵn rồi chế lại thôi nên hiểu đơn giản nên nói vậy.

Trường hợp của mình là như vậy nè:

sau khi gõ lệnh: caodo

yêu cầu nhập cao độ chuẩn.

Lúc này có thể chọn trên màn hình luôn hoặc đánh số vào,

Vậy đó.

Không biết thế này được chưa nữa

mong bạn bỏ qua nếu không hiểu

- vậy ban thử cách nhoc nêu xem có đúng ý bạn ko ^^, yêu cầu nhập cao độ, ko nhập thì enter hay chuột phải bỏ qua lsp sẽ nhảy qua bước chọn text trên màn hình

^^

(if (setq c_do (getreal "\nnhap cao do chuan:"))
c_do
(setq c_do (distof (cdr (assoc 1 (entget (car (entsel "\nchon cao do chuan:")))))))
)

  • 1
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#2271 huunhantvxdts

huunhantvxdts

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 366 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 04 December 2014 - 09:50 PM

- vậy ban thử cách nhoc nêu xem có đúng ý bạn ko ^^, yêu cầu nhập cao độ, ko nhập thì enter hay chuột phải bỏ qua lsp sẽ nhảy qua bước chọn text trên màn hình

^^

(if (setq c_do (getreal "\nnhap cao do chuan:"))
c_do
(setq c_do (distof (cdr (assoc 1 (entget (car (entsel "\nchon cao do chuan:")))))))
)

cám ơn bạn nhiều


  • 0

#2272 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 04 December 2014 - 10:29 PM

 

- vậy ban thử cách nhoc nêu xem có đúng ý bạn ko ^^, yêu cầu nhập cao độ, ko nhập thì enter hay chuột phải bỏ qua lsp sẽ nhảy qua bước chọn text trên màn hình

^^

(if (setq c_do (getreal "\nnhap cao do chuan:"))
c_do
(setq c_do (distof (cdr (assoc 1 (entget (car (entsel "\nchon cao do chuan:")))))))
)

 

Cách viết của Nhóc vẫn thừa 1 thao tác Enter

Nhóc nghiên cứu Làm sao viết được như thế này :

Select object: 15.6

"15.6"

 

Ở bước chọn đối tượng Select object -> nếu chọn đối tượng Text thì Lisp tự nhận đối tượng text. Còn nếu nhập số (như 15.6) vào dòng Select object thì Lisp tự nhận số 15.6 luôn khỏi phải enter chi cả

Select object: 15.6
"15.6"
 
Select object: 15.6
"15.6"

  • 0

#2273 huunhantvxdts

huunhantvxdts

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 366 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 04 December 2014 - 10:33 PM

Cách viết của Nhóc vẫn thừa 1 thao tác Enter

Nhóc nghiên cứu Làm sao viết được như thế này :

Select object: 15.6

"15.6"

 

Ở bước chọn đối tượng Select object -> nếu chọn đối tượng Text thì Lisp tự nhận đối tượng text. Còn nếu nhập số (như 15.6) vào dòng Select object thì Lisp tự nhận số 15.6 luôn khỏi phải enter chi cả

Select object: 15.6
"15.6"
 
Select object: 15.6
"15.6"

Mình cũng thấy thừa 1 cái enter đó định hỏi bạn có cách nào khác không???


  • 0

#2274 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 04 December 2014 - 10:35 PM

Mình cũng thấy thừa 1 cái enter đó định hỏi bạn có cách nào khác không???

 

Đương nhiên là có cách rồi, nhưng mình khoan viết vội, để bạn nhóc ngâm cứu cái đã ^_^


  • 0

#2275 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 04 December 2014 - 11:30 PM

- ^^, khó phết anh Tue nhỉ, khuya rùi nhoc mới mò đc vậy ko biết  có ổn ko, nhưng hơi dài kaka,mai lại bận cả ngày ko có thời gian ngâm tiếp ^^

(defun c:caodo(/ chon hh kk c_do c)
(setq chon (car (entsel "\nchon cao do chuan:")))
(if (= chon nil)
(progn
(setq hh (getvar "lastprompt"))
(setq kk (strlen "chon cao do chuan: "))
(setq c_do (distof (substr hh kk)))
)
(setq c_do (distof (cdr (assoc 1 (entget chon)))))
)
(princ (setq c (+ 0.5 c_do)))
(princ)
)

  • 1
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#2276 huunhantvxdts

huunhantvxdts

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 366 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 04 December 2014 - 11:43 PM

- ^^, khó phết anh Tue nhỉ, khuya rùi nhoc mới mò đc vậy ko biết  có ổn ko, nhưng hơi dài kaka,mai lại bận cả ngày ko có thời gian ngâm tiếp ^^

(defun c:caodo(/ chon hh kk c_do c)
(setq chon (car (entsel "\nchon cao do chuan:")))
(if (= chon nil)
(progn
(setq hh (getvar "lastprompt"))
(setq kk (strlen "chon cao do chuan: "))
(setq c_do (distof (substr hh kk)))
)
(setq c_do (distof (cdr (assoc 1 (entget chon)))))
)
(princ (setq c (+ 0.5 c_do)))
(princ)
)

Đang thức chờ nhoc viết đây heheehè

cám ơn bạn nhiều lấy về dùng thử thế nào mai sẽ nhận xét


  • 0

#2277 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 05 December 2014 - 06:30 AM

Nhóc dùng (getvar "lastprompt") là đúng ý mình rồi ^^


  • 1

#2278 huunhantvxdts

huunhantvxdts

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 366 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 05 December 2014 - 08:43 AM

- ^^, khó phết anh Tue nhỉ, khuya rùi nhoc mới mò đc vậy ko biết  có ổn ko, nhưng hơi dài kaka,mai lại bận cả ngày ko có thời gian ngâm tiếp ^^

(defun c:caodo(/ chon hh kk c_do c)
(setq chon (car (entsel "\nchon cao do chuan:")))
(if (= chon nil)
(progn
(setq hh (getvar "lastprompt"))
(setq kk (strlen "chon cao do chuan: "))
(setq c_do (distof (substr hh kk)))
)
(setq c_do (distof (cdr (assoc 1 (entget chon)))))
)
(princ (setq c (+ 0.5 c_do)))
(princ)
)

Đã đúng như yêu cầu rồi

Bây giờ muốn ràng buộc điều kiện vào cho nó nhưng làm hoài mà không xong mới được 50%

muốn chọn đối tượng là text còn cao hơn nữa bắt buộc text đó phải là số

Đây là lisp chế thêm

(defun c:caod () ;(/ chon hh kk c_do c)
(setq chon (car (entsel "\nCao do chuan chon hoac nhap so:")))
(if (/= chon nil)
(while
 	 (or
	 (null chon)
   	 (/= "TEXT" (cdr (assoc 0 (entget chon))))
	 )
	(princ "\nDoi tuong khong phai la text! Chon lai")
	(setq chon (car (entsel "\nCao do chuan chon hoac nhap so:")))
)
)
(if (= chon nil)
(progn
(setq hh (getvar "lastprompt"))
(setq kk (strlen "Cao do chuan chon hoac nhap so: "))
(setq c_do (distof (substr hh kk)))
)
(setq c_do (distof (cdr (assoc 1 (entget chon)))))
)
(princ (setq c (+ 0.5 c_do)))
(princ)
)

  • 0

#2279 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 05 December 2014 - 09:30 AM

Đưa

(while
  (null c_do)

)

ra ngoài cùng, kiểm tra nội dung text hoặc giá trị nhập hh là số


  • 0

#2280 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 05 December 2014 - 09:40 AM

Cái này cũng tàm tạm nè!

(defun C:HA(/ ent cd)
 (if (setq ent (car (entsel "\nChon hoac nhap cao do: ")))
  (while (not (setq cd (distof (cdr (assoc 1 (entget ent))))))
   (if (setq ent (car (entsel "\nChon hoac nhap cao do: ")))
    (setq cd (distof (cdr (assoc 1 (entget ent)))))))
  (setq cd (distof (substr (getvar "lastprompt") (strlen "Chon hoac nhap cao do: ")))))
 cd) 
 

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