Đến nội dung


Hình ảnh
- - - - -

[Đã xong] Lisp chỉnh style TEXT trong block thuộc tính


  • Please log in to reply
21 replies to this topic

#1 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 17 June 2011 - 06:15 AM

Cảm ơn bác,tiện thể cho mình hỏi trong bản vẽ có khoảng 50 block att chữ trong các block này chiều dày là 0.7 vậy có cách nào chỉnh về 1 nhanh nhất không?chứ dùng lệnh battman chỉnh từng block thì lâu lắm.

Sáng nay, nhân tiện sửa Lisp cho bạn huygo -> tiện thể sửa luôn cho bạn 79032
. Bạn thử cái này :

(defun c:wo( / ssdt sodt index tt entdt w)
(setq ssdt (ssget '((0 . "INSERT") (66 . 1)))
sodt (sslength ssdt)
index 0
)
(or *w* (setq *w* 1.0))
(setq w (getreal (strcat "\n Nhap be rong < "
(rtos *w* 2 2) " > :")))
(if w (setq *w* w) (setq w *w*))
(repeat sodt
(setq entdt (ssname ssdt index)
index (1+ index))
(while (/= (cdr(assoc 0 (entget entdt))) "SEQEND")
(setq
entdt (entnext entdt)
tt (entget entdt)
tt (subst (cons 41 w) (assoc 41 tt) tt)
)
(entmod tt)
(entupd entdt)
)
)
(princ)
)

  • 2

#2 790312

790312

    biết lệnh fillet

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

Đã gửi 17 June 2011 - 06:34 AM

Sáng nay, nhân tiện sửa Lisp cho bạn huygo -> tiện thể sửa luôn cho bạn 79032
. Bạn thử cái này :


(defun c:wo( / ssdt sodt index tt entdt w)
(setq ssdt (ssget '((0 . "INSERT") (66 . 1)))
sodt (sslength ssdt)
index 0
)
(or *w* (setq *w* 1.0))
(setq w (getreal (strcat "\n Nhap be rong < "
(rtos *w* 2 2) " > :")))
(if w (setq *w* w) (setq w *w*))
(repeat sodt
(setq entdt (ssname ssdt index)
index (1+ index)
entdt (entnext entdt)
tt (entget entdt)
tt (subst (cons 41 w) (assoc 41 tt) tt)
)
(entmod tt)
(entupd entdt)
)
(princ)
)

Cảm ơn bác,nhân tiện bác thêm chức sửa chiều cao và text style trong block att này luôn giùm e,khi hỏi chiều cao và hỏi text style nếu không nhập enter thì giữ nguyên nếu nhập thì thay đổi.
  • 0

#3 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 17 June 2011 - 07:40 AM

Cảm ơn bác,nhân tiện bác thêm chức sửa chiều cao và text style trong block att này luôn giùm e,khi hỏi chiều cao và hỏi text style nếu không nhập enter thì giữ nguyên nếu nhập thì thay đổi.

Tue_NV sửa lại code wo -> đổi bề rộng Block Att. Bạn download Lisp wo ở bài viết trên của Tue_NV nhé.
Còn đây là Lisp đổi chiều cao của Block Att
và Lisp styb đổi Style của Block ATT về Textstyle hiện hành

(defun c:ho( / ssdt sodt index tt entdt w)
(setq ssdt (ssget '((0 . "INSERT") (66 . 1)))
sodt (sslength ssdt)
index 0
)
(or *w* (setq *w* 1.0))
(setq w (getreal (strcat "\n Nhap chieu cao < "
(rtos *w* 2 2) " > :")))
(if w (setq *w* w) (setq w *w*))
(repeat sodt
(setq entdt (ssname ssdt index)
index (1+ index))
(while (/= (cdr(assoc 0 (entget entdt))) "SEQEND")
(setq
entdt (entnext entdt)
tt (entget entdt)
tt (subst (cons 40 w) (assoc 40 tt) tt)
)
(entmod tt)
(entupd entdt)
)
)
(princ)
)
;;
(defun c:styb( / ssdt sodt index tt entdt)
(setq ssdt (ssget '((0 . "INSERT") (66 . 1)))
sodt (sslength ssdt)
index 0
)

(repeat sodt
(setq entdt (ssname ssdt index)
index (1+ index))
(while (/= (cdr(assoc 0 (entget entdt))) "SEQEND")
(setq
entdt (entnext entdt)
tt (entget entdt)
tt (subst (cons 7 (getvar "textstyle")) (assoc 7 tt) tt)
)
(entmod tt)
(entupd entdt)
)
)
(princ)
)

  • 1

#4 790312

790312

    biết lệnh fillet

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

Đã gửi 17 June 2011 - 07:47 AM

Tue_NV sửa lại code wo -> đổi bề rộng Block Att. Bạn download Lisp wo ở bài viết trên của Tue_NV nhé.
Còn đây là Lisp đổi chiều cao của Block Att
và Lisp styb đổi Style của Block ATT về Textstyle hiện hành


(defun c:ho( / ssdt sodt index tt entdt w)
(setq ssdt (ssget '((0 . "INSERT") (66 . 1)))
sodt (sslength ssdt)
index 0
)
(or *w* (setq *w* 1.0))
(setq w (getreal (strcat "\n Nhap chieu cao < "
(rtos *w* 2 2) " > :")))
(if w (setq *w* w) (setq w *w*))
(repeat sodt
(setq entdt (ssname ssdt index)
index (1+ index))
(while (/= (cdr(assoc 0 (entget entdt))) "SEQEND")
(setq
entdt (entnext entdt)
tt (entget entdt)
tt (subst (cons 40 w) (assoc 40 tt) tt)
)
(entmod tt)
(entupd entdt)
)
)
(princ)
)
;;
(defun c:styb( / ssdt sodt index tt entdt)
(setq ssdt (ssget '((0 . "INSERT") (66 . 1)))
sodt (sslength ssdt)
index 0
)

(repeat sodt
(setq entdt (ssname ssdt index)
index (1+ index))
(while (/= (cdr(assoc 0 (entget entdt))) "SEQEND")
(setq
entdt (entnext entdt)
tt (entget entdt)
tt (subst (cons 7 (getvar "textstyle")) (assoc 7 tt) tt)
)
(entmod tt)
(entupd entdt)
)
)
(princ)
)

Không thể nhập chung thành 1 dòng lệnh được sao bác?thí dụ đánh wo thì hỏi nhập chiều dày text xong hỏi nhập chiều cao text nếu không nhập enter thì giữ nguyên chiều cao,tiếp hỏi nhập tên text style nếu không nhập enter giữ nguyên.Cảm ơn sự nhiệt tình của bác.
  • 0

#5 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 17 June 2011 - 08:26 AM

Không thể nhập chung thành 1 dòng lệnh được sao bác?thí dụ đánh wo thì hỏi nhập chiều dày text xong hỏi nhập chiều cao text nếu không nhập enter thì giữ nguyên chiều cao,tiếp hỏi nhập tên text style nếu không nhập enter giữ nguyên.Cảm ơn sự nhiệt tình của bác.

Cái này không khó. Chỉ là Tue_NV không có thời gian thôi. bạn 79031sử dụng tạm cái đã. Nếu bạn có thể chờ, sáng mai, Tue_NV sẽ viết cho bạn.
Các bác trên diễn đàn có rãnh thì giúp cho bạn 790312 dùm. Tue_NV xin Cảm ơn
  • 1

#6 790312

790312

    biết lệnh fillet

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

Đã gửi 17 June 2011 - 08:35 AM

Cảm ơn bác.Vậy e sẽ đợi.
  • 0

#7 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 17 June 2011 - 11:16 AM

Cái này không khó. Chỉ là Tue_NV không có thời gian thôi. bạn 79031sử dụng tạm cái đã. Nếu bạn có thể chờ, sáng mai, Tue_NV sẽ viết cho bạn.
Các bác trên diễn đàn có rãnh thì giúp cho bạn 790312 dùm. Tue_NV xin Cảm ơn

Gom giùm bạn thay bác Tue_NV đây. Không biết có đúng ý không.

(defun C:RBA()
(command "undo" "be")
(setq ssdt (ssget '((0 . "INSERT") (66 . 1))) sodt (sslength ssdt))
(RBA)
(command "undo" "end"))
(defun RBA()
(initget "W H S") (setq kieu (getkword "\nKieu thay doi: <Width/Height/Style>: "))
(cond ((= kieu "W") (C:WO) (RBA))
((= kieu "H") (C:HO) (RBA))
((= kieu "S") (C:ST) (RBA))))
;----- HiÖu chØnh chiÒu dµy Text trong Block Att.
(defun c:wo( / index tt entdt w)
(setq index 0)
(or *w* (setq *w* 1.0))
(setq w (getreal (strcat "\n Nhap be rong < " (rtos *w* 2 2) " > :")))
(if w (setq *w* w) (setq w *w*))
(repeat sodt
(setq entdt (ssname ssdt index) index (1+ index))
(while (/= (cdr (assoc 0 (entget entdt))) "SEQEND")
(setq entdt (entnext entdt)
tt (entget entdt)
tt (subst (cons 41 w) (assoc 41 tt) tt))
(entmod tt) (entupd entdt))) (princ))
;----- HiÖu chØnh chiÒu cao Text trong Block Att.
(defun c:ho( / index tt entdt h)
(setq index 0)
(or *h* (setq *h* 1.0))
(setq h (getreal (strcat "\n Nhap chieu cao < " (rtos *h* 2 2) " > :")))
(if h (setq *h* h) (setq h *h*))
(repeat sodt
(setq entdt (ssname ssdt index) index (1+ index))
(while (/= (cdr (assoc 0 (entget entdt))) "SEQEND")
(setq entdt (entnext entdt)
tt (entget entdt)
tt (subst (cons 40 h) (assoc 40 tt) tt))
(entmod tt) (entupd entdt))) (princ))
;----- HiÖu chØnh Style Text trong Block Att.
(defun c:st( / index tt entdt)
(setq index 0)
(repeat sodt
(setq entdt (ssname ssdt index) index (1+ index))
(while (/= (cdr (assoc 0 (entget entdt))) "SEQEND")
(setq entdt (entnext entdt)
tt (entget entdt)
tt (subst (cons 7 (getvar "textstyle")) (assoc 7 tt) tt))
(entmod tt) (entupd entdt))) (princ))
(princ "\nLenh su dung: RBA")

  • 1

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


#8 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 17 June 2011 - 04:46 PM

Cảm ơn bác.Vậy e sẽ đợi.

Tranh thủ thời gian mần luôn cái Lisp này cho bạn 790312 luôn

(defun c:wo( / ssdt sodt index tt entdt w sty h)
(setq ssdt (ssget '((0 . "INSERT") (66 . 1)))
sodt (sslength ssdt)
index 0
)
(or *w* (setq *w* 1.0))
(setq w (getreal (strcat "\n Nhap be rong < "
(rtos *w* 2 2) " > :")))
(if w (setq *w* w) (setq w *w*))
(or *h* (setq *h* 5.0))
(setq h (getreal (strcat "\n Nhap chieu cao < "
(rtos *h* 2 2) " > :")))
(if h (setq *h* h) (setq h *h*))

(or *sty* (setq *sty* (getvar "textstyle")))
(setq sty (getstring t (strcat "\n Nhap ten style < "
*sty* " > :")))
(if sty (setq *sty* sty) (setq sty *sty*))

(repeat sodt
(setq entdt (ssname ssdt index)
index (1+ index))
(while (/= (cdr(assoc 0 (entget entdt))) "SEQEND")
(setq
entdt (entnext entdt)
tt (entget entdt)
)
(if w (setq tt (subst (cons 41 w) (assoc 41 tt) tt)))
(if h (setq tt (subst (cons 40 h) (assoc 40 tt) tt)))
(if (tblsearch "style" sty) (setq tt (subst (cons 7 sty) (assoc 7 tt) tt)))

(entmod tt)
(entupd entdt)
)
)

(princ)
)

  • 1

#9 790312

790312

    biết lệnh fillet

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

Đã gửi 17 June 2011 - 05:16 PM

Tranh thủ thời gian mần luôn cái Lisp này cho bạn 790312 luôn


(defun c:wo( / ssdt sodt index tt entdt w sty h)
(setq ssdt (ssget '((0 . "INSERT") (66 . 1)))
sodt (sslength ssdt)
index 0
)
(or *w* (setq *w* 1.0))
(setq w (getreal (strcat "\n Nhap be rong < "
(rtos *w* 2 2) " > :")))
(if w (setq *w* w) (setq w *w*))
(or *h* (setq *h* 5.0))
(setq h (getreal (strcat "\n Nhap chieu cao < "
(rtos *h* 2 2) " > :")))
(if h (setq *h* h) (setq h *h*))

(or *sty* (setq *sty* (getvar "textstyle")))
(setq sty (getstring t (strcat "\n Nhap ten style < "
*sty* " > :")))
(if sty (setq *sty* sty) (setq sty *sty*))

(repeat sodt
(setq entdt (ssname ssdt index)
index (1+ index))
(while (/= (cdr(assoc 0 (entget entdt))) "SEQEND")
(setq
entdt (entnext entdt)
tt (entget entdt)
)
(if w (setq tt (subst (cons 41 w) (assoc 41 tt) tt)))
(if h (setq tt (subst (cons 40 h) (assoc 40 tt) tt)))
(if (tblsearch "style" sty) (setq tt (subst (cons 7 sty) (assoc 7 tt) tt)))

(entmod tt)
(entupd entdt)
)
)

(princ)
)

Chỗ kêu nhập chiều cao chữ nếu không nhập thì nó vẫn giữ nguyên chiều cao cũ chứ bác lisp này nếu không nhập nó cho chiều cao chữ bằng 0,giống như text style không nhập thì nó vẫn giữ nguyên đó bác,Mong bác sửa lại phần nhập chiều cao chữ giúp e.Thanks.
  • 0

#10 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 17 June 2011 - 05:25 PM

Chỗ kêu nhập chiều cao chữ nếu không nhập thì nó vẫn giữ nguyên chiều cao cũ chứ bác lisp này nếu không nhập nó cho chiều cao chữ bằng 0,giống như text style không nhập thì nó vẫn giữ nguyên đó bác,Mong bác sửa lại phần nhập chiều cao chữ giúp e.Thanks.

Do viết vội quá. Sửa lại cho bạn đây :

(defun c:wo( / ssdt sodt index tt entdt w sty h)
(setq ssdt (ssget '((0 . "INSERT") (66 . 1)))
sodt (sslength ssdt)
index 0
)
(setq w (getreal "\n Nhap be rong chu :"))
(setq h (getreal "\n Nhap chieu cao chu :"))
(setq sty (getstring t "\n Nhap ten style : "))
(repeat sodt
(setq entdt (ssname ssdt index)
index (1+ index))
(while (/= (cdr(assoc 0 (entget entdt))) "SEQEND")
(setq
entdt (entnext entdt)
tt (entget entdt)
)
(if w (setq tt (subst (cons 41 w) (assoc 41 tt) tt)))
(if h (setq tt (subst (cons 40 h) (assoc 40 tt) tt)))
(if (tblsearch "style" sty) (setq tt (subst (cons 7 sty) (assoc 7 tt) tt)))

(entmod tt)
(entupd entdt)
)
)

(princ)
)

  • 0

#11 790312

790312

    biết lệnh fillet

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

Đã gửi 17 June 2011 - 05:55 PM

Do viết vội quá. Sửa lại cho bạn đây :


(defun c:wo( / ssdt sodt index tt entdt w sty h)
(setq ssdt (ssget '((0 . "INSERT") (66 . 1)))
sodt (sslength ssdt)
index 0
)
(setq w (getreal "\n Nhap be rong chu :"))
(setq h (getreal "\n Nhap chieu cao chu :"))
(setq sty (getstring t "\n Nhap ten style : "))
(repeat sodt
(setq entdt (ssname ssdt index)
index (1+ index))
(while (/= (cdr(assoc 0 (entget entdt))) "SEQEND")
(setq
entdt (entnext entdt)
tt (entget entdt)
)
(if w (setq tt (subst (cons 41 w) (assoc 41 tt) tt)))
(if h (setq tt (subst (cons 40 h) (assoc 40 tt) tt)))
(if (tblsearch "style" sty) (setq tt (subst (cons 7 sty) (assoc 7 tt) tt)))

(entmod tt)
(entupd entdt)
)
)

(princ)
)

Chân thành cảm ơn bác rất nhiều,tiện thể bác giúp e thêm lần cuối với,chỗ nhập TÊN STYLE bác giúp cho hiện sẵn 1 tên nào đó chẳng hạn là 123 chẳng hạn để enter luôn khỏi phải nhập vì tên Style của e thường dài lắm,nếu muốn nhập tên Style khác vẫn được.
  • 0

#12 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 17 June 2011 - 06:44 PM

Chân thành cảm ơn bác rất nhiều,tiện thể bác giúp e thêm lần cuối với,chỗ nhập TÊN STYLE bác giúp cho hiện sẵn 1 tên nào đó chẳng hạn là 123 chẳng hạn để enter luôn khỏi phải nhập vì tên Style của e thường dài lắm,nếu muốn nhập tên Style khác vẫn được.

Hề hề hề,
Thay dòng code:
(setq sty (getstring t "\n Nhap ten style : "))
thành
(setq sty (getstring t "\n Nhap ten style <Standard>: "))
xem nó có ưng ý không hỉ????
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#13 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 17 June 2011 - 07:28 PM

Chân thành cảm ơn bác rất nhiều,tiện thể bác giúp e thêm lần cuối với,chỗ nhập TÊN STYLE bác giúp cho hiện sẵn 1 tên nào đó chẳng hạn là 123 chẳng hạn để enter luôn khỏi phải nhập vì tên Style của e thường dài lắm,nếu muốn nhập tên Style khác vẫn được.

Lisp này có kế thừa và phát huy tác dụng Lisp của anh gia_bach.
Bạn thử xem :

(defun c:wo( / ssdt sodt index tt entdt w getsty h)
(setq ssdt (ssget '((0 . "INSERT") (66 . 1)))
sodt (sslength ssdt)
index 0
)
(setq w (getreal "\n Nhap be rong chu :"))
(setq h (getreal "\n Nhap chieu cao chu :"))

(if (> (atof (substr (getvar "ACADVER") 1 4)) 16.1)
(progn
(or newsty (setq newsty (getvar "textstyle")))
(setq res "" resinit "" tbsty nil)
(while (setq tbsty (tblnext "style" (null tbsty)))
(setq sty (cdr (assoc 2 tbsty))
res (strcat res "/" sty )
resinit (strcat resinit " " sty )))
(setq res (substr res 2)
resinit (substr resinit 2))

(setq cur_var (mapcar 'getvar '("DYNMODE" "DYNPROMPT")))
(mapcar 'setvar '("DYNMODE" "DYNPROMPT") '(1 1))
(initget (strcat " " resinit))
(setq getsty (getkword (strcat "\nChon Style [" res " ] ") ))
(and getsty (setq newsty getsty))
(mapcar 'setvar '("DYNMODE" "DYNPROMPT") cur_var)

)
(setq getsty (getstring (strcat "\nChon Style [" res " ] ") ))
)
(repeat sodt
(setq entdt (ssname ssdt index)
index (1+ index))
(while (/= (cdr(assoc 0 (entget entdt))) "SEQEND")
(setq
entdt (entnext entdt)
tt (entget entdt)
)
(if getsty (if (tblsearch "style" getsty) (setq tt (subst (cons 7 getsty) (assoc 7 tt) tt))) )
(if w (setq tt (subst (cons 41 w) (assoc 41 tt) tt)))
(if h (setq tt (subst (cons 40 h) (assoc 40 tt) tt)))

(entmod tt)
(entupd entdt)
)
)

(princ)
)

Đánh lệnh Wo
Hỏi : nhập bề rộng Block Att, muốn thay đổi thì nhập vô, không thay đổi thì enter
Hỏi : nhập chiều cao Block Att, muốn thay đổi thì nhập vô, không thay đổi thì enter
Hỏi : nhập Text style Att
Text style này hiện ra 1 danh sách xổ xuống cho bạn chọn, muốn thay đổi thì chọn vô, không thay đổi thì enter
OK.
  • 1

#14 790312

790312

    biết lệnh fillet

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

Đã gửi 17 June 2011 - 08:13 PM

Cảm ơn bác Bình và bác Tue,vì hết quyền bình chọn cho 2 bác nên e phải spam,tác dụng lisp của bác gia_bach nếu muốn sổ danh sách của bên DIMENSION STYLE thì sửa sao vậy bác?e thấy bên topic đó cũng có người hỏi mà chưa ai trả lời.
  • 0

#15 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 17 June 2011 - 09:39 PM

Cảm ơn bác Bình và bác Tue,vì hết quyền bình chọn cho 2 bác nên e phải spam,tác dụng lisp của bác gia_bach nếu muốn sổ danh sách của bên DIMENSION STYLE thì sửa sao vậy bác?e thấy bên topic đó cũng có người hỏi mà chưa ai trả lời.

Mạn phép anh gia_bach, Tue_NV xin mượn code của anh trả lời câu hỏi này
Đây là code

(defun c:SLD (/ cur_var str1 str2 tmp tmplay)
(if (> (atof (substr (getvar "ACADVER") 1 4)) 16.1)
(progn
(or newdst (setq newdst (getvar "DIMSTYLE")))
(setq str1 "" str2 "")
(while (setq tbl (tblnext "DIMSTYLE" (null tbl)))
(setq tmp (cdr (assoc 2 tbl))
str1 (strcat str1 "/" tmp )
str2 (strcat str2 " " tmp )))
(setq str1 (substr str1 2)
str2 (substr str2 2))

(setq cur_var (mapcar 'getvar '("DYNMODE" "DYNPROMPT")))
(mapcar 'setvar '("DYNMODE" "DYNPROMPT") '(1 1))
(initget str2)
(setq tmpLay (getkword (strcat "\nChon DIMENSION STYLE [" str1 " ] <"(princ newdst)">: ") ))
(and tmpLay (setq newdst tmpLay))
(mapcar 'setvar '("DYNMODE" "DYNPROMPT") cur_var)
(command "DIMSTYLE" "R" newdst)

(alert (strcat "Ban chon DIMENSION STYLE [" newdst "]."))

(princ newdst))
(alert "Cad khong ho tro dropdown."))
(princ) )

  • 0

#16 790312

790312

    biết lệnh fillet

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

Đã gửi 17 June 2011 - 10:07 PM

Mạn phép anh gia_bach, Tue_NV xin mượn code của anh trả lời câu hỏi này
Đây là code


(defun c:SLD (/ cur_var str1 str2 tmp tmplay)
(if (> (atof (substr (getvar "ACADVER") 1 4)) 16.1)
(progn
(or newdst (setq newdst (getvar "DIMSTYLE")))
(setq str1 "" str2 "")
(while (setq tbl (tblnext "DIMSTYLE" (null tbl)))
(setq tmp (cdr (assoc 2 tbl))
str1 (strcat str1 "/" tmp )
str2 (strcat str2 " " tmp )))
(setq str1 (substr str1 2)
str2 (substr str2 2))

(setq cur_var (mapcar 'getvar '("DYNMODE" "DYNPROMPT")))
(mapcar 'setvar '("DYNMODE" "DYNPROMPT") '(1 1))
(initget str2)
(setq tmpLay (getkword (strcat "\nChon DIMENSION STYLE [" str1 " ] <"(princ newdst)">: ") ))
(and tmpLay (setq newdst tmpLay))
(mapcar 'setvar '("DYNMODE" "DYNPROMPT") cur_var)
(command "DIMSTYLE" "R" newdst)

(alert (strcat "Ban chon DIMENSION STYLE [" newdst "]."))

(princ newdst))
(alert "Cad khong ho tro dropdown."))
(princ) )

Nhờ bác bỏ giùm bảng hiện 'Ban chon DIMENSION STYLE ' giùm e,khi sổ danh sách ta chọn thì sẽ chuyển về dimension style ta chọn,không cần hiện bảng 'Ban chon DIMENSION STYLE 'e đã thử sửa trong lisp thì nó báo lỗi.Cảm ơn bác nhiều.
  • 0

#17 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 17 June 2011 - 10:22 PM

Do viết vội quá. Sửa lại cho bạn đây :

Đây là những dòng trích dẫn theo thời gian:
1). Tue_NV, on 17 June 2011 - 08:26 AM, said:
Cái này không khó. Chỉ là Tue_NV không có thời gian thôi. bạn 79031sử dụng tạm cái đã. Nếu bạn có thể chờ, sáng mai, Tue_NV sẽ viết cho bạn.
Các bác trên diễn đàn có rãnh thì giúp cho bạn 790312 dùm. Tue_NV xin Cảm ơn
2). Doan Van Ha said:
Gom giùm bạn thay bác Tue_NV đây. Không biết có đúng ý không.
3). Tue_NV said:
Tranh thủ thời gian mần luôn cái Lisp này cho bạn 790312 luôn
Do viết vội quá. Sửa lại cho bạn đây :

Cuối cùng, tôi chẳng biết đường nào mà lần!
  • 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.


#18 790312

790312

    biết lệnh fillet

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

Đã gửi 17 June 2011 - 10:32 PM

Chắc bác Tue không thấy bài của bác thôi,e đã thấy bài bác và đã bình chọn rồi.Mong bác thông cảm cho bác Tue vi nhiều bài viết quá nên chắc không đọc hết.
  • 0

#19 hugo007

hugo007

    biết lệnh erase

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

Đã gửi 17 June 2011 - 10:53 PM

Hề hề hề,
Thay dòng code:
(setq sty (getstring t "\n Nhap ten style : "))
thành
(setq sty (getstring t "\n Nhap ten style <Standard>: "))
xem nó có ưng ý không hỉ????

E làm thử theo bác thì không được bác ah.
FontName (getstring "\nT\U+00EAn Font<vhelvcn.ttf> :")
  • 0

#20 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 18 June 2011 - 05:24 AM

Đây là những dòng trích dẫn theo thời gian:
1). Tue_NV, on 17 June 2011 - 08:26 AM, said:
Cái này không khó. Chỉ là Tue_NV không có thời gian thôi. bạn 79031sử dụng tạm cái đã. Nếu bạn có thể chờ, sáng mai, Tue_NV sẽ viết cho bạn.
Các bác trên diễn đàn có rãnh thì giúp cho bạn 790312 dùm. Tue_NV xin Cảm ơn
2). Doan Van Ha said:
Gom giùm bạn thay bác Tue_NV đây. Không biết có đúng ý không.
3). Tue_NV said:
Tranh thủ thời gian mần luôn cái Lisp này cho bạn 790312 luôn
Do viết vội quá. Sửa lại cho bạn đây :

Cuối cùng, tôi chẳng biết đường nào mà lần!

Là vì code của bạn viết chưa đáp ứng đủ yêu cầu của bạn 790312
Ý của bạn ấy là :

....
Đánh lệnh Wo
Hỏi : nhập bề rộng Block Att, muốn thay đổi thì nhập vô, không thay đổi thì enter
Hỏi : nhập chiều cao Block Att, muốn thay đổi thì nhập vô, không thay đổi thì enter
Hỏi : nhập Text style Att
Text style này hiện ra 1 danh sách xổ xuống cho bạn chọn, muốn thay đổi thì chọn vô, không thay đổi thì enter
OK.

Tue_NV cảm ơn bạn DoanVanHa đã gom 3 cái Lisp giúp. Nhưng Lisp bạn gom thì 1 lệnh rẽ nhánh 3 chức năng, nhưng Lisp thực hiện chỉ 1 chức năng 1 lần. Cái Lisp của Tue_NV viết là thực hiện cả 3 chức năng trong 1 lần. Bạn là người biết viết Lisp, biết sử dụng Lisp mà bạn lại viết câu Cuối cùng, tôi chẳng biết đường nào mà lần! thì nghĩ cũng buồn thật. Thà rằng, lisp của Tue_NV viết giống tính năng của bạn thì bạn nói còn được, chẳng lẽ bạn chẳng biết đường nào mà lần thật sao? Tôi không nghĩ như vậy, và rất buồn khi bạn viết câu nói ấy. Diễn đàn CADVIET với 1 mớ hỗn độn trong topic Viết Lisp yêu cầu kể cũng chẳng biết đường nào mà lần thật. Càng nghĩ thấy buồn

Chắc bác Tue không thấy bài của bác thôi,e đã thấy bài bác và đã bình chọn rồi.Mong bác thông cảm cho bác Tue vi nhiều bài viết quá nên chắc không đọc hết.

Cảm ơn bạn quan tâm, trước khi viết bài cho bạn, Tue_NV cũng đã thấy và đọc qua Reply của bạn DoanVanHa rồi. Quả thật rất buồn cho bạn ấy, chẳng vui vẻ tí nào.
  • 1