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

Hỏi về lệnh Qse

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

Hello mọi người em có rất nhiều text "Số thửa X" thuộc rất nhiều layer khác nhau giờ em muốn lọc nó ra, thì lệnh qse phải điền kí hiệu gì chung với cụm từ "Số thửa" để em có thể chọn tất cả các số thửa X đc ạ, em xin cảm ơ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
Vào lúc 5/9/2019 tại 16:19, Doan Van Ha đã nói:

 

Anh ơi cho em hỏi thêm, em có đối tượng là mtext nhưng khi X ra thì text nó bị vỡ có lệnh nào trong cad phá ra mà giữ nguyên text ban đầu không anh

image.thumb.png.b082db60b561920b97b943201cc2cad1.png

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
3 giờ trước, divine kai đã nói:

Anh ơi cho em hỏi thêm, em có đối tượng là mtext nhưng khi X ra thì text nó bị vỡ có lệnh nào trong cad phá ra mà giữ nguyên text ban đầu không anh

image.thumb.png.b082db60b561920b97b943201cc2cad1.png

Bạn dùng cái này để chữa: UFMT, chọn hết Mtext, enter, sau đó X ra bình thường.

[UFMT] Unformat Mtext.LSP

  • Like 1

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
Vào lúc 13/9/2019 tại 16:32, divine kai đã nói:

có nhiều trường hợp vẫn bị bạn ơi, hay là do mình chưa làm đúng

Bạn đưa bản vẽ cụ thể lên đây mình xem, lisp mình lấy của cụ Lê Mác nên cũng ko rõ lắm :)

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
Vào lúc 12/9/2019 tại 15:17, divine kai đã nói:
Vào lúc 17/9/2019 tại 13:57, Duong Nhat Duy đã nói:

Bạn đưa bản vẽ cụ thể lên đây mình xem, lisp mình lấy của cụ Lê Mác nên cũng ko rõ lắm :)

 

em gửi anh dữ liệu

Drawing1.dwg

 

em có gửi ở phiá trên đó anh

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
18 giờ trước, divine kai đã nói:

em có gửi ở phiá trên đó anh

Lisp của cụ Lê Mác đúng là không dùng cho Mtext có xuống dòng (vẫn dùng được mà dùng xong bị thành 1 dòng). Bạn thông cảm, ko phải lisp của mình hề hề.

Vậy bạn còn ví dụ nào mà Mtext 1 dòng, dùng lisp UFMT, sau đó X mà text bị rời rạc ko đưa mình xem.

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
Vào lúc 12/9/2019 tại 14:00, divine kai đã nói:

Anh ơi cho em hỏi thêm, em có đối tượng là mtext nhưng khi X ra thì text nó bị vỡ có lệnh nào trong cad phá ra mà giữ nguyên text ban đầu không anh

image.thumb.png.b082db60b561920b97b943201cc2cad1.png

Trước khi X, bạn chuyển Style "Style-STANDARD" dùng font đọc được (không lỗi như hình ảnh trên). Cụ thể ở file này dùng TCVN3.

  • Like 1

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
Vào lúc 18/9/2019 tại 16:14, divine kai đã nói:

em có gửi ở phiá trên đó anh

Bạn dùng thử lisp này xem, chưa test hết các trường hợp, mới đầu dùng ok 

(vl-load-com)
(defun c:xt (/ ss lstl ent ss1 lst lst2 en en2 en3 str)
(setq ss  (ssget '((0 . "MTEXT"))))
  (command "_-OVERKILL" ss "" "D")
  (setq ss1 (ssadd) ent (entlast))
(setq qa (getvar "QAFLAGS"))
(setvar "QAFLAGS" 1)
(command "._explode" ss "" )
(setvar "QAFLAGS" qa)
  (while (setq ent (entnext ent))
 (setq ss1 (ssadd ent ss1)))
    (setq ss1 (acet-ss-to-list ss1))
    (setq ss1 (vl-sort ss1 '(lambda (x y) (cond	( (= (cadr (cdr (assoc 10 (entget x)))) (cadr (cdr (assoc 10 (entget y)))) )
					    (< (car (cdr (assoc 10 (entget x)))) (car (cdr (assoc 10 (entget y))))))
					     ((> (cadr (cdr (assoc 10 (entget x)))) (cadr (cdr (assoc 10 (entget  y))))))  ))))
    (while (setq en (car ss1))
      (setq ss1 (cdr ss1))
      (setq lst2 (list en))
      (while (and (setq en2 (car ss1))
		  (= (cadr (cdr (assoc 10 (entget en)))) (cadr (cdr (assoc 10 (entget en2)))) )
		 (< (abs (- (car (cdr (assoc 10 (entget en)))) (car (cdr (assoc 10 (entget en2)))) ))
		    (* (cdr (assoc 40 (entget en))) 20))
		  )
	(setq ss1 (cdr ss1))
	(setq lst2 (append lst2 (list en2)))
	)
      (if (> (length lst2) 1) (progn
	(setq str "")
	(mapcar '(lambda (x) (setq str (strcat str (cdr (assoc 1 (entget x)))))) lst2)
	(setq en3 (car lst2))
	 (mapcar '(lambda (x) (entdel x) ) (cdr lst2))
	(entmod (subst (cons 1 str) (assoc 1 (entget en3)) (entget en3)))
	) )
      )
  (princ)
  )

 

  • Like 1

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
3 giờ trước, Duong Nhat Duy đã nói:

Lisp của cụ Lê Mác đúng là không dùng cho Mtext có xuống dòng (vẫn dùng được mà dùng xong bị thành 1 dòng). Bạn thông cảm, ko phải lisp của mình hề hề.

Vậy bạn còn ví dụ nào mà Mtext 1 dòng, dùng lisp UFMT, sau đó X mà text bị rời rạc ko đưa mình xem.

mình không có trường hợp đó....

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
3 giờ trước, Doan Nguyen Van đã nói:

Bạn dùng thử lisp này xem, chưa test hết các trường hợp, mới đầu dùng ok 


(vl-load-com)
(defun c:xt (/ ss lstl ent ss1 lst lst2 en en2 en3 str)
(setq ss  (ssget '((0 . "MTEXT"))))
  (command "_-OVERKILL" ss "" "D")
  (setq ss1 (ssadd) ent (entlast))
(setq qa (getvar "QAFLAGS"))
(setvar "QAFLAGS" 1)
(command "._explode" ss "" )
(setvar "QAFLAGS" qa)
  (while (setq ent (entnext ent))
 (setq ss1 (ssadd ent ss1)))
    (setq ss1 (acet-ss-to-list ss1))
    (setq ss1 (vl-sort ss1 '(lambda (x y) (cond	( (= (cadr (cdr (assoc 10 (entget x)))) (cadr (cdr (assoc 10 (entget y)))) )
					    (< (car (cdr (assoc 10 (entget x)))) (car (cdr (assoc 10 (entget y))))))
					     ((> (cadr (cdr (assoc 10 (entget x)))) (cadr (cdr (assoc 10 (entget  y))))))  ))))
    (while (setq en (car ss1))
      (setq ss1 (cdr ss1))
      (setq lst2 (list en))
      (while (and (setq en2 (car ss1))
		  (= (cadr (cdr (assoc 10 (entget en)))) (cadr (cdr (assoc 10 (entget en2)))) ) )
	(setq ss1 (cdr ss1))
	(setq lst2 (append lst2 (list en2)))
	)
      (if (> (length lst2) 1) (progn
	(setq str "")
	(mapcar '(lambda (x) (setq str (strcat str (cdr (assoc 1 (entget x)))))) lst2)
	(setq en3 (car lst2))
	 (mapcar '(lambda (x) (entdel x) ) (cdr lst2))
	(entmod (subst (cons 1 str) (assoc 1 (entget en3)) (entget en3)))
	) )
      )
  (princ)
  )

 

em cảm ơn anh nhiều, lisp sài rất tốt

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
3 giờ trước, Doan Nguyen Van đã nói:

Bạn dùng thử lisp này xem, chưa test hết các trường hợp, mới đầu dùng ok 

...


(vl-load-com)
(defun c:xt (/ ss lstl ent ss1 lst lst2 en en2 en3 str)
(setq ss  (ssget '((0 . "MTEXT"))))
  (command "_-OVERKILL" ss "" "D")
  (setq ss1 (ssadd) ent (entlast))
(setq qa (getvar "QAFLAGS"))
(setvar "QAFLAGS" 1)
(command "._explode" ss "" )
(setvar "QAFLAGS" qa)
  (while (setq ent (entnext ent))
 (setq ss1 (ssadd ent ss1)))
    (setq ss1 (acet-ss-to-list ss1))
    (setq ss1 (vl-sort ss1 '(lambda (x y) (cond	( (= (cadr (cdr (assoc 10 (entget x)))) (cadr (cdr (assoc 10 (entget y)))) )
					    (< (car (cdr (assoc 10 (entget x)))) (car (cdr (assoc 10 (entget y))))))
					     ((> (cadr (cdr (assoc 10 (entget x)))) (cadr (cdr (assoc 10 (entget  y))))))  ))))
    (while (setq en (car ss1))
      (setq ss1 (cdr ss1))
      (setq lst2 (list en))
      (while (and (setq en2 (car ss1))
		  (= (cadr (cdr (assoc 10 (entget en)))) (cadr (cdr (assoc 10 (entget en2)))) ) )
	(setq ss1 (cdr ss1))
	(setq lst2 (append lst2 (list en2)))
	)
      (if (> (length lst2) 1) (progn
	(setq str "")
	(mapcar '(lambda (x) (setq str (strcat str (cdr (assoc 1 (entget x)))))) lst2)
	(setq en3 (car lst2))
	 (mapcar '(lambda (x) (entdel x) ) (cdr lst2))
	(entmod (subst (cons 1 str) (assoc 1 (entget en3)) (entget en3)))
	) )
      )
  (princ)
  )

		

		 (while (and (setq en2 (car ss1))
		          (= (cadr (cdr (assoc 10 (entget en)))) (cadr (cdr (assoc 10 (entget en2)))) ) )
		        (setq ss1 (cdr ss1))
		        (setq lst2 (append lst2 (list en2)))
		    )		

Nếu chạy từng cụm nhỏ thì ổn.

Xem đoạn code trên, lisp sẽ nối text từ Trường Sơn Đông vào text ở Trường Sơn Tây nếu có cùng y.

Sao không xử lý từng MTEXT như lisp trước mà explode toàn bộ rồi mới xử lý?

 

  • Like 1

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
1 phút trước, ndtnv đã nói:

Nếu chạy từng cụm nhỏ thì ổn.

Xem đoạn code trên, lisp nối text từ Trường Sơn Đông vào text ở Trường Sơn Tây nếu có cùng y.

Sao không xử lý từng MTEXT như lisp trước mà explode toàn bộ rồi mới xử lý?

 

Em có nghĩ tới trường hợp đó rồi, định căn theo Boundingbox của text nếu gần sát nhau thì mới nối, nhưng khổ nỗi lúc test thì text của bạn này trùng nhau nên sau khi X nó nối 2 lần, xử lý overkill xong thì quên khuấy mất vụ ban đầu,

Còn X từng text thì như bạn ý nói, chạy cả bản vẽ với hơn 30k đối tượng thì chạy lâu lắm bác 

  • Like 1

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  

×