Đến nội dung


Hình ảnh
* * * - - 17 Bình chọn

Hỏi về Lisp (thuật toán, ý tưởng, coding,...)


  • Please log in to reply
2854 replies to this topic

#2641 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 03 August 2015 - 10:18 AM

(car (vl-sort l1 '(lambda(x y) (< (car x) (car y)))))

(assoc (apply 'min (mapcar 'car l1)) l1)


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#2642 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 03 August 2015 - 10:34 AM

(car (vl-sort l1 '(lambda(x y) (< (car x) (car y)))))

(assoc (apply 'min (mapcar 'car l1)) l1)

Hii. Vậy mà em không nghĩ ra. Cách 1 thì em làm dc rồi.

Không biết 1 trong 2 cách thì thằng nào tốc độ nhanh hơn hả bác?

Em cảm ơn bác nhiều


  • 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







#2643 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 03 August 2015 - 10:53 AM

Đoán là cách 1 nhanh hơn. Em thử tạo list đủ lớn rồi thử xem.


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#2644 Tr.CongSon

Tr.CongSon

    biết lệnh array

  • Members
  • PipPipPip
  • 183 Bài viết
Điểm đánh giá: 40 (tàm tạm)

Đã gửi 20 August 2015 - 11:26 AM

Chào các anh chị,

Em đang viết đoạn Lisp để chỉnh sưa bảng thông kê cho cốt thép như file đính kèm.

http://www.cadviet.c...g_ke_thep_2.dwg

Em có đọc bài viết của a Tue_NV ở trang này http://www.cadviet.c...ong-block-dong/ .Trong đoạn video đó,anh Tue_NV có viết lisp để  ED 1  giá trị trong Block thuộc tính  (ví dụ như số lượng thép, chiều dài, phi,...) thì nó update kết quả luôn (chiều dài,khối lượng ).Do trong topic đó anh Tuệ đã nói "không cho không được" nên em mạo muội nhờ các anh chị giải thích giúp em  1 vài vấn đề sau được không ạ:

  1. Trong lisp Làm sao chỉnh sửa Text trong block ATT nó hiện bảng như edit Text bình thường .(giống như a Tuệ đã làm)
  2. Ở chỗ Update giá trị có phải a Tuệ dùng Field để update hay dùng chức năng gì ạ? 
  3. Sẵn anh chị cho em vài đoạn code mẫu hoặc giải thích giúp em cách dùng Field trong Lisp như thế nào với,.Hoặc cho em vài đường link để tham khảo cũng được ạ 

Mong anh chị giúp đỡ .Em chân thành cảm ơn!


  • 0

#2645 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 20 August 2015 - 12:08 PM

1. Edit text hay edit att? Bản vẽ cao hơn 2007 không đọc được.

2. Đợi tác giả.

3. Google Field thì đọc 1 năm không xuể.


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#2646 Tr.CongSon

Tr.CongSon

    biết lệnh array

  • Members
  • PipPipPip
  • 183 Bài viết
Điểm đánh giá: 40 (tàm tạm)

Đã gửi 20 August 2015 - 01:06 PM

1. Edit text hay edit att? Bản vẽ cao hơn 2007 không đọc được.

2. Đợi tác giả.

3. Google Field thì đọc 1 năm không xuể.

Sorry anh ,lúc sáng em upload file được mà giờ up lên toàn bị IT chặn hết.

ANh chị nào convert file về 2007 giúp em với

 

@a Hạ:

  1. Edit text trong block ATT à a
  2. Anh xem video của a Tue xem sao ạ (em cũng đang đợi tin a Tuệ đây)
  3. Cảm ơn a,em cũng đang tham khảo trên này.Nhưng chưa hiểu các tạo các Field trong Lisp a ạ.

  • 0

#2647 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 20 August 2015 - 03:24 PM

B

 

 

Chào các anh chị,

Em đang viết đoạn Lisp để chỉnh sưa bảng thông kê cho cốt thép như file đính kèm.

http://www.cadviet.c...g_ke_thep_2.dwg

Em có đọc bài viết của a Tue_NV ở trang này http://www.cadviet.c...ong-block-dong/ .Trong đoạn video đó,anh Tue_NV có viết lisp để  ED 1  giá trị trong Block thuộc tính  (ví dụ như số lượng thép, chiều dài, phi,...) thì nó update kết quả luôn (chiều dài,khối lượng ).Do trong topic đó anh Tuệ đã nói "không cho không được" nên em mạo muội nhờ các anh chị giải thích giúp em  1 vài vấn đề sau được không ạ:

  1. Trong lisp Làm sao chỉnh sửa Text trong block ATT nó hiện bảng như edit Text bình thường .(giống như a Tuệ đã làm)
  2. Ở chỗ Update giá trị có phải a Tuệ dùng Field để update hay dùng chức năng gì ạ? 
  3. Sẵn anh chị cho em vài đoạn code mẫu hoặc giải thích giúp em cách dùng Field trong Lisp như thế nào với,.Hoặc cho em vài đường link để tham khảo cũng được ạ 

Mong anh chị giúp đỡ .Em chân thành cảm ơn!

 

Giống như bạn Tuệ thì chỉ có bạn Tuệ trả lời được. Nhưng mình nghĩ trình lisp của bạn đã có đủ khả năng làm thống kê thép bằng block chứa att. 

1.Bạn làm 1 hàm con đọc att trong block cần đọc được tag và giá trị.

2.Bạn lại làm 1 hàm con có khả năng sửa  giá trị có tag chỉ định trong block.

Cứ chọn 1 att trong block dùng hàm 1. Nhập giá trị cần sửa. Dùng hàm 2 chỉnh chính nó và các tag khác sau khi cộng trừ nhân chia.


  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#2648 Tr.CongSon

Tr.CongSon

    biết lệnh array

  • Members
  • PipPipPip
  • 183 Bài viết
Điểm đánh giá: 40 (tàm tạm)

Đã gửi 20 August 2015 - 04:07 PM

B

 

Giống như bạn Tuệ thì chỉ có bạn Tuệ trả lời được. Nhưng mình nghĩ trình lisp của bạn đã có đủ khả năng làm thống kê thép bằng block chứa att. 

1.Bạn làm 1 hàm con đọc att trong block cần đọc được tag và giá trị.

2.Bạn lại làm 1 hàm con có khả năng sửa  giá trị có tag chỉ định trong block.

Cứ chọn 1 att trong block dùng hàm 1. Nhập giá trị cần sửa. Dùng hàm 2 chỉnh chính nó và các tag khác sau khi cộng trừ nhân chia.

Em cảm ơn a Duy,

  1. Lấy giá trị TagString và TextString của Block ATT em làm được ạ
  2. Sửa TagString có giá trị Tag chỉ định thì em cũng  tạm ổn
  3. Màu Xanh:  Em chỉ biết nhập giá trị cần sửa = hàm getstring hoặc getreal thôi ạ.Chứ làm cho nó trực quan giống như Edit Dtext bình thường (như a Tuệ đã làm ) em suy nghĩ mãi mà chưa ra cách nên mới nhờ các anh chị ạ.

Cách làm của em:

  1. Chọn Block Att để lấy các TagString và Text String
  2. Dùng (car (nentsel"\Chon Text trong Block ATT can Edit:")) để chọn cái Text Block ATT cần sửa.-->Thắc mắc:Ở Lisp a Tuệ chỉ làm 1 bước là đã tới cái Text trong Block ATT -->Cái này em làm chưa được 
  3. Nhập giá trị và lisp tự tính

Các anh chị xem từ bước 2 em có được entityname con của Blockatt -->Có cách nào mà từ bước 2 có thể lấy Entity của Block và các TagString,Textstring của Block ATT đó không ạ (không cần chọn block ở bước 1)


  • 0

#2649 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 315 (khá)

Đã gửi 20 August 2015 - 04:45 PM

Cái màu xanh:

Sau khi lấy được tính chất của Tag đó  => ẩn tag đó đi => entmake Text có một số tính chất của Tag (Textstring, Style, Heigth, Pos ...) => Edit text => Lấy giá trị mới của text này gán vào Tag và cho hiện lên=> Xóa text entmake.

Chỉ 1 bước: (defun c:test () (setq ent (entsel)) (setq a-ent (nentselp (cadr ent))))


  • 1

#2650 pphung183

pphung183

    biết dimstyle

  • Members
  • PipPipPipPipPip
  • 384 Bài viết
Điểm đánh giá: 425 (tốt)

Đã gửi 20 August 2015 - 06:18 PM

Mình hay dùng lisp này để sữa nhanh các đối tượng có Text :) :

(defun c:edt (/ ent subent tn) 
(setq ent (entsel "\nPick chon Text : ")) 
(setq subent (car (nentselp (cadr ent))))
(setq tn (lisped (cdr (assoc 1 (entget subent)))))
(entmod (subst (cons 1 tn) (assoc 1 (entget subent)) (entget subent)))
(entupd (car ent))
(princ))


  • 2

#2651 Tr.CongSon

Tr.CongSon

    biết lệnh array

  • Members
  • PipPipPip
  • 183 Bài viết
Điểm đánh giá: 40 (tàm tạm)

Đã gửi 21 August 2015 - 07:25 AM

Cái màu xanh:

Sau khi lấy được tính chất của Tag đó  => ẩn tag đó đi => entmake Text có một số tính chất của Tag (Textstring, Style, Heigth, Pos ...) => Edit text => Lấy giá trị mới của text này gán vào Tag và cho hiện lên=> Xóa text entmake.

Chỉ 1 bước: (defun c:test () (setq ent (entsel)) (setq a-ent (nentselp (cadr ent))))

Cảm ơn a quocmanh04tt

Tối qua về mày mò ra cũng giống như a vậy,code em dùng:

(setq ent (entsel"\Chon Text trong Block ATT can Edit:")
               p1 (cadr ent)
               e2 (car (nentselp p1)));;chỗ này có thể dùng (ssget point '((0 . "INSERT"))) cũng được
 
Màu xanh: Giờ mới đọc cmt của anh , nên em sẽ thử xem sao,em code có chỗ nào vướng mắc em sẽ post hỏi tiếp ạ
 
@a pphung : Em cảm ơn nhưng cái này không phải cái em cần anh ơi,vì em muốn Edit trực tiếp chỗ cái Text của Block ATT cho dễ thẫy ấy mà 

  • 0

#2652 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 21 August 2015 - 09:07 AM

@ Tr. Cong Son: Cấu tạo Block của mình bằng các Attribute (không sử dụng Field trong block thống kê thép tròn).

Hướng đi đúng theo quocmanh đã viết ^_^


  • 1

#2653 Tr.CongSon

Tr.CongSon

    biết lệnh array

  • Members
  • PipPipPip
  • 183 Bài viết
Điểm đánh giá: 40 (tàm tạm)

Đã gửi 21 August 2015 - 11:02 AM

@ Tr. Cong Son: Cấu tạo Block của mình bằng các Attribute (không sử dụng Field trong block thống kê thép tròn).

Hướng đi đúng theo quocmanh đã viết ^_^

 

Thanks a Tuệ,

Anh chị cho em hỏi:em dùng code này để lấy list (Tagstring . Textstring) 

 

(setq ent (entsel "\Chon Text trong Block ATT can Edit:")
e2 (car (nentselp (cadr ent)))
obj (vlax-ename->vla-object ent)
lstATT (Getatt obj)
)

(defun GetAtt (obj)
(mapcar '(lambda (att) (cons (vla-get-TagString att) (vla-get-TextString att)))
(vlax-invoke obj 'GetAttributes)
)
)
 
Nhưng dùng thì có hồi được ,hồi báo lỗi như vậy:  ActiveX Server returned the error: unknown name: "GETATTRIBUTES"
Anh chị giải thích cho em biết và cách khắc phục như thế nào ko ạ?
Em cảm ơn

Bài viết đã được chỉnh sửa nội dung bởi Tr.CongSon: 21 August 2015 - 01:42 PM

  • 0

#2654 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 21 August 2015 - 01:50 PM

 

Thanks a Tuệ,

Anh chị cho em hỏi:em dùng code này để lấy list (Tagstring . Textstring) 

 

(setq ent (entsel "\Chon Text trong Block ATT can Edit:")
e2 (car (nentselp (cadr ent)))
obj (vlax-ename->vla-object ent)
lstATT (Getatt obj)
)

(defun GetAtt (obj)
(mapcar '(lambda (att) (cons (vla-get-TagString att) (vla-get-TextString att)))
(vlax-invoke obj 'GetAttributes)
)
)
 
Nhưng dùng thì có hồi được ,hồi báo lỗi như vậy:  ActiveX Server returned the error: unknown name: "GETATTRIBUTES"
Anh chị giải thích cho em biết và cách khắc phục như thế nào ko ạ?
Em cảm ơn

 

 

Bạn có thể kiểm tra ename đó có tồn tại dxf 66 khong? trước khi lấy  "GETATTRIBUTES"


  • 1

#2655 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 315 (khá)

Đã gửi 21 August 2015 - 03:58 PM

Sao bác Tue_NV trích dẫn được code của Tr.CongSon mà em thì chẳng thấy code trong bài viết của Tr.CongSon nhỉ (bài #2651 và #2653)?


  • 0

#2656 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 21 August 2015 - 04:12 PM

Sao bác Tue_NV trích dẫn được code của Tr.CongSon mà em thì chẳng thấy code trong bài viết của Tr.CongSon nhỉ (bài #2651 và #2653)?

cứ vào trả lời là nó lòi ra. Cadviet dạo này chơi chiêu mà
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#2657 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 315 (khá)

Đã gửi 21 August 2015 - 04:20 PM

Vậy hả Bác, để em thử xem sao. Cám ơn bác.


  • 0

#2658 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 315 (khá)

Đã gửi 21 August 2015 - 04:28 PM

Xem có thấy gì không ???
 

Cảm ơn a quocmanh04tt
Tối qua về mày mò ra cũng giống như a vậy,code em dùng:
(setq ent (entsel"\Chon Text trong Block ATT can Edit:")
               p1 (cadr ent)
               e2 (car (nentselp p1)));;chỗ này có thể dùng (ssget point '((0 . "INSERT"))) cũng được
 
Màu xanh: Giờ mới đọc cmt của anh , nên em sẽ thử xem sao,em code có chỗ nào vướng mắc em sẽ post hỏi tiếp ạ
 
@a pphung : Em cảm ơn nhưng cái này không phải cái em cần anh ơi,vì em muốn Edit trực tiếp chỗ cái Text của Block ATT cho dễ thẫy ấy mà

@Tr.CongSon tham khảo:
(defun c:eda (/ a-ent data ent n-ent obj text_temp)
(if(setq ent (entsel))(progn
(setq a-ent (nentselp (cadr ent)))
(setq n-ent (entget (car a-ent)))))
(if (eq (cdr (assoc 0 n-ent)) "ATTRIB")
(progn (setq obj (vlax-ename->vla-object (car a-ent)))
(setq data (cons '(0 . "TEXT") (vl-remove-if-not '(lambda (x) (member (car x) '(1 7 8 10 41 40 50 62))) n-ent))) ;Lay tinh chat cua Text trong tag
(vla-put-visible obj :vlax-false) ; An Tag
(entmakex data) ; Tao text tam thoi
(setq text_temp (entlast))
(if (< (atof (substr (getvar "acadver") 1 4)) 17.2)
(vl-cmdf "_.DDEDIT" text_temp "")
(vl-cmdf "_.TEXTEDIT" text_temp))
(vla-put-visible obj :vlax-true) ; Hien tag
(vla-put-textstring obj (cdr (assoc 1 (entget text_temp)))) ; Gan noi dung moi cho tag
(entdel text_temp))) ; Xoa text tam
(princ))

  • 1

#2659 Tr.CongSon

Tr.CongSon

    biết lệnh array

  • Members
  • PipPipPip
  • 183 Bài viết
Điểm đánh giá: 40 (tàm tạm)

Đã gửi 21 August 2015 - 05:14 PM

Xem có thấy gì không ???
 
@Tr.CongSon tham khảo:
 

Hi.Giờ mới đọc comment của a.Cảm ơn anh nhiều (Like This)

Em viết hồi sáng giờ cũng được chừng ni rồi,Khi chạy từng đoạn thì được nhưng chạy tổng hết lệnh thì nó không được ak

ANh chị check giúp em với

 

; GetAtt - Reads all attribute values from a block
; Copyright: ;#169;2000 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
; Obj = Object [VLA-OBJECT]
; Return [Type]:
; > Dotted pair list '(("Tag1" . "Val1")...) [LIST]
(defun GetAtt (obj)
(mapcar '(lambda (att) (cons (vla-get-TagString att) (vla-get-TextString att)))
(vlax-invoke obj 'GetAttributes)
)
)
;;;----------------------------------------
(defun SetAtt (obj lst / attval)
(mapcar '(lambda (att)
(if (setq attval (cdr (assoc (vla-get-TagString att) lst)))
(vla-put-TextString att attval)
)
)
(vlax-invoke obj 'GetAttributes)
)
(vla-update obj)
)
;;;----------------------------------------

(defun T_Weight (Phi TongDai)

(/ (* pi (expt Phi 2) 7850 TongDai) (* 4 (expt 10 6))) ;phi=mm,TongDai=m
)
(defun T_Len1T (lstlen)

(apply '+ (mapcar '(lambda (x) (atoi (cdr x))) lstlen));lstlen=m
)
;;;----------------------------------------
; Lay ma Dxf cua doi tuong
(defun GetDxf(n elist) (cdr (assoc n elist)))
;;;----------------------------------------
(defun TS:Change_ATT (objblk objatt / 1ck cd1t dia lstatt lstdk lstkt newvalue sock tag tcd tl tst
val)

(setq LstATT (Getatt ObjBLK)
Tag (vla-get-TagString ObjATT)
Val (vla-get-TextString ObjATT)
Dia (atoi (substr (GetDxf "DK" LstATT) 4))
)
(cond
((wcmatch Tag "KT*")
(setq lstKT (vl-remove-if-not
'(lambda (x)
(and (wcmatch (car x) "KT*")
(/= (cdr x) "")
)
)
LstATT
)
lstKT (subst (cons Tag NewValue) (assoc Tag lstKT) lstKT)
CD1T (T_Len1T lstKT)
TCD (* CD1T (distof (GetDxf "TST" LstATT)) 10e-4)
TL (T_Weight Dia TCD)
lstUp (append lstKT (mapcar '(lambda (a B) (cons a B))
(list "CD1T" "TCD" "TL")
(list (itoa CD1T) (rtos TCD 2 2) (rtos TL 2 2))))
)
)
((wcmatch Tag "DK")
(setq Dia (atoi NewValue)
lstDK (cons Tag (strcat "%%c" NewValue))
TCD (GetDxf "TCD" LstATT)
TL (T_Weight Dia (atof TCD))
lstUp (mapcar '(lambda (a B) (cons a B))
(list Tag "TCD" "TL")
(list (strcat "%%c" NewValue) TCD (rtos TL 2 2)))
)
)
((wcmatch Tag "1T")
(initget 7)
(setq SoCK (getint "\nNh\U+1EADp S\U+1ED1 C\U+1EA5u Ki\U+1EC7n : "))
(setq 1CK (cons Tag NewValue)
TST (* SoCK (atoi NewValue))
CD1T (atoi (GetDxf "CD1T" LstATT))
TCD (* CD1T TST 10e-4)
TL (T_Weight Dia TCD)
lstUp (mapcar '(lambda (a B) (cons a B))
(list Tag "TST" "TCD" "TL")
(list NewValue (itoa TST) (rtos TCD 2 2) (rtos TL 2 2))
)
)
)
)
(SetAtt ObjBLK lstUp)
)


;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:STK (/ SelATT)

(setvar "CMDECHO" 0)
(defun TS:STK (Selent / entatt lsttemp newvalue objatt objblk txttemp)
(setq ObjBLK (vlax-ename->Vla-Object (car Selent))
EntATT (car (nentselp (cadr Selent)))
ObjATT (vlax-ename->Vla-Object EntATT)
Lsttemp (vl-remove-if-not
'(lambda (pair)
(member (car pair) (list 7 8 10 40 67 1))
)
(entget EntATT)
)
)
(if (vlax-property-available-p ObjATT 'Visible)
(vlax-put ObjATT 'Visible 0)
)
(setq TxtTemp (entmakex
(append (list '(0 . "TEXT")
'(100 . "AcDbEntity")
'(100 . "AcDbText")
)
Lsttemp
)
)
)
(vl-cmdf "_.DDEDIT" txtTemp)
(setq NewValue (GetDxf 1 (entget (entlast))))
(TS:Change_ATT ObjBLK ObjATT)
(entdel txttemp)
(if (vlax-property-available-p ObjATT 'Visible)
(vlax-put ObjATT 'Visible 1)
)
)
(while (setq SelATT (entsel "\Chon Text trong Block ATT can Edit:"))
(TS:STK SelATT)
)
(princ)
)


  • 0

#2660 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 315 (khá)

Đã gửi 22 August 2015 - 11:56 AM

Không biết bạn đã xử lý được chưa?

* Theo mình kiểm tra thì thấy có một số biến bạn khử sớm quá (Xác định biến cục bộ và biến toàn cục), giải quyết vấn đề này là OK.


  • 0