Đến nội dung


Hình ảnh
- - - - -

Nhờ Viết Lisp Chọn Text


  • Please log in to reply
9 replies to this topic

#1 jangboko

jangboko

    biết vẽ arc

  • Members
  • PipPip
  • 44 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 01 November 2016 - 11:32 PM

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.

 


  • 0

#2 Bee

Bee

    biết lệnh array

  • Members
  • PipPipPip
  • 189 Bài viết
Điểm đánh giá: 64 (tàm tạm)

Đã gửi 02 November 2016 - 12:04 AM

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

  • 1

#3 jangboko

jangboko

    biết vẽ arc

  • Members
  • PipPip
  • 44 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 02 November 2016 - 07:23 AM

 

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


  • 0

#4 Bee

Bee

    biết lệnh array

  • Members
  • PipPipPip
  • 189 Bài viết
Điểm đánh giá: 64 (tàm tạm)

Đã gửi 02 November 2016 - 07:41 AM

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

  • 1

#5 Danh Cong

Danh Cong

    biết lệnh linetype

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

Đã gửi 02 November 2016 - 07:51 AM

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...


  • 0

             ***  Vô lo - Vô nghĩ - Vô sầu hận  ***

***  Chẳng thương - Chẳng giận - Chẳng đau lòng  ***


#6 jangboko

jangboko

    biết vẽ arc

  • Members
  • PipPip
  • 44 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 02 November 2016 - 07:56 AM

 

 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


  • 0

#7 jangboko

jangboko

    biết vẽ arc

  • Members
  • PipPip
  • 44 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 02 November 2016 - 08:37 AM

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. :))


  • 0

#8 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 02 November 2016 - 09:59 AM

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ỉ :)


  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#9 Bee

Bee

    biết lệnh array

  • Members
  • PipPipPip
  • 189 Bài viết
Điểm đánh giá: 64 (tàm tạm)

Đã gửi 02 November 2016 - 10:16 AM

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


  • 0

#10 Nad SK

Nad SK

    biết vẽ circle

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

Đã gửi 04 November 2016 - 05:06 PM

FI hoặc SSX thần thánh cân được hết rồi cần gì phải LISP cho nó rối.


  • 0