Chuyển đến nội dung
Diễn đàn CADViet

cuongtk2

Thành viên
  • Số lượng nội dung

    419
  • Đã tham gia

  • Lần ghé thăm cuối

  • Ngày trúng

    33

Bài đăng được đăng bởi cuongtk2


  1.  

    (defun c:lcen (/ HIENHANH CEL p1 p2)
      (defun makeLayer (name Col Ltyp LWgt Plot)
     (entmake (list (cons 0 "LAYER")
                    (cons 100 "AcDbSymbolTableRecord")
                    (cons 100 "AcDbLayerTableRecord")
                    (cons 2  name)
                    (cons 70 0)
                    (cons 62 Col)
                    (cons 6 Ltyp)
                    (cons 290 Plot)
                    (cons 370 LWgt))))
          
          (setq layer "CENT1")
          (if (not (tblsearch "layer" layer))


        (makeLayer layer 1 "Center" 0 1)
          )
          (setq CEL (getint "\nNhap ty le CELTSCALE:"))
          (setq p1 (getpoint "\nNhap diem 1:"))
          (setq p2 (getpoint p1 "\nNhap diem 2:"))
            (entmake (list (cons 0 "LINE") (cons 8  layer) (cons 10 p1) (cons 11 p2)(cons 48 CEL)))
           
           
          (princ)
      );end dedun

    • Like 1

  2. 10 giờ trước, quocmanh04tt đã nói:

    - Với câu hỏi chủ thớt thì mình không biết.

    - Nhưng đối với chương trình có dung lượng không quá lớn thì mình cho tất cả các loại file (.lsp, .fas, .dcl, .dwg, .txt ...) vào 1 file .VLX (thậm chí cả .vlx).

    - Vấn đề lưu, kiểm tra khi đường dẫn thay đổi thì mình đi theo hướng dưới đây, không biết có giúp được gì cho các bạn không???

    (defun c:tt  (/ file fwrite myfile path LM:getfiles:browseforfolder LM:getfiles:fixdir)
      (defun LM:getfiles:fixdir  (dir)
        (vl-string-right-trim "\\" (vl-string-translate "/" "\\" dir)))
      (defun LM:getfiles:browseforfolder  (msg dir flg / err fld pth shl slf)
        (setq err (vl-catch-all-apply (function (lambda (/ app hwd)
                                                  (if (setq app (vlax-get-acad-object)
                                                            shl (vla-getinterfaceobject app "shell.application")
                                                            hwd (vl-catch-all-apply 'vla-get-hwnd (list app))
                                                            fld (vlax-invoke-method shl
                                                                                    'browseforfolder
                                                                                    (if (vl-catch-all-error-p hwd)
                                                                                      0
                                                                                      hwd)
                                                                                    msg
                                                                                    flg
                                                                                    dir))
                                                    (setq slf (vlax-get-property fld 'self)
                                                          pth (LM:getfiles:fixdir (vlax-get-property slf 'path))))))))
        (if slf
          (vlax-release-object slf))
        (if fld
          (vlax-release-object fld))
        (if shl
          (vlax-release-object shl))
        (if (vl-catch-all-error-p err)
          (prompt (vl-catch-all-error-message err))
          pth))
      (setq myfile "myfile.txt")
      (cond ((and (setq path (getenv "MYPROGRAM\\MYPATH"))
                  (setq file (findfile (strcat path "\\" myfile)))))
            ((progn (while (not
                             (and (setq path (LM:getfiles:browseforfolder "Chon thu muc" nil 512))
                                  (setq file (findfile (strcat path "\\" myfile))))))
                    (setenv "MYPROGRAM\\MYPATH" path))))
      ;; chuong trinh chinh
      (setq fwrite (open file "a"))
      (alert (write-line (strcat "Duong dan mac dinh:\n" path) fwrite))
      (close fwrite)
      (princ))

    Dir.LSP

    Chỉ cần findfile chính nó là ra được path, tuy nhiên có thể xảy ra ngoại lệ double file. Đó là lý do mình muốn có hàm như thế


  3. Mô tả cho bác dễ hiểu là như thế này, trước em để lisp ở ổ F, đường dẫn của các file lisp là F:\lisp. Giờ dùng sang máy khác không có ổ F nên đặt ở ổ E. Một file lisp duy nhất nhiệm vụ chỉ để dùng load các file khác có tên là loadlisp.lsp được nạp vào startup. Trong file này trỏ đến load nhiều file lisp con. Mục tiêu của em là có hàm trong file lisp con này lấy được path của file lisp con để khỏi phải thay đổi đường dẫn cho chèn block, hay đọc txt file mỗi khi thay máy tính.


  4. Em muốn hỏi có cách nào để lấy path của chính nó không thôi. Bác không muốn hiểu rồi. Bác cho em các tìm ra path của file load sau cùng. Nhưng em hầu như không appload, mà chỉ muốn tận dụng đường dẫn của file để lấy cho các file khác. Như bác nói thì phải appload nó mới ra đường dẫn trong registry, rồi appload file khác nó sẽ ra path khác. Em lấy path cũ  để chèn block bằng cách nào? Chẳng lẽ lại appload lại.

×