conghoa
-
Số lượng nội dung
568 -
Đã tham gia
-
Lần ghé thăm cuối
-
Ngày trúng
14
Bài đăng được đăng bởi conghoa
-
-
Thử lisp này, thay lệnh test tùy ý nhé. ^_^
(defun c:test (/ ss lst _angle) (vl-load-com) (command "undo" "be") (if (setq ss (ssget '((0 . "DIMENSION")))) (progn (setq lst (vl-remove-if '(lambda (e) (> (cdr (assoc 42 (entget e))) 900.)) (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)) ) ) ) ;setq (setq _angle (angle (cdr (assoc 11 (entget (car lst)))) (cdr (assoc 11 (entget (cadr lst)))) ) ) (cond ((or (= _angle 0) (= _angle pi) ) (dim_hor lst) ) ;#cond1 ((or (= _angle (/ pi 2)) (= _angle (* pi 1.5)) ) (dim_ver lst) ) ;#cond2 (_angle (dim_ lst _angle) ) ;#cond3 ) ;#cond ) ;progn (princ "\nBan da khong chon dim.!") ) ;if (command "undo" "end") (princ) ) (defun dim_hor (l / lst pt) (setq lst (vl-sort l '(lambda (e1 e2) (< (car (cdr (assoc 11 (entget e1)))) (car (cdr (assoc 11 (entget e2)))) ) ) ) ) (foreach x lst (if (= (rem (vl-position x lst) 2) 0) (progn (if (>= (cadr (cdr (assoc 10 (entget x)))) (cadr (cdr (assoc 14 (entget x)))) ) (setq pt (polar (cdr (assoc 11 (entget x))) (* pi 1.5) (* 2 (txt_height x)) ) ) (setq pt (polar (cdr (assoc 11 (entget x))) (/ pi 2) (* 2 (txt_height x)) ) ) ) (vlax-put (vlax-ename->vla-object x) 'TextPosition pt) ) ;progn ) ;if ) ;foreach ) ;defun (defun dim_ver (l / lst pt) (setq lst (vl-sort l '(lambda (e1 e2) (< (cadr (cdr (assoc 11 (entget e1)))) (cadr (cdr (assoc 11 (entget e2)))) ) ) ) ) (foreach x lst (if (= (rem (vl-position x lst) 2) 0) (progn (if (>= (car (cdr (assoc 10 (entget x)))) (car (cdr (assoc 14 (entget x)))) ) (setq pt (polar (cdr (assoc 11 (entget x))) pi (* 2 (txt_height x)) ) ) (setq pt (polar (cdr (assoc 11 (entget x))) 0.0 (* 2 (txt_height x)) ) ) ) (vlax-put (vlax-ename->vla-object x) 'TextPosition pt) ) ;progn ) ;if ) ;foreach ) (defun dim_ (l ang / lst pt) (setq lst (vl-sort l '(lambda (e1 e2) (< (cadr (cdr (assoc 11 (entget e1)))) (cadr (cdr (assoc 11 (entget e2)))) ) ) ) ) (foreach x lst (if (= (rem (vl-position x lst) 2) 0) (progn (if (>= (car (cdr (assoc 10 (entget x)))) (car (cdr (assoc 14 (entget x)))) ) (setq pt (polar (cdr (assoc 11 (entget x))) (+ ang (* pi 1.5)) (* 2 (txt_height x)) ) ) (setq pt (polar (cdr (assoc 11 (entget x))) (+ ang (* pi 1.5)) (* 2 (txt_height x)) ) ) ) (vlax-put (vlax-ename->vla-object x) 'TextPosition pt) ) ;progn ) ;if ) ;foreach ) (defun txt_height (ename / BlkEnt EntData height) (if (and (= (cdr (assoc 0 (setq EntData (entget ename)))) "DIMENSION" ) (setq BlkEnt (tblobjname "block" (cdr (assoc 2 EntData)))) ) (while (setq BlkEnt (entnext BlkEnt)) (if (= (cdr (assoc 0 (setq EntData (entget BlkEnt)))) "MTEXT") (setq height (cdr (assoc 40 EntData))) ) ) ) height ) (princ)
Thanks Bee nhiều! Lisp của bạn rất hay :D
-
Bác Tue_NV ơi! LISP của bác thật hay khi sử dụng cho hàng loạt DIM, với một DIM thì dùng lệnh STRETCH?! TEXT vẫn còn nằm trong (hoặc nằm trên) đường dim!
Tuy nhiên, với mục đích tách loạt Dim choáng chỗ, nếu em muốn Bác sửa thế này có được không?!
Input: 1. Chọn vùng Dim cần thao tác
2. Nhập vào số bậc hiệu chỉnh <1;2;3>
3. Hướng thực hiện <T;P>: Nếu T, DIM đầu tiên bên TRÁI làm chuẩn không thay đổi, bắt đầu thay đổi từ DIM thứ 2 trở đi, từ TRÁI sang PHẢI, và ngược lại cho lựa chọn P.
Mô tả:
Và đây là kích thước tường minh, tương quan chiều cao TEXT và các bước nhảy:
Nếu thực hiện được trên phương xiên nữa thì thật là tuyệt vời!
Cám ơn các Bác đã quan tâm đến vấn đề của em, thành thật xin lỗi nếu sự chỉnh sửa (bài viết) này gây ra trở ngại!!!
Vấn đề move text Dim này cũng khá hay, mong mọi người giúp đỡ lisp này nhé.
Yêu cầu lisp bên trên cũng khá lằng nhằng, mong muốn của em nó đơn giản hơn chút:
- Chạy lisp, lisp yêu cầu chọn dãy dim cần dãn text trùng
+ Người dùng chọn dãy dim
- Lisp nhận diện các text bị đè lên nhau và move text trùng xuống dưới hàng dim (khoảng cách move bằng 2 lần chiều cao text). Kết thúc lệnh
File ví dụ:
-
Thanks Gia_bach, mình sẽ rút kinh nghiệm :), lisp của Tot77 hay quá!
-
Chào các bạn,
Hiện tại mình có 1 bản vẽ với nhiều polyline kín, công việc là phải offset có hình đó ra một khoảng cách nhất định (offset ra phía ngoài hình đó) và chuyển đối tượng vừa được offset về layer hiện hành, các bạn viết giúp mình lisp sau nhé :
- Chạy lisp, lisp yêu cầu nhập khoảng cách cần offset (khoảng cách này được ghi nhớ cho lần chạy lisp sau)
+ Người dùng nhập khoảng cách
- lisp yêu cầu chọn đối tượng cần offset (chọn được nhiều đối tượng 1 lúc)
- Sau khi người dùng chọn xong đối tượng thì lisp sẽ tự động offset các đối tượng đó ra bên ngoài với khoảng cách đã được nhập và chuyển đối tượng vừa được offset sang layer hiện hành rồi kết thúc lệnh
File mình họa
http://www.mediafire.com/file/j9fb5b20fk7l177/Muilti+Offset.dwg
Cảm ơn các bạn!
-
Lisp Tạo Text
trong AutoLisp
Thanks :D, bây giờ mới hiểu nghĩa của dòng đó hì hì
-
Lisp Tạo Text
trong AutoLisp
@Quocmanh, mình có test thì 3 mầu (Đỏ, Vàng, Xanh (Green) ) lúc kick vào không hiện ra gì cả, Bác check lại zùm nhé!
-
Lisp Tạo Text
trong AutoLisp
@Kieu Tan, bạn xem lại trang trước quocmanh có hướng dẫn cách chạy lisp đó.
@quocmanh04tt, cảm ơn bác về sự nhiệt tình nhé!
- 1
-
Lisp Tạo Text
trong AutoLisp
- Lip-no thì dùng Import, Export thôi! Vì Export ra được nhiều file và lưu trữ những file này (đặt tên cho nó để dễ nhớ) => Lưu theo thư mục thì nảy sinh vấn đề phức tạp.
- Nút màu xanh là lấy tính chất 1 text trên bản vẽ hiện hành (Layer, Height, Width...) để gán vào hộp thoại (gần giống lệnh MA).
- Ở dòng nhắc có nhiều tính năng truy cập bằng cách gõ các ký tự thấy ở đó, (Tab là nhấn phím Tab).
Ý mình không phải là lưu theo folder, mà chỉ là nhận dạng các Lib-no đã được tạo trong Folder có sẵn để cập nhật vào cái phần List của Lib-no 1 lần đầu tiên khi chạy lisp.
Diễn giải:
- Mình có sẵn các file (A1.dat, A2.dat, .... An.dat)
- Khi copy sang máy mới thì sẽ phải vào nút mầu đỏ để tạo các tên Lib-no là "A1.dat, A2.dat, .... An.dat", sau đó phải chọn từng A*.dat rồi import lần lượt từng cái một. Như thế sẽ khá lằng nhằng :)
Nói dài dòng như thế tóm lại là: Quocmanh sẽ làm thế nào để lisp cập nhật được các file.dat mà mình đã tạo được khi dùng với một máy mới?
-
Lisp Tạo Text
trong AutoLisp
@conghoa: Sử dụng bản này xem (Thi triển hết ý tưởng)=>
Link:https://drive.google.com/file/d/0B2LetfHDljPGcThlcmhvdURCU1E/view?usp=sharing
Thanks Quocmanh,
Mình đã dùng mà thấy ổn rồi, hiện tượng "re" lúc bị lúc không nên cũng ko rõ như nào :D
Tính năng Lib-no bạn có thể thêm cho nó tự nhận dữ liệu *.dat theo folder chỉ định được không? Nghĩa là khi bấm vào Mầu đỏ lần đầu thì nó sẽ yêu cầu đưa thư mục lưu trữ các Lib-no (lưu đường dẫn để lần sau vào không yêu cầu nữa), rồi nó tự động cập nhật các tên file.dat thành các Lib-no theo thứ tự.
Việc xóa Lib-no mới thêm vào như nào?
Cái ô mầu xanh có tính năng gì thế Quocmanh?
-
Lisp Tạo Text
trong AutoLisp
Thanks! Lsp đồ sộ quá!
Với mỗi lần chỉ 1 dòng string thì chậm, nếu phân loại thành từng khối text để chèn cả cụm thì có phần nào an ủi. Và có thể phân loại Library... (ngoài ra prop của text được ghi nhớ khi chèn lần tiếp theo). Xây dựng thư viện 1 lần và dùng mãi mãi...
Bác QuocManh phát triển thêm phần Lib-No_0 đi, để có thể gom các ghi chú theo từng chủng loại. :)
Thêm nữa là có thể làm sao để khỏi phải dùng lệnh "re" sau mỗi lần insert được không? hiện tại lisp đang không insert liên tục được.
Thanks!
-
Lisp Tạo Text
trong AutoLisp
Tặng bác quocmanh cái này để "luyện công"
Lisp này thiết tính năng lưu trữ file trực tiếp, cũng như ko hỗ trợ tiếng việt
http://www.mediafire.com/file/6niey8qb9itznkc/TextInsert.rar
- 1
-
Lisp Tạo Text
trong AutoLisp
@QuocManh, mình load lại lisp, test lại thì ok, nhưng sau mỗi lần insert thì phải dùng lệnh "Re" thì mới insert đc tiếp.
-
Lisp Tạo Text
trong AutoLisp
@QuocManh ... Đã thử theo các trên và vẫn không được!
-
Lisp Tạo Text
trong AutoLisp
Command:CRTSpecify point to insert text [R/O/</>/+/-/S]::: Create TEXT from Library | © QuocManh04tt-CadViet.com.Chỉ thông báo thế thôi rồi out luôn
-
Lisp Tạo Text
trong AutoLisp
Command:CRTSpecify point to insert text [R/O/</>/+/-/S]::: Create TEXT from Library | © QuocManh04tt-CadViet.com.
-
Lisp Tạo Text
trong AutoLisp
@ Quocmanh Mình thử chọn text trong bảng rồi ấn OK thì nó thoát chương trình luôn
-
Lisp Tạo Text
trong AutoLisp
Command: apAPPLOAD CRT_KT_CH.fas successfully loaded.Command::: Create TEXT from Library | © QuocManh04tt 2016 - www.CadViet.com :::: Type "CRT" to Invoke ::Command:Command: CRTLib-str10Error: bad argument type: streamp nilCommand:Bác hôm nay khó ở ah, nó hiện lên cái bảng đó rồi out luôn :|Bác hôm nay khó ở ah, nó hiện lên cái bảng đó rồi out luôn :| -
Lisp Tạo Text
trong AutoLisp
Command: apAPPLOAD CRT_KT_CH.fas successfully loaded.Command::: Create TEXT from Library | © QuocManh04tt 2016 - www.CadViet.com :::: Type "CRT" to Invoke ::Command:Command: CRTLib-str10Error: bad argument type: streamp nilCommand:Bác hôm nay khó ở ah, nó hiện lên cái bảng đó rồi out luôn :|
-
Lisp Tạo Text
trong AutoLisp
@QuocManh04tt
Command: AP APPLOAD CRT_KT_CH.fas successfully loaded. Command: :: Create TEXT from Library | © QuocManh04tt 2016 - www.CadViet.com :: :: Type "CRT" to Invoke :: Command: Command: CRT Lib-str10 Error: bad argument type: streamp nil
Bị lỗi luôn đó bác, test với cad 2017
Bị lỗi luôn đó bác, test với cad 2012, 2017
-
Lisp Tạo Text
trong AutoLisp
@QuocManh04tt
Command: AP APPLOAD CRT_KT_CH.fas successfully loaded. Command: :: Create TEXT from Library | © QuocManh04tt 2016 - www.CadViet.com :: :: Type "CRT" to Invoke :: Command: Command: CRT Lib-str10 Error: bad argument type: streamp nil
Bị lỗi luôn đó bác, test với cad 2017
-
Lisp Tạo Text
trong AutoLisp
https://drive.google.com/file/d/0B2LetfHDljPGMlFBcktDWU0ybms/view?usp=sharing
Hướng dẫn:
1. Lệnh CRT
2. Các nút điều khiển trên hộp thoại có thể xem ở Clip ở trên.
3. Sau khi chọn String và OK => trước khi chọn điểm đặt Text, có thể điều chỉnh Text như sau:
a. Gõ phím S: để thay đổi chiều cao text của dòng đầu tiên, các dòng thứ 2 trở đi giữ nguyên theo giá trị trên hộp thoại.
b. Nhấn giữ hoặc gõ phím: + , - để thay đổi khoảng cách giữa các dòng.
c. Nhấn giữ hoặc gõ phím: > , < để thay đổi Width của text.
d. Nhấn giữ hoặc gõ phím: [ , ] để thay đổi chiều cao text các dòng thứ 2 trở đi.
e. Nhấn giữ hoặc gõ phím: R, O để xoay text.
P/s: - Khi tạo thư viện String từ nút Get-str: Thì tất cả các string được chuyển sang mã UNICODE.
- Khi xuất String->Text: Đối với các font .TTF (thuộc các bảng mã: TCVN3, VNI) thì lisp tự chuyển đổi => Có nghĩa: Sau khi chọn các string, dùng TextStyle nào cũng được (Uni, Tcvn, Vni <=> font: *.ttf).
Bác chấp nhận cái request mail zùm nhé.
Trân trọng!
-
Lisp Tạo Text
trong AutoLisp
@quocmanh nên làm thêm phần xuất data để có thể dùng trên nhiều máy, vì ko sang máy khác lại mất công nhập lại dữ liệu :)
-
Hề hề hề,
Không hiểu ý bạn hỏi???? Lisp này đã cho phép chọn các đối tượng cần săp xêp theo cả lố rồi cơ mà. Lisp sử dụng hàm ssget để tạo bộ chọn là tương đối toàn diện hết rồi. Không biết bạn định chọn kiểu chi nữa????
oki, hì hì mình nhầm :D
-
Hơi khác yêu cầu của bạn một chút, bạn lấy về dùng tạm cũng được
http://www.cadviet.com/forum/topic/30524-can-le-text-mtext-can-le-doi-tuong/?p=123433
Đến bao giờ bạn có quy luật đầy đủ cho việc thế nào gọi là sắp xếp thẳng hàng thì mình sẽ viết giúp bạn, không hề khó :)
http://www.mediafire.com/file/1o99rqj2z5ufdjp/align+All_ala.lsp
Đây là lisp align tất cả các đối tượng, nhưng nó đang bị hạn chế là chỉ chọn được từng đối tượng một, các bác giúp em thêm tính tăng chọn theo kiểu gom một lúc nhiều đối tượng nhé.
Trân trọng!
Lisp In Nhiều Bản Vẽ (Kể Cả Layout)
trong AutoLisp
Đã đăng · Trả lời báo cáo
Bác cứ đùa, chủ yếu là các công ty có dính đến nước ngoài mới làm layout thôi bác. Biết là làm chuyên nghiệp thì vẫn tốt nhưng mà đó là bác làm với nhưng công trình đã layout, sheetset từ đầu. Nếu bác nhận được bản vẽ để vẽ tiếp mà người ta đã làm trên model rồi, mà từ đó lại bắt đầu chuyển vô sheetset với layout thì ...
Theo quan điểm của em thì layout thực sự có lợi với các bộ môn cơ điện. Còn đối với kiến trúc thì cũng không hẳn là hay lắm :)