Đến nội dung


Hình ảnh
- - - - -

Lisp căn lề text: Left, Center, Right và Fit (giống word)


  • Please log in to reply
54 replies to this topic

#21 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 12 December 2009 - 07:24 PM

Riêng bản thân Duy không thỏa mãn với câu hỏi cũng như câu trả lời của bác tuongtrang nhưng đây là topic của bạn Thaistreetz nên mình không bàn tiếp. Mà hình như dạo này bác tuongtrang rất bận thì phải mình thấy bác không có thời gian gỏ dấu nửa.
Nếu các MOD thấy bài này không phù hợp thì dell vô tư nhé!
  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#22 thanh50cd5

thanh50cd5

    biết pan

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

Đã gửi 15 December 2009 - 10:46 AM

bạn có thể up bản vẽ của bạn lên để mình kiểm tra không?
vì mình viết lisp này trên một bản vẽ mới với tất cả các biến hệ thống thiết lập ở standard nên có thể không lường trước được những thay đổi của một số biến hệ thống khiến lisp chạy không như ý muốn. fiền bạn up bản vẽ mà bạn chạy bị lỗi đến mình nghiên cứu hoàn thiện nó hơn cho mọi trường hợp có thể.

Mình thấy khi mình căn lề trái, phải hay ngang thì text bị chạy sang trái, phải và xuống 1 đoạn cố định
trong bản vẽ up lên mình có chỉ vẽ đoạn đó ra rồi
Bạn xem lại hộ nhé
thanks :(
http://www.mediafire...e/dy2nmm2dkli/1 ss tuyen A1.dwg
  • 0

#23 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 16 December 2009 - 01:51 AM

Mình thấy khi mình căn lề trái, phải hay ngang thì text bị chạy sang trái, phải và xuống 1 đoạn cố định
trong bản vẽ up lên mình có chỉ vẽ đoạn đó ra rồi
Bạn xem lại hộ nhé
thanks :(
http://www.mediafire...e/dy2nmm2dkli/1 ss tuyen A1.dwg

Cảm ơn bạn vì bản vẽ này giúp mình fát hiện ra 4 điểm còn thiếu sót có thể dẫn đến việc lisp không chạy ra kết quả theo ý muốn. 4 điểm đó gồm:
1. Phải thiết lập UCS với giá trị world (như anh Duy đã nói)
2. Phải thiết lập Angbase về giá trị 0
3. Style của các text phải để heigh text có giá trị mặc định là 0.
4. Tất cả các text cần canh lề không được để ở chế độ màu là byblock
Đây là code mình đã sửa lại để phù hợp với những bản vẽ không được thiết lập các điều kiện như 3 điều kiện đầu tiên. vì thời gian này mình bận quá nên ko có thời gian nghiên cứu sửa nốt điều kiện thứ 4. (nó cũng tương đối ít gặp) nên bạn trước khi sử dụng bạn chỉ cần đổi lại màu text khác màu byblock là OK ko vấn đề gì. Nhờ các bác trên diễn đàn sửa nốt giúp mình phần này vậy.

(defun c:ft()
(setq txt (ssget '((0 . "*TEXT"))))
(setq mau (entget (car (entsel "\nChon text chuan"))))
(command "undo" "begin")
(setq oldos (getvar "osmode"))
(setq olcol (getvar "CEColor"))
(setq ollay (getvar "Clayer"))
(setq olstyle (getvar "textstyle"))
(setq TB (textbox mau) LC (car TB) RC (cadr TB) di (distance LC RC) i 0)
(setq h (cdr(assoc 40 mau)))
(setq x1 (cdr(assoc 10 mau)))
(setq x2 (list (+ (car x1) (* di 0.5) (* -0.03 h)) (cadr x1)))
(setq x3 (list (+ (car x1) di (* -0.06 h)) (cadr x1)))
(setq canle (cond (canle) ("Left")))
(initget "Left Center Right Fit")
(setq canle (cond ((getkword (strcat "\Vi tri can le [Left/Center/Right/Fit/]<" canle ">"))) (canle)))
(setq oldang (getvar "Angbase"))
(command "angbase" 0 "ucs" "w")
(repeat (sslength txt)
(setq txt_ent (entget (ssname txt i)))
(setq txt_val (cdr(assoc 1 txt_ent)))
(setq txt_st (cdr(assoc 7 txt_ent)))
(setq txt_lay (cdr(assoc 8 txt_ent)))
(setq txt_h (cdr(assoc 40 txt_ent)))
(setq txt_fctr (cdr(assoc 41 txt_ent)))
(setq txt_clr (cdr(assoc 62 txt_ent)))
(setq y1 (cdr(assoc 10 txt_ent)))
(if (cdr(assoc 43 txt_ent)) (setq txt_fctr 1 y1 (list (car y1) (- (cadr y1) txt_h))))
(setq pt1 (list (car x1) (cadr y1)))
(setq pt2 (list (car x2) (cadr y1)))
(setq pt3 (list (car x3) (cadr y1)))
(command "-style" txt_st "" 0 txt_fctr "" "" "" "" "clayer" txt_lay "color" txt_clr "osmode" 0)
(if (eq canle "Left") (command "text" pt1 txt_h 0 txt_val))
(if (eq canle "Center") (command "text" "C" pt2 txt_h 0 txt_val))
(if (eq canle "Right") (command "text" "R" pt3 txt_h 0 txt_val))
(if (eq canle "Fit") (command "text" "F" pt1 pt3 txt_h txt_val))
(setq i (+ i 1))
(command "color" "bylayer")
);repeat
(command "ucs" "p")
(setvar "textstyle" olstyle)
(setvar "angbase" oldang)
(setvar "Clayer" ollay)
(setvar "CECOLOR" olcol)
(setvar "osmode" oldos)
(command "erase" txt "")
(prompt"\n[CAN LE TEXT] by Thaistreetz - huuthais@yahoo.com\n")
(command "undo" "end")
);defun
;=================================================================
;dan deu khoang cach cac hang text theo phuong Y
;=================================================================
(defun ss2ent (ss / sodt index lstent)
(setq sodt (if ss (sslength ss) 0)
index 0)
(repeat sodt
(setq ent (ssname ss index)
index (1+ index)
lstent (cons ent lstent)
);setq
);repeat
(reverse lstent)
)
(defun c:df()
(setq oldos (getvar "osmode"))
(setq ss (ssget '((0 . "*TEXT")))
lst (ss2ent ss)
lst (vl-sort lst '(lambda (e1 e2) (< (cadr (assoc 10 (entget e1))) (cadr (assoc 10 (entget e2))))))
lst (vl-sort lst '(lambda (e1 e2) (> (caddr (assoc 10 (entget e1))) (caddr (assoc 10 (entget e2))))))
);setq
(command "undo" "begin")
(setvar "osmode" 15359)
(setq kc (getdist "\n Nhap khoang cach giua cac text"))
(setq ddau (cdr(assoc 10 (entget(car lst)))) i 0 a2 (ssadd))
(setq mau (entget (car (entsel "\nChon text chuan"))))
(setq ptmau (cdr(assoc 10 mau)))
(setq ym (cadr ptmau))
(foreach e lst
(setq ent (entget e))
(setq dcuoi (cdr(assoc 10 ent)))
(setq yi (cadr dcuoi))
(setq ddauu (list (car dcuoi) (- (cadr ddau) (* i kc))))
(if (= yi ym) (setq ptgoc (list (car dcuoi) (- (cadr ddau) (* i kc)))))
(setvar "osmode" 0)
(command "move" e "" dcuoi ddauu)
(setq a2 (ssadd e a2))
(setq i (1+ i))
);foreach
(command "move" a2 "" ptgoc ptmau)
(setvar "osmode" oldos)
(prompt"\n[Paragraph TEXT] by Thaistreetz - huuthais@yahoo.com\n")
(command "undo" "end")
(Princ)
)
;=========================================================================
;dan deu khoang cach cac text theo phuong X
;=========================================================================
(defun c:dfx()
(setq oldos (getvar "osmode"))
(setq ss (ssget '((0 . "*TEXT")))
lst (ss2ent ss)
lst (vl-sort lst '(lambda (e1 e2) (< (cadr (assoc 10 (entget e1))) (cadr (assoc 10 (entget e2))))))
lst (vl-sort lst '(lambda (e1 e2) (> (caddr (assoc 10 (entget e1))) (caddr (assoc 10 (entget e2))))))
);setq
(command "undo" "begin")
(setvar "osmode" 15359)
(setq kc (getdist "\n Nhap khoang cach giua cac text"))

(setq ddau (cdr(assoc 10 (entget(car lst)))) i 0 di 0 a2 (ssadd))
(setq mau (entget (car (entsel "\nChon text chuan"))))
(setq ptmau (cdr(assoc 10 mau)))
(setq xm (car ptmau))
(foreach e lst
(setq ent (entget e))
(setq pti (cdr(assoc 10 ent)))
(setq xi (car pti))
(setq ddauu (list (+ (car ddau) di (* i kc)) (cadr ddau)))
(if (= xi xm) (setq ptgoc (list (+ (car ddau) di (* i kc)) (cadr ddau))))
(setq TBi (textbox ent) LCi (car TBi) RCi (cadr TBi) dii (distance LCi RCi) di (+ di dii))
(setvar "osmode" 0)
(command "move" e "" pti ddauu)
(setq a2 (ssadd e a2))
(setq i (1+ i))
);foreach
(command "move" a2 "" ptgoc ptmau)
(setvar "osmode" oldos)
(prompt"\n[Dan deu khoang cach TEXT theo phuong ngang] by Thaistreetz - huuthais@yahoo.com\n")
(command "undo" "end")
(Princ)
)
;========================================================================
;Sap xep text thang hang (co cung tung do Y)
;========================================================================
(defun c:dx()
(setq oldos (getvar "osmode"))
(setq txt (ssget '((0 . "TEXT"))))
(command "undo" "begin")
(setq ym (cadr (cdr(assoc 10 (entget (car (entsel "\nChon text chuan")))))) i 0)
(repeat (sslength txt)
(setq txt_pt (cdr(assoc 10 (entget (ssname txt i)))))
(setq ptcuoi (list (car txt_pt) ym))
(setvar "osmode" 0)
(command "move" (ssname txt i) "" txt_pt ptcuoi)
(setq i (+ i 1))
);repeat
(setvar "osmode" oldos)
(prompt"\n[Sap xep text thang hang] by Thaistreetz - huuthais@yahoo.com\n")
(command "undo" "end")
(Princ)
)

@A Tue_NV: vấn đề anh nêu em cũng đã biết ngay trong quá trình viết lisp rồi anh ạ. và đây cũng là chủ đích của em... em có cùng quan điểm với anh Duy, thích sử dụng Dtext hơn là Mtext nên viết code thế này tiện thể covert Mtext về Dtext luôn. Và lisp này viết ra mục đích chủ yếu để áp dụng với Mtext thôi anh ạ.

@TuongTrang: Mình cũng đang xài cad2010 và mình vẫn chạy được lisp này như thường. bạn hứng thú thì cứ test bét nhè chè đỗ đen đi, ko vấn đề gì sất <_< .
Về câu hỏi của bạn... Đúng là Mtext đã hỗ trợ các kiểu canh lề từ ngay từ ngày ... Mtext đc sinh ra, cái này thì ai cũng biết. còn với Dtext, mỗi text là một đối tượng riêng lẻ nên theo như hiểu biết của mình thì Cad không có lệnh nào để canh lề cho các đối tượng Dtext riêng lẻ này. cũng chính vì thế nên mình mới viết lisp này để canh lề cho Dtext.
Mình cũng đang hiểu câu hỏi của bạn theo một hướng khác, hình như bạn đang muốn đề cập đến vấn đề convert tất cả các đối tượng Dtext được chọn trở lại Mtext và canh lề cho các dòng trong Mtext mới được tạo ra. Cái này mình chưa làm được và có lẽ mình cũng không muốn làm... vì nhu cầu này hình như rất ít người cần và cũng một fần vì chủ quan của mình, dù thế nào thì mình cũng thích dùng Dtext hơn trong mọi trường hợp.
  • 2

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#24 thanh50cd5

thanh50cd5

    biết pan

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

Đã gửi 16 December 2009 - 07:54 AM

thanks bạn Thái nhiều nhé :(
  • 0

#25 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 175 (tàm tạm)

Đã gửi 17 December 2009 - 04:35 PM

Nhờ bác Thaistreetz thêm code dùng để lưu biến " Nhap khoang cach giua cac text" khỏi phải nhập lại.
Thanks you.
  • 0

#26 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 17 December 2009 - 09:26 PM

@A Tue_NV: vấn đề anh nêu em cũng đã biết ngay trong quá trình viết lisp rồi anh ạ. và đây cũng là chủ đích của em... em có cùng quan điểm với anh Duy, thích sử dụng Dtext hơn là Mtext nên viết code thế này tiện thể covert Mtext về Dtext luôn. Và lisp này viết ra mục đích chủ yếu để áp dụng với Mtext thôi anh ạ.

Cái này cũng do mục đích sử dụng của bạn thôi chứ theo Tue_NV bạn không nên xoá cái Mtext đi mà viết lại cái Text mới thay cho Mtext. Theo mình nghĩ là không nên chút nào. Ví dụ như khi ghi các kí tự đặt biệt hoặc là trình bày các định dạng trong Mtext, bạn có thể nào thiết lập lại cho nó về dáng dấp ban đầu? Không thể được và Tue_NV chỉ đưa ra lời khuyên như thế thôi.

Nếu bạn covert Mtext về Dtext mà giữ nguyên được định dạng, dáng dấp của Mtext ban đầu thì Tue_NV OK ngay, chứ covert Mtext về Dtext theo cách xoá cái Mtext đi mà viết lại cái Text mới thay cho Mtext thì Tue_NV khó có thể đồng tình với cách làm của bạn lắm :(
  • 1

#27 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 18 December 2009 - 12:10 PM

@ Tue_nv và TuongTrang: cảm ơn ý kiến đóng góp của các anh.
Đúng như A Tuệ nhận xét, cái này là do tính chất đặc thù của công việc em làm, các đối tượng là text trong bản vẽ mà các chương trình em sử dụng tạo ra gần như hoàn toàn là Dtext. và lisp này chủ yếu định hướng đối tượng là Dtext. Em viết nó ban đầu mục đích cũng chỉ để phục vụ việc sắp xếp căn chỉnh các đối tượng text trong các bảng thống kê một cách nhanh nhất.
Còn với Mtext thì lại là vấn đề hoàn toàn khác... Nếu nhu cầu cần có 1 lisp căn lề cho các đối tượng Mtext thì cách thức căn lề mà em sử dụng cho code này là không phù hợp. Cần fải xây dựng một code khác riêng cho nó để phù hợp hơn với những tính chất riêng của Mtext

@Phiphi-: Bạn tìm dòng
(setq kc (getdist "\n Nhap khoang cach giua cac text"))

Thay bằng đoạn code này
(if (not kc) (setq kc 1))
(setq kc1 (getdist (strcat"\nNhap khoang cach giua cac text < " (rtos kc 2 2) " >: ")))
(if kc1 (setq kc kc1))

chú ý: bạn có thẻ nhập khoảng cách bằng cách nhập số vào dòng nhắc command hoặc có thể nhập khoảng cách bằng cách pick 2 điểm trên màn hình
  • 1

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#28 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 29 July 2010 - 11:53 PM

Thêm lệnh DX: sắp xếp text theo hàng ngang (Đưa các text về cùng toạ độ Y, giữ nguyên toạ độ X)


(defun c:ft()
(setq txt (ssget '((0 . "*TEXT"))))
(setq mau (entget (car (entsel "\nChon text chuan"))))
(command "undo" "begin")
(setq oldos (getvar "osmode"))
(setq olcol (getvar "CEColor"))
(setq ollay (getvar "Clayer"))
(setq olstyle (getvar "textstyle"))
(setq TB (textbox mau) LC (car TB) RC (cadr TB) di (distance LC RC) i 0)
(setq h (cdr(assoc 40 mau)))
(setq x1 (cdr(assoc 10 mau)))
(setq x2 (list (+ (car x1) (* di 0.5) (* -0.03 h)) (cadr x1)))
(setq x3 (list (+ (car x1) di (* -0.06 h)) (cadr x1)))
(setq canle (cond (canle) ("Left")))
(initget "Left Center Right Fit")
(setq canle (cond ((getkword (strcat "\Vi tri can le [Left/Center/Right/Fit/]<" canle ">"))) (canle)))
(repeat (sslength txt)
(setq txt_ent (entget (ssname txt i)))
(setq txt_val (cdr(assoc 1 txt_ent)))
(setq txt_st (cdr(assoc 7 txt_ent)))
(setq txt_lay (cdr(assoc 8 txt_ent)))
(setq txt_h (cdr(assoc 40 txt_ent)))
(setq txt_fctr (cdr(assoc 41 txt_ent)))
(setq txt_clr (cdr(assoc 62 txt_ent)))
(setq y1 (cdr(assoc 10 txt_ent)))
(if (cdr(assoc 43 txt_ent)) (setq txt_fctr 1 y1 (list (car y1) (- (cadr y1) txt_h))))
(setq pt1 (list (car x1) (cadr y1)))
(setq pt2 (list (car x2) (cadr y1)))
(setq pt3 (list (car x3) (cadr y1)))
(command "-style" txt_st "" "" txt_fctr "" "" "" "" "clayer" txt_lay "color" txt_clr "osmode" 0)
(if (eq canle "Left") (command "text" pt1 txt_h 0 txt_val))
(if (eq canle "Center") (command "text" "C" pt2 txt_h 0 txt_val))
(if (eq canle "Right") (command "text" "R" pt3 txt_h 0 txt_val))
(if (eq canle "Fit") (command "text" "F" pt1 pt3 txt_h txt_val))
(setq i (+ i 1))
(command "color" "bylayer")
);repeat
(setvar "textstyle" olstyle)
(setvar "Clayer" ollay)
(setvar "CECOLOR" olcol)
(setvar "osmode" oldos)
(command "erase" txt "")
(prompt"\n[CAN LE TEXT] by Thaistreetz - huuthais@yahoo.com\n")
(command "undo" "end")
);defun
;====================================================================
;dan deu khoang cach cac hang text theo phuong Y
;====================================================================
(defun ss2ent (ss / sodt index lstent)
(setq sodt (if ss (sslength ss) 0)
index 0)
(repeat sodt
(setq ent (ssname ss index)
index (1+ index)
lstent (cons ent lstent)
);setq
);repeat
(reverse lstent)
)
(defun c:df()
(setq oldos (getvar "osmode"))
(setq ss (ssget '((0 . "*TEXT")))
lst (ss2ent ss)
lst (vl-sort lst '(lambda (e1 e2) (< (cadr (assoc 10 (entget e1))) (cadr (assoc 10 (entget e2))))))
lst (vl-sort lst '(lambda (e1 e2) (> (caddr (assoc 10 (entget e1))) (caddr (assoc 10 (entget e2))))))
);setq
(command "undo" "begin")
(setvar "osmode" 15359)
(setq kc (getdist "\n Nhap khoang cach giua cac text"))
(setq ddau (cdr(assoc 10 (entget(car lst)))) i 0 a2 (ssadd))
(setq mau (entget (car (entsel "\nChon text chuan"))))
(setq ptmau (cdr(assoc 10 mau)))
(setq ym (cadr ptmau))
(foreach e lst
(setq ent (entget e))
(setq dcuoi (cdr(assoc 10 ent)))
(setq yi (cadr dcuoi))
(setq ddauu (list (car dcuoi) (- (cadr ddau) (* i kc))))
(if (= yi ym) (setq ptgoc (list (car dcuoi) (- (cadr ddau) (* i kc)))))
(setvar "osmode" 0)
(command "move" e "" dcuoi ddauu)
(setq a2 (ssadd e a2))
(setq i (1+ i))
);foreach
(command "move" a2 "" ptgoc ptmau)
(setvar "osmode" oldos)
(prompt"\n[Paragraph TEXT] by Thaistreetz - huuthais@yahoo.com\n")
(command "undo" "end")
(Princ)
)
;======================================================================
;dan deu khoang cach cac text theo phuong X
;======================================================================
(defun c:dfx()
(setq oldos (getvar "osmode"))
(setq ss (ssget '((0 . "*TEXT")))
lst (ss2ent ss)
lst (vl-sort lst '(lambda (e1 e2) (< (cadr (assoc 10 (entget e1))) (cadr (assoc 10 (entget e2))))))
lst (vl-sort lst '(lambda (e1 e2) (> (caddr (assoc 10 (entget e1))) (caddr (assoc 10 (entget e2))))))
);setq
(command "undo" "begin")
(setvar "osmode" 15359)
(setq kc (getdist "\n Nhap khoang cach giua cac text"))

(setq ddau (cdr(assoc 10 (entget(car lst)))) i 0 di 0 a2 (ssadd))
(setq mau (entget (car (entsel "\nChon text chuan"))))
(setq ptmau (cdr(assoc 10 mau)))
(setq xm (car ptmau))
(foreach e lst
(setq ent (entget e))
(setq pti (cdr(assoc 10 ent)))
(setq xi (car pti))
(setq ddauu (list (+ (car ddau) di (* i kc)) (cadr ddau)))
(if (= xi xm) (setq ptgoc (list (+ (car ddau) di (* i kc)) (cadr ddau))))
(setq TBi (textbox ent) LCi (car TBi) RCi (cadr TBi) dii (distance LCi RCi) di (+ di dii))
(setvar "osmode" 0)
(command "move" e "" pti ddauu)
(setq a2 (ssadd e a2))
(setq i (1+ i))
);foreach
(command "move" a2 "" ptgoc ptmau)
(setvar "osmode" oldos)
(prompt"\n[Dan deu khoang cach TEXT theo phuong ngang] by Thaistreetz - huuthais@yahoo.com\n")
(command "undo" "end")
(Princ)
)
;==================================================================
;Sap xep text thang hang (co cung tung do Y)
;==================================================================
(defun c:dx()
(setq oldos (getvar "osmode"))
(setq txt (ssget '((0 . "TEXT"))))
(command "undo" "begin")
(setq ym (cadr (cdr(assoc 10 (entget (car (entsel "\nChon text chuan")))))) i 0)
(repeat (sslength txt)
(setq txt_pt (cdr(assoc 10 (entget (ssname txt i)))))
(setq ptcuoi (list (car txt_pt) ym))
(setvar "osmode" 0)
(command "move" (ssname txt i) "" txt_pt ptcuoi)
(setq i (+ i 1))
);repeat
(setvar "osmode" oldos)
(prompt"\n[Sap xep text thang hang] by Thaistreetz - huuthais@yahoo.com\n")
(command "undo" "end")
(Princ)
)

Cảm ơn bác Thaistreetz rất nhiều. Lisp của bác rất hay. Em muốn hỏi bác một chút là khi em dãn các text theo phương ngang, em rất muốn các text dãn cách theo một giá trị khoảng cách mà mình nhập vào (từ tọa độ của text trước đến tọa độ của text kế tiếp cách nhau một khoảng cách). Nếu mình nhập giá trị khoảng cách hơi nhỏ thì các text có thể trùng đè lên nhau cũng được, miễn là các text dãn khoảng cách đều nhau. Em vướng vào trường hợp này khi vẽ mặt trắc dọc. Bác có thể chỉnh sửa giúp em được không ạ? Vẫn là lisp ft_df_dfx_dx.lsp của bác đó. Cảm ơn bác rất nhiều.
  • 0



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







#29 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 31 July 2010 - 12:50 AM

muốn các text dãn cách theo một giá trị khoảng cách mà mình nhập vào (từ tọa độ của text trước đến tọa độ của text kế tiếp cách nhau một khoảng cách). Nếu mình nhập giá trị khoảng cách hơi nhỏ thì các text có thể trùng đè lên nhau cũng được, miễn là các text dãn khoảng cách đều nhau. Em vướng vào trường hợp này khi vẽ mặt trắc dọc.

thực sự thì mình chưa hiểu ý muốn của bạn lắm. bạn up bản vẽ minh họa cụ thể để mình xem đc ko?
  • 1

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#30 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 01 August 2010 - 10:27 PM

thực sự thì mình chưa hiểu ý muốn của bạn lắm. bạn up bản vẽ minh họa cụ thể để mình xem đc ko?

File mẫu của em đấy
http://www.4shared.c...5KFj/banve.html
Sau khi sắp xếp các text xong thì khoảng cách giữa các text mình có thể điều chỉnh theo ý muốn khi nhập giá trị khoảng cách vào
Mong bác xem và chỉnh sửa giúp. Kính mong thư hồi âm.
Cảm ơn bác nhiều
  • 0



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







#31 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 02 August 2010 - 07:54 PM

http://www.4shared.c...5KFj/banve.html
Sau khi sắp xếp các text xong thì khoảng cách giữa các text mình có thể điều chỉnh theo ý muốn khi nhập giá trị khoảng cách vào

Mình không chắc là mình đã hiểu ý của bạn. tuy nhiên bạn thử xóa dòng dưới của lệnh dfx rồi thử chạy xem đã đúng ý của bạn chưa.
(setq TBi (textbox ent) LCi (car TBi) RCi (cadr TBi) dii (distance LCi RCi) di (+ di dii))
  • 2

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#32 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 03 August 2010 - 07:23 AM

Mình không chắc là mình đã hiểu ý của bạn. tuy nhiên bạn thử xóa dòng dưới của lệnh dfx rồi thử chạy xem đã đúng ý của bạn chưa.
(setq TBi (textbox ent) LCi (car TBi) RCi (cadr TBi) dii (distance LCi RCi) di (+ di dii))

bác hiểu rất đúng ý rồi đấy ạ.
Cảm ơn bác rất nhiều
  • 0



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







#33 tieptouch

tieptouch

    biết pan

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

Đã gửi 04 August 2010 - 11:09 PM

Rất cảm ơn bác đã giới thiệu cho lisp hay...nhưng mà sau khi em dùng thử thì thấy có chỗ này hơi thắc mắc chút như thế này về dfx ạ...
-Khi mà các text có cùng 1 tung độ y thì khi giãn đều thep phương ngang, các text sẽ sắp xếp theo đúng thứ tự các text có hoành độ x lớn hơn thì sẽ đứng đắng sau text có x nhỏ hơn
- Khi các text có tung độ y khác nhau thì sau khi giãn đều theo phương ngang, text nào có tung đô y lớn nhất sẽ nhảy lên đứng đầu, các text sau sẽ sắp xếp theo giá trị giảm dần y

Mong bác sửa giúp cho em là trong mọi trường hợp, dù các text có giá trị y khác nhau cugnx sẽ giãn đều theo phương ngang đúng theo thứ tự text tăng dần giá trị x như ban đầu. Rất chi là cảm ơn bác!
  • 0

#34 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 09 August 2010 - 03:39 PM

Bác Thaistreetz ơi! bác có thể giúp em tạo hàm array 1 đối tượng bất kỳ (em dùng đối tượng là bock) trong một vùng kín được không hả bác?
Em đang rất rắc rồi khi gặp phải vấn đề này. Chả là em đang trải mảng cây lúa trong một hình diện tích tương đối phức tạp, em cứ phải delete các cây lúa nằm ngoài vùng rất mỏi tay. Bác có thể nghiên cứu giúp em được không hả bác. Em nghĩ là vấn đề này cũng có rất nhiều người quan tâm. Ngoài ra em còn hỏi bác là em cũng có thể xoá đối tượng có cùng 1 thuộc tính trong một vùng kín được không hả bác (em đã dùng lệnh fiter để lọc ra thuộc tính, khi xoá chỉ cần nhấn nút "p"). Mong bác giúp đỡ. Cảm ơn bác rất nhiều
  • 0



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







#35 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 09 August 2010 - 05:30 PM

Bác Thaistreetz ơi! bác có thể giúp em tạo hàm array 1 đối tượng bất kỳ (em dùng đối tượng là bock) trong một vùng kín được không hả bác?
Em đang rất rắc rồi khi gặp phải vấn đề này. Chả là em đang trải mảng cây lúa trong một hình diện tích tương đối phức tạp, em cứ phải delete các cây lúa nằm ngoài vùng rất mỏi tay. Bác có thể nghiên cứu giúp em được không hả bác. Em nghĩ là vấn đề này cũng có rất nhiều người quan tâm. Ngoài ra em còn hỏi bác là em cũng có thể xoá đối tượng có cùng 1 thuộc tính trong một vùng kín được không hả bác (em đã dùng lệnh fiter để lọc ra thuộc tính, khi xoá chỉ cần nhấn nút "p"). Mong bác giúp đỡ. Cảm ơn bác rất nhiều

Hatch có thể giúp bạn giải quyết vấn đề này. bạn nghiên cứu cách tạo mẫu hatch đi.
thêm nữa, vẫn đề bạn nêu không liên quan gì đến nội dung topic này. bạn nên post nó vào topic khác. "viet lisp theo yêu cầu" chẳng hạn, sẽ nhiều nguời có thể giúp bạn hơn.
  • 1

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#36 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 09 August 2010 - 05:34 PM

@Tieptouch: bạn bỏ dòng này trong lệnh dfx đi là đc
lst (vl-sort lst '(lambda (e1 e2) (> (caddr (assoc 10 (entget e1))) (caddr (assoc 10 (entget e2))))))
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#37 hdg2318

hdg2318

    biết lệnh mirror

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

Đã gửi 29 August 2010 - 09:46 PM

lisp rất hay, nhưng mình có một góp ý nhỏ thế này
Bác Thaistreetz có thể gộp hết các lệnh trong lisp vào làm 1. khi ta chọn text và text mẫu xong, sẽ hiện ra menu tùy chọn :
- canh lề
- dãn dòng
- sắp xếp.
khi chọn vào menu nào, sẽ hiẹn ra từng menu con(vd: canh lề : tría phải, giữa ...). như thế sẽ giản lược được số lượng tên lệnh cần nhớ, và tiện dụng hơn, lisp có lẽ cũng ngắn gọn hơn.

mình mới tập tành nghiên cứu nên chưa đủ khả năng làm, mong được chỉ giáo. Thân ! :D
  • 0

Có 2 cách để nhìn đời:
1 là : coi như chẳng có gì là huyền diệu
2 là : coi như mọi điều đều huyền diệu


Click here


#38 hdg2318

hdg2318

    biết lệnh mirror

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

Đã gửi 01 September 2010 - 11:56 PM

Bác nào sửa lại 1 chút giúp em với, Lisp em còn chưa vỡ lòng, không biết sửa sao cả :D:D
  • 0

Có 2 cách để nhìn đời:
1 là : coi như chẳng có gì là huyền diệu
2 là : coi như mọi điều đều huyền diệu


Click here


#39 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 02 September 2010 - 08:21 AM

Bác Thaistreetz có thể gộp hết các lệnh trong lisp vào làm 1. khi ta chọn text và text mẫu xong, sẽ hiện ra menu tùy chọn :
- canh lề
- dãn dòng
- sắp xếp.
khi chọn vào menu nào, sẽ hiẹn ra từng menu con(vd: canh lề : tría phải, giữa ...). như thế sẽ giản lược được số lượng tên lệnh cần nhớ, và tiện dụng hơn, lisp có lẽ cũng ngắn gọn hơn.

Minh không sửa đâu. vì làm như bạn sẽ mất quá nhiều bước để thực hiện xong 1 lệnh, mất nhiều thời gian làm việc. bản thân lisp này cũng đã quá dài dòng rồi. thực tế làm việc rồi bạn sẽ thấy
ps: code của mình nhưng bạn nào sửa được theo nhu cầu của người của mọi người thì cứ sửa và post thoải mái, tất cả đều public. mình thực sự không thích cái sự cả nể, khách sáo vẫn đang tồn tại trên diễn đàn này. đặc biệt là trong cái box autolisp.
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#40 thaihoang.xdct

thaihoang.xdct

    Chưa sử dụng CAD

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

Đã gửi 12 February 2012 - 01:35 PM

Bạn sửa lỗi này hộ mình với. Dùng lệnh căn lề text ft, df, dfx toàn bị lỗi, Bản vẽ đi kèm đây bạn. co gì PM minh theo mail thaihoang.xdct@gmail.com hoặc nick yahoo:thaihoang.xdct. hoặc nhắn tin cho mình theo số 0914888478 minh đt lại.http://www.mediafire...3al9cc0am1cou05
  • 0