Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
enscap

Xin chào các bạn ! Nhờ các bạn xem giúp ! xin cám ơn

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

Mình tìm được lisp trên 1 web  lisp này thay đổi kiểu dim 

Nhưng không có phần chọn dim, chỉ hiện lên các dim hiện có.

Vậy nhờ các bạn biết về lisp xem giúp và thêm phần chọn kiểu dim để thay đội .

xin chân thành cám ơn !

(defun c:CHDM (/ sclst dms dmlst dcl_id wri)
 (setq dmlst '()
      obj (vlax-get-acad-object)
      doc (vla-get-activedocument obj)
      dms (vla-get-dimstyles doc))
(vlax-for x dms (setq dmlst (cons (vla-get-name x) dmlst)))
(setq dcl_id (vl-filename-mktemp nil nil ".dcl")
      wri (open dcl_id "w"))
  (foreach x '(
           "dimsty : dialog"
           "{label = \"DimStyle List\";"
           ":list_box {key = \"dmstyle\";" "multiple_select = false; height=10;}"
           "ok_cancel;"
           "}"
           )
  (write-line x wri))
  (setq wri (close wri))
(< 0 (setq dcl-load (load_dialog dcl_id))
(if (not (new_dialog "dimsty" dcl-load))(exit)))
(start_list "dmstyle")(mapcar 'add_list dmlst)(end_list)
(action_tile "dmstyle" "(setq sclst (get_tile \"dmstyle\"))")
(action_tile "accept" "(done_dialog)(setq clk t)")
(action_tile "cancel" "(done_dialog)(setq clk nil)")
(start_dialog)    
(unload_dialog dcl-load)
(if clk
  (if sclst
    (progn
    (setq secstl (nth (atoi sclst) dmlst))
    (vla-put-activedimstyle doc (vla-item (vla-get-Dimstyles doc) secstl)))))
(princ))

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

Lisp hiện tại của bạn chỉ liệt kê danh sách các kiểu dim hiện có, nhưng chưa có phần chọn dim và thay đổi kiểu dim theo ý muốn. Mình sẽ chỉnh sửa để thêm tính năng cho phép bạn chọn kiểu dim mong muốn và áp dụng nó.
Dưới đây là phiên bản đã sửa đổi của Lisp, bổ sung chức năng chọn kiểu dim và đổi kiểu dim được chọn:
(defun c:CHDM (/ sclst dms dmlst dcl_id wri secstl obj doc dcl-load clk)
  (setq dmlst '()
        obj (vlax-get-acad-object)
        doc (vla-get-activedocument obj)
        dms (vla-get-dimstyles doc))
  
  ;; Lấy danh sách kiểu DIM hiện có
  (vlax-for x dms (setq dmlst (cons (vla-get-name x) dmlst)))
  
  ;; Tạo file DCL tạm thời
  (setq dcl_id (vl-filename-mktemp nil nil ".dcl")
        wri (open dcl_id "w"))
  
  (foreach x '(
           "dimsty : dialog"
           "{ label = \"Chọn Kiểu Dim\";"
           "  :list_box { key = \"dmstyle\"; multiple_select = false; height=10; }"
           "  ok_cancel;"
           "}"
           )
    (write-line x wri))
  
  (setq wri (close wri))
  
  ;; Load hộp thoại DCL
  (if (< 0 (setq dcl-load (load_dialog dcl_id)))
    (progn
      (if (not (new_dialog "dimsty" dcl-load)) (exit))
      (start_list "dmstyle")
      (mapcar 'add_list dmlst)
      (end_list)
      
      (action_tile "dmstyle" "(setq sclst (get_tile \"dmstyle\"))")
      (action_tile "accept" "(done_dialog) (setq clk t)")
      (action_tile "cancel" "(done_dialog) (setq clk nil)")
      
      (start_dialog)
      (unload_dialog dcl-load)
      
      ;; Nếu người dùng chọn OK
      (if clk
        (if sclst
          (progn
            (setq secstl (nth (atoi sclst) dmlst))  ;; Lấy kiểu dim đã chọn
            (vla-put-activedimstyle doc (vla-item (vla-get-Dimstyles doc) secstl))
            (princ (strcat "\nĐã chuyển sang kiểu Dim: " secstl))
          )
        )
      )
    )
  )
  (princ)
)

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
5 giờ trước, enscap đã nói:

Mình tìm được lisp trên 1 web  lisp này thay đổi kiểu dim 

Nhưng không có phần chọn dim, chỉ hiện lên các dim hiện có.

Vậy nhờ các bạn biết về lisp xem giúp và thêm phần chọn kiểu dim để thay đội .

xin chân thành cám ơn !

(defun c:CHDM (/ sclst dms dmlst dcl_id wri)
 (setq dmlst '()
      obj (vlax-get-acad-object)
      doc (vla-get-activedocument obj)
      dms (vla-get-dimstyles doc))
(vlax-for x dms (setq dmlst (cons (vla-get-name x) dmlst)))
(setq dcl_id (vl-filename-mktemp nil nil ".dcl")
      wri (open dcl_id "w"))
  (foreach x '(
           "dimsty : dialog"
           "{label = \"DimStyle List\";"
           ":list_box {key = \"dmstyle\";" "multiple_select = false; height=10;}"
           "ok_cancel;"
           "}"
           )
  (write-line x wri))
  (setq wri (close wri))
(< 0 (setq dcl-load (load_dialog dcl_id))
(if (not (new_dialog "dimsty" dcl-load))(exit)))
(start_list "dmstyle")(mapcar 'add_list dmlst)(end_list)
(action_tile "dmstyle" "(setq sclst (get_tile \"dmstyle\"))")
(action_tile "accept" "(done_dialog)(setq clk t)")
(action_tile "cancel" "(done_dialog)(setq clk nil)")
(start_dialog)    
(unload_dialog dcl-load)
(if clk
  (if sclst
    (progn
    (setq secstl (nth (atoi sclst) dmlst))
    (vla-put-activedimstyle doc (vla-item (vla-get-Dimstyles doc) secstl)))))
(princ)) 

lisp trên của bạn giống như chức năng đã có trên cad image.png.0b80217d5d2ff89e1ce1e97292220939.png 

thêm phần chọn kiểu dim để thay đội: chưa rõ ý này. Cần thiết thì đưa hình minh hoạ hoặc file cad mô tả cụ thể

image.png

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

xin cám ơn @tien2005

Minh hay format bản vẽ của các đon vị khác về chuẩn công ty.

Và ít sử dụng phần điều chỉnh trên thanh toolbar.

Và mình tìm được lisp trên web của 1 diễn ddđàn về cad

Lisp này chỉ hiện các kiểu dim trong bản vẽ và khong cho chọn dim cần thay đổi dim stye

Mình mong muôn : chọn kiểu dim và thay đổi kiểu dim từ bảng hộp thoại này 

Xin cám ơn 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

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
Đăng nhập để thực hiện theo  

×