Chuyển đến nội dung
Diễn đàn CADViet
Thaistreetz

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

Các bài được khuyến nghị

 

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 !

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

×