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

Nhờ Chỉnh Sửa Lisp Chuyển Dim Về Dim Hiện Hành

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

http://www.cadviet.com/upfiles/6/111575_ha.lsp


 


Nhờ các anh   sửa thêm lisp. Khi setcurent Dim thì set thêm cả các thông số của Dim được chọn nữa. Vì trong 1 số trường hợp chỉ cần dùng loại Dim. Khi đo tùy đối tượng có tỉ lệ khác nhau thì tùy chỉnh thông số DIM SCALE OVERALL theo tỉ lệ bản vẽ:


Ví dụ, Như hình vẽ : cùng 1 loại Dim nhưng Kiểu 2 được sửa thông số trong thanh Properties của Dim: DIM SCALE OVERALL :45 về 22.5, thì được như kiểu 2.


Nhưng khi dùng lisp set Dim, (cần set curent D100,kiểu 2). Thì Lisp chỉ set D100 (kiểu 1- gốc) làm Dim hiện hành không chọn được kiểu 2.


 


Nhờ anh bổ sung giúp tính năng trên.152245_1_3.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

không nên lạm dụng lisp

mình nghĩ nó rất hữu ích mà, nó giúp mình kiểm soát  bản vẽ có nhiều tỉ lệ dim tốt hơn, kiểm tra bản vẽ hiệu quả hơ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

Thử cái này xem:

 

(defun c:tt  (/ adoc ent obj)
 (if (setq ent (car (entsel "\nChon 1 doi tuong: ")))
  (progn (setq adoc (vla-get-activedocument (vlax-get-acad-object))
               obj  (vlax-ename->vla-object ent))
         (mapcar 'setvar
                 '("CLAYER" "CELTYPE" "CECOLOR")
                 (mapcar '(lambda (x) (vl-princ-to-string (vlax-get obj x))) '("Layer" "Linetype" "Color")))
         (cond ((wcmatch (strcase (vla-get-ObjectName obj)) "*TEXT") (setvar 'TEXTSTYLE (vlax-get obj 'StyleName)))
               ((wcmatch (strcase (vla-get-ObjectName obj)) "*DIMENSION")
                (vla-put-activedimstyle adoc (vla-item (vla-get-dimstyles adoc) (vlax-get obj 'StyleName)))
                (setvar 'DIMSCALE (vlax-get obj 'ScaleFactor))))))
 (princ))
  • 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

 

Thử cái này xem:

(defun c:tt  (/ adoc ent obj)
 (if (setq ent (car (entsel "\nChon 1 doi tuong: ")))
  (progn (setq adoc (vla-get-activedocument (vlax-get-acad-object))
               obj  (vlax-ename->vla-object ent))
         (mapcar 'setvar
                 '("CLAYER" "CELTYPE" "CECOLOR")
                 (mapcar '(lambda (x) (vl-princ-to-string (vlax-get obj x))) '("Layer" "Linetype" "Color")))
         (cond ((wcmatch (strcase (vla-get-ObjectName obj)) "*TEXT") (setvar 'TEXTSTYLE (vlax-get obj 'StyleName)))
               ((wcmatch (strcase (vla-get-ObjectName obj)) "*DIMENSION")
                (vla-put-activedimstyle adoc (vla-item (vla-get-dimstyles adoc) (vlax-get obj 'StyleName)))
                (setvar 'DIMSCALE (vlax-get obj 'ScaleFactor))))))
 (princ))

 

cảm ơn anh đã giúp em, lisp của anh gần đúng với ý của em rồi, chỉ còn 1 thông số " Dim scale linear" nó chưa thay đổi theo dim hiện hành. Anh chỉnh sửa thêm cho em  nhé. Cám ơn anh !!!!

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ạn thêm dòng này: (setvar 'DIMLFAC (vlax-get obj 'LinearScaleFactor)) ngay trước hoặc sau dòng này:

(setvar 'DIMSCALE (vlax-get obj 'ScaleFactor))

 

*** Chú ý dấu mở, đóng "()"

  • 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

Bạn thêm dòng này: (setvar 'DIMLFAC (vlax-get obj 'LinearScaleFactor)) ngay trước hoặc sau dòng này:

(setvar 'DIMSCALE (vlax-get obj 'ScaleFactor))

 

*** Chú ý dấu mở, đóng "()"

 

cảm ơn anh, em làm được rồi. hoàn hảo ^^

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


×