Đế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

#41 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 12 February 2012 - 04:45 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

Khi chọn đối tượng chuẩn thì bạn chọn TEXT, chứ không thể chọn MTEXT.
  • 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.


#42 vantuan18nd

vantuan18nd

    biết vẽ rectang

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

Đã gửi 21 May 2012 - 08:43 PM

Thanks nhiều ! chạy rất luột
  • 0

#43 locxd

locxd

    biết pan

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

Đã gửi 07 July 2012 - 06:44 PM

Trước đây mình có thấy trong diễn đàn đã cung cấp công cụ căn lề text theo 3 kiểu Left, Center, Right. Tuy nhiên công cụ này ko viết bằng autolisp và chỉ chạy được các bản cad 2004, 2005 và 2006 nên mình viết một lisp tương tự để chạy được trên tất cả các bản cad.
- Lisp yêu cầu chọn tất cả các text (Dtext va MText) cần căn lề.
- Chọn một text làm chuẩn để căn lề các text đã chọn theo text đó
- Ngoài chức năng căn lề theo 3 vị trí. Left, Center, Right thì lisp này cung cấp thêm chức năng căn lề theo kiểu Fit, - kéo dãn các dòng cho dài bằng nhau (giống word) và dài bằng text chọn làm chuẩn.
Hình đã gửi

(defun c:ft()(command "undo" "begin")(setq oldos (getvar "osmode"))(setq olcol (getvar "CEColor"))(setq olstyle (getvar "textstyle"))(prompt "\nchon cac text can can le ...")(setq txt (ssget '((0 . "*TEXT"))))(setq mau (entget (car (entsel "\nChon text chuan"))))(setq TB  (textbox mau) LC  (car TB) RC (cadr TB) di (distance LC RC) i 0)(setq x1 (cdr(assoc 10 mau)))(setq x2 (list (+ (car x1) (* di 0.5)) (cadr x1)))(setq x3 (list (+ (car x1) di) (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 "CECOLOR" olcol)(setvar "osmode" oldos)(command "erase" txt "")(prompt"\n[CAN LE TEXT] by Thaistreetz - huuthais@yahoo.com\n")(command "undo" "end"));defun

Hiện tại thì mình đã khá hài lòng với lisp này nếu chỉ dùng để căn lề text. Tuy nhiên mình muốn thêm cho nó chức năng giãn dòng cho đều cũng với cách nhập số liệu như trên nhưng đang mắc về thuật giải. Xin nhờ mọi người giúp mình hoàn thiện lisp này với.

Edit: đã fix lỗi


Bạn ơi cho hỏi mình sử dụng lệnh ft để canh các text cùng toạ độ X, canh lề trái mà sao khi thực hiện, các text biến thành số 0 và bị lệnh góc so với phương X. mình đang cần sử dụng chức năng này, bạn có thể trả lời email cho mình ko? <locxd78@gmail.com>. Thanks
  • 0

#44 locxd

locxd

    biết pan

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

Đã gửi 07 July 2012 - 06:49 PM


Bạn ơi cho hỏi mình sử dụng lệnh ft để canh các text cùng toạ độ X, canh lề trái mà sao khi thực hiện, các text biến thành số 0 và bị lệnh góc so với phương X. mình đang cần sử dụng chức năng này, bạn có thể trả lời email cho mình ko? <locxd78@gmail.com>. Thanks



Xin lỗi, mình mới cập nhật lisp của bạn ở trang 2, sử dụng tốt lắm, bây giờ mọi chuyện trở nên dễ dàng rồi, cám ơn nhiều nha.
  • 0

#45 thienvuong

thienvuong

    biết zoom

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

Đã gửi 07 July 2012 - 08:29 PM

Lisp rất hay và chất lượng...
  • 0

#46 haanh

haanh

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2875 Bài viết
Điểm đánh giá: 1554 (rất tốt)

Đã gửi 08 July 2012 - 09:30 AM

Hình đã gửi

Căn chỉnh thủ công như Word trên AutoCAD đời cao cũng ngon lắm!
  • 0

“Sống trong đời sống cần có một tấm lòng / Để làm gì em biết không ? / Để gió cuốn đi, để gió cuốn đi...”


#47 longbyoongho

longbyoongho

    biết vẽ pline

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

Đã gửi 09 July 2012 - 09:02 AM

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.


Lisp bạn viết rất hay nhưng lệnh DX dùng để gom tất cả các text vào 1 text được chọn thì mình thấy không cần thiết, cũng có thể mình không hiểu ý đồ của bạn vậy mình muốn bạn sửa lệnh DX hoặc thêm 1 lệnh mới có tác dụng căn đều từng text theo môi trường của nó được không ( ví dụ: căn text vào chính giữa hình tròn, hình đa giác...). Thanks :D
  • 0
Đã 18 mùa cây lúa trổ bông,
Chưa 1 lần sờ mông con gái
Cũng từng ấy mùa khoai sọ,
Chưa 1 lần này nọ với ai.

#48 hotanphi

hotanphi

    biết vẽ polygon

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

Đã gửi 09 July 2012 - 09:37 AM

Mình xin cảm ơn các Bác.
Mình sử dụng và thấy có vấn đề này không biết đó là hạn chế của lisp hay do mình bị lỗi gì không biết.
Khi căn lề theo dạng FiT thì nếu Dtext nào có ít chữ thì nó sẽ fit cho đều.
Tuy nhiên những Dtex này khi dãn ra cho đều thì kích thước chữ sẽ to hơn những hàng Dtext khác.
(Chiều cao text không đổi nhưng nhìn thì thấy text lớn hơn ban đầu)
(file em đính kèm)http://www.cadviet.c.../104866_gui.rar
Như vậy em thấy rất xấu. Em không hiểu về thuật toán lắm nhưng theo em nghĩ thì mình viết code sau cho nếu chiều dài của dòng Dtext đó quá ngắn thì mình sẽ không dãn text hàng đó. Nghĩa là mình khống chế khoảng cách dãn text giữa các từ trong 1 câu Dtext là 1 khoảng nhất định nào đó (khoảng này mình nhìn sao cho đẹp là được). Nếu khi khoảng cách giữa các "từ" trong 1 hàng Dtext dãn ra tới khoảng cách tối đa mình quy ước ở trên mà hàng Dtext này chưa fit được tới khoảng cách lề phải và lề trái thì hàng Dtext này không phải canh nữa.(Giống trong word). Theo em nghĩ như vậy sẽ rất đẹp.
Không biết em nói vậy có gì sai không. Nếu có mong anh em bỏ qua vì mình không hiểu về thuật toán trong lisp nên có thể phát biểu không đúng.
Rất mong các Bác xem thử
Em xin chân thành cảm ơn.
  • 0

#49 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 09 July 2012 - 05:07 PM

Bản chất của từ Fit là co kéo sao cho vừa 1 khoảng định trước. Trong CAD này thì co kéo chính cái Width Factor. Chữ ngắn quá thì nó cho width lớn lên, cái bụng cũng to ra để chiếm hết khoảng đã định, chữ dài quá thì nó hít bụng lại.
=> Hy vọng bạn đã hiểu nguyên do ^^
  • 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


#50 hotanphi

hotanphi

    biết vẽ polygon

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

Đã gửi 09 July 2012 - 05:19 PM

Dạ em xin cảm ơn anh ketxu
  • 0

#51 hieptran891

hieptran891

    Chưa sử dụng CAD

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

Đã gửi 18 May 2013 - 10:34 AM

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

 

Sao em tải về ! tấy cả các đoạn mã trong lisp đều nằm trên 1 dòng hết !

hay tại máy em bị lỗi !

toàn bộ mã lisp nằm trên 1 dòng ! lisp có chạy không vậy các đại ca !


  • 0

#52 hainguyenthao

hainguyenthao

    Chưa sử dụng CAD

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

Đã gửi 31 August 2014 - 04:27 PM

em là mem mới nhờ các bác chỉ giáo giúp em mò mãi khong được.

chả là khi em vẽ có một só bản vẽ có phần ghi chú. khi e đánh ghi chú xong (nếu canh giữa) thì khi tắt cad đi bật lên cái chữ ghi chú đó nó lại nhảy lêch sang một bên chồng cả lên bản vẽ.

ngược lại có ghi chú em canh lệnh thi tắt cad đi bật lại nó lại nhẩy vào canh giữa. cung trong 1 bản vẽ

 nhờ các bác chỉ em cách chỉnh

những ghi chú đó em đánh trong bang text formatting.

thank các bác


  • 0

#53 oishisnack

oishisnack

    biết zoom

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

Đã gửi 20 December 2014 - 02:59 PM

lips bao lỗi (error: bad argument type: 2D/3D point: nil) la như thế nào vậy


  • 0

#54 conghoa

conghoa

    biết lệnh attdef

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

Đã gửi 25 December 2014 - 01:18 PM

Mình chạy thử thi` nó báo lỗi này, các bạn xem thử lại giúp mình nhé

APPLOAD ft.lsp successfully loaded.
Command: ; error: malformed list on input

 

APPLOAD ft.lsp successfully loaded.
 
 
Command: ; error: malformed list on input

  • 0

#55 nguyenloc_eng

nguyenloc_eng

    Chưa sử dụng CAD

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

Đã gửi 24 September 2016 - 02:54 PM

Lisp rất hay nhưng lại có vấn đề ở chỗ set chiều cao text về không. Chiều cao text của mình theo tỷ lệ mình set. Khi thực hiện lệnh ft xong thì chiều cao về 0. Sau đó mình dùng lệnh dtext thì chiều cao chữ k như tỷ lệ nữa. Chủ thớt có cách khắc phục không? Cám ơn


  • 0