Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
whatcholingon

[Yêu cầu] Lisp chèn text vào Pl

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

Làm tay cái này cũng nhanh mà bạn :) Block text -> measure/divide -> explode

 

Rất cám ơn bạn.

lệnh này text lại nằm ở trên pl, có thể đưa text nằm ở giữa pl được ko vậy bạn.

 

Và có thể chọn text rùi chèn vào 1 chỗ bất kỳ trên pl ko?

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

 

Rất cám ơn bạn.

lệnh này text lại nằm ở trên pl, có thể đưa text nằm ở giữa pl được ko vậy bạn.

 

Và có thể chọn text rùi chèn vào 1 chỗ bất kỳ trên pl ko?

text nằm trên hay giữa là do lúc bạn chọn điểm chèn của block, bạn chọn điểm chèn của block ngay giữa text là dc

  • Vote tăng 1

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

text nằm trên hay giữa là do lúc bạn chọn điểm chèn của block, bạn chọn điểm chèn của block ngay giữa text là dc

 

mình cũng mò được ra rùi. mình x block ra rùi chọn cách text kiểu : Justify (Middle center)

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

Nằm ở đâu phụ thuộc vào điểm chọn Block của bạn khi tạo block. Nếu bạn tạo điểm InsertPoint giữa text thì chèn nó sẽ vào giữa Pline

thôi

P/s : lisp của bác Duy khá tổng quát đó :)

  • Vote tăng 1

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

Về dải text là ok rùi. còn vấn đề này mọi người xem làm thế nào?

có thể chọn text rùi chèn vào 1 chỗ bất kỳ trên pl ko?

 

cho mình hỏi: sao khi sử dụng lệnh measure thì text nó cứ quay ngược xuống dưới mà lại không quay lên trên cho dễ nhìn nhỉ?

nnnnnnn.jpg

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

Trả lời nhanh : Được ^^

P/s bài trên : do measure phụ thuộc hướng Pline được tạo ra :)

  • Vote tăng 1

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

 

Nhiều lsp quá hổng biết lsp nào là đúng ý mình nhỉ mò này giờ mà chưa ra bạn à.

Thế thì qua đây

http://duy782006.blogspot.com/2011/06/hoan-thien-lisp-rai-oi-tuong-theo-uong.html

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

có lệnh nào cho quay các text ngược lại được ko bạn?

Tìm lệnh ROT trên cadviet đi bạn! bạnb trên cad

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

Về dải text là ok rùi. còn vấn đề này mọi người xem làm thế nào?

có thể chọn text rùi chèn vào 1 chỗ bất kỳ trên pl ko?

Quick code :

(defun c:test(/ curve txtObj pt ang)
(if
(and
 (setq curve (car(entsel "\nCurve:")))
 (setq txtObj (car (entsel "\nText :"))) 
 (setq txtObj (vlax-ename->vla-object txtObj))
 (setq txtObj (vla-copy txtObj))
 (setq pt (vlax-curve-getClosestPointTo curve (trans (getpoint "\nPoint to Insert :") 0 1)))
 (setq ang (angle '(0 0 0) (vlax-curve-getFirstDeriv curve (vlax-curve-getParamAtPoint curve pt))))
 (setq pt (vlax-3d-point pt))
)
(progn
 (if (= (vla-get-Alignment txtObj) 0)
                           	(vla-put-InsertionPoint txtObj pt)
                           	(vla-put-TextAlignmentPoint txtObj pt)
   	)
 (vla-put-Rotation txtObj ang)
)
)
)

  • Vote tăng 1

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 hết quyền thanks mất rùi Mr ketxu à. để mai mình thanks nhé.

còn vấn đề này Mr ketxu có giai quyết luôn cho mình nhé

có lệnh nào cho quay các text ngược lại được ko bạn?

Thanks!

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 hết quyền thanks mất rùi Mr ketxu à. để mai mình thanks nhé.

còn vấn đề này Mr ketxu có giai quyết luôn cho mình nhé

có lệnh nào cho quay các text ngược lại được ko bạn?

Thanks!

http://www.cadviet.com/forum/index.php?showtopic=11306&hl=&fromsearch=1

Đọc ở đây tìm lệnh ROT

  • Vote tăng 1

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 thực hiện lệnh nó báo như thế này là sao hỉ bạn:

; error: no function definition: DNINT

Nề bạn. :b

 
(Defun c:rot ( )
(princ "\nPHAM QUOC DUY Binh Son - Quang ngai")
(command "undo" "be")
(Princ "\nHay chon doi tuong :")
(setq SS (ssget '((0 . "TEXT"))))

 (setq gqtTB (getstring 5"\nNhap goc xoay: ")) 

(setq i 0)
(setq N (sslength ss))
(while (< i N)
  (setq TEXTENT (ssname SS i))
(setq luubatdiem (getvar "osmode"))
 (setvar "osmode" 0)
(command "ucs" "object" textent)
(setq tbTB (textbox (list (cons -1 textent)))
		ll (car tbTB)
   	ur (cadr tbTB)
   	ul (list (car ll) (cadr ur))
   	lr (list (car ur) (cadr ll))
)

 (setq  daitext (distance ul lr))
 (setq goctext(angle ul lr))
 (setq dainuatext (/ daitext 2))
 (setq diemquay (polar ul goctext dainuatext))

(command ".rotate" textent "" diemquay gqtTB)
(command "ucs" "p")
  (setq i (1+ i))
(setvar "osmode" luubatdiem)
)
(command "undo" "end")
(setvar "MODEMACRO" "**CHUC BAN LAM VIEC HIEU QUA** PHAM QUOC DUY - BINH SON - QUANG NGAI")
 	(Princ)
)

  • Vote tăng 1

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

Nề bạn. :b

(Defun c:rot ( )
(princ "\nPHAM QUOC DUY Binh Son - Quang ngai")
(command "undo" "be")
(Princ "\nHay chon doi tuong :")
(setq SS (ssget '((0 . "TEXT"))))

 (setq gqtTB (getstring 5"\nNhap goc xoay: "))

(setq i 0)
(setq N (sslength ss))
(while (< i N)
  (setq TEXTENT (ssname SS i))
(setq luubatdiem (getvar "osmode"))
 (setvar "osmode" 0)
(command "ucs" "object" textent)
(setq tbTB (textbox (list (cons -1 textent)))
	ll (car tbTB)
   	ur (cadr tbTB)
   	ul (list (car ll) (cadr ur))
   	lr (list (car ur) (cadr ll))
)

 (setq  daitext (distance ul lr))
 (setq goctext(angle ul lr))
 (setq dainuatext (/ daitext 2))
 (setq diemquay (polar ul goctext dainuatext))

(command ".rotate" textent "" diemquay gqtTB)
(command "ucs" "p")
  (setq i (1+ i))
(setvar "osmode" luubatdiem)
)
(command "undo" "end")
(setvar "MODEMACRO" "**CHUC BAN LAM VIEC HIEU QUA** PHAM QUOC DUY - BINH SON - QUANG NGAI")
 	(Princ)
)

 

Hay thật Thanks bạn nhiều nhé!

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

có lệnh nào cho quay các text ngược lại được ko bạn?

Quick code :

(defun c:rb()
(defun ST:Geom-Center (ent / p1 p2)
(vla-getboundingbox (vlax-ename->vla-object ent) 'p1 'p2)
(setq p1 (vlax-safearray->list p1)
p2 (vlax-safearray->list p2)  
pt (mapcar '* (mapcar '+ p1 p2) '(0.5 0.5 0.5))
)
)
(or ang (setq ang 180))
(setq ang (cond ((getreal (strcat "\nGoc quay < " (rtos ang 2 2) " >:")))(ang)))
(foreach e (acet-ss-to-list (ssget))
(command ".rotate" e "" "_non" (ST:Geom-Center e) ang )
))

Chú ý code tác dụng với mọi đối tượng, nếu bạn chỉ muốn quét Text thì sửa (ssget) thành (ssget (list (cons 0 "*TEXT")))

  • Vote tăng 3

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

Quick code :

(defun c:rb()
(defun ST:Geom-Center (ent / p1 p2)
(vla-getboundingbox (vlax-ename->vla-object ent) 'p1 'p2)
(setq p1 (vlax-safearray->list p1)
p2 (vlax-safearray->list p2)  
pt (mapcar '* (mapcar '+ p1 p2) '(0.5 0.5 0.5))
)
)
(or ang (setq ang 180))
(setq ang (cond ((getreal (strcat "\nGoc quay < " (rtos ang 2 2) " >:")))(ang)))
(foreach e (acet-ss-to-list (ssget))
(command ".rotate" e "" "_non" (ST:Geom-Center e) ang )
))

Chú ý code tác dụng với mọi đối tượng, nếu bạn chỉ muốn quét Text thì sửa (ssget) thành (ssget (list (cons 0 "*TEXT")))

 

Bạn coi lại xem mình dùng lsp thì báo thế này:

Select objects: ; error: no function definition: ACET-SS-TO-LIST

Thanks!

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

 

Bạn coi lại xem mình dùng lsp thì báo thế này:

Select objects: ; error: no function definition: ACET-SS-TO-LIST

Thanks!

Bạn dùng cad phiên bản nào? Nó báo no function definition: ACET-SS-TO-LIST tức là bạn chưa cài bộ "Express" rồi. (nhìn lên menu xem có "Express" không?)

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

Bạn dùng cad phiên bản nào? Nó báo no function definition: ACET-SS-TO-LIST tức là bạn chưa cài bộ "Express" rồi. (nhìn lên menu xem có "Express" không?)

 

Mình xài cad 2004, 2007, 2010

nhưng mình chỉ xài 2004 là chủ yếu 3 thằng kia hiện đại quá ko theo kip

bạn có thể chuyển lsp sài ở cad 2004 được ko vậy bạn?

thanks!

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 xài cad 2004, 2007, 2010

nhưng mình chỉ xài 2004 là chủ yếu 3 thằng kia hiện đại quá ko theo kip

bạn có thể chuyển lsp sài ở cad 2004 được ko vậy bạn?

thanks!

(defun c:rb(/ ST:Geom-Center ST:Ss->ListEnt)
(defun ST:Geom-Center (ent / p1 p2)
(vla-getboundingbox (vlax-ename->vla-object ent) 'p1 'p2)
(setq p1 (vlax-safearray->list p1)
p2 (vlax-safearray->list p2) 
pt (mapcar '* (mapcar '+ p1 p2) '(0.5 0.5 0.5))
)
)
(defun ST:Ss->ListEnt (ss / n e l)
 (setq n (sslength ss))
 (while (setq e (ssname ss (setq n (1- n))))
(setq l (cons e l))
 ) 
)
(or ang (setq ang 180))
(setq ang (cond ((getreal (strcat "\nGoc quay < " (rtos ang 2 2) " >:")))(ang)))
(foreach e (ST:Ss->ListEnt (ssget))
(command ".rotate" e "" "_non" (ST:Geom-Center e) ang )
))

  • Vote tăng 1

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
Đăng nhập để thực hiện theo  

×