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

nhờ chỉnh sửa lisp thay đổi chiều cao nhiều block attribute cùng 1 lúc

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

proconeng86    8

Mình mới copy được 1 lisp của bạn về thay đổi chiều cao của nhiều block attribute. Nó có thể thay đổi chiều cao của 1 loạt block attribute rất nhanh và hiệu quả.

tuy nhiên nếu block attribute chỉ có 1 attribute hay có nhiều attribute và tất cả attribute đó có cùng 1 chiều cao thì dùng lisp này rất hay. Khi block có từ 2 attribute trở lên,và các attribute có chiều cao khác nhau thì lại không thể dùng lisp này được nữa

Do đó mình muốn nhờ các bạn sửa lại lisp này hộ mình. yêu cầu là nếu có nhiều attribute trong những block được chọn thì sẽ đưa ra các lựa chọn để mình chọn chiều cao cho từng attribute.

chân thành cám ơn

http://www.cadviet.com/upfiles/3/9928_ah.lsp

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
proconeng86    8

Mình đang rất cần lisp này, khi mà nhiều bản vẽ đã sử dụng block nhiều att, nếu sửa bằng tay thì rất mất thời gian. có lisp này sẽ tiện hơn rất nhiều. 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
phamthanhbinh    3.123

Mình đang rất cần lisp này, khi mà nhiều bản vẽ đã sử dụng block nhiều att, nếu sửa bằng tay thì rất mất thời gian. có lisp này sẽ tiện hơn rất nhiều. thanks

Hề hề hề,

Hình như bạn chưa dùng lisp này cho cái trường hợp bạn muốn thì phải. Lisp này cho phép đổi chiều cao của tất cả các attribute trong các block được chọn về cùng một kích thước cho trước, bất kể kích thước cũ của các attribute này ra sao và số lượng các attribute là bao nhiêu.

Còn nếu bạn muốn đổi kích thước của mỗi một attribute thành một chiều cao khác nhau thì vấn đề sẽ khác chứ không phải như vấn đề bạn đặt ra.

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
proconeng86    8

Hề hề hề,

Hình như bạn chưa dùng lisp này cho cái trường hợp bạn muốn thì phải. Lisp này cho phép đổi chiều cao của tất cả các attribute trong các block được chọn về cùng một kích thước cho trước, bất kể kích thước cũ của các attribute này ra sao và số lượng các attribute là bao nhiêu.

Còn nếu bạn muốn đổi kích thước của mỗi một attribute thành một chiều cao khác nhau thì vấn đề sẽ khác chứ không phải như vấn đề bạn đặt ra.

Bạn phamthanhbinh hiểu nhầm ý mình rùi, để mình nói lại 1 lần nữa nhé

Ví dụ: mình có 1 bản vẽ có rất nhiểu block, tất cả đều cùng là 1 block tên A, trong block này thì có 2 att tên là B và C. tất cả các att trong các block này đều bị sai chiều cao và giờ mình muốn đưa tất cả att tên B về 1 chiều cao và att C về 1 chiều cao khác. Khi mình dùng lisp trên của mình thì cả 2 att B và C đều bị đưa về cùng 1 chiều cao trong khi mình cần 2 thằng khác nhau

Chính vì thế mình mới cần nhờ ai đó chỉnh sửa hộ lisp trên với yêu cầu là: 

 - gõ lệnh AH

 - đưa ra lựa chọn block cần chỉnh sửa

 - chọn chiều cao cho att B

 - chọn chiều cao cho att C

 - chọn chiều cao cho att ... (nếu có)

 - enter kêt thúc lệnh

Cám ơn các bạn nhiều

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
hochoaivandot    108
(defun C:hhh (/ CURCMD ATT OLDVAL TEXT)

Lisp đầu tiên. Tên lệnh HA.

Sẽ thay đổi tấc cả block thuộc tính. Chọn thuộc tính và nhập chiều cao

;;Thay doi chieu cao thuoc tinh (attributes) Block
;;Viet boi Duong Ba Diep - hochoaivandot
;;www.cadonline.duyxuyen.vn
(defun PUT-GC (VALUE GROUP ENTITY / PROPERTIES)
(setq PROPERTIES (entget ENTITY))
(setq PROPERTIES (subst (cons GROUP VALUE) (assoc GROUP PROPERTIES) PROPERTIES))
(entmod PROPERTIES)
) ;_ end defun
(defun maklis ()  
(setq lis_hex '("0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "A" "B" "C" "D" "E" "F"))  
(setq lis_dec '("0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" "15")) 
)
(defun GET-GC (GROUP ENTITY) (cdr (assoc GROUP (entget ENTITY))))
(defun 16t10 (hex / lis_hex lis_dec L kt S i j)
(maklis)
  (setq L (strlen hex) i L j 0 S 0)
  (Repeat L
    (setq kt (atoi (nth (vl-position (substr hex i 1) lis_hex) lis_dec)))
    (setq S (+ S (* (expt 16 j ) kt)))
    (setq i (1- i))
    (setq j (1+ j))
)
  (itoa S)
)
(defun 10t16 (dec / lis_hex lis_dec hex L dec1 i kt)
(maklis)
  (setq dec (fix dec))
  (setq hex (strcat))
  (setq L (1+ (fix (/ (log dec) (log 16)))) i (1- L) dec1 dec)
  (Repeat L
    (setq kt (nth (vl-position (itoa (fix (/ dec1 (expt 16 i)))) lis_dec) lis_hex))
(setq hex (strcat hex kt))
    (setq dec1 (- dec1 (* (expt 16 i ) (fix (/ dec1 (expt 16 i))))))
    (setq i (1- i))
)
  hex
)
(defun entback (ena / ena2 han1)
(setq han1 (GET-GC 5 ena))
(setq ena2 (handent (10t16 (- (atof (16t10 han1)) 1))))
)
(defun C:ha (/ *ERROR* ATT conti CURCMD e enn h i na OLDVAL ss tag)
(setq *ERROR* (defun MY-ERR (MSG)
(cond ((= MSG "Function cancelled") (princ "\t\tUser abort"))
(t (progn (princ MSG) (princ)))
) ;_ end cond
(setq *ERROR* NIL)
(princ)
) ;_ defun
) ;_ end setq
(setq CURCMD (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(while (/= (setq ATT (car (nentselp "\nChon ATT muon Edit H: "))) NIL)
(if (= (GET-GC 0 ATT) "ATTRIB")
(progn
(setq OLDVAL (GET-GC 40 ATT))
(setq tag (GET-GC 2 ATT))
(setq h (getreal (strcat "\Nhap chieu cao chu <" (rtos OLDVAL 2 2) ">:")))
(if (not h) (setq h OLDVAL))
(while (= (GET-GC 0 (setq ATT (entback ATT))) "INSERT")
(setq na (GET-GC 2 ATT))
(setq ss (ssget "X" (list (cons 0 "INSERT") (cons 2 na) (cons 66 1))))
)
(repeat (setq i (sslength ss))
(setq e (ssname ss (setq i (1- i))) conti T)
(setq enn e)
(while conti
(if (and (setq enn (EntNext enn)) (= "ATTRIB" (GET-GC 0 enn)) (= (GET-GC 2 enn) tag))
(progn
(setq conti nil)
(PUT-GC h 40 enn)
)
)
)
)
)
)
(vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object)) acActiveViewport)
) ;_ end while

(setvar "CMDECHO" CURCMD)
(setq *ERROR* NIL)
(princ "Viet boi Duong Ba Diep")
(princ)
) ;_ end defun

 

Lisp thứ 2. Chỉ thay đổi chiều cao 1 thuộc tính trong 1 block. Lisp này cũng có tác dụng với Text và Dim

(defun C:hhh (/ CURCMD ATT OLDVAL TEXT)

(setq *ERROR* (defun MY-ERR (MSG)

(cond ((= MSG "Function cancelled") (princ "\t\tUser abort"))

(t (progn (princ MSG) (princ)))

) ;_ end cond

(setq *ERROR* NIL)

(princ)

) ;_ defun

) ;_ end setq

(defun GET-GC (GROUP ENTITY) (cdr (assoc GROUP (entget ENTITY))))

(defun PUT-GC (VALUE GROUP ENTITY / PROPERTIES)
(setq PROPERTIES (entget ENTITY))
(setq PROPERTIES (subst (cons GROUP VALUE) (assoc GROUP PROPERTIES) PROPERTIES))
(entmod PROPERTIES)
) ;_ end defun

(setq CURCMD (getvar "CMDECHO"))

(setvar "CMDECHO" 0)

(while (/= (setq ATT (car (nentselp "\nCh\U+1ECDn thu\U+1ED9c tính \U+0111\U+1EC3 Edit: "))) NIL)

(if (or (= (GET-GC 0 ATT) "ATTRIB")

(= (GET-GC 0 ATT) "TEXT")

(= (GET-GC 0 ATT) "MTEXT")

(= (GET-GC 0 ATT) "DIMENSION")

) ;_ end or
(progn
(setq OLDVAL (GET-GC 40 ATT))
(setq h (getreal (strcat "\Nhap chieu cao chu <" (rtos OLDVAL 2 2) ">:")))
(if (not h) (setq h OLDVAL))
(PUT-GC h 40 ATT)
)
)
(vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object)) acActiveViewport)
) ;_ end while
(setvar "CMDECHO" CURCMD)
(setq *ERROR* NIL)
(princ)
) ;_ end defun
(defun C:hhh (/ CURCMD ATT OLDVAL TEXT)
 
(setq *ERROR* (defun MY-ERR (MSG)
 
(cond ((= MSG "Function cancelled") (princ "\t\tUser abort"))
 
(t (progn (princ MSG) (princ)))
 
) ;_ end cond
 
(setq *ERROR* NIL)
 
(princ)
 
) ;_ defun
 
) ;_ end setq
 
(defun GET-GC (GROUP ENTITY) (cdr (assoc GROUP (entget ENTITY))))
 
(defun PUT-GC (VALUE GROUP ENTITY / PROPERTIES)
(setq PROPERTIES (entget ENTITY))
(setq PROPERTIES (subst (cons GROUP VALUE) (assoc GROUP PROPERTIES) PROPERTIES))
(entmod PROPERTIES)
) ;_ end defun
 
(setq CURCMD (getvar "CMDECHO"))
 
(setvar "CMDECHO" 0)
 
(while (/= (setq ATT (car (nentselp "\nCh\U+1ECDn thu\U+1ED9c tính \U+0111\U+1EC3 Edit: "))) NIL)
 
(if (or (= (GET-GC 0 ATT) "ATTRIB")
 
(= (GET-GC 0 ATT) "TEXT")
 
(= (GET-GC 0 ATT) "MTEXT")
 
(= (GET-GC 0 ATT) "DIMENSION")
 
) ;_ end or
(progn
(setq OLDVAL (GET-GC 40 ATT))
(setq h (getreal (strcat "\Nhap chieu cao chu <" (rtos OLDVAL 2 2) ">:")))
(if (not h) (setq h OLDVAL))
(PUT-GC h 40 ATT)
)
)
(vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object)) acActiveViewport)
) ;_ end while
(setvar "CMDECHO" CURCMD)
(setq *ERROR* NIL)
(princ)
 

 

Mới làm nhanh chưa test. Bạn dùng nếu  có gì thì reply mình fix nhé

 

(defun C:hhh (/ CURCMD ATT OLDVAL TEXT)
(setq *ERROR* (defun MY-ERR (MSG)
(cond ((= MSG "Function cancelled") (princ "\t\tUser abort"))
     (t (progn (princ MSG) (princ)))
) ;_ end cond
(setq *ERROR* NIL)
(princ)
      ) ;_ defun
) ;_ end setq
(defun GET-GC (GROUP ENTITY) (cdr (assoc GROUP (entget ENTITY))))
(defun PUT-GC (VALUE GROUP ENTITY / PROPERTIES)
(setq PROPERTIES (entget ENTITY))
(setq PROPERTIES (subst (cons GROUP VALUE) (assoc GROUP PROPERTIES) PROPERTIES))
(entmod PROPERTIES) 
(vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object)) acActiveViewport)
) ;_ end defun
(setq CURCMD (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(while (/= (setq ATT (car (nentselp "\nCh\U+1ECDn thu\U+1ED9c tính \U+0111\U+1EC3 Edit: "))) NIL)
(if (or (= (GET-GC 0 ATT) "ATTRIB")
(= (GET-GC 0 ATT) "TEXT")
(= (GET-GC 0 ATT) "MTEXT")
(= (GET-GC 0 ATT) "DIMENSION")
) ;_ end or
(progn
(setq OLDVAL (GET-GC 40 ATT))
(setq h (getreal (strcat "\Nhap chieu cao chu <" (rtos OLDVAL 2 2) ">:")))
(if (not h) (setq h OLDVAL))
(PUT-GC h 40 ATT)
)
)
) ;_ end while
(setvar "CMDECHO" CURCMD)
(setq *ERROR* NIL)
 (princ)
) ;_ end defun
(setq *ERROR* (defun MY-ERR (MSG)
(cond ((= MSG "Function cancelled") (princ "\t\tUser abort"))
     (t (progn (princ MSG) (princ)))
) ;_ end cond
(setq *ERROR* NIL)
(princ)
      ) ;_ defun
) ;_ end setq
(defun GET-GC (GROUP ENTITY) (cdr (assoc GROUP (entget ENTITY))))
(defun PUT-GC (VALUE GROUP ENTITY / PROPERTIES)
(setq PROPERTIES (entget ENTITY))
(setq PROPERTIES (subst (cons GROUP VALUE) (assoc GROUP PROPERTIES) PROPERTIES))
(entmod PROPERTIES) 
(vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object)) acActiveViewport)
) ;_ end defun
(setq CURCMD (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(while (/= (setq ATT (car (nentselp "\nCh\U+1ECDn thu\U+1ED9c tính \U+0111\U+1EC3 Edit: "))) NIL)
(if (or (= (GET-GC 0 ATT) "ATTRIB")
(= (GET-GC 0 ATT) "TEXT")
(= (GET-GC 0 ATT) "MTEXT")
(= (GET-GC 0 ATT) "DIMENSION")
) ;_ end or
(progn
(setq OLDVAL (GET-GC 40 ATT))
(setq h (getreal (strcat "\Nhap chieu cao chu <" (rtos OLDVAL 2 2) ">:")))
(if (not h) (setq h OLDVAL))
(PUT-GC h 40 ATT)
)
)
) ;_ end while
(setvar "CMDECHO" CURCMD)
(setq *ERROR* NIL)
 (princ)
) ;_ end defun
  • Vote tăng 2

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
proconeng86    8

 

(defun C:hhh (/ CURCMD ATT OLDVAL TEXT)

Lisp đầu tiên. Tên lệnh HA.

Sẽ thay đổi tấc cả block thuộc tính. Chọn thuộc tính và nhập chiều cao

;;Thay doi chieu cao thuoc tinh (attributes) Block

;;Viet boi Duong Ba Diep - hochoaivandot

;;www.cadonline.duyxuyen.vn

(defun PUT-GC (VALUE GROUP ENTITY / PROPERTIES)

(setq PROPERTIES (entget ENTITY))

(setq PROPERTIES (subst (cons GROUP VALUE) (assoc GROUP PROPERTIES) PROPERTIES))

(entmod PROPERTIES)

) ;_ end defun

(defun maklis ()  

(setq lis_hex '("0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "A" "B" "C" "D" "E" "F"))  

(setq lis_dec '("0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" "15")) 

)

(defun GET-GC (GROUP ENTITY) (cdr (assoc GROUP (entget ENTITY))))

(defun 16t10 (hex / lis_hex lis_dec L kt S i j)

(maklis)

  (setq L (strlen hex) i L j 0 S 0)

  (Repeat L

    (setq kt (atoi (nth (vl-position (substr hex i 1) lis_hex) lis_dec)))

    (setq S (+ S (* (expt 16 j ) kt)))

    (setq i (1- i))

    (setq j (1+ j))

)

  (itoa S)

)

(defun 10t16 (dec / lis_hex lis_dec hex L dec1 i kt)

(maklis)

  (setq dec (fix dec))

  (setq hex (strcat))

  (setq L (1+ (fix (/ (log dec) (log 16)))) i (1- L) dec1 dec)

  (Repeat L

    (setq kt (nth (vl-position (itoa (fix (/ dec1 (expt 16 i)))) lis_dec) lis_hex))

(setq hex (strcat hex kt))

    (setq dec1 (- dec1 (* (expt 16 i ) (fix (/ dec1 (expt 16 i))))))

    (setq i (1- i))

)

  hex

)

(defun entback (ena / ena2 han1)

(setq han1 (GET-GC 5 ena))

(setq ena2 (handent (10t16 (- (atof (16t10 han1)) 1))))

)

(defun C:ha (/ *ERROR* ATT conti CURCMD e enn h i na OLDVAL ss tag)

(setq *ERROR* (defun MY-ERR (MSG)

(cond ((= MSG "Function cancelled") (princ "\t\tUser abort"))

(t (progn (princ MSG) (princ)))

) ;_ end cond

(setq *ERROR* NIL)

(princ)

) ;_ defun

) ;_ end setq

(setq CURCMD (getvar "CMDECHO"))

(setvar "CMDECHO" 0)

(while (/= (setq ATT (car (nentselp "\nChon ATT muon Edit H: "))) NIL)

(if (= (GET-GC 0 ATT) "ATTRIB")

(progn

(setq OLDVAL (GET-GC 40 ATT))

(setq tag (GET-GC 2 ATT))

(setq h (getreal (strcat "\Nhap chieu cao chu <" (rtos OLDVAL 2 2) ">:")))

(if (not h) (setq h OLDVAL))

(while (= (GET-GC 0 (setq ATT (entback ATT))) "INSERT")

(setq na (GET-GC 2 ATT))

(setq ss (ssget "X" (list (cons 0 "INSERT") (cons 2 na) (cons 66 1))))

)

(repeat (setq i (sslength ss))

(setq e (ssname ss (setq i (1- i))) conti T)

(setq enn e)

(while conti

(if (and (setq enn (EntNext enn)) (= "ATTRIB" (GET-GC 0 enn)) (= (GET-GC 2 enn) tag))

(progn

(setq conti nil)

(PUT-GC h 40 enn)

)

)

)

)

)

)

(vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object)) acActiveViewport)

) ;_ end while

 

(setvar "CMDECHO" CURCMD)

(setq *ERROR* NIL)

(princ "Viet boi Duong Ba Diep")

(princ)

) ;_ end defun

 

Lisp thứ 2. Chỉ thay đổi chiều cao 1 thuộc tính trong 1 block. Lisp này cũng có tác dụng với Text và Dim

(defun C:hhh (/ CURCMD ATT OLDVAL TEXT)

 

(setq *ERROR* (defun MY-ERR (MSG)

 

(cond ((= MSG "Function cancelled") (princ "\t\tUser abort"))

 

(t (progn (princ MSG) (princ)))

 

) ;_ end cond

 

(setq *ERROR* NIL)

 

(princ)

 

) ;_ defun

 

) ;_ end setq

 

(defun GET-GC (GROUP ENTITY) (cdr (assoc GROUP (entget ENTITY))))

 

(defun PUT-GC (VALUE GROUP ENTITY / PROPERTIES)

(setq PROPERTIES (entget ENTITY))

(setq PROPERTIES (subst (cons GROUP VALUE) (assoc GROUP PROPERTIES) PROPERTIES))

(entmod PROPERTIES)

) ;_ end defun

 

(setq CURCMD (getvar "CMDECHO"))

 

(setvar "CMDECHO" 0)

 

(while (/= (setq ATT (car (nentselp "\nCh\U+1ECDn thu\U+1ED9c tính \U+0111\U+1EC3 Edit: "))) NIL)

 

(if (or (= (GET-GC 0 ATT) "ATTRIB")

 

(= (GET-GC 0 ATT) "TEXT")

 

(= (GET-GC 0 ATT) "MTEXT")

 

(= (GET-GC 0 ATT) "DIMENSION")

 

) ;_ end or

(progn

(setq OLDVAL (GET-GC 40 ATT))

(setq h (getreal (strcat "\Nhap chieu cao chu <" (rtos OLDVAL 2 2) ">:")))

(if (not h) (setq h OLDVAL))

(PUT-GC h 40 ATT)

)

)

(vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object)) acActiveViewport)

) ;_ end while

(setvar "CMDECHO" CURCMD)

(setq *ERROR* NIL)

(princ)

) ;_ end defun

(defun C:hhh (/ CURCMD ATT OLDVAL TEXT)
 
(setq *ERROR* (defun MY-ERR (MSG)
 
(cond ((= MSG "Function cancelled") (princ "\t\tUser abort"))
 
(t (progn (princ MSG) (princ)))
 
) ;_ end cond
 
(setq *ERROR* NIL)
 
(princ)
 
) ;_ defun
 
) ;_ end setq
 
(defun GET-GC (GROUP ENTITY) (cdr (assoc GROUP (entget ENTITY))))
 
(defun PUT-GC (VALUE GROUP ENTITY / PROPERTIES)
(setq PROPERTIES (entget ENTITY))
(setq PROPERTIES (subst (cons GROUP VALUE) (assoc GROUP PROPERTIES) PROPERTIES))
(entmod PROPERTIES)
) ;_ end defun
 
(setq CURCMD (getvar "CMDECHO"))
 
(setvar "CMDECHO" 0)
 
(while (/= (setq ATT (car (nentselp "\nCh\U+1ECDn thu\U+1ED9c tính \U+0111\U+1EC3 Edit: "))) NIL)
 
(if (or (= (GET-GC 0 ATT) "ATTRIB")
 
(= (GET-GC 0 ATT) "TEXT")
 
(= (GET-GC 0 ATT) "MTEXT")
 
(= (GET-GC 0 ATT) "DIMENSION")
 
) ;_ end or
(progn
(setq OLDVAL (GET-GC 40 ATT))
(setq h (getreal (strcat "\Nhap chieu cao chu <" (rtos OLDVAL 2 2) ">:")))
(if (not h) (setq h OLDVAL))
(PUT-GC h 40 ATT)
)
)
(vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object)) acActiveViewport)
) ;_ end while
(setvar "CMDECHO" CURCMD)
(setq *ERROR* NIL)
(princ)
 

 

Mới làm nhanh chưa test. Bạn dùng nếu  có gì thì reply mình fix nhé

 

(defun C:hhh (/ CURCMD ATT OLDVAL TEXT)
(setq *ERROR* (defun MY-ERR (MSG)
(cond ((= MSG "Function cancelled") (princ "\t\tUser abort"))
     (t (progn (princ MSG) (princ)))
) ;_ end cond
(setq *ERROR* NIL)
(princ)
      ) ;_ defun
) ;_ end setq
(defun GET-GC (GROUP ENTITY) (cdr (assoc GROUP (entget ENTITY))))
(defun PUT-GC (VALUE GROUP ENTITY / PROPERTIES)
(setq PROPERTIES (entget ENTITY))
(setq PROPERTIES (subst (cons GROUP VALUE) (assoc GROUP PROPERTIES) PROPERTIES))
(entmod PROPERTIES) 
(vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object)) acActiveViewport)
) ;_ end defun
(setq CURCMD (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(while (/= (setq ATT (car (nentselp "\nCh\U+1ECDn thu\U+1ED9c tính \U+0111\U+1EC3 Edit: "))) NIL)
(if (or (= (GET-GC 0 ATT) "ATTRIB")
(= (GET-GC 0 ATT) "TEXT")
(= (GET-GC 0 ATT) "MTEXT")
(= (GET-GC 0 ATT) "DIMENSION")
) ;_ end or
(progn
(setq OLDVAL (GET-GC 40 ATT))
(setq h (getreal (strcat "\Nhap chieu cao chu <" (rtos OLDVAL 2 2) ">:")))
(if (not h) (setq h OLDVAL))
(PUT-GC h 40 ATT)
)
)
) ;_ end while
(setvar "CMDECHO" CURCMD)
(setq *ERROR* NIL)
 (princ)
) ;_ end defun
(setq *ERROR* (defun MY-ERR (MSG)
(cond ((= MSG "Function cancelled") (princ "\t\tUser abort"))
     (t (progn (princ MSG) (princ)))
) ;_ end cond
(setq *ERROR* NIL)
(princ)
      ) ;_ defun
) ;_ end setq
(defun GET-GC (GROUP ENTITY) (cdr (assoc GROUP (entget ENTITY))))
(defun PUT-GC (VALUE GROUP ENTITY / PROPERTIES)
(setq PROPERTIES (entget ENTITY))
(setq PROPERTIES (subst (cons GROUP VALUE) (assoc GROUP PROPERTIES) PROPERTIES))
(entmod PROPERTIES) 
(vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object)) acActiveViewport)
) ;_ end defun
(setq CURCMD (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(while (/= (setq ATT (car (nentselp "\nCh\U+1ECDn thu\U+1ED9c tính \U+0111\U+1EC3 Edit: "))) NIL)
(if (or (= (GET-GC 0 ATT) "ATTRIB")
(= (GET-GC 0 ATT) "TEXT")
(= (GET-GC 0 ATT) "MTEXT")
(= (GET-GC 0 ATT) "DIMENSION")
) ;_ end or
(progn
(setq OLDVAL (GET-GC 40 ATT))
(setq h (getreal (strcat "\Nhap chieu cao chu <" (rtos OLDVAL 2 2) ">:")))
(if (not h) (setq h OLDVAL))
(PUT-GC h 40 ATT)
)
)
) ;_ end while
(setvar "CMDECHO" CURCMD)
(setq *ERROR* NIL)
 (princ)
) ;_ end defun

cám ơn bạn hochoaivandot đã giúp đỡ.

mình đã thử lisp của bạn nhưng mình thấy lisp chỉ cho chọn 1 thuộc tính của 1 block, như vậy thì cũng không làm nhanh được. mình đang cần phải sửa toàn bộ các att của nhiều block cơ

Lisp mình muốn là thế này:

- gõ lệnh 

- chọn nhiều block thuộc tính để chỉnh sửa

- trong block đó có những thuộc tính nào thì sẽ liệt kê tên nó ra để mình lựa chọn chiều cao cho nó

Mình có update 1 file mẫu lên có 2 block thuộc tính nhưng là dynamic block. nếu có thể áp dụng được cho block này thì hay quá

 

 

 

 

 

 

 

 http://www.cadviet.com/upfiles/3/9928_thay_doi_chieu_cao_block_thuoc_tinh.dwg

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
hochoaivandot    108

cám ơn bạn hochoaivandot đã giúp đỡ.

mình đã thử lisp của bạn nhưng mình thấy lisp chỉ cho chọn 1 thuộc tính của 1 block, như vậy thì cũng không làm nhanh được. mình đang cần phải sửa toàn bộ các att của nhiều block cơ

Lisp mình muốn là thế này:

- gõ lệnh 

- chọn nhiều block thuộc tính để chỉnh sửa

- trong block đó có những thuộc tính nào thì sẽ liệt kê tên nó ra để mình lựa chọn chiều cao cho nó

Mình có update 1 file mẫu lên có 2 block thuộc tính nhưng là dynamic block. nếu có thể áp dụng được cho block này thì hay quá

 

 

 

 

 

 

 

 http://www.cadviet.com/upfiles/3/9928_thay_doi_chieu_cao_block_thuoc_tinh.dwg

Lisp thứ 1 sẽ đáp ứng yêu cầu 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

Dùng lệnh BATTMAN (Attribute Manager) để thay đổi thuộc tính cho bất kì ATT nào. Xong rùi dùng lệnh ATTSYNC để áp dụng sự thay đổi của các ATT mới chỉnh sửa. Có lẽ đúng ý bạn. Sửa hàng loạt ATT trong Block.

 

Thâ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
proconeng86    8

Lisp thứ 1 sẽ đáp ứng yêu cầu của bạn

đúng như bạn nói mình thử lại với block thuộc tính thường thì ok nhưng với dynamic block thì không dùng được. bạn có thể chỉnh sửa để có thể áp dụng cho cả dynamic thì tốt quá.

cám ơn bạn nhiều

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
proconeng86    8

Dùng lệnh BATTMAN (Attribute Manager) để thay đổi thuộc tính cho bất kì ATT nào. Xong rùi dùng lệnh ATTSYNC để áp dụng sự thay đổi của các ATT mới chỉnh sửa. Có lẽ đúng ý bạn. Sửa hàng loạt ATT trong Block.

 

Thân.

cách của bạn cũng đúng nhưng hơi dài dòng và chỉnh sửa trong lệnh battman rất lâu. có lisp chỉ cần 1 lệnh sẽ rút ngắn được rất nhiều thời gian

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
phamthanhbinh    3.123

cách của bạn cũng đúng nhưng hơi dài dòng và chỉnh sửa trong lệnh battman rất lâu. có lisp chỉ cần 1 lệnh sẽ rút ngắn được rất nhiều thời gian

Hề hề hề,

Nếu bạn vẫn khoái dùng lisp thì thử dùng cái này coi sao. Có điều là nó chả nhanh hơn dùng batman đâu bạn ạ.

http://www.cadviet.com/upfiles/3/5194_9928_ah_1.lsp

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  

×