Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
tnmtpc

Nhập các File *.lsp thành một file *.fas

Các bài được khuyến nghị

Đoạn lisp sau (mới sưu tầm) cho phép nhập nhiều file *.lsp thành một file *.fas để thuận lợi khi load vào Cad chỉ một lần, nhưng mình nhập lệnh báo lỗi sau:

Command: cltf

; error: no function definition: DOS_GETDIR

Các bạn chỉ giúp, lỗi do đâu? Cách khắc phục

Đây là nội dung lisp

(defun c:cltf (/ lsp fas lst)

(setq lsp (dos_getdir "Browse for folder" " " "Select a folder as source" t))

(setq fas (dos_getdir "Browse for folder" " " "Select a folder as destination" t))

(setq lst (vl-directory-files lsp "*.lsp" 1))

(if

lst

(progn

(foreach x lst

(vlisp-compile

'st

(strcat lsp x)

(strcat fas (substr x 1 ( - (strlen x) 4)) ".fas")

)

) ; foreach

) ; progn

(alert "There is not contained file")

) ; if

(princ)

) ; defun

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Không Bác nào giúp mình nhỉ?

Chẳng ai hiểu gì về lisp này cả.

 

; error: no function definition: DOS_GETDIR - lỗi này là do không có hàm DOS_GETDIR. Hàm này nằm đâu thì ... chỉ có chúa và bạn mới biết.

 

Tóm lại, đoạn mã trên của bạn là một phần của một chương trình hoàn chỉnh. Bạn tìm nốt phần còn lại của chương trình rồi load lên thì hy vọng chương trình sẽ chạy đúng.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
; error: no function definition: DOS_GETDIR - lỗi này là do không có hàm DOS_GETDIR. Hàm này nằm đâu thì ... chỉ có chúa và bạn mới biết.

 

Tóm lại, đoạn mã trên của bạn là một phần của một chương trình hoàn chỉnh. Bạn tìm nốt phần còn lại của chương trình rồi load lên thì hy vọng chương trình sẽ chạy đúng.

Phần còn lại, "sết" lòi mắt cũng không thấy, người ta viết chỉ có bấy nhiêu.

Chúa không biết hàm DOS_GETDIR và mình cũng không rành về list, mình chỉ biết là:

(setq lsp (dos_getdir "Browse for folder" " " "Select a folder as source" t))

để mở hộp thoại windows chuẩn để chọn thư mục chứa các files *.lsp cần đưa vào file *.fas

(setq fas (dos_getdir "Browse for folder" " " "Select a folder as destination" t))

để mở hộp thoại chọn thư mục lưu files *.fas

Tóm lại mình muốn một lisp thực hiện công việc đưa tất cả các file *.lsp vào một file *.fas hoặc *.vlx. Cái này thì bác Hoành rất biết, vậy thì bác giúp mình đi, chắc chắn nhiều người cũng "hít" cái lisp này. Cám ơn bác trước

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Tóm lại mình muốn một lisp thực hiện công việc đưa tất cả các file *.lsp vào một file *.fas hoặc *.vlx. Cái này thì bác Hoành rất biết, vậy thì bác giúp mình đi, chắc chắn nhiều người cũng "hít" cái lisp này. Cám ơn bác trước

Cảm ơn bạn đã đề cao. Việc đưa các file lisp vào file fas hoặc vlx nằm ngoài khả năng của mình.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Tóm lại mình muốn một lisp thực hiện công việc đưa tất cả các file *.lsp vào một file *.fas hoặc *.vlx. Cái này thì bác Hoành rất biết, vậy thì bác giúp mình đi, chắc chắn nhiều người cũng "hít" cái lisp này. Cám ơn bác trước

 

Việc thực hiện cái này đã có AutoCAD làm rồi, đơn giản và dễ dùng. Tại sao phải lăn tăn đi tìm LISP để làm công việc đó.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Đoạn lisp sau (mới sưu tầm) cho phép nhập nhiều file *.lsp thành một file *.fas để thuận lợi khi load vào Cad chỉ một lần, nhưng mình nhập lệnh báo lỗi sau:

 

; error: no function definition: DOS_GETDIR

 

Đây là nội dung lisp

(setq lsp (dos_getdir "Browse for folder" " " "Select a folder as source" t))

(setq fas (dos_getdir "Browse for folder" " " "Select a folder as destination" t))

 

Đoạn lisp của bạn sử dụng hàm DOS_GETDIR , theo nhận xét của tui thì hàm này trong thư viện DOSLib.

DOSLib, is a library of AutoLISP-callable functions that provides a variety of Windows operating system capabilities to AutoCAD.

Nếu đúng bạn có thể tham khảo và download tại : http://en.wiki.mcneel.com/default.aspx/McNeel/DOSlib.html

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Việc thực hiện cái này đã có AutoCAD làm rồi, đơn giản và dễ dùng. Tại sao phải lăn tăn đi tìm LISP để làm công việc đó.

Bác vndesperados chỉ cho mình chiêu này đi, thực sự là mình chưa biết. Thanks

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Bác vndesperados chỉ cho mình chiêu này đi, thực sự là mình chưa biết. Thanks

 

 

Từ cửa sổ màn hình sọan thảo LISP của AutoCad chọn FILE - Make Application - New Application Wizard

Chọn Simple hoặc Expert tùy theo nhu cầu.

Cái này cho phép tích hợp cả file DCL vào trong VLX, FAS luôn

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Từ cửa sổ màn hình sọan thảo LISP của AutoCad chọn FILE - Make Application - New Application Wizard

Chọn Simple hoặc Expert tùy theo nhu cầu.

Cái này cho phép tích hợp cả file DCL vào trong VLX, FAS luôn

Cái này tôi làm theo hướng dẫn của anh rồi nhưng ko hiểu tại sao khi làm Simple nhiều file *.lsp thì nó sẽ tạo thành file dạng *.vlx, còn khi dùng Expert thì không sao mà gộp nhiều file *.lsp vào thành một được? theo quan sát của mình thì có thể gộp 2 file *.lsp thì được. Còn nhiều hơn thì nó báo nỗi. Mong bạn chỉ dùm một cách cụ thể.

Mong sớm nhận được hồi âm của bạn.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Trước hết bạn phải tải các file doslib...arx vào thư mục support hoạc bất kỳ thư mục nào mà bạn đã add trong "support file search path. Tải các file doslib tại đây: http://www.en.na.mcneel.com/doslib.htm

Đây là lisp Thiep thêm arxload:

 

(cond ((eq (getvar "acadver") "19.0s (LMS Tech)")
(arxload "doslib19")
      )
      ((or (eq (getvar "acadver") "18.2s (LMS Tech)")
  (eq (getvar "acadver") "18.1s (LMS Tech)")
  (eq (getvar "acadver") "18.0s (LMS Tech)")
       )
(arxload "doslib18")
      )
      ((or (eq (getvar "acadver") "17.2s (LMS Tech)")
  (eq (getvar "acadver") "17.1s (LMS Tech)")
  (eq (getvar "acadver") "17.0s (LMS Tech)")
       )
(arxload "doslib17")
      )
)
(defun c:cltf (/ lsp fas lst)
    (setq
        lsp (dos_getdir "Browse for folder" " " "Select a folder as source" t)
    )
    (setq fas (dos_getdir "Browse for folder"
                          " "
                          "Select a folder as destination"
                          t
              )
    )
    (setq lst (vl-directory-files lsp "*.lsp" 1))
    (if lst
        (progn
            (foreach x lst
                (vlisp-compile 'st
                               (strcat lsp x)
                               (strcat fas (substr x 1 (- (strlen x) 4)) ".fas")
                )
            )                                     ; foreach
        )                                         ; progn
        (alert "There is not contained file")
    )                                             ; if
    (princ)
)  

Tuy nhiên, lisp trên chỉ compiler mỗi một file *.lsp thành 1 file *.fas. Chưa biết làm sao compiler nhiều file thành 1 file được. (Nếu làm trong VLISP thì ok rồi)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay


×