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

ssget ssadd ............... Loạn mất rồi

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

Mình có một đoạn mã sử dụng:

(setq ss (ssget))

(setq ssn (ssname ss (setq m (1- m))))

setq ent (entget ssn))

Sau đó mình thay đổi 1 số phần trong ent.

(entmod ent)

Bây giờ ent đã trở thành một biến khác.

và ss giờ không còn là đối tượng cũ nữa.

Vậy mình muốn hỏi làm sao để lấy được ss mới mà không cần chọn đối tượng mới đấy.

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
Mình có một đoạn mã sử dụng:

(setq ss (ssget))

(setq ssn (ssname ss (setq m (1- m))))

setq ent (entget ssn))

Sau đó mình thay đổi 1 số phần trong ent.

(entmod ent)

Bây giờ ent đã trở thành một biến khác.

và ss giờ không còn là đối tượng cũ nữa.

Vậy mình muốn hỏi làm sao để lấy được ss mới mà không cần chọn đối tượng mới đấy.

Như dòng lệnh của bạn thì không có gì khác cả,

 

Bạn có thể up đầy đủ đoạn code của bạn lên được không, cái chỗ mà bạn viết là 'Sau đó mình thay đổi 1 số phần trong ent.'

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

sau khi lấy ename của đối tuợng thứ i trong SS, bạn remove đối tuợng đó ra khỏi SS. hàm (ssdel ename SS)

Entmod đối tuợng xong, bạn lấy ename của đối tuợng entlast rồi lại add nó trở lại SS. Hàm (ssadd ename SS)

Lưu ý: làm theo cách này thứ tự đối tượng của SS mới sẽ không giống thứ tự đối tượng của SS cũ. đối tượng mới được add vào sẽ nằm ở vị trí cuối cùng của SS

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
Như dòng lệnh của bạn thì không có gì khác cả,

 

Bạn có thể up đầy đủ đoạn code của bạn lên được không, cái chỗ mà bạn viết là 'Sau đó mình thay đổi 1 số phần trong ent.'

Sau đây toàn bộ đoạn lsp của mình:

(defun c:cc (/ C10 C72 C73 ENT I M N N10 N72 N73 PTC SS SSN VT C71 N71)
 (princ "\n Chän ®èi t­îng: ")
 (setq ss (ssget))
 (setq n (sslength ss))
 (setq m n)
 (setq vt (getpoint "\n Chän vÞ trÝ c¨n chØnh: "))
 (setq ptc (car vt))
 (setq i 0)
 (while (< i n)
   (setq ssn (ssname ss (setq m (1- m))))
   (setq ent (entget ssn))
   (if (= (cdr(assoc 0 ent)) "TEXT")
     (progn
(setq c10 (cdr (assoc 10 ent)))
(setq n10 (list 10 ptc (cadr c10) (caddr c10)))
(setq c10 (assoc 10 ent))
(setq c73 (assoc 73 ent))
(setq c72 (assoc 72 ent))
(setq n73 (cons 73 0))	
(setq n72 (cons 72 0))
(setq ent (subst n10 c10 ent))
(setq ent (subst n72 c72 ent))
(setq ent (subst n73 c73 ent))
(entmod ent)
)
     )
   (if (= (cdr(assoc 0 ent)) "MTEXT")
     (progn
(setq c10 (cdr (assoc 10 ent)))
(setq n10 (list 10 ptc (cadr c10) (caddr c10)))
(setq c10 (assoc 10 ent))
(setq c71 (assoc 71 ent))
(setq n71 (cons 71 4))
(setq ent (subst n10 c10 ent))
(setq ent (subst n71 c71 ent))	
(entmod ent)
)
     )
   (setq i (1+ i))
   )
 (princ)
 )

Đây là đoạn code lsp viết riêng cho một lần thực hiện, khi mình đưa sang dialog và để hàm lặp lại câu lệnh khi ấn vào các nút, ấn lần đầu thì không sao, ấn lần thứ 2 thì mình phải chọn lại đối tượng mới thì mới được tức mình muốn truy xuất đối tượng mới mà không cần thao tác chọn đối tượng đấy lần thứ 2. Rất mong bạn góp ý giúp mình.

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  

×