Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
3 replies to this topic

#1 18011985

18011985

    biết lệnh properties

  • Members
  • PipPipPipPip
  • 255 Bài viết
Điểm đánh giá: 61 (tàm tạm)

Đã gửi 20 August 2010 - 03:54 PM

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.
  • 0
Trăng 16 trăng tròn
Em 16 bụng ... như trăng

Hướng dẫn sử dụng diễn đàn:
Để cảm ơn hay bài viết có ích: Ấn dấu + cuối bài.
Không vừa lòng hay bài spam: Ấn dấu - cuối bài.

#2 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 20 August 2010 - 04:38 PM

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.'
  • 0

#3 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 20 August 2010 - 04:58 PM

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
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#4 18011985

18011985

    biết lệnh properties

  • Members
  • PipPipPipPip
  • 255 Bài viết
Điểm đánh giá: 61 (tàm tạm)

Đã gửi 23 August 2010 - 08:03 AM

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.
  • 0
Trăng 16 trăng tròn
Em 16 bụng ... như trăng

Hướng dẫn sử dụng diễn đàn:
Để cảm ơn hay bài viết có ích: Ấn dấu + cuối bài.
Không vừa lòng hay bài spam: Ấn dấu - cuối bài.