Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
12 replies to this topic

#1 proconeng86

proconeng86

    biết lệnh break

  • Members
  • PipPipPipPip
  • 221 Bài viết
Điểm đánh giá: -9 (bình thường)

Đã gửi 22 July 2013 - 10:49 PM

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.c...s/3/9928_ah.lsp


  • 0

#2 proconeng86

proconeng86

    biết lệnh break

  • Members
  • PipPipPipPip
  • 221 Bài viết
Điểm đánh giá: -9 (bình thường)

Đã gửi 09 August 2013 - 10:11 AM

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


  • 0

#3 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 09 August 2013 - 12:08 PM

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.


  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#4 proconeng86

proconeng86

    biết lệnh break

  • Members
  • PipPipPipPip
  • 221 Bài viết
Điểm đánh giá: -9 (bình thường)

Đã gửi 10 August 2013 - 12:18 AM

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


  • 0

#5 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 10 August 2013 - 06:46 AM

Bạn dùng lệnh battman nhé
  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#6 hochoaivandot

hochoaivandot

    biết dimradius

  • Members
  • PipPipPipPipPip
  • 310 Bài viết
Điểm đánh giá: 106 (tàm tạm)

Đã gửi 10 August 2013 - 08:33 AM

(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

  • 2

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#7 proconeng86

proconeng86

    biết lệnh break

  • Members
  • PipPipPipPip
  • 221 Bài viết
Điểm đánh giá: -9 (bình thường)

Đã gửi 12 August 2013 - 11:07 AM

(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.c..._thuoc_tinh.dwg


  • 0

#8 hochoaivandot

hochoaivandot

    biết dimradius

  • Members
  • PipPipPipPipPip
  • 310 Bài viết
Điểm đánh giá: 106 (tàm tạm)

Đã gửi 12 August 2013 - 11:35 AM

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.c..._thuoc_tinh.dwg

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


  • 0

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#9 Ce.truonghai

Ce.truonghai

    Edu level: li2

  • Members
  • PipPip
  • 28 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 12 August 2013 - 01:23 PM

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.


  • 0

#10 proconeng86

proconeng86

    biết lệnh break

  • Members
  • PipPipPipPip
  • 221 Bài viết
Điểm đánh giá: -9 (bình thường)

Đã gửi 13 August 2013 - 11:37 AM

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


  • 0

#11 proconeng86

proconeng86

    biết lệnh break

  • Members
  • PipPipPipPip
  • 221 Bài viết
Điểm đánh giá: -9 (bình thường)

Đã gửi 13 August 2013 - 02:26 PM

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


  • 0

#12 hmt

hmt

    biết lệnh scale

  • Members
  • PipPipPip
  • 146 Bài viết
Điểm đánh giá: -11 (hơi kém)

Đã gửi 29 August 2013 - 11:10 PM

e dùng lisp trên không đc nó bào nil các bác ạ ?


  • 0

#13 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 30 August 2013 - 11:28 AM

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.c...4_9928_ah_1.lsp


  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.