Đến nội dung


Hình ảnh

Chọn Tất Cả Các Text Trên Một Đường Thẳng!


  • Please log in to reply
2 replies to this topic

#1 ryback

ryback

    biết zoom

  • Members
  • Pip
  • 17 Bài viết
Điểm đánh giá: -7 (bình thường)

Đã gửi 28 October 2015 - 02:49 PM

chào các anh em trên diễn đàn, chả là giờ mình có một vấn đề về mấy cái text, mày mò mãi mà chưa xử lý được. Chả là mình có 2 dòng ,mỗi dòng gồm có nhiều text thẳng hàng nhau (trùng toạ độ X hoặc Y), nhưng 2 dòng này nó lại nằm đè lên nhau một chút, giờ mình muốn chọn toàn bộ text trên một dòng để move nó đi, thì có cách hay lisp nào thực hiện được không ạ. Mong anh em và các cao thủ giúp đỡ với!


  • 0

#2 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 28 October 2015 - 03:53 PM

Nếu bạn Move thì xài cái này xem.

(defun c:CTTH (/ L1 L2  PNT SSTEXT STT X)
  (vl-load-com)
  (setvar "CMDECHO" 0)
  (setq ssText (ssget (list (cons 0 "TEXT"))))
  (setq L1 (LM:ss->ent ssText))
  (setq
    Pnt	(TD:Text-Base (car (entsel "\nChon Text chuan lam mau: ")))
  )
  (if Pnt
    (setq L2 (vl-remove
	       nil
	       (mapcar '(lambda	(x)
			  (if (or (equal (car Pnt)
					 (car (TD:Text-Base x))
					 0.000000001
				  )
				  (equal (cadr Pnt)
					 (cadr (TD:Text-Base x))
					 0.000000001
				  )
			      )
			    x
			    nil
			  )
			)
		       L1
	       )
	     )
    )
  )
  (command "Move" (CV:List-to-ss L2) "" Pause Pause)
  (princ)
)




(defun TD:Text-Base (ent / MA71 MA72 X11)
  (setq Ma10 (cdr (assoc 10 (entget ent))))
  (setq Ma11 (cdr (assoc 11 (entget ent))))
  (setq X11 (car Ma11))
  (setq Ma71 (cdr (assoc 71 (entget ent))))
  (setq Ma72 (cdr (assoc 72 (entget ent))))
  (if (or (and (= Ma71 0) (= Ma72 0) (= X11 0))
	  (and (= Ma71 0) (= Ma72 3))
	  (and (= Ma71 0) (= Ma72 5))
      )
    Ma10
    Ma11
  )
)

(defun LM:ss->ent (ss / i l)
  (if ss
    (repeat (setq i (sslength ss))
      (setq l (cons (ssname ss (setq i (1- i))) l))
    )
  )
)

(defun CV:List-to-ss (lst / ss)
  (setq ss (ssadd))
  (foreach item	lst
    (or	(= (type item) 'Ename)
	(setq item (vlax-vla-object->ename item))
    )
    (setq ss (ssadd item ss))
  )
  ss
)

  • 1



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







#3 ryback

ryback

    biết zoom

  • Members
  • Pip
  • 17 Bài viết
Điểm đánh giá: -7 (bình thường)

Đã gửi 28 October 2015 - 03:58 PM

hehe, đúng cái mình cần rồi, thank bạn nhiều nhé :wub: :wub: :wub:


  • 0