Đến nội dung


Hình ảnh

Đóng Ngoặc Text, Mtext, Dim


  • Please log in to reply
19 replies to this topic

#1 Luu Nguyen

Luu Nguyen

    biết vẽ circle

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

Đã gửi 19 April 2016 - 06:31 PM


(Defun c:FG (/ c e ss txt cmde ttdangs ttdangt)
  (setq cmde (getvar "CMDECHO"))
  (setvar "CMDECHO" 0)
  (setq ttdangt (getstring 5"\nChuoi muon them phia truoc:")) 
  (setq ttdangs (getstring 5"\nChuoi muon them phia sau:")) 
  (if (null ttdangt)(setq ttdangt ""))
  (if (null ttdangs)(setq ttdangs ""))
 (prompt "\nChon chu muon chinh.")
  (setq ss (ssget))
  (setq c 0)
  (if ss (setq e (ssname ss c)))
  (while e
    (setq e (entget e))
    ; Ensure entity is text
    (if (= (cdr (assoc 0 e)) "TEXT")
        (progn
                 (setq txt (strcat ttdangt (cdr (assoc 1 e)) ttdangs))
           (setq e (subst (cons 1 txt) (assoc 1 e) e))
           (entmod e)
        )
    )
    (setq c (1+ c)) ; Increment counter.
    (setq e (ssname ss c))  ; Obtain next entity.
   )
   (setvar "CMDECHO" cmde)
      (PrinC)
)

  • -1

#2 Luu Nguyen

Luu Nguyen

    biết vẽ circle

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

Đã gửi 19 April 2016 - 06:41 PM

Chào các bạn trên diễn đàn cadviet.com, mình có sưu tầm được 1 lsp dùng để đóng ngoặc text(), nhưng phải thực hiện đến 3 bước mới xong chức năng này(phải nhập tiền tố, hậu tố rồi mới chọn đối tượng). Bây giờ mình nhờ mọi người trên diễn đàn ai biết giúp mình với, mình xin cảm ơn trước:
Khi gõ lệnh FG sau đó chọn đối tượng thì đối tượng sẽ được đóng ngoặc().


(Defun c:FG (/ c e ss txt cmde ttdangs ttdangt)
  (setq cmde (getvar "CMDECHO"))
  (setvar "CMDECHO" 0)
  (setq ttdangt (getstring 5"\nChuoi muon them phia truoc:")) 
  (setq ttdangs (getstring 5"\nChuoi muon them phia sau:")) 
  (if (null ttdangt)(setq ttdangt ""))
  (if (null ttdangs)(setq ttdangs ""))
 (prompt "\nChon chu muon chinh.")
  (setq ss (ssget))
  (setq c 0)
  (if ss (setq e (ssname ss c)))
  (while e
    (setq e (entget e))
    ; Ensure entity is text
    (if (= (cdr (assoc 0 e)) "TEXT")
        (progn
                 (setq txt (strcat ttdangt (cdr (assoc 1 e)) ttdangs))
           (setq e (subst (cons 1 txt) (assoc 1 e) e))
           (entmod e)
        )
    )
    (setq c (1+ c)) ; Increment counter.
    (setq e (ssname ss c))  ; Obtain next entity.
   )
   (setvar "CMDECHO" cmde)
      (PrinC)
)


  • -2

#3 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 20 April 2016 - 08:33 AM

(defun c:fg(/ s)
(vl-load-com)
(ssget '((0 . "*TEXT")))
(vlax-for o (setq s(vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object))))
	(vla-put-Textstring o (strcat "(" (vla-get-Textstring o) ")"))
)
(vla-delete s)
)

  • 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


#4 Luu Nguyen

Luu Nguyen

    biết vẽ circle

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

Đã gửi 20 April 2016 - 06:24 PM

Bạn Ketxu thên cho mình lsp chọn đối tượng là dimension luôn đi bạn. Thanks bạn trước!
  • -1

#5 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 21 April 2016 - 09:27 AM

Bạn còn yêu cầu nào nữa k ?? 


  • 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


#6 Luu Nguyen

Luu Nguyen

    biết vẽ circle

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

Đã gửi 21 April 2016 - 06:24 PM

Không bạn ah! Bởi vì tiêu đề mình cũng nói rồi mà: "Đóng Ngoặc Text, Mtext, Dim"
  • -1

#7 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 22 April 2016 - 09:26 AM

Giờ mình mới nhìn thấy chữ Dim trên tiêu đề ??? Có lẽ vài ngày trước mắt mình hoa ^^
Nhưng cái lisp bạn đưa k dính dáng gì đến dimension cả, k hiểu trước đây là làm ntn.
CHo mình hỏi các Dimension của bạn là Dim có giá trị đơn thuần (k edit) hay có các ký tự khác mà bạn đã viết ... Bởi có vài trường hợp bạn k cần lisp


  • 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


#8 Luu Nguyen

Luu Nguyen

    biết vẽ circle

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

Đã gửi 22 April 2016 - 06:27 PM

Dim là các kích thước đo được đã edit và không edit bạn ketxu.
  • -1

#9 quansla

quansla

    biết lệnh xclip

  • Members
  • PipPipPipPipPipPipPip
  • 642 Bài viết
Điểm đánh giá: 224 (khá)

Đã gửi 23 April 2016 - 09:12 AM

Bạn thử cái này xem sao . chú ý trong LISP co đoạn cho phép chỉnh sửa dấu ngoặc bạn có thể thay đổi tuỳ ý (trong mặc định đang là 1) bạn thay số này bằng số 2,3,... sẽ thấy sự thay đổi khi chọn đối tượng



(defun c:fg (/ ss checkstring SoluongNgoac obj)
(defun checkstring (str N / loc_lst lst r l1 l2 str1 str2)
(setq lst (vl-string->list str)
l1 lst
str1 "" str2 "")
(defun loc_lst (i r / r2)
(setq r2 r)
(while (= (car(member i r2)) i) (setq r2 (cdr(member i r2))))
r2)
(setq r (loc_lst 40 l1)
r (loc_lst 41 (reverse r))
r (reverse r))
(repeat N (setq str1 (strcat str1 "(" )))
(repeat N (setq str2 (strcat str2 ")" )))
(strcat str1 (vl-list->string r) str2)
)

;;;Chinh sua so luong BO Dau Ngoac o day
(setq SoluongNgoac 1)

; (setq obj (vlax-ename->vla-object (car(entsel))))
(if (setq ss (ssget '((0 . "*DIM*,*TEXT"))))
(progn
(vlax-for obj (vla-get-activeselectionset(vla-get-activedocument(vlax-get-acad-object)))
(cond
((wcmatch (vla-get-objectname obj) "*Text*")
(vla-put-textstring obj (checkstring (vla-get-textstring obj) SoluongNgoac)))
((wcmatch (vla-get-objectname obj) "*Dim*")
(if (= (vla-get-textoverride obj) "")
(vla-put-textoverride obj (checkstring(rtos (vla-get-measurement obj)) SoluongNgoac))
(vla-put-textoverride obj (checkstring(vla-get-textoverride obj) SoluongNgoac))
)
)))
)
)
(princ)
)



  • 1

#10 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 23 April 2016 - 09:30 AM

Quick code :
(defun c:fg(/ s sd)
(vl-load-com)
(ssget '((0 . "*TEXT,*DIMENSION")))
(vlax-for o (setq s(vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object))))
	(cond 
		(	(wcmatch (vla-get-ObjectName o) "*Text")
			(vla-put-Textstring o (strcat "(" (vla-get-Textstring o) ")"))
		)
		((vla-put-TextOverride o
			(strcat
				"("
					(if (/= (setq sd (vla-get-TextOverride o)) "") sd "<>")
				")"
			)
		))			
	)
)
(and s (vla-delete s))
)

  • 1

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


#11 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 313 (khá)

Đã gửi 23 April 2016 - 04:57 PM

Em cũng tham gia với các bác 1 cái (thuần lisp):

(defun c:fg  (/ els i ss str)
 (if (setq ss (ssget '((0 . "*TEXT,DIMENSION"))))
  (repeat (setq i (sslength ss))
   (setq els (entget (ssname ss (setq i (1- i))))
         str (cdr (assoc 1 els)))
   (if (eq (cdr (assoc 0 els)) "DIMENSION")
    (or (not (eq (setq str (cdr (assoc 1 els))) "")) (setq str (rtos (cdr (assoc 42 els))))))
   (setq els (subst (cons 1 (strcat "(" str ")")) (assoc 1 els) els))
   (entmod els)))
 (princ))

  • 1

#12 Luu Nguyen

Luu Nguyen

    biết vẽ circle

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

Đã gửi 23 April 2016 - 05:24 PM

Quick code :

(defun c:fg(/ s sd)
(vl-load-com)
(ssget '((0 . "*TEXT,*DIMENSION")))
(vlax-for o (setq s(vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object))))
	(cond 
		(	(wcmatch (vla-get-ObjectName o) "*Text")
			(vla-put-Textstring o (strcat "(" (vla-get-Textstring o) ")"))
		)
		((vla-put-TextOverride o
			(strcat
				"("
					(if (/= (setq sd (vla-get-TextOverride o)) "") sd "<>")
				")"
			)
		))			
	)
)
(and s (vla-delete s))
)



Cảm ơn bạn ketxu nhiều lắm! Lsp của bạn viết đúng ý mình rồi.
Cảm ơn bạn quansla
Cảm ơn bạn quocmanh04tt
Mỗi người có ưu điểm riêng.
  • 1

#13 thainguyen_tg

thainguyen_tg

    biết vẽ circle

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

Đã gửi 24 April 2016 - 11:02 AM

Trong trường hợp này mình sữa dòng (if (= enttxt "TEXT")

 thành dòng (if (= enttxt "*TEXT, *DIMENSION") sao không chon được mtext và dim vậy các bạn(đầu tiên thì chọn được TEXT rồi)? Các bạn sữa hộ giúp mình lsp này với.

;;;*************************DAU PHI***************************
(defun c:ff ()
    (setvar "cmdecho" 0)
    (setq olderr *error* *error* myerror)
    (prompt "\nHay chon dong TEXT !... ")
    (prompt "\nSelect objects: ")
    (command "select" "au" pause)
    (setq sstxt (ssget "p")
          sslen (sslength sstxt)
          ctr 0
    )
    (command ".undo" "mark")
    (while (< ctr sslen)
           (setq listxt (entget (ssname sstxt ctr))
                 txttxt (cdr (assoc 1 listxt))
                 enttxt (cdr (assoc 0 listxt))
           )
           (if (= enttxt "TEXT")
               (progn
                   (setq testxt (substr txttxt 1 3))
                   (if (or (= testxt "%%C") (= testxt "%%C"))
                       (setq newtxt (substr txttxt 4))
                       (setq newtxt (strcat "%%C" txttxt))
                   )
                   (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))
                   (entmod listxt)
                )
            )
            (setq ctr (1+ ctr))
    )
    (setq *error* olderr)
    (setvar "cmdecho" 1)
    (princ)
)


  • 0

#14 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5448 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 24 April 2016 - 11:27 AM

Nếu sửa như thế thì phải thay hàm = thành hàm wcmatch


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#15 thainguyen_tg

thainguyen_tg

    biết vẽ circle

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

Đã gửi 24 April 2016 - 11:48 AM

Nếu sửa như thế thì phải thay hàm = thành hàm wcmatch

Nếu vậy thì mình thay dấu bằng = thành wcmatch hay sao bạn Doan Van Ha?(mình làm như vậy nhưng không được rồi). Mong bạn giúp thêm


  • -1

#16 thainguyen_tg

thainguyen_tg

    biết vẽ circle

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

Đã gửi 25 April 2016 - 06:05 PM

Các bạn nào biết giúp mình với. 


  • 0

#17 thainguyen_tg

thainguyen_tg

    biết vẽ circle

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

Đã gửi 26 April 2016 - 06:22 PM

Vấn đề nan giải các bạn ah!


  • 0

#18 anti lazy

anti lazy

    biết lệnh erase

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

Đã gửi 26 April 2016 - 08:09 PM

Xem help hay copy wcmatch paste vào ô tìm kiếm để biết cách dùng rất là nan giải, chỉ có chờ là dễ.


  • 0

#19 thainguyen_tg

thainguyen_tg

    biết vẽ circle

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

Đã gửi 26 April 2016 - 08:29 PM

Mù tịt bạn anti lazy ơi!


  • 0

#20 nguoidihochoi

nguoidihochoi

    biết pan

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

Đã gửi 26 April 2016 - 09:04 PM

em muốn trình bày DIM cho 1 bản vẽ như DIM trong hình dưới đây mà em chưa biết cài đặt trong lệnh dst. Nhờ các anh giúp em với  :)
Em xin cảm ơn!  ^^151426_dim.jpg


  • 0