Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
jangboko

Nhờ Viết Lisp Chọn Text

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

Mong các bác khai đao giúp em ca này với ạ.

- Em muốn chọn các text (gồm cả text chữ và số) có cùng độ cao text, style text giống nhau.

- Bước 1 chọn text mẫu, bước 2 chọn text trong vùng chọn, nghiệm trả về là các text có cùng độ cao text và style text.( Do là em đang sửa 1 bản vẽ có rất nhiều text không đạt chiều cao, khi in ra rất nhỏ, em cũng có thể chọn các text bằng lệnh Fi, nhưng như vậy sẽ thêm 1 số thao tác, do khối lượng công việc khá lớn nên mạo muội nhờ các bác nhón tay giúp đỡ). Em xin chân thành cảm ơn các bá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

Mong các bác khai đao giúp em ca này với ạ.

- Em muốn chọn các text (gồm cả text chữ và số) có cùng độ cao text, style text giống nhau.

- Bước 1 chọn text mẫu, bước 2 chọn text trong vùng chọn, nghiệm trả về là các text có cùng độ cao text và style text.( Do là em đang sửa 1 bản vẽ có rất nhiều text không đạt chiều cao, khi in ra rất nhỏ, em cũng có thể chọn các text bằng lệnh Fi, nhưng như vậy sẽ thêm 1 số thao tác, do khối lượng công việc khá lớn nên mạo muội nhờ các bác nhón tay giúp đỡ). Em xin chân thành cảm ơn các bác.

Thử lisp này nhé. Thay dòng redraw bằng lệnh cần dùng.^_^

(defun c:test (/ txt )
  (if (not (setq txt (car (entsel "\nChon text mau: "))))
    (princ "\nBan da khong chon text mau!")
    (progn
       (if (not (setq ss	(ssget (list (cons 0 "TEXT")
				     (assoc 40 (entget txt))
				     (assoc 7 (entget txt))
			       )
			)
	       )
	  )
	(princ "\Ban da khong chon text.")
	(mapcar
	  '(lambda (o)
	     (redraw o 3)
	   )
	  (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
	)

      )
    )
  )
  (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

 

Thử lisp này nhé. Thay dòng redraw bằng lệnh cần dùng. ^_^

(defun c:test (/ txt )
  (if (not (setq txt (car (entsel "\nChon text mau: "))))
    (princ "\nBan da khong chon text mau!")
    (progn
       (if (not (setq ss	(ssget (list (cons 0 "TEXT")
				     (assoc 40 (entget txt))
				     (assoc 7 (entget txt))
			       )
			)
	       )
	  )
	(princ "\Ban da khong chon text.")
	(mapcar
	  '(lambda (o)
	     (redraw o 3)
	   )
	  (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
	)

      )
    )
  )
  (princ)
)

Cảm ơn bạn đã trợ giúp, Lisp dùng đúng như yêu cầu tớ đã nêu ở trên, nhưng ý mình muốn khi đã chọn được các text, mình nhấn " Ctrl+1 " để hiện bảng thuộc tính của text, mình có thể hiệu chỉnh các thông số của text trong bảng này, Lisp của bạn viết giúp thì lại chưa làm được việc này, Mong bạn sửa lại giúp mình 1 chút, Cám ơn bạn 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

Cảm ơn bạn đã trợ giúp, Lisp dùng đúng như yêu cầu tớ đã nêu ở trên, nhưng ý mình muốn khi đã chọn được các text, mình nhấn " Ctrl+1 " để hiện bảng thuộc tính của text, mình có thể hiệu chỉnh các thông số của text trong bảng này, Lisp của bạn viết giúp thì lại chưa làm được việc này, Mong bạn sửa lại giúp mình 1 chút, Cám ơn bạn nhiều

 Thay mapcar thành command nhé ^_^

(defun c:test (/ txt)
  (if (not (setq txt (car (entsel "\nChon text mau: "))))
    (princ "\nBan da khong chon text mau!")
    (progn
      (if (not (setq ss	(ssget (list (cons 0 "TEXT")
				     (assoc 40 (entget txt))
				     (assoc 7 (entget txt))
			       )
			)
	       )
	  )
	(princ "\Ban da khong chon text.")
	(command "_Pselect" ss "")
      )
    )
  )
  (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

Mong các bác khai đao giúp em ca này với ạ.

- Em muốn chọn các text (gồm cả text chữ và số) có cùng độ cao text, style text giống nhau.

- Bước 1 chọn text mẫu, bước 2 chọn text trong vùng chọn, nghiệm trả về là các text có cùng độ cao text và style text.( Do là em đang sửa 1 bản vẽ có rất nhiều text không đạt chiều cao, khi in ra rất nhỏ, em cũng có thể chọn các text bằng lệnh Fi, nhưng như vậy sẽ thêm 1 số thao tác, do khối lượng công việc khá lớn nên mạo muội nhờ các bác nhón tay giúp đỡ). Em xin chân thành cảm ơn các bác.

 

Cad đã có bộ lọc "FI" rồi, sao ko xài luôn cho tiện, mà lại phải yêu cầu nhờ lisp làm gì cho nó kềnh càng ra...

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

 

 Thay mapcar thành command nhé ^_^

(defun c:test (/ txt)
  (if (not (setq txt (car (entsel "\nChon text mau: "))))
    (princ "\nBan da khong chon text mau!")
    (progn
      (if (not (setq ss	(ssget (list (cons 0 "TEXT")
				     (assoc 40 (entget txt))
				     (assoc 7 (entget txt))
			       )
			)
	       )
	  )
	(princ "\Ban da khong chon text.")
	(command "_Pselect" ss "")
      )
    )
  )
  (princ)
)

Cảm ơn bạn. Rất nhanh và rất ngon là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

Cad đã có bộ lọc "FI" rồi, sao ko xài luôn cho tiện, mà lại phải yêu cầu nhờ lisp làm gì cho nó kềnh càng ra...

Dùng lệnh Fi thì đúng là giải quyết được vấn đề này, nhưng lại phải thêm thao tác. Khi đã trót yêu lisp rồi thì con người ta trở nên lười hơ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

Pselect có hiệu lực khi trước đó đã có 1 lần tối thiểu sủ dụng Properties (Ctrl + 1). Tại sao không dùng sssetfirst nil ss 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

Pselect có hiệu lực khi trước đó đã có 1 lần tối thiểu sủ dụng Properties (Ctrl + 1). Tại sao không dùng sssetfirst nil ss nhỉ :)

Hihi bình thường là mình có 1 pa. Để sssetfirst cho người có pa 2 :D

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  

×