Đế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
2854 replies to this topic

#801 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 02 August 2011 - 04:03 PM

Có vẻ như với Vista, Win7 (cad08) thì cái này dễ xơi hơn :
(defun lastload()
(vl-registry-read
(strcat "HKEY_CURRENT_USER\\"
(vlax-product-key)
"\\Profiles\\"
(vla-get-activeprofile
(vla-get-profiles
(vla-get-preferences
(vlax-get-acad-object)
)
)
)
"\\Dialogs\\Appload"
)
"MainDialog"
)
)

  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#802 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 02 August 2011 - 04:15 PM

Chịu luôn Bác ơi! Lỗi cũng như #808 ở trên (chỉ khác "*" -> "lsp").

Một cách đơn giản nữa là bạn mò luôn vào registry -> Có đường dẫn đã cho ở trên rồi -> bạn tìm đến địa chỉ đó thử xem sao.
-> vào Start -> Run -> Gõ Regedit ->...
Hình đã gửi
Máy của Tue_NV không cài Win7 nên không giúp được gì hơn....
À còn 1 cách nữa : nếu bạn tìm không ra là bạn apload xong 1 Lisp nào đó rồi sử dụng Search trong Registry editor rồi xem địa chỉ nó nằm ở đâu -> rồi từ đó xoay sở tiếp

Theo như lỗi trên của bạn là cái hàm
(vl-registry-read K "MRUList") -> nil
Tức là nó không đọc được
A string containing registry data, if successful; otherwise nil.
  • 1

#803 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 02 August 2011 - 04:21 PM

Có vẻ như với Vista, Win7 (cad08) thì cái này dễ xơi hơn :

(defun lastload()
(vl-registry-read
(strcat "HKEY_CURRENT_USER\\"
(vlax-product-key)
"\\Profiles\\"
(vla-get-activeprofile
(vla-get-profiles
(vla-get-preferences
(vlax-get-acad-object)
)
)
)
"\\Dialogs\\Appload"
)
"MainDialog"
)
)

Chuẩn không cần chỉnh! Mới thử, thấy cái này cũng dùng được cho winXP.
@Tue_NV: rất thank Bác và Ketxu đã mệt mõi vì câu hỏi của tôi. Mọi thứ Bác Tue_NV nói thì tôi sẽ ngâm cứu thêm.
  • 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.


#804 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 02 August 2011 - 11:07 PM

@DVH : winvista/7 có cách lưu khác với WinXP 1 chút, bác nên xem lại đường dẫn, vì cơ bản cái MRUList đã không còn, và cách đánh dấu mã hóa cũng khác ^^.
Code Ketxu post chỉ chạy đc trên > winXP
Có lẽ bác xài kiểu : check win -> dùng code tương ứng ^^
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#805 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 03 August 2011 - 07:05 AM

@DVH : winvista/7 có cách lưu khác với WinXP 1 chút, bác nên xem lại đường dẫn, vì cơ bản cái MRUList đã không còn, và cách đánh dấu mã hóa cũng khác ^^.
Code Ketxu post chỉ chạy đc trên > winXP
Có lẽ bác xài kiểu : check win -> dùng code tương ứng ^^

Máy tôi cài Win7: chạy code của Ketxu: OK.
Đem code đó thử ở 2 máy khác cài WinXP: vẫn OK.
Thân thương!
  • 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.


#806 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 03 August 2011 - 11:13 AM

À, code đó còn phụ thuộc CAD nữa hay sao ý ạ. CAD07 + XP ở cty e thì trả về nil. Kể máy mà khỏe khỏe tí e cũng cài vài cái win với CAD thử với bác, nhưng máy cùi quá. Thôi thì bác bằng lòng với code đó rồi thì dùng tạm vậy ha. Hoặc là kiểm tra hàm e post nếu trả về nil thì xài hàm cũ, cũng k dài hơn là mấy ^^
P/S : là cách này dùng appload dialog để xem, do vậy sẽ không thấy lisp đã load bằng (load..) hoặc (autoload...)
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#807 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 03 August 2011 - 04:50 PM

Nhờ công lao của: Tue_NV, Ketxu, Detailing... Nay tôi tổng hợp lại để bạn nào cần thì dùng.
Để thêm đường dẫn thư mục vào "Support File Search Path", chỉ cần dùng hàm (ADD_PATH) là đủ (tất nhiên phải load file đính kèm hoặc chép vào trong file lsp của bạn).
Cái này tôi đã check từ Win 95, 98, 2000, XP, Vista, 7, đều OK.
Tiện lợi của (ADD_PATH) là khi các bạn muốn tặng CADViet một chương trình có cả file LSP và DCL thì khỏi cần phải add path rườm rà, đồng thời cũng khỏi phải đóng gói lại thành VLX (thứ VLX này dễ bị cho là... giấu nghề). Bạn chỉ cần cho hàm (ADD_PATH) vào trong file LSP là đủ.
Trên tinh thần giúp được tí gì cho CADViet thì giúp, nếu có gì gì đó thì mong các bạn bỏ qua cho, hoặc góp ý.
Nếu sử dụng mà OK thì đừng quên thank các Bác ở trên nhé!
Thân thương!

;----- Thªm th­ môc chøa file võa load sau cïng vµo Support File Search Path (®óng víi Win7, Vista, XP, 95, 98).
(defun ADD_PATH( / path str sym lst)
(if (not (LAST_LOAD1)) (LAST_LOAD2))
(if (not (member path (STR=>LST (getenv "ACAD") ";")))
(setenv "ACAD" (strcat (getenv "ACAD") ";" path))))
;----- T×m ®­êng dÉn cña file võa load sau cïng (®óng víi Win7, Vista, riªng XP th× tuú m¸y).
(defun LAST_LOAD1 ()
(setq path (vl-registry-read
(strcat "HKEY_CURRENT_USER\\"
(vlax-product-key)
"\\Profiles\\"
(vla-get-activeprofile (vla-get-profiles (vla-get-preferences (vlax-get-acad-object))))
"\\Dialogs\\Appload")
"MainDialog"))
(if path (setq path (substr path 1 (- (strlen path) 1)))))
;----- T×m ®­êng dÉn cña file võa load sau cïng (chØ ®óng víi Win XP, 95, 98).
(defun LAST_LOAD2 ( / K)
(setq K (strcat "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\" "CurrentVersion\\Explorer\\ComDlg32\\OpenSaveMRU\\*"))
(setq path (vl-registry-read K (substr (vl-registry-read K "MRUList") 1 1))))
;----- Hµm chuyÓn string chøa c¸c sym sang list.
(defun STR=>LST (str sym)
(setq lst '())
(while (vl-string-search sym str)
(setq lst (cons (substr str 1 (vl-string-search sym str)) lst))
(setq str (substr str (+ (vl-string-search sym str) 2))))
(cons str lst))


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


#808 790312

790312

    biết lệnh fillet

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

Đã gửi 03 August 2011 - 08:54 PM

Khi dùng VLIDE để kiểm lỗi lisp thì có dòng:
[CHECKING TEXT pcad.lsp loading...]
.
; Check done.

Nhưng khi thêm vài dòng lisp nữa thì báo:
[CHECKING TEXT pcad.lsp loading...]
...................................................
; Check done.

Nhờ các bác giải thích sự khác nhau giữa 2 thông báo này giùm e.Thanks.
  • 0

#809 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 03 August 2011 - 10:13 PM

Khi dùng VLIDE để kiểm lỗi lisp thì có dòng:
[CHECKING TEXT pcad.lsp loading...]
.
; Check done.

Nhưng khi thêm vài dòng lisp nữa thì báo:
[CHECKING TEXT pcad.lsp loading...]
...................................................
; Check done.

Nhờ các bác giải thích sự khác nhau giữa 2 thông báo này giùm e.Thanks.

Nói thiệt, bạn đừng buồn nhé! Nhiều lúc bạn hỏi, trả lời xong, mấy ngày sau mới thấy bạn trên 4rum nhưng bạn chẳng hề có một ý kiến gì. Được, không được, dỡ, hay chả biết, chỉ cứ hỏi. Bạn hãy thông cảm cho những người muốn giúp bạn, là họ luôn ngóng theo để biết đã đáp ứng cái mà bạn muốn chưa. Tôi có 1 nhận xét thế này: CADViet tận tình với những câu hỏi của bạn nhưng bạn không tận tình với sự giúp đỡ của CADViet.
Hy vọng bạn cải thiện.
Thân thương!
P/S (8h32' ngày 4/8/11): riêng câu hỏi này tôi botay.com, hy vọng có ai đó giải thích giùm bạ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.


#810 790312

790312

    biết lệnh fillet

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

Đã gửi 03 August 2011 - 10:19 PM

Ai đã giúp mình hiểu thì mình nhấn nút bình chọn là được rồi chứ nói Cảm ơn thì giống spam quá,nếu chưa hiểu thì mình mới hỏi tiếp.Cảm ơn sự đóng góp của bạn.
  • 0

#811 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 03 August 2011 - 10:20 PM

Dấu ... => ........ theo mình đánh giá là status progress. Quá trình check càng dài thì càng nhiều dấu thôi (đoán thế ^^). Mà, cũng như bác ĐVH đã nói, bạn hỏi nhưng dường như k check lại câu hỏi của mình có cần thiết không thì phải :)
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#812 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 03 August 2011 - 10:40 PM

... Mà, cũng như bác ĐVH, bạn hỏi nhưng dường như k check lại câu hỏi của mình có cần thiết không thì phải :)

Chà, câu này buồn 5 phút Ketxu ơi!
  • 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.


#813 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 03 August 2011 - 10:47 PM

Chà, câu này buồn 5 phút Ketxu ơi!

Hề, ý Ket nói là ý Ket cũng như ý bác ĐVH nói, chứ k phải bác với bạn ý giống nhau ^^ Thiếu mất từ nên đổi hẳn ý :lol:
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#814 hochoaivandot

hochoaivandot

    biết dimradius

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

Đã gửi 04 August 2011 - 10:19 PM

Em xin đươc hỏi vấn đề sau:
Khi mình in 1 trang gì đó (Window từ điểm pt1 đến pt2 chẳng hạn). Mình bấm Ctrl P, chọn cửa sổ in, bấm Apply to Layout -->từ lúc này trở về sau khi Prevew sẽ nhìn thấy trang đã chọn trước khi Apply to layout.
- Vậy cho mình hỏi để Apply to layout bằng Lisp thì làm như thế nào?
- Để Preview 1 Window bất kỳ (2 điểm bất kỳ), ngoài cách apply to layout còn cách nào khác nữa không?
Hình đã gửi
Cảm ơn mọi người!
  • 0

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#815 hochoaivandot

hochoaivandot

    biết dimradius

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

Đã gửi 05 August 2011 - 11:33 AM

Em xin đươc hỏi vấn đề sau:
Khi mình in 1 trang gì đó (Window từ điểm pt1 đến pt2 chẳng hạn). Mình bấm Ctrl P, chọn cửa sổ in, bấm Apply to Layout -->từ lúc này trở về sau khi Prevew sẽ nhìn thấy trang đã chọn trước khi Apply to layout.
- Vậy cho mình hỏi để Apply to layout bằng Lisp thì làm như thế nào?
- Để Preview 1 Window bất kỳ (2 điểm bất kỳ), ngoài cách apply to layout còn cách nào khác nữa không?
Cảm ơn mọi người!


Làm phiền mọi người quá, mình đã tìm thấy câu trả lời. Cảm ơn diễn đàn!
  • 0

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#816 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 10 August 2011 - 02:43 PM

Tôi muốn hỏi về sự khác nhau giữa các hàm sau đây:
(command "LINE" ... )
(command ".LINE" ... )
(command "-LINE" ... )
(command "._LINE" ... )
(command "_.-LINE" ... )

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


#817 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 10 August 2011 - 03:56 PM

Tôi muốn hỏi về sự khác nhau giữa các hàm sau đây:
(command "LINE" ... )
(command ".LINE" ... )
(command "-LINE" ... )
(command "._LINE" ... )
(command "_.-LINE" ... )

-Khi dùng (command "undefine" "line") sẽ thu hồi định nghĩa lệnh line nguyên gốc và định nghĩa lại line bằng tác dụng khác thì trong lisp dùng (command "LINE" ... ) no1 sẽ gọi cái line đã được định nghĩa lại kia và ko đúng mong muốn.
-Lúc này dùng (command ".LINE" ... ) (thêm dấu chấm trước tên lệnh) lisp sẽ gọi định nghĩa gốc của lệnh line.
-Còn dấu -;_ và kết hợp thì mình ko rỏ lắm thường với các lệnh hiển thị hộp thoại mà trong lisp mình ko muốn hiển thị thì thêm một trong 2 dấu - hoặc _ trước lệnh để gọi lệnh ko hộp thoại phục vụ lisp của mình.
  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#818 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 10 August 2011 - 04:39 PM

Theo mình nhớ thì :
Line : Thực hiện lệnh Line mà CAD đang lưu trong bộ nhớ, lệnh này có thể là nguyên thủy hoặc đã bị định nghĩa lại
-Line : Thực hiện phiên bản command prompt(không dialog) của lệnh (nếu có)
.Line : Thực hiện lệnh Line nguyên thủy của CAD, bất chấp đã bị định nghĩa lại hay chưa
_Line : Thực hiện lệnh Line của CAD + các bước thông báo, không kể tới sự khác biệt ngôn ngữ trong phiên bản CAD (English Standard)
=> Với việc thực hiện các lệnh command mà có yêu cầu truyền thêm các bước quyết định (command Lệnh "Y" "N"....) => nên dùng _.
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#819 duchieu0205

duchieu0205

    biết vẽ line

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

Đã gửi 11 August 2011 - 01:24 PM

Mọi người ơi giúp em với:
Em cần chọn các bock có thuộc tính trong bản vẽ! em loay hoay mãi với hàm Ssget nhưng không được! Mọi người có cách gì chỉ em với!
  • 0

#820 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 11 August 2011 - 02:24 PM

Block có ATT thì mã dxf 66 sẽ là 1, do vậy bạn có thể dùng hàm SSGet với Filter sau :

(ssget (list (cons 0 "INSERT")(cons 66 1)))


  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC