Chuyển đến nội dung
Diễn đàn CADViet
huunhantvxdts

[Nhờ chỉnh sửa] sắp xếp text

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

Đây là lisp mình lấy từ diễn đàn cadviet của bác Tue_NV và chỉnh sửa thêm 1 tí nhưng bị lỗi nhờ mọi người giúp đỡ 

để mình nói sơ qua ý tưởng của mình đây là lisp sắp xếp text bây giờ mình muốn lọc các giá trị text trước khi sắp xếp, cụ thể là các giá trị text bằng nhau (cao độ bằng nhau) chỉ lấy 1 giá trị đầu tiên các giá trị khác sẽ bị xoá sau đó mới sắp xếp lại text.

đây là lisp 

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=13203&st=560
(defun c:sxtt(/ ss kc i obj lispobj lisdau lisobj diemBcuoi tdi spt des)
(vl-load-com)
;copyright by Tue_NV
(setq ss (ssget '((0 . "*TEXT"))) i 0 lispobj (list))
(if (not kco) (setq kco (cdr(assoc 40 (entget(ssname ss 0))))))
(setq kc (getdist (strcat "\n Khoang cach giua cac Text <" (rtos kco 2 2) "> :")))
(if (not kc) (setq kc kco) (setq kco kc))
;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;; Phan xu ly gia tri text bang nhau do minh viet dang bi loi
;(defun xoatext( ss / nhom tam i j sdtc sslst)
  (setq nhom (ssadd))
  (setq sdtc (ssadd))
  (setq i 0)
  (repeat (sslength ss)
    (setq tam (ssname ss 0))
    (setq j 1)
    (repeat (- (sslength ss) 1)
     (if (/= (ssname ss j) nil)
	  (progn
	  (if (= (cdr (assoc 1 (entget tam)))
			   (cdr (assoc 1 (entget (ssname ss j)))) )
	    (progn
	      (setq nhom (ssadd (ssname ss j) nhom))
	      (setq ss (ssdel (ssname ss j) ss))
		  )
	  )
	  )
      )
      (setq j (+ j 1))
    )
    (if	(/= tam nil)
	  (progn
      (setq ss (ssdel tam ss))
	  (setq sdtc (ssadd tam sdtc)) 
	  )
    )
    (setq i (+ i 1))
  )
  (command "ERASE" nhom "" )
  ;(setq ss (acet-ss-to-list sdtc))
  (setq ss sdtc)
 ;;;;;;;;;;;;;;;;;;;;;;;; ket thuc phan xu ly text 
 ;;;;;;;;;;;;;;;;;;;;;;;
(while (< i (sslength ss))
	(vla-getboundingbox (setq obj (vlax-ename->vla-object (ssname ss i))) 'bl 'tl)
	(setq lispobj (cons (cons (list (safearray-value tl) (safearray-value bl)) obj) lispobj))
	(setq i (1+ i))
)
(setq lispobj (vl-sort lispobj
			'(lambda (x y)
				(< (caaar x) (caaar y))
			 )
	      )
)
(setq lisdau (mapcar 'caar lispobj))
;(setq liscuoi (mapcar 'cadar lispobj))
(setq lisobj (mapcar 'cdr lispobj))
(setq diemBcuoi (list (car (last lisdau)) (cadr (last lisdau)) 0))

(setq tdi (tdiem (car lisdau) diemBcuoi))
(setq spt (/ (float (length lispobj)) 2) i spt)
;(if (= (rem i 1) 0) 
    (progn
	(setq i (- i 0.5)) (setq j 0) 
	(foreach x lisobj
		(setq des (list (- (car tdi) (* i kc)) (cadr (nth j lisdau)) 0))
		(vla-move x (vlax-3d-point (nth j lisdau)) (vlax-3d-point tdi))
		(vla-move x (vlax-3d-point tdi) (vlax-3d-point des))
		(setq i (1- i)) (setq j (1+ j))

       )
    )

(princ )
)
;
(defun tdiem(x y)
(list (/ (+ (car x) (car y)) 2) (/ (+ (cadr x) (cadr y)) 2) 0)
)

 

;; free lisp from cadviet.com
(defun c:sxtt(/ ss kc i obj lispobj lisdau lisobj diemBcuoi tdi spt des)
(vl-load-com)
;copyright by Tue_NV
(setq ss (ssget '((0 . "*TEXT"))) i 0 lispobj (list))
(if (not kco) (setq kco (cdr(assoc 40 (entget(ssname ss 0))))))
(setq kc (getdist (strcat "\n Khoang cach giua cac Text <" (rtos kco 2 2) "> :")))
(if (not kc) (setq kc kco) (setq kco kc))
;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;; Phan xu ly gia tri text bang nhau do minh viet dang bi loi
;(defun xoatext( ss / nhom tam i j sdtc sslst)
  (setq nhom (ssadd))
  (setq sdtc (ssadd))
  (setq i 0)
  (repeat (sslength ss)
    (setq tam (ssname ss 0))
    (setq j 1)
    (repeat (- (sslength ss) 1)
     (if (/= (ssname ss j) nil)
 (progn
 (if (= (cdr (assoc 1 (entget tam)))
  (cdr (assoc 1 (entget (ssname ss j)))) )
   (progn
     (setq nhom (ssadd (ssname ss j) nhom))
     (setq ss (ssdel (ssname ss j) ss))
 )
 )
 )
      )
      (setq j (+ j 1))
    )
    (if (/= tam nil)
 (progn
      (setq ss (ssdel tam ss))
 (setq sdtc (ssadd tam sdtc)) 
 )
    )
    (setq i (+ i 1))
  )
  (command "ERASE" nhom "" )
  ;(setq ss (acet-ss-to-list sdtc))
  (setq ss sdtc)
 ;;;;;;;;;;;;;;;;;;;;;;;; ket thuc phan xu ly text 
 ;;;;;;;;;;;;;;;;;;;;;;;
(while (< i (sslength ss))
(vla-getboundingbox (setq obj (vlax-ename->vla-object (ssname ss i))) 'bl 'tl)
(setq lispobj (cons (cons (list (safearray-value tl) (safearray-value bl)) obj) lispobj))
(setq i (1+ i))
)
(setq lispobj (vl-sort lispobj
'(lambda (x y)
(< (caaar x) (caaar y))
)
     )
)
(setq lisdau (mapcar 'caar lispobj))
;(setq liscuoi (mapcar 'cadar lispobj))
(setq lisobj (mapcar 'cdr lispobj))
(setq diemBcuoi (list (car (last lisdau)) (cadr (last lisdau)) 0))
 
(setq tdi (tdiem (car lisdau) diemBcuoi))
(setq spt (/ (float (length lispobj)) 2) i spt)
;(if (= (rem i 1) 0) 
    (progn
(setq i (- i 0.5)) (setq j 0) 
(foreach x lisobj
(setq des (list (- (car tdi) (* i kc)) (cadr (nth j lisdau)) 0))
(vla-move x (vlax-3d-point (nth j lisdau)) (vlax-3d-point tdi))
(vla-move x (vlax-3d-point tdi) (vlax-3d-point des))
(setq i (1- i)) (setq j (1+ j))
 
       )
    )
 
(princ )
)
;
(defun tdiem(x y)
(list (/ (+ (car x) (car y)) 2) (/ (+ (cadr x) (cadr y)) 2) 0)
)
 
;; free lisp from cadviet.com
(defun c:sxtt(/ ss kc i obj lispobj lisdau lisobj diemBcuoi tdi spt des)
(vl-load-com)
;copyright by Tue_NV
(setq ss (ssget '((0 . "*TEXT"))) i 0 lispobj (list))
(if (not kco) (setq kco (cdr(assoc 40 (entget(ssname ss 0))))))
(setq kc (getdist (strcat "\n Khoang cach giua cac Text <" (rtos kco 2 2) "> :")))
(if (not kc) (setq kc kco) (setq kco kc))
;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;; Phan xu ly gia tri text bang nhau do minh viet dang bi loi
;(defun xoatext( ss / nhom tam i j sdtc sslst)
  (setq nhom (ssadd))
  (setq sdtc (ssadd))
  (setq i 0)
  (repeat (sslength ss)
    (setq tam (ssname ss 0))
    (setq j 1)
    (repeat (- (sslength ss) 1)
     (if (/= (ssname ss j) nil)
 (progn
 (if (= (cdr (assoc 1 (entget tam)))
  (cdr (assoc 1 (entget (ssname ss j)))) )
   (progn
     (setq nhom (ssadd (ssname ss j) nhom))
     (setq ss (ssdel (ssname ss j) ss))
 )
 )
 )
      )
      (setq j (+ j 1))
    )
    (if (/= tam nil)
 (progn
      (setq ss (ssdel tam ss))
 (setq sdtc (ssadd tam sdtc)) 
 )
    )
    (setq i (+ i 1))
  )
  (command "ERASE" nhom "" )
  ;(setq ss (acet-ss-to-list sdtc))
  (setq ss sdtc)
 ;;;;;;;;;;;;;;;;;;;;;;;; ket thuc phan xu ly text 
 ;;;;;;;;;;;;;;;;;;;;;;;
(while (< i (sslength ss))
(vla-getboundingbox (setq obj (vlax-ename->vla-object (ssname ss i))) 'bl 'tl)
(setq lispobj (cons (cons (list (safearray-value tl) (safearray-value bl)) obj) lispobj))
(setq i (1+ i))
)
(setq lispobj (vl-sort lispobj
'(lambda (x y)
(< (caaar x) (caaar y))
)
     )
)
(setq lisdau (mapcar 'caar lispobj))
;(setq liscuoi (mapcar 'cadar lispobj))
(setq lisobj (mapcar 'cdr lispobj))
(setq diemBcuoi (list (car (last lisdau)) (cadr (last lisdau)) 0))
 
(setq tdi (tdiem (car lisdau) diemBcuoi))
(setq spt (/ (float (length lispobj)) 2) i spt)
;(if (= (rem i 1) 0) 
    (progn
(setq i (- i 0.5)) (setq j 0) 
(foreach x lisobj
(setq des (list (- (car tdi) (* i kc)) (cadr (nth j lisdau)) 0))
(vla-move x (vlax-3d-point (nth j lisdau)) (vlax-3d-point tdi))
(vla-move x (vlax-3d-point tdi) (vlax-3d-point des))
(setq i (1- i)) (setq j (1+ j))
 
       )
    )
 
(princ )
)
;
(defun tdiem(x y)
(list (/ (+ (car x) (car y)) 2) (/ (+ (cadr x) (cadr y)) 2) 0)
)
 
;; free lisp from cadviet.com
(defun c:sxtt(/ ss kc i obj lispobj lisdau lisobj diemBcuoi tdi spt des)
(vl-load-com)
;copyright by Tue_NV
(setq ss (ssget '((0 . "*TEXT"))) i 0 lispobj (list))
(if (not kco) (setq kco (cdr(assoc 40 (entget(ssname ss 0))))))
(setq kc (getdist (strcat "\n Khoang cach giua cac Text <" (rtos kco 2 2) "> :")))
(if (not kc) (setq kc kco) (setq kco kc))
;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;; Phan xu ly gia tri text bang nhau do minh viet dang bi loi
;(defun xoatext( ss / nhom tam i j sdtc sslst)
  (setq nhom (ssadd))
  (setq sdtc (ssadd))
  (setq i 0)
  (repeat (sslength ss)
    (setq tam (ssname ss 0))
    (setq j 1)
    (repeat (- (sslength ss) 1)
     (if (/= (ssname ss j) nil)
 (progn
 (if (= (cdr (assoc 1 (entget tam)))
  (cdr (assoc 1 (entget (ssname ss j)))) )
   (progn
     (setq nhom (ssadd (ssname ss j) nhom))
     (setq ss (ssdel (ssname ss j) ss))
 )
 )
 )
      )
      (setq j (+ j 1))
    )
    (if (/= tam nil)
 (progn
      (setq ss (ssdel tam ss))
 (setq sdtc (ssadd tam sdtc)) 
 )
    )
    (setq i (+ i 1))
  )
  (command "ERASE" nhom "" )
  ;(setq ss (acet-ss-to-list sdtc))
  (setq ss sdtc)
 ;;;;;;;;;;;;;;;;;;;;;;;; ket thuc phan xu ly text 
 ;;;;;;;;;;;;;;;;;;;;;;;
(while (< i (sslength ss))
(vla-getboundingbox (setq obj (vlax-ename->vla-object (ssname ss i))) 'bl 'tl)
(setq lispobj (cons (cons (list (safearray-value tl) (safearray-value bl)) obj) lispobj))
(setq i (1+ i))
)
(setq lispobj (vl-sort lispobj
'(lambda (x y)
(< (caaar x) (caaar y))
)
     )
)
(setq lisdau (mapcar 'caar lispobj))
;(setq liscuoi (mapcar 'cadar lispobj))
(setq lisobj (mapcar 'cdr lispobj))
(setq diemBcuoi (list (car (last lisdau)) (cadr (last lisdau)) 0))
 
(setq tdi (tdiem (car lisdau) diemBcuoi))
(setq spt (/ (float (length lispobj)) 2) i spt)
;(if (= (rem i 1) 0) 
    (progn
(setq i (- i 0.5)) (setq j 0) 
(foreach x lisobj
(setq des (list (- (car tdi) (* i kc)) (cadr (nth j lisdau)) 0))
(vla-move x (vlax-3d-point (nth j lisdau)) (vlax-3d-point tdi))
(vla-move x (vlax-3d-point tdi) (vlax-3d-point des))
(setq i (1- i)) (setq j (1+ j))
 
       )
    )
 
(princ )
)
;
(defun tdiem(x y)
(list (/ (+ (car x) (car y)) 2) (/ (+ (cadr x) (cadr y)) 2) 0)
)
 
;; free lisp from cadviet.com
(defun c:sxtt(/ ss kc i obj lispobj lisdau lisobj diemBcuoi tdi spt des)
(vl-load-com)
;copyright by Tue_NV
(setq ss (ssget '((0 . "*TEXT"))) i 0 lispobj (list))
(if (not kco) (setq kco (cdr(assoc 40 (entget(ssname ss 0))))))
(setq kc (getdist (strcat "\n Khoang cach giua cac Text <" (rtos kco 2 2) "> :")))
(if (not kc) (setq kc kco) (setq kco kc))
;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;; Phan xu ly gia tri text bang nhau do minh viet dang bi loi
;(defun xoatext( ss / nhom tam i j sdtc sslst)
  (setq nhom (ssadd))
  (setq sdtc (ssadd))
  (setq i 0)
  (repeat (sslength ss)
    (setq tam (ssname ss 0))
    (setq j 1)
    (repeat (- (sslength ss) 1)
     (if (/= (ssname ss j) nil)
 (progn
 (if (= (cdr (assoc 1 (entget tam)))
  (cdr (assoc 1 (entget (ssname ss j)))) )
   (progn
     (setq nhom (ssadd (ssname ss j) nhom))
     (setq ss (ssdel (ssname ss j) ss))
 )
 )
 )
      )
      (setq j (+ j 1))
    )
    (if (/= tam nil)
 (progn
      (setq ss (ssdel tam ss))
 (setq sdtc (ssadd tam sdtc)) 
 )
    )
    (setq i (+ i 1))
  )
  (command "ERASE" nhom "" )
  ;(setq ss (acet-ss-to-list sdtc))
  (setq ss sdtc)
 ;;;;;;;;;;;;;;;;;;;;;;;; ket thuc phan xu ly text 
 ;;;;;;;;;;;;;;;;;;;;;;;
(while (< i (sslength ss))
(vla-getboundingbox (setq obj (vlax-ename->vla-object (ssname ss i))) 'bl 'tl)
(setq lispobj (cons (cons (list (safearray-value tl) (safearray-value bl)) obj) lispobj))
(setq i (1+ i))
)
(setq lispobj (vl-sort lispobj
'(lambda (x y)
(< (caaar x) (caaar y))
)
     )
)
(setq lisdau (mapcar 'caar lispobj))
;(setq liscuoi (mapcar 'cadar lispobj))
(setq lisobj (mapcar 'cdr lispobj))
(setq diemBcuoi (list (car (last lisdau)) (cadr (last lisdau)) 0))
 
(setq tdi (tdiem (car lisdau) diemBcuoi))
(setq spt (/ (float (length lispobj)) 2) i spt)
;(if (= (rem i 1) 0) 
    (progn
(setq i (- i 0.5)) (setq j 0) 
(foreach x lisobj
(setq des (list (- (car tdi) (* i kc)) (cadr (nth j lisdau)) 0))
(vla-move x (vlax-3d-point (nth j lisdau)) (vlax-3d-point tdi))
(vla-move x (vlax-3d-point tdi) (vlax-3d-point des))
(setq i (1- i)) (setq j (1+ j))
 
       )
    )
 
(princ )
)
;
(defun tdiem(x y)
(list (/ (+ (car x) (car y)) 2) (/ (+ (cadr x) (cadr y)) 2) 0)
)
 

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

Đầu tiên nào thế bạn, đầu tiên theo thứ tự chọn lúc quét, hay đầu tiên theo trục X, trục Y. Nôm na là thế này.Nếu dùng các cách chọn sau để chọn đối tượng thì giải quyết thế nào

  1. Cách quét 1 : quét từ trái qua phải một lần hết luôn các Text cần xử lý, Enter vào giai đoạn lọc Text
  2. Cách quét 2: quét Text1 (không Enter)'   ----> quét Text3 (không Enter)'   ----> quét Text2 (không Enter)'   ---->...rất lộn xộn (mỗi lần quét một Text)
  3. Cách quét hỗn hợp hai cách trên có lần quét 2,3 Text có lần quét 1 Text sau đó mới Enter

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

 

Đầu tiên nào thế bạn, đầu tiên theo thứ tự chọn lúc quét, hay đầu tiên theo trục X, trục Y. Nôm na là thế này.Nếu dùng các cách chọn sau để chọn đối tượng thì giải quyết thế nào

  1. Cách quét 1 : quét từ trái qua phải một lần hết luôn các Text cần xử lý, Enter vào giai đoạn lọc Text
  2. Cách quét 2: quét Text1 (không Enter)'   ----> quét Text3 (không Enter)'   ----> quét Text2 (không Enter)'   ---->...rất lộn xộn (mỗi lần quét một Text)
  3. Cách quét hỗn hợp hai cách trên có lần quét 2,3 Text có lần quét 1 Text sau đó mới Enter

cám ơn bạn đã quan tâm ở đây chỉ quét 1 lần thôi ( trường hợp 1 bạn nêu)  bởi các text đó nó chồng lên nhau mà, mình đang tìm cách để sort theo phương x để xếp các nhóm chồng lên nhau làm thành 1 nhóm sau đó mới xử lý nhưng chưa xử lý được trường hợp lọc ở trên nên chưa làm tiếp. Bỡi có cả trăm trắc ngang mà phải quét từng trường hợp quá lâu.

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

cám ơn bạn đã quan tâm ở đây chỉ quét 1 lần thôi ( trường hợp 1 bạn nêu)  bởi các text đó nó chồng lên nhau mà, mình đang tìm cách để sort theo phương x để xếp các nhóm chồng lên nhau làm thành 1 nhóm sau đó mới xử lý nhưng chưa xử lý được trường hợp lọc ở trên nên chưa làm tiếp. Bỡi có cả trăm trắc ngang mà phải quét từng trường hợp quá lâu.

Hề hề hề,

Bạn chú ý rằng hàm (vl-sort ....) cho phép bạn loại bỏ các phần tử giống nhau trong một list bạn ạ. Vấn đề là ở chỗ bạn phải chọn đúng thuộc tính của đối tượng để tạo list mà thôi.

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

Hề hề hề,

Bạn chú ý rằng hàm (vl-sort ....) cho phép bạn loại bỏ các phần tử giống nhau trong một list bạn ạ. Vấn đề là ở chỗ bạn phải chọn đúng thuộc tính của đối tượng để tạo list mà thôi.

Ở đây mình đang sử dụng lisp của bác Tue_VN mà dữ liệu đưa vào là 1 tập hợp chọn SS. Nên bây giờ mình muốn xử lý dữ liệu ngay trên tập hợp chọn đó. Bạn có thể đọc đoạn lisp trên sửa lại cho mình với

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

cám ơn bạn đã quan tâm ở đây chỉ quét 1 lần thôi ( trường hợp 1 bạn nêu)  bởi các text đó nó chồng lên nhau mà, mình đang tìm cách để sort theo phương x để xếp các nhóm chồng lên nhau làm thành 1 nhóm sau đó mới xử lý nhưng chưa xử lý được trường hợp lọc ở trên nên chưa làm tiếp. Bỡi có cả trăm trắc ngang mà phải quét từng trường hợp quá lâu.

101306_1.png

Nghĩa là nếu là như thể này thì khi quét một loạt Text rồi Enter thì chỉ nhận đuọc 2 Text cần xử lý là Text màu vàng và màu đỏ, các Text màu xanh thì XOÁ hết đi à bạn

Hay ý bạn là tại cùng một tọa độ X (tọa độ Y thì làm sao?, có cần tọa độ Z không) có rất nhiều Text trùng nhau: có Text thì giống nhau về giá trị, có Text thì khác nhau, sau đó xóa hết các Text trùng nhau, chỉ để lại một cái làm đại diện, các Text không bị trùng  thì để nguyên?

Bạn có thể upfile trong đó có mẫu đề bài, và Kết quả nếu lisp thực hiện được không

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

101306_1.png

Nghĩa là nếu là như thể này thì khi quét một loạt Text rồi Enter thì chỉ nhận đuọc 2 Text cần xử lý là Text màu vàng và màu đỏ, các Text màu xanh thì XOÁ hết đi à bạn

Hay ý bạn là tại cùng một tọa độ X (tọa độ Y thì làm sao?, có cần tọa độ Z không) có rất nhiều Text trùng nhau: có Text thì giống nhau về giá trị, có Text thì khác nhau, sau đó xóa hết các Text trùng nhau, chỉ để lại một cái làm đại diện, các Text không bị trùng  thì để nguyên?

Bạn có thể upfile trong đó có mẫu đề bài, và Kết quả nếu lisp thực hiện được không

ok ở đây các text chồng lên nhau chỉ cần lấy đại diện thôi

mình upfile lên để bạn hiểu hơn ở đây mình dùng lisp ở trên (lisp mình chưa sửa xóa đối tượng) nhưng vẫn thủ công là chọn từng nhóm chồng nhau

http://www.cadviet.com/upfiles/3/66960_nhan_chen_coc.dwg

Lisp ở trên mình đã xử lý được các text trùng nhau về giá trị rồi nhưng đưa vào để xử lý sắp xếp thì bị lỗi 

do đó để làm được theo ý muốn thì mình phải chạy riêng lẻ 2 lisp

1. lisp XÓA 

2. lisp sắp xếp

Ý muốn bây giờ là Gộp lại 1 lisp 

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

Bạn tham khảo nhé

http://www.cadviet.com/upfiles/3/101306_file_test_1.dwg
Trong này là điều kiện xắp xếp là
  ;Sap xep ss cu phap (vl-sort Tap_hop Dieu_kien_xap_xep
  ;Dieu kien xap xep, neu 2 toa do Y bang nhau thi xep theo X (X nao nho hon xep truoc)
  ; ;;;;;;;;;;;;;;;;, neu 2 toa do Y khac nhau thi khong can quan tam den X, cu Y nho hon thi xep truoc
Code (bạn copy dán vào Cad , quét chọn Text (trong file dwg kèm theo) và kiểm tra nhé. Nếu chưa ưng, suy nghĩ lại điều kiện kiểm tra, tự sửa theo ý mình hoặc cm để lại đây.



(progn
  ;Lay tap hop ss
  (setq ss (acet-ss-to-list (ssget '(( 0 . "TEXT,MTEXT")))))
  ;Sai so cho phep k
  (setq k 0.001)
  ;in ra Value cac Text bi chon truoc khi xap xep
  (princ "\nCac Text bi chon truoc khi xap xep\n")
  (princ)
  (defun InLst(lst / i)
    (foreach i lst
      (princ (cdr(assoc 1 (entget i))))
      (princ "\n")
      (princ)
      ))
  (InLst ss)
  ;Sap xep ss cu phap (vl-sort Tap_hop Dieu_kien_xap_xep
  ;Dieu kien xap xep, neu 2 toa do Y bang nhau thi xep theo X (X nao nho hon xep truoc)
  ; ;;;;;;;;;;;;;;;;, neu 2 toa do Y khac nhau thi khong can quan tam den X, cu Y nho hon thi xep truoc
  (setq ss2 (vl-sort ss
    '(lambda (e1 e2 / p10e1 p10e2)      ;khai bao ham chuyen dung de xu ly voi 2 doi tuong la e1 e2
(if (equal (cadr(setq p10e1 (cdr(assoc 10 (entget e1)))))
(cadr(setq p10e2 (cdr(assoc 10 (entget e2)))))
k)      ; dieu kien kiem tra neu co toa do Y1 = Y2 voi sai so k thi
 
 
 ;neu toa do Y bang nhau thi sap xep Text co X nho hon nen dau
 (< (car p10e1) (car p10e2))
 
 
 ;neu toa do Y khac nhau thi( ? ban chu noi ro) minh dat la chon Text co Y nho hon(o duoi)
 (< (cadr p10e1) (cadr p10e2))
 ))
    )
)
  (princ "\nCac Text sau khi xap xep\n")
  (princ)
  (InLst ss2)
  (princ)
  )
  • Vote tăng 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

Bạn tham khảo nhé

http://www.cadviet.com/upfiles/3/101306_file_test_1.dwg

Trong này là điều kiện xắp xếp là

  ;Sap xep ss cu phap (vl-sort Tap_hop Dieu_kien_xap_xep

  ;Dieu kien xap xep, neu 2 toa do Y bang nhau thi xep theo X (X nao nho hon xep truoc)

  ; ;;;;;;;;;;;;;;;;, neu 2 toa do Y khac nhau thi khong can quan tam den X, cu Y nho hon thi xep truoc

Code (bạn copy dán vào Cad , quét chọn Text (trong file dwg kèm theo) và kiểm tra nhé. Nếu chưa ưng, suy nghĩ lại điều kiện kiểm tra, tự sửa theo ý mình hoặc cm để lại đây.

 


(progn

  ;Lay tap hop ss

  (setq ss (acet-ss-to-list (ssget '(( 0 . "TEXT,MTEXT")))))

  ;Sai so cho phep k

  (setq k 0.001)

  ;in ra Value cac Text bi chon truoc khi xap xep

  (princ "\nCac Text bi chon truoc khi xap xep\n")

  (princ)

  (defun InLst(lst / i)

    (foreach i lst

      (princ (cdr(assoc 1 (entget i))))

      (princ "\n")

      (princ)

      ))

  (InLst ss)

  ;Sap xep ss cu phap (vl-sort Tap_hop Dieu_kien_xap_xep

  ;Dieu kien xap xep, neu 2 toa do Y bang nhau thi xep theo X (X nao nho hon xep truoc)

  ; ;;;;;;;;;;;;;;;;, neu 2 toa do Y khac nhau thi khong can quan tam den X, cu Y nho hon thi xep truoc

  (setq ss2 (vl-sort ss

    '(lambda (e1 e2 / p10e1 p10e2)      ;khai bao ham chuyen dung de xu ly voi 2 doi tuong la e1 e2

(if (equal (cadr(setq p10e1 (cdr(assoc 10 (entget e1)))))

(cadr(setq p10e2 (cdr(assoc 10 (entget e2)))))

k)      ; dieu kien kiem tra neu co toa do Y1 = Y2 voi sai so k thi

 

 

 ;neu toa do Y bang nhau thi sap xep Text co X nho hon nen dau

 (< (car p10e1) (car p10e2))

 

 

 ;neu toa do Y khac nhau thi( ? ban chu noi ro) minh dat la chon Text co Y nho hon(o duoi)

 (< (cadr p10e1) (cadr p10e2))

 ))

    )

)

  (princ "\nCac Text sau khi xap xep\n")

  (princ)

  (InLst ss2)

  (princ)

  )

Ok cám ơn bạn

để mình kiểm tra 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

Ở đây mình đang sử dụng lisp của bác Tue_VN mà dữ liệu đưa vào là 1 tập hợp chọn SS. Nên bây giờ mình muốn xử lý dữ liệu ngay trên tập hợp chọn đó. Bạn có thể đọc đoạn lisp trên sửa lại cho mình với

Hề hề hề,

Đây là lisp xóa các text có nội dung trùng nhau trong một bộ chọn, chỉ để lại mỗi nhóm text giống nhau này một text đại diện duy nhất.

Bạn dùng thử và nếu Ok thì hãy tìm cách kết hợp với lisp mà bạn có.

http://www.cadviet.com/upfiles/3/5194_xoatexttrungnd.lsp

Mình viết nháp, nếu thấy cần sửa chữa gì thêm thì post lên nhé.

  • Vote tăng 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

Bạn tham khảo nhé

http://www.cadviet.com/upfiles/3/101306_file_test_1.dwg

Trong này là điều kiện xắp xếp là

  ;Sap xep ss cu phap (vl-sort Tap_hop Dieu_kien_xap_xep

  ;Dieu kien xap xep, neu 2 toa do Y bang nhau thi xep theo X (X nao nho hon xep truoc)

  ; ;;;;;;;;;;;;;;;;, neu 2 toa do Y khac nhau thi khong can quan tam den X, cu Y nho hon thi xep truoc

Code (bạn copy dán vào Cad , quét chọn Text (trong file dwg kèm theo) và kiểm tra nhé. Nếu chưa ưng, suy nghĩ lại điều kiện kiểm tra, tự sửa theo ý mình hoặc cm để lại đây.

 


(progn

  ;Lay tap hop ss

  (setq ss (acet-ss-to-list (ssget '(( 0 . "TEXT,MTEXT")))))

  ;Sai so cho phep k

  (setq k 0.001)

  ;in ra Value cac Text bi chon truoc khi xap xep

  (princ "\nCac Text bi chon truoc khi xap xep\n")

  (princ)

  (defun InLst(lst / i)

    (foreach i lst

      (princ (cdr(assoc 1 (entget i))))

      (princ "\n")

      (princ)

      ))

  (InLst ss)

  ;Sap xep ss cu phap (vl-sort Tap_hop Dieu_kien_xap_xep

  ;Dieu kien xap xep, neu 2 toa do Y bang nhau thi xep theo X (X nao nho hon xep truoc)

  ; ;;;;;;;;;;;;;;;;, neu 2 toa do Y khac nhau thi khong can quan tam den X, cu Y nho hon thi xep truoc

  (setq ss2 (vl-sort ss

    '(lambda (e1 e2 / p10e1 p10e2)      ;khai bao ham chuyen dung de xu ly voi 2 doi tuong la e1 e2

(if (equal (cadr(setq p10e1 (cdr(assoc 10 (entget e1)))))

(cadr(setq p10e2 (cdr(assoc 10 (entget e2)))))

k)      ; dieu kien kiem tra neu co toa do Y1 = Y2 voi sai so k thi

 

 

 ;neu toa do Y bang nhau thi sap xep Text co X nho hon nen dau

 (< (car p10e1) (car p10e2))

 

 

 ;neu toa do Y khac nhau thi( ? ban chu noi ro) minh dat la chon Text co Y nho hon(o duoi)

 (< (cadr p10e1) (cadr p10e2))

 ))

    )

)

  (princ "\nCac Text sau khi xap xep\n")

  (princ)

  (InLst ss2)

  (princ)

  )

Vấn đề sort như vậy là ok rồi đúng ý mình rồi (cái này để mình gộp lại từng nhóm text chồng nhau)nhưng vấn đề của mình là làm sao để đưa vào tập hợp đã xử lý vào lisp sắp xếp các text ở trên 

như ở nói ở trên mình sử dung 2 lisp

1. Lisp xóa các text chồng nhau cùng giá trị 

2.Lisp sắp xếp lại text 

Bây giờ muốn gộp lai 1 lisp ++++> đang bị lỗi (lỗi ở đây theo mình hiểu do tập hợp chọn của mình sau khi xử lý không trả về được để xử lý tiếp theo)

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

Hề hề hề,

Đây là lisp xóa các text có nội dung trùng nhau trong một bộ chọn, chỉ để lại mỗi nhóm text giống nhau này một text đại diện duy nhất.

Bạn dùng thử và nếu Ok thì hãy tìm cách kết hợp với lisp mà bạn có.

http://www.cadviet.com/upfiles/3/5194_xoatexttrungnd.lsp

Mình viết nháp, nếu thấy cần sửa chữa gì thêm thì post lên nhé.

Thấy ok rồi 

giờ thử gộp lại xem sao

Cám ơn bạn nhiều 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

Thấy ok rồi 

giờ thử gộp lại xem sao

Cám ơn bạn nhiều lắm

Hề hề hề,

Bạn lưu ý khi gộp lisp rằng, với lisp của mình thì sau khi xóa các text có cùng nội dung tập ss sẽ trả về mo tức là chả còn phần tử nào đâu nhé.

Do vậy cái bước tiếp theo là sắp xếp ấy bạn cần có thao tác chọn lại tập 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

Hề hề hề,

Bạn lưu ý khi gộp lisp rằng, với lisp của mình thì sau khi xóa các text có cùng nội dung tập ss sẽ trả về mo tức là chả còn phần tử nào đâu nhé.

Do vậy cái bước tiếp theo là sắp xếp ấy bạn cần có thao tác chọn lại tập ss.

Đúng như bạn nói mình đang bí ở chổ đó làm sao không chọn lại tập ss mà nó xử lý luôn đang tìm nhiều cách nhưng chưa có cách nào nó trả lại tập ss đã loại trừ các text trung nhau để xử lý tiếp chứ chọn lại thì ko khác chi chạy 2 lisp độc lập. bạn có thể chỉ cách cho mình với chứ mình đã sử dụng hàm (ssadd) rồi nhưng cũng không được

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

Đúng như bạn nói mình đang bí ở chổ đó làm sao không chọn lại tập ss mà nó xử lý luôn đang tìm nhiều cách nhưng chưa có cách nào nó trả lại tập ss đã loại trừ các text trung nhau để xử lý tiếp chứ chọn lại thì ko khác chi chạy 2 lisp độc lập. bạn có thể chỉ cách cho mình với chứ mình đã sử dụng hàm (ssadd) rồi nhưng cũng không được

Hề hề hề,

Bạn hãy tạo một tập ss1 mới với các phần tử e được lấy đi khỏi tập ss qua mỗi bước trong vòng lặp (while ...)

Rồi bạn sử lý cái tập ss1 này là Ok đúng không???

Hãy dùng thử cái này coi sao , trong đó sau khi xóa hết các text trùng nội dung thì sẽ tạo ra được một tập ss1 mới gồm chỉ có các phần tử đại diện cho các nhóm text trùng nhau về nội dung từ tập ss ban đầu.

http://www.cadviet.com/upfiles/3/5194_xoatexttrungnd_1.lsp

  • Vote tăng 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

Hề hề hề,

Bạn hãy tạo một tập ss1 mới với các phần tử e được lấy đi khỏi tập ss qua mỗi bước trong vòng lặp (while ...)

Rồi bạn sử lý cái tập ss1 này là Ok đúng không???

Hãy dùng thử cái này coi sao , trong đó sau khi xóa hết các text trùng nội dung thì sẽ tạo ra được một tập ss1 mới gồm chỉ có các phần tử đại diện cho các nhóm text trùng nhau về nội dung từ tập ss ban đầu.

http://www.cadviet.com/upfiles/3/5194_xoatexttrungnd_1.lsp

hahahaha 

Đã làm được nhưng còn lỗi 1 tí nữa nếu tập hợp đó không bị xoá (không có đối tượng trùng nhau) thì chạy được, còn có đối tượng trùng nhau là bị lỗi mình tìm hiểu là do tập ss1 là tập đối tượng ban đầu, bây giờ mình phải đổi lại tập ss1 là tập còn lại, bạn chỉnh cho mình 1 tí nữa là ok

cám ơn bạn nhiều nhiều nhiều 

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

hahahaha 

Đã làm được nhưng còn lỗi 1 tí nữa nếu tập hợp đó không bị xoá (không có đối tượng trùng nhau) thì chạy được, còn có đối tượng trùng nhau là bị lỗi mình tìm hiểu là do tập ss1 là tập đối tượng ban đầu, bây giờ mình phải đổi lại tập ss1 là tập còn lại, bạn chỉnh cho mình 1 tí nữa là ok

cám ơn bạn nhiều nhiều nhiều 

Hề hề hề, 

Bạn đã sử dụng lisp mình mới bổ sung chưa???

Trong lisp này thì tập ss1 chính là tập các đối tượng còn lại từ tập ban đầu sau khi bị xóa đấ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

Hề hề hề, 

Bạn đã sử dụng lisp mình mới bổ sung chưa???

Trong lisp này thì tập ss1 chính là tập các đối tượng còn lại từ tập ban đầu sau khi bị xóa đấy.

Mới download về theo đường dẫn của bạn nhưng mình sử dụng lisp cũ của bạn hôm qua rồi thêm dòng

(setq (ssadd ))

(setq ss1 (ssadd e ss1)

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

Hề hề hề, 

Bạn đã sử dụng lisp mình mới bổ sung chưa???

Trong lisp này thì tập ss1 chính là tập các đối tượng còn lại từ tập ban đầu sau khi bị xóa đấy.

Sau 1 hồi mày mò đủ cách mình đã làm được. 

Tập ss bạn chưa xóa các đối tượng trùng nhau (e1) nên tập ss1 vẫn là tập ban đầu

mình đã chỉnh sửa lại 1 tí là xóa các đối tượng trùng nhau trong tập ss nên bây giờ đã ok

lisp mình sửa lại

(setq ss (ssget '((0 . "*TEXT"))))
(setq ss1 (ssadd))
(while (setq e (ssname ss 0))
     (setq ssl (acet-ss-to-list ss) )
     (setq sslp (cdr ssl))
     (if (/= sslp nil)
         (foreach e1 sslp
            (if (= (cdr (assoc 1 (entget e1))) (cdr (assoc 1 (entget e))))
                                (progn
				(command "erase" e1 "")
				(setq ss (ssdel e1 ss)); Xóa đối tượng trùng ra khỏi tập hợp
				)
            )
         )
     )
     (setq ss1 (ssadd e ss1))
     (setq ss (ssdel e ss))
)

 

(while (setq e (ssname ss 0))
     (setq ssl (acet-ss-to-list ss) )
     (setq sslp (cdr ssl))
     (if (/= sslp nil)
         (foreach e1 sslp
            (if (= (cdr (assoc 1 (entget e1))) (cdr (assoc 1 (entget e))))
                (progn
(command "erase" e1 "")
(setq ss (ssdel e1 ss))
)
            )
         )
     )
     (setq ss1 (ssadd e ss1))
     (setq ss (ssdel e ss))
(while (setq e (ssname ss 0))
     (setq ssl (acet-ss-to-list ss) )
     (setq sslp (cdr ssl))
     (if (/= sslp nil)
         (foreach e1 sslp
            (if (= (cdr (assoc 1 (entget e1))) (cdr (assoc 1 (entget e))))
                (progn
(command "erase" e1 "")
(setq ss (ssdel e1 ss))
)
            )
         )
     )
     (setq ss1 (ssadd e ss1))
     (setq ss (ssdel e 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

Mới download về theo đường dẫn của bạn nhưng mình sử dụng lisp cũ của bạn hôm qua rồi thêm dòng

(setq (ssadd ))

(setq ss1 (ssadd e ss1)

Hê hề hề, 

Chưa rõ bạn thêm thế nào nhưng mình đã chéck và tập ss1 đảm bảo là tập các text đại diện còn lại sau khi chạy lisp của 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

Hê hề hề, 

Chưa rõ bạn thêm thế nào nhưng mình đã chéck và tập ss1 đảm bảo là tập các text đại diện còn lại sau khi chạy lisp của mình...

Bạn xem lại chứ mình lấy lisp (lisp mới) của bạn để kiểm tra thì tập ss1 vẫn là tập ss ban đầu, Mình kiểm tra bằng cách đếm số đối tượng của tập ss1 thì thấy số đối tượng ss1 bằng ss

bạn xem lại lisp của mình viết ở bài #19 mình đã thêm vào 1 dòng sau lệnh IF thì ss1 mới đúng như yêu cầu

(

 

progn dòng thêm vào

(command "erase" e1 "")

(setq ss (ssdel e1 ss)); Xóa đối tượng trùng ra khỏi tập hợp dòng thêm vào

) dòng thêm vào

Mà lỡ nhờ rồi thì nhờ bạn thêm tí nữa là mình muốn sort theo x,y trước khi xóa. Mục đích của mình là sẽ tạo ra từng nhóm và lisp của mình làm việc trên từng nhóm đó thôi. 

  • Vote tăng 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

Bạn xem lại chứ mình lấy lisp (lisp mới) của bạn để kiểm tra thì tập ss1 vẫn là tập ss ban đầu, Mình kiểm tra bằng cách đếm số đối tượng của tập ss1 thì thấy số đối tượng ss1 bằng ss

bạn xem lại lisp của mình viết ở bài #19 mình đã thêm vào 1 dòng sau lệnh IF thì ss1 mới đúng như yêu cầu

(

 

progn dòng thêm vào

(command "erase" e1 "")

(setq ss (ssdel e1 ss)); Xóa đối tượng trùng ra khỏi tập hợp dòng thêm vào

) dòng thêm vào

Mà lỡ nhờ rồi thì nhờ bạn thêm tí nữa là mình muốn sort theo x,y trước khi xóa. Mục đích của mình là sẽ tạo ra từng nhóm và lisp của mình làm việc trên từng nhóm đó thôi. 

Hề hề hề,

Cám ơn bạn đã phát hiện lỗi. Do mình không kiểm tra kỹ. 

Việc sort theo x,y không khói nhưng bạn cần cho biết quy luật sort mới được, 

Bạn đã biết kha khá về lisp thì hoàn toàn có thể tự làm điều này. Bạn sử dụng hàm (vl-sort ......) để thực hiện.

Về hàm này trong phần help developer của CAD có nói khá rõ bạn ạ. Tỷ như với tập ss của bạn, bạn cần chuyển tập này thành một list các ename bằng hàm (setq ssl (acet-ss-to-list ss))

Sau đó dùng hàm (vl-sort ....)

Nếu bạn muốn sort theo điểm đặt của text thì cần xem xét mã dxf 71, 72, 73 của nó, Nếu chúng đồng thời bằng 0 thì điểm đặt là mã DXF 10 , còn nếu có bất kỳ mã nào trong 3 mã này khác 0 thì điểm đặt là mã dxf 11. Từ đó bạn thích sort theo x hay theo y hay theo cả 2 là tùy ý bạn đưa và trong hàm so sánh.

Hy vọng bạn sẽ tự giải quyết được. nếu có khó khăn gì hãy post lên nhé.

  • Vote tăng 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

Hề hề hề,

Cám ơn bạn đã phát hiện lỗi. Do mình không kiểm tra kỹ. 

Việc sort theo x,y không khói nhưng bạn cần cho biết quy luật sort mới được, 

Bạn đã biết kha khá về lisp thì hoàn toàn có thể tự làm điều này. Bạn sử dụng hàm (vl-sort ......) để thực hiện.

Về hàm này trong phần help developer của CAD có nói khá rõ bạn ạ. Tỷ như với tập ss của bạn, bạn cần chuyển tập này thành một list các ename bằng hàm (setq ssl (acet-ss-to-list ss))

Sau đó dùng hàm (vl-sort ....)

Nếu bạn muốn sort theo điểm đặt của text thì cần xem xét mã dxf 71, 72, 73 của nó, Nếu chúng đồng thời bằng 0 thì điểm đặt là mã DXF 10 , còn nếu có bất kỳ mã nào trong 3 mã này khác 0 thì điểm đặt là mã dxf 11. Từ đó bạn thích sort theo x hay theo y hay theo cả 2 là tùy ý bạn đưa và trong hàm so sánh.

Hy vọng bạn sẽ tự giải quyết được. nếu có khó khăn gì hãy post lên nhé.

Cám ơn bạn vấn đế sort thì mình có hiểu chút ít nhưng ở đây mình đang vướng vào tập ss

mình sẽ viết được lisp sort tách rời với lisp ở trên (chạy độc lập)

nhưng việc gộp lại thì bị vướng mắc do tập ss sau khi xử lý không đưa vào được đoạn lisp tiếp theo để xử lý tiếp giống bữa trước mình đã vấp phải nhờ bạn mình mới làm được để lấy tập ss1 đã loại trừ các text trung nhau.

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

Cám ơn bạn vấn đế sort thì mình có hiểu chút ít nhưng ở đây mình đang vướng vào tập ss

mình sẽ viết được lisp sort tách rời với lisp ở trên (chạy độc lập)

nhưng việc gộp lại thì bị vướng mắc do tập ss sau khi xử lý không đưa vào được đoạn lisp tiếp theo để xử lý tiếp giống bữa trước mình đã vấp phải nhờ bạn mình mới làm được để lấy tập ss1 đã loại trừ các text trung nhau.

Hề hề hề,

Bạn hãy gửi cái vướng của bạn lên nhé. Về nguyên tắc việc sort này có thể hoàn toàn độc lập với việc xóa mà. Bạn sẽ sort với tập ss trước. Sau khi sort nếu có các phần tử giống nhau hoàn toàn thì tập ss của bạn sẽ thay đổi và bạn định nghĩa lại cái tập ss của bạn thông qua hàm ngược (acet-list-to-ss .....). đối số của hàm này chính là cái list các đồi tượng vừa được sort ở trên.

Sau đó bạn có thể áp dụng lisp xóa đối tượng với tập ss mới nà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

Hề hề hề,

Bạn hãy gửi cái vướng của bạn lên nhé. Về nguyên tắc việc sort này có thể hoàn toàn độc lập với việc xóa mà. Bạn sẽ sort với tập ss trước. Sau khi sort nếu có các phần tử giống nhau hoàn toàn thì tập ss của bạn sẽ thay đổi và bạn định nghĩa lại cái tập ss của bạn thông qua hàm ngược (acet-list-to-ss .....). đối số của hàm này chính là cái list các đồi tượng vừa được sort ở trên.

Sau đó bạn có thể áp dụng lisp xóa đối tượng với tập ss mới này. 

sao khó quá mình không trả về được tập chọn ss bằng hàm ngược (acet-list-to-ss .....) để làm tiếp mà không được

lisp viết như sau:

(setq ss (ssget '((0 . "*TEXT"))))
(setq k 0.001)
(setq sslst (acet-ss-to-list ss)); tao list ename
(setq ss2 (vl-sort sslst
    '(lambda (e1 e2 / p10e1 p10e2)      ;khai bao ham chuyen dung de xu ly voi 2 doi tuong la e1 e2
(if (equal (cadr(setq p10e1 (cdr(assoc 10 (entget e1)))))
(cadr(setq p10e2 (cdr(assoc 10 (entget e2)))))
k)      ; dieu kien kiem tra neu co toa do Y1 = Y2 voi sai so k thi
        ;neu toa do Y bang nhau thi sap xep Text co X nho hon nen dau
 (< (car p10e1) (car p10e2))
        ;neu toa do Y khac nhau thi( ? ban chu noi ro) minh dat la chon Text co Y nho hon(o duoi)
 (< (cadr p10e1) (cadr p10e2))
 ))
    )
)
(setq ss (acet-list-to-ss ss2)) ; tra lai tâp chọn ss không được

nhờ bạn hướng dẫn tiế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

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


×