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

[Yêu cầu] Đặt chiều cao text, mtext và chỉnh Linetype scale ?

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

Em cần 2 lisp như ở tiêu đề. Sở dĩ phải dùng lisp vì mình hay phải chọn đối tượng, Mo rồi chỉnh xong thì tắt cái bảng properties đó đi. Mất công bật tắt khi chỉ phải chỉnh 1 thông số. CAD 2007 không có tính năng auto hide cái bảng đó. Xin các anh viết giúp em ạ !

Chỉnh sửa theo ketxu
Sai quy đị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

Em cần 2 lisp như ở tiêu đề. Sở dĩ phải dùng lisp vì mình hay phải chọn đối tượng, Mo rồi chỉnh xong thì tắt cái bảng properties đó đi. Mất công bật tắt khi chỉ phải chỉnh 1 thông số. CAD 2007 không có tính năng auto hide cái bảng đó. Xin các anh viết giúp em ạ !

Bạn dùng lệnh ScaleText và lệnh Chprop

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ảm ơn anh. Nhưng cái em cần là dạng:

Command: HT

select object: 3object selected

New hight: 10 => text, mtext cao 10

 

Command: LT

select object: 3object selected

new scale: 100 => Line type scale của 3 đối tượng đó là 100

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ảm ơn anh. Nhưng cái em cần là dạng:

Command: HT

select object: 3object selected

New hight: 10 => text, mtext cao 10

 

Command: LT

select object: 3object selected

new scale: 100 => Line type scale của 3 đối tượng đó là 100

 

Thay đổi chiều cao Text/Mtext

;Doan Van Ha - CADViet.com. 27-11-2011. Thay doi chieu cao Text/Mtext.
(defun C:HT (/ ss i heig size)
(vl-load-com)
(setq i 0)
(princ "\nChon cac Text/Mtext can thay doi chieu cao...")
(setq ss (ssget '((-4 . "<OR") (0 . "MTEXT") (0 . "TEXT") (-4 . "OR>"))))
(if ss
 (progn
  (setq size (getvar "textsize"))
  (setq hei (getdist (strcat "\nSpecify text height <" (rtos size 2) ">: ")))
  (if (= hei nil) (setq hei size))
  (repeat (sslength ss)
(vla-put-height (vlax-ename->vla-object (ssname ss i)) hei)
(setq i (1+ i)))))
(princ))

  • Vote tăng 2

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

840244 chú ý quy định về đặt yêu cầu ở box nhé!

 

Đặt Linetype:

(defun C:test ( / ss d);
(grtext -1 "Free Lisp from Cadviet @Ketxu")
(cond ( (and (setq  ss (ssget (list (cons 0 "*LINE,ARC,CIRCLE"))))
(setq d (getreal "\nLineType Scale :"))
(vl-load-com)
(setq ss (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object))))
 )
 (vlax-for obj ss (vla-put-LinetypeScale obj d))
)
((princ "\nError!"))
)
(princ)
)

  • Vote tăng 2

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

 

Thay đổi chiều cao Text/Mtext

;Doan Van Ha - CADViet.com. 27-11-2011. Thay doi chieu cao Text/Mtext.
(defun C:HT (/ ss i heig size)
(vl-load-com)
(setq i 0)
(princ "\nChon cac Text/Mtext can thay doi chieu cao...")
(setq ss (ssget '((-4 . "<OR") (0 . "MTEXT") (0 . "TEXT") (-4 . "OR>"))))
(if ss
 (progn
  (setq size (getvar "textsize"))
  (setq hei (getdist (strcat "\nSpecify text height <" (rtos size 2) ">: ")))
  (if (= hei nil) (setq hei size))
  (repeat (sslength ss)
(vla-put-height (vlax-ename->vla-object (ssname ss i)) hei)
(setq i (1+ i)))))
(princ))

 

 

Cảm ơn anh DVH, nhưng anh xem lại cái Rtos giúp em với. Nó luôn luôn lưu giá trị là 2, mà cái cần lưu là giá trị nhập của lần trướ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

840244 chú ý quy định về đặt yêu cầu ở box nhé!

 

Đặt Linetype:

(defun C:test ( / ss d);
(grtext -1 "Free Lisp from Cadviet @Ketxu")
(cond ( (and (setq  ss (ssget (list (cons 0 "*LINE,ARC,CIRCLE"))))
(setq d (getreal "\nLineType Scale :"))
(vl-load-com)
(setq ss (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object))))
 )
 (vlax-for obj ss (vla-put-LinetypeScale obj d))
)
((princ "\nError!"))
)
(princ)
)

Thanks anh KETXU nhì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ảm ơn anh DVH, nhưng anh xem lại cái Rtos giúp em với. Nó luôn luôn lưu giá trị là 2, mà cái cần lưu là giá trị nhập của lần trước ạ !

Sửa lại theo y/c của bạn đây.

;Doan Van Ha - CADViet.com. 27-11-2011. Thay doi chieu cao Text/Mtext.
(defun C:HT (/ ss i hei)
(vl-load-com)
(setq i 0)
(princ "\nChon cac Text/Mtext can thay doi chieu cao...")
(setq ss (ssget '((-4 . "<OR") (0 . "MTEXT") (0 . "TEXT") (-4 . "OR>"))))
(if ss
 (progn
  (or size (setq size  (getvar "textsize")))
  (setq hei (getdist (strcat "\nSo chu so thap phan <" (rtos size 2) ">: ")))
  (if (= hei nil) (setq hei size) (setq size hei))
  (repeat (sslength ss)
(vla-put-height (vlax-ename->vla-object (ssname ss i)) hei)
(setq i (1+ i)))))
(princ))

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

hì.Ngon rồi. Lúc em post yêu cầu lên em có post thêm cái dòng nhờ anh cho thêm cái dòng lệnh hiển thị chiều cao text hiện tại để mình tiện so sánh ( nếu nó có nhiều text được chọn có chiều cao khác nhau thì hiển thị cái đầu tiên được chọn ) nhưng chắc do mạng lỗi sao ý nên nó không cập nhật được. hic hic ! Lúc nào rảnh anh thêm giúp em nhé ! Thanks anh nhiều ạ !

Em thêm cái dòng đó vào mà ko đc. hì

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=60254&pid=183606&st=0entry183606
;Doan Van Ha - CADViet.com. 27-11-2011. Thay doi chieu cao Text/Mtext.
(defun C:HTT (/ ss i hei)
(vl-load-com)
(setq i 0)
(princ "\nChon cac Text/Mtext can thay doi chieu cao...")
(setq ss (ssget '((-4 . "<OR") (0 . "MTEXT") (0 . "TEXT") (-4 . "OR>"))))
(if ss
 (progn
  (or size (setq size  (getvar "textsize")))
 (prompt (strcat "\nChieu cao chu hien tai = " (rtos size 2 2)))
  (setq hei (getdist (strcat "\nChieu cao moi <" (rtos size 2) ">: ")))
  (if (= hei nil) (setq hei size) (setq size hei))
  (repeat (sslength ss)
(vla-put-height (vlax-ename->vla-object (ssname ss i)) hei)
(setq i (1+ i)))))
(princ))

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

hì.Ngon rồi. Lúc em post yêu cầu lên em có post thêm cái dòng nhờ anh cho thêm cái dòng lệnh hiển thị chiều cao text hiện tại để mình tiện so sánh ( nếu nó có nhiều text được chọn có chiều cao khác nhau thì hiển thị cái đầu tiên được chọn ) nhưng chắc do mạng lỗi sao ý nên nó không cập nhật được. hic hic ! Lúc nào rảnh anh thêm giúp em nhé ! Thanks anh nhiều ạ !

Em thêm cái dòng đó vào mà ko đc. hì

Chuyện này nhỏ thôi. Bạn cứ post y/c lên, CADViet luôn có người giúp đỡ bạn, đừng nề hà là tôi hay người khác. Tôi đang bận đi công tác mấy ngày. Nếu sau 4-5 ngày nữa không có ai rảnh để giúp thì tôi sẽ giúp. OK?

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

hì.Ngon rồi. Lúc em post yêu cầu lên em có post thêm cái dòng nhờ anh cho thêm cái dòng lệnh hiển thị chiều cao text hiện tại để mình tiện so sánh ( nếu nó có nhiều text được chọn có chiều cao khác nhau thì hiển thị cái đầu tiên được chọn ) nhưng chắc do mạng lỗi sao ý nên nó không cập nhật được. hic hic ! Lúc nào rảnh anh thêm giúp em nhé ! Thanks anh nhiều ạ !

Em thêm cái dòng đó vào mà ko đc. hì

(defun C:HTT (/ ss i)
(princ "\nChon cac Text/Mtext can thay doi chieu cao...")
(if (setq ss (ssget (list (cons 0 "TEXT,MTEXT"))))
 (progn
(vl-load-com)
(prompt (strcat "\nChieu cao chu hien tai = " (vl-princ-to-string (vla-get-height (vlax-ename->vla-object (ssname ss 0))))))
(or #h (setq #h  (getvar "textsize"))) 
(setq #h (cond ((getdist (strcat "\nChieu cao moi <" (vl-princ-to-string #h) ">: ")))(#h)) i -1) 
(repeat (sslength ss)
  (vla-put-height (vlax-ename->vla-object (ssname ss (setq i (1+ i)))) #h)
)))
(princ))

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ọi người cho em hỏi một tý nhé. Chắc là anh Ketxu anh cho em hỏi cad2007 có sử dụng được lisp không hả anh. Mà sao em down các lisp của các anh về xong load rồi. Báo là load thành công rồi mà em gõ lệnh chăng được gì. Anh giúp em với, ví dụ như cái lisp định chiều cao text ở trên, em gõ lệnh htt mà nó cứ bao unknowwn ý anh ạ. Cảm ơn anh.

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ọi người cho em hỏi một tý nhé. Chắc là anh Ketxu anh cho em hỏi cad2007 có sử dụng được lisp không hả anh. Mà sao em down các lisp của các anh về xong load rồi. Báo là load thành công rồi mà em gõ lệnh chăng được gì. Anh giúp em với, ví dụ như cái lisp định chiều cao text ở trên, em gõ lệnh htt mà nó cứ bao unknowwn ý anh ạ. Cảm ơn anh.

Bạn copy đầy đủ dòng đó lên mọi người xem :)

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

Thanks anh KETXU nhìu nhé !

Phiền anh KETXU bổ xung thêm dòng lệnh ghi giá trị của Line type scale của đối tượng hiện tại để tiện so sánh đc ko ạ ? Nếu có nhiều đối tượng được chọn 1 lúc mà chúng có line type scale khác nhau thì mình xuất giá trị của cái đầu tiên được chọ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

Bạn copy đầy đủ dòng đó lên mọi người xem :)

Dòng đó là dòng nào hả anh. Em thao tác thế này anh xem đúng không nhé. Em down cái lisp của anh về mở card vào phần tool => load application. Trong phần load application ở phần look in em tìm đến vị trí đã Down về sau đó load nó báo successfully loaded. Nhưng khi em vào card gõ lệnh. (ví dụ như lệnh thay đổi chiều cao text là htt enter. Nhưng card nó báo unknown. Anh bắt bệnh dùm em với. Còn anh bảo copy dòng nào thì để em copy lê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

Thao tác lệnh -> Ấn F2 -> copy toàn bộ dòng thông báo vừa rồi

Anh ketxu xuốt ngày online hay sao ý nhỉ mà trả lời nhanh thế. Em làm theo ý anh rồi! ấn F2 nó hiện lên nhiều lắm ! em copy một ít ở mấy dòng cuối anh bắt bệnh giúp em với. Mà các lệnh em làm nó đều Unknown thế này hết anh ạ. Không hiểu gì. Nhưng hôm trước em có Down cái lisp đếm block về chạy thì ngon lành. Nhưng mấy cái lisp về sau này không chạy được. Cảm ơn anh trước nhé.

 

Select objects:

Specify base point or [Displacement] <Displacement>:

Specify second point or <use first point as displacement>:

Command: *Cancel*

 

Command: *Cancel*

 

Command:

Command:

Command: _appload htt-chiều cao mtext.lsp successfully loaded.

 

 

Command: ; error: LOAD failed: "D:/Pham Thanh Hai/Điện-Điện/LISP/htt-chiều cao

mtext.lsp"

 

Command:

Command: Specify opposite corner:

Command: htt

Unknown command "HTT". Press F1 for help.

 

Command: htt

Unknown command "HTT". Press F1 for help.

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

Anh ketxu xuốt ngày online hay sao ý nhỉ mà trả lời nhanh thế. Em làm theo ý anh rồi! ấn F2 nó hiện lên nhiều lắm ! em copy một ít ở mấy dòng cuối anh bắt bệnh giúp em với. Mà các lệnh em làm nó đều Unknown thế này hết anh ạ. Không hiểu gì. Nhưng hôm trước em có Down cái lisp đếm block về chạy thì ngon lành. Nhưng mấy cái lisp về sau này không chạy được. Cảm ơn anh trước nhé.

 

Select objects:

Specify base point or [Displacement] <Displacement>:

Specify second point or <use first point as displacement>:

Command: *Cancel*

 

Command: *Cancel*

 

Command:

Command:

Command: _appload htt-chiều cao mtext.lsp successfully loaded.

 

 

Command: ; error: LOAD failed: "D:/Pham Thanh Hai/Điện-Điện/LISP/htt-chiều cao

mtext.lsp"

 

Command:

Command: Specify opposite corner:

Command: htt

Unknown command "HTT". Press F1 for help.

 

Command: htt

Unknown command "HTT". Press F1 for help.

Mình dịch nôm na giúp bạn dòng in đậm :

- Lỗi : Load không thành công file "D:/Pham Thanh Hai/Điện-Điện/LISP/htt-chiều cao mtext.lsp"

=> thực chất CAD không hề Load được lisp bạn ạ

- Nguyên nhân : Lisp không chơi với Unicode, bất kỳ hành động Rename tên nào có gắn với Unicode đều (có thể) bị tuýt còi

- Giải quyết : bạn vứt file lisp vào thư mục KHÔNG DẤU , hoặc có dấu n k dùng UNICODE. Rename file lisp với tiêu chí tương 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

Các anh cho em hỏi, sẵn cái lisp Linetype scale ở trên. Em mong muốn là có thể chỉnh Linetype scale của toàn bản vẽ theo hệ số nhân (tức là toàn bộ linetype scale của các đối tượng sẽ tăng lên 2 lần hoặc n lần) cái này khác với chỉnh globle scale (lệnh "lts"). Cái này em hay bị trong trường hợp xref bản vẽ kiến trúc vào bản vẽ kỹ thuật tạo sẵn của em (các chi tiết block, nét....). mỗi lần như vậy là em lại phải ngồi chỉnh lại tỉ lệ nét của mình (thường là nét của em chỉnh theo globle scale = 1) hoặc là của kiến trúc rất mất thời gian và nhức đầu. Mong các anh giúp em.

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

Anh ketxu cho em hỏi chút nữa. Vì em hơi chậm hiểu, người khác thì chắc hiểu được rồi nhưng em là lính mới nên hơi chậm hiểu. Thực ra em thấy mọi người bảo mới tập thì không nên lisp, hay lép làm cái gì, tập cơ bản trước đi. Nhưng em thấy mấy cái lisp này hay quá nên mong các anh chiếu cố khai sáng hộ em.

Vấn đề anh nói em vẫn chưa vỡ ra được: vứt file lisp vào thư mục không dấu (thư mục không dấu là thư mục gì hả anh. Và hoặc có dấu nhưng không dùng unicode là thế nào ạ. Mà lisp nó không chơi với Unicode thì nó chơi với cái gì ạ. Cái file em down về không dùng Unicode thì nó dùng cái gì ah. Cảm ơn anh

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ếu bạn chưa hiểu thư mục không dấu là gì thì bỏ qua những câu hỏi sau nhé ^^ Cứ từ từ đã bạn ạ

Thư mục = Folder

Thư mục không dấu tức là bạn đừng đặt tên nó có dấu tiếng Việt nữa.

Không dấu : a d e i o u y ...

Có dấu : â á ẩ ã à ạ đ ê é ẹ ẽ è ẻ...

 

Theo như thông báo của bạn thì file lisp bạn đặt trong đường dẫn

D:/Pham Thanh Hai/Điện-Điện/LISP/htt-chiều cao mtext.lsp

=> bạn sửa tên thư mục Điện-Điện thành Dien-Dien hoặc Dien-KhongDien ... gì gì đó tùy bạn chọn

- File lisp bạn đang để là

htt-chiều cao mtext.lsp
thì hãy sửa thành htt-mtext Heigth.lsp... hoặc gì gì đó tùy bạn.

Miễn là đừng cẩn thận đánh tên tiếng việt vào.

File lisp dùng ANSI

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ác anh cho em hỏi, sẵn cái lisp Linetype scale ở trên. Em mong muốn là có thể chỉnh Linetype scale của toàn bản vẽ theo hệ số nhân (tức là toàn bộ linetype scale của các đối tượng sẽ tăng lên 2 lần hoặc n lần) cái này khác với chỉnh globle scale (lệnh "lts"). Cái này em hay bị trong trường hợp xref bản vẽ kiến trúc vào bản vẽ kỹ thuật tạo sẵn của em (các chi tiết block, nét....). mỗi lần như vậy là em lại phải ngồi chỉnh lại tỉ lệ nét của mình (thường là nét của em chỉnh theo globle scale = 1) hoặc là của kiến trúc rất mất thời gian và nhức đầu. Mong các anh giúp em.

Anh ketxu có thể giúp em cái lisp này 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

Anh ketxu có thể giúp em cái lisp này không ạ.

 

(defun C:test (/)
(cond
   ((ssget "X" (list (cons 0 "*LINE,ARC,CIRCLE,HATCH")))  
       (vl-load-com)
       (or #n (setq #n  1))
       (setq #n (cond ((getdist (strcat "\nHe so nhan Linetype Scale <" (vl-princ-to-string #n) ">: ")))(#n)))
       (vlax-for obj (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object)))
  	     (vla-put-LinetypeScale obj (* (vla-get-LinetypeScale obj) #n))
       )))
(princ))

Mình viết rất vội, chưa test lần nào, bạn cứ test nhé ( ăn thôi ^^)

  • 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  

×