vtd_xd
-
Số lượng nội dung
40 -
Đã tham gia
-
Lần ghé thăm cuối
Bài đăng được đăng bởi vtd_xd
-
-
18 giờ trước, tien2005 đã nói:Update lisp in trong model và layout
Bác cập nhật bài nào vậy, chương trình của bác thêm chức năng in all, in theo ký hiệu bản vẽ nữa thì ok quá
-
Mình có 1 ứng dụng đang free cho anh em trên AppStore làm đúng cái việc trên. anh em có thể tải về sài theo link dưới.
https://apps.autodesk.com/ACD/en/Detail/Index?id=1455487038690013482&appLang=en&os=Win32_64
Đây là lisp mà anh em đồng nghiệp đánh giá là đáng giá nhất trong tất cả các lisp mình đã viết. giúp giảm rất nhiều thời gian làm việc với Cad.
Ps: Không cần like bài này. Anh em tải về đừng quên vote 5* cho app để mềnh lấy tiếng nhớ. :D
Không dùng đuợc cho cad 2007 àh bạn
-
không có bác nào giúp đỡ tôi àh
-
Bác nào có font UNIVN.SHX gửi cho e với, e đang cần gấp, vào link http://www.cadviet.com/upfiles/UNIVN.shx không tải được, thanks
-
Vẽ cầu thang giùm bạn Canhdome bằng ACA2009
Bác cho e xin file bác dựng đi
, thanks
-
để thuận tiện nên dùng chương trình thống kê thép trực tiếp trên cad, chương trình TKT delta nếu bạn làm nhiều sẽ thấy rất bất tiện
-
Chào bác giabach, bác có thể thêm phần lựa chọn "thêm 1 thanh, bớt 1 thanh hoặc giữ nguyên giá trị" trước khi tính toán được không?
- Khi tính toán thêm hàm làm tròn (Round) giống như excel được không vậy, Lisp rất tiện lợi, thanks bác nhiều
Bác nào ra tay giúp e với, e đang cần chương trình này, thanks các bác
-
Thêm 1 phương án :
(defun C:bt(/ ctc ss) (or *ctc* (setq *ctc* 200)) (initget 6) (setq ctc (getint (strcat"\nNhap buoc thep <" (itoa *ctc*) ">:")) ) (if ctc (setq *ctc* ctc)) (if (setq ss (ssget"_:L" (list (cons 0 "DIMENSION")) )) (progn (command "_.undo" "_begin") (foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))) (vla-put-TextOverride (vlax-ename->vla-object ent) (strcat (itoa (fix(/ (cdr (assoc 42 (entget ent))) *ctc*))) "x" (itoa *ctc*) "=<>")) ) (command "_.undo" "_end") (princ) ))) (defun C:10(/ num ss) (if (setq ss (ssget"_:L")) (progn (command "_.undo" "_begin") (or *num* (setq *num* 15)) (initget 4) (setq num (getint (strcat"\nNhap color <" (itoa *num*) ">:")) ) (while (not (if num (<= num 256)T) ) (princ "\nGia tri <=256.") (setq num (getint (strcat"\nNhap color <" (itoa *num*) ">:")) )) (if num (setq *num* num)) (foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))) (vla-put-Color (vlax-ename->vla-object ent)*num* ) ) (command "_.undo" "_end") (princ) )))
Chào bác giabach, bác có thể thêm phần lựa chọn "thêm 1 thanh, bớt 1 thanh hoặc giữ nguyên giá trị" trước khi tính toán được không?
- Khi tính toán thêm hàm làm tròn (Round) giống như excel được không vậy, Lisp rất tiện lợi, thanks bác nhiều
-
Chắc bạn này nhầm, mấy cái video đó của bác Tuệ, không biết mấy tools đó đã có ai dùng thử chưa?
-
Nhờ các bác viết giúp e code vba chèn bock vào bản vẽ với nội dung
- giả sử có file abc.dwg có các block mình cần chèn, file abc.dwg nằm bất kỳ thư mục nào
thanks all
-
chương trình thống kê bản vẽ đã hết thời gian sử dụng, bác Gia_bach có thể gửi lại chương trình này được không vậy, thanks bác
-
VBplot 2010
trong Lập trình khác
Chương trình rất hay, bác thêm chức năng in all nhé, nếu có >20 bản click in từng trang thi lâu lắm, thanks
-
Tớ down thử rồi. Ai cũng down được hết mà ! Tớ xem thống kê số lần download trong tài khoản rồi. Lỗi download nằm ngoài phạm vi chương trình ...Hình như là bản demo?
-
Các bạn chưa mở bản vẽ à ? :undecided: Xin vui lòng mở bản vẽ, gõ lệnh REGEN để load chương trình, rồi đọc hướng dẫn từng bước ghi trong bản vẽ ! Chú ý: chỉ dùng cho AutoCAD 2007 trở đi.Nếu nói về thống kê thép thì phải nói tới addproV2
-
Lisp "link" cho đối tượng Block thuộc tính.(link tất cả thuộc tính của Block)
(defun c:linkBA (/ e i obj obj1 ss1 ss2 vallst val); link Block Attribute (vl-load-com) (if (and (princ "\nChon Block nguon :") (setq ss1 (ssget "+.:S:N" (list (cons 0 "INSERT") (cons 66 1)))) (setq obj1 (vlax-Ename->Vla-Object (ssname ss1 0))) (princ "\nChon Block dich :") (setq ss2 (ssget "_:L" (list (cons 0 "INSERT") (cons 2 (vla-get-name obj1)))))) (progn (foreach att (vlax-invoke obj1 'GetAttributes) (setq valLst (cons (cons (vla-get-TagString Att) (vla-get-ObjectId Att)) valLst)) ) (setq i -1) (while (setq e (ssname ss2 (setq i (1+ i)))) (setq obj (vlax-Ename->Vla-Object e)) (foreach att (vlax-invoke obj 'GetAttributes) (if (setq val (assoc (vla-get-TagString att) valLst)) (vla-put-TextString Att (strcat "%<\\AcObjProp Object(%<\\_ObjId " (vl-princ-to-string (cdr val)) ">%).TextString >%")) )) ) ) ) (princ))
Cám ơn bạn Gia Bach nhiều, lisp chạy rất ổn
-
Chào các bạnBạn nào có thể sửa giúp mình lisp "linkT" dùng được cho cả đối tượng Attribute Block.
Xin cảm ơn bác bạn trước nhé
Đây là file ví dụ của mình: http://www.cadviet.com/upfiles/3/cadviet_3.dwg
Chờ đợi mấy hôm mà chưa thấy tín hiện gì, bạn nào ra tay giúp mình với, cám ơn nhiều
-
Chào các bạn
Bạn nào có thể sửa giúp mình lisp "linkT" dùng được cho cả đối tượng Attribute Block.
Xin cảm ơn bác bạn trước nhé
Đây là file ví dụ của mình: http://www.cadviet.com/upfiles/3/cadviet_3.dwg
-
Cũng không rõ nữa vẫn báo lỗi thế này.Nhưng thôi kệ nó đã. Bác test lại với block của bác nhé
(defun c:textblock (/ C40 ENT H I M N N40 SS SSN ENT1 SSN1 RONG C10 C11 C41 C72 C73 N41 N72 N73) (vl-load-com) (princ "\nChon block") (setq ss (ssget '((0 . "INSERT")))) (setq i 0) (setq n (sslength ss)) (setq m -1) (setq h (getreal "\n Nhap chieu cao chu: ")) (setq rong (getreal "\n Nhap be rong chu: ")) (while (< i n) (setq ssn (ssname ss (setq m (1+ m)))) (setq ent (entget ssn)) (if(= (cdr(assoc 66 ent)) 1) (progn (setq ssn1(entnext ssn)) (setq ent1(entget ssn1)) (while (/= (cdr(assoc 0 ent1)) "SEQEND") (setq c40 (assoc 40 ent1)) (setq n40 (cons 40 h)) (setq c41 (assoc 41 ent1)) (setq n41 (cons 41 rong)) (if (and(/= (cdr(assoc 72 ent1)) 1)(/=(cdr(assoc 73 ent1)) 2)) (progn (setq c11 (assoc 11 ent1)) (setq c10 (cons 11 (cdr(assoc 10 ent1)))) (setq c72 (assoc 72 ent1)) (setq c73 (assoc 73 ent1)) (setq n72 (cons 72 1)) (setq n73 (cons 73 2)) (setq ent1 (subst c10 c11 ent1)) (setq ent1 (subst n72 c72 ent1)) (setq ent1 (subst n73 c73 ent1)) ) ) (setq ent1 (subst n40 c40 ent1)) (setq ent1 (subst n41 c41 ent1)) (entmod ent1) (setq ssn1(entnext ssn1)) (setq ent1(entget ssn1)) ) ) ) (setq i (+ 1 i)) ) (entupd ssn) (princ) )
Nếu còn bị nhảy thì báo lại cho mình nhé.
Text không nhảy nữa, nhưng cho tôi hỏi, nếu trong Block đó có nhiều text ATTRIBUTE thi nó đều thay đổi hết, bạn thử chỉnh lại nếu kich vào text nào trong block thì chỉ có text đó thay đổi thôi
Thank bạn
-
Dựa vào code của anh gia_bach, Tue_NV chỉnh lại 1 chút cho phù hợp với yêu cầu của bạn vtd_xd.Banj vtd_xd thử nhé :
(defun c:LinkD (/ ss objlst obj_reactor); Link DIMENSION (if (setq ss (ssget '((0 . "DIMENSION"))) ) (progn (vl-load-com) (setq objlst (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))) (setq obj_reactor (vlr-object-reactor objlst nil '((:vlr-modified . callback)))) ) ) ) (defun callback (notifier-object obj_reactor parameter-list / objlist newT) (setq objlist (vlr-owners obj_reactor)) (setq newT (vla-get-TextOverride notifier-object)) (foreach obj objlist (if (/= (vla-get-TextOverride obj) newT) (vla-put-TextOverride obj newT) ) ) )
Cám ơn bạn Tue_VN nhé
-
Nhờ các bạn viết giúp tôi lisp với nội dung:
- link giá trị text (TextOverride) của dim, khi thay đổi giá trị text của dim đích thì text dim nguồn cũng thay đổi (giống như lisp LinkT)
Xin cảm ơn
-
Bác nào có thể giúp tôi viết lisp link giá trị dim được không
ví dụ: thay đổi giá trị text trong dim thì text của dim link cũng thay đổi theo (giống như lisp LinkT của bác NguyenHoanh)
Thanks
-
Vậy xin hỏi bác tucdrom có lisp nào cover từ Mtext sang Dtext ko vậy?
-
Chào bạn vtd_xd,Đây là cái lisp để bạn dùng thử. Mình viết lại dựa theo cái lisp của bác Tue_NV viết để thống kê vòng tròn. Nếu có gì chưa phù hợp bạn hãy post lên.
(defun c:tkck (/ ltxt ltst) (command "undo" "be") (setq ss (ssget (list (cons 0 "TEXT") (cons 8 "_text") (cons 7 "TKCK"))) ltxt (list) ltst (list) i -1) (while (setq ent (ssname ss (setq i (1+ i)))) (setq ltxt (append ltxt (list(cdr (assoc 1 (entget ent))))))) (foreach x ltxt (if (setq old (cdr (assoc x ltst))) (setq ltst (subst (cons x (1+ old) ) (assoc x ltst) ltst)) (setq ltst (append ltst (list (cons x 1)))))) (setq k 1 p (getpoint "\n Chon diem dat bang") h (getreal "\n Nhap chieu cao text: ") d (getreal "\n Nhap do rong cot: ")) (entmake (list (cons 0 "TEXT") (cons 10 p) (cons 40 h) (cons 1 "THONG KE CAU KIEN"))) (entmake (list (cons 0 "TEXT") (cons 10 (list (car p) (- (cadr p) (* 2 h)))) (cons 40 h) (cons 1 "STT"))) (entmake (list (cons 0 "TEXT") (cons 10 (list (+ (car p) d) (- (cadr p) (* 2 h)))) (cons 40 h) (cons 1 "TEN CAU KIEN"))) (entmake (list (cons 0 "TEXT") (cons 10 (list (+ (car p) (* 2 d)) (- (cadr p) (* 2 h)))) (cons 40 h) (cons 1 "SO LUONG"))) (entmake (list (cons 0 "TEXT") (cons 10 (list (+ (car p) (* 3 d)) (- (cadr p) (* 2 h)))) (cons 40 h) (cons 1 "GHI CHU"))) (foreach x1 ltst (entmake (list (cons 0 "TEXT") (cons 10 (list (car p) (- (cadr p) (* 2 h (+ 1 k))))) (cons 40 h) (cons 1 (rtos k 2 0)))) (entmake (list (cons 0 "TEXT") (cons 10 (list (+ (car p) d) (- (cadr p) (* 2 h (+ 1 k))))) (cons 40 h) (cons 1 (car x1)))) (entmake (list (cons 0 "TEXT") (cons 10 (list (+ (car p) (* 2 d)) (- (cadr p) (* 2 h (+ 1 k))))) (cons 40 h) (cons 1 (rtos (cdr x1) 2 0)))) (entmake (list (cons 0 "TEXT") (cons 10 (list (+ (car p) (* 3 d)) (- (cadr p) (* 2 h (1+ k))))) (cons 40 h) (cons 1 "" ))) (setq k (1+ k))) (command "undo" "e") (princ) )
Trong lisp này mình căn cứ vào bản vẽ bạn post và giả định là các text cần đếm của bạn nằm trên lớp "_text" và có style là "TKCK". Với các bản vẽ mà text cần phân loại không có các thuộc tính như trên thì bạn có thể đổi lại mã trong dòng code này cho phù hợp:
(ssget (list (cons 0 "TEXT") (cons 8 "_text") (cons 7 "TKCK")))
Chúc bạn vui.
Cám ơn bạn nhé, nếu có các đường line kẻ thành bảng thì tốt qua, thanks
-
Chào bạn vtd_xd,Việc thống kê các text này không khó nếu trên bản vẽ chỉ có rặt một loại text như vậy, nhưng trên thực tế, theo mình biết thì trên bản vẽ còn rất nhiều loại text khác nữa và chắc là bạn chả muốn thống kê chúng. Vậy bạn có thể cho biết các text cần thống kê của bạn có đặc tính gì khác với các text mà bạn không muốn thống kê???
Việc liên kết bảng thống kê với các dữ liệu trên bản vẽ, quả thật mình chưa biết cách nên không thể giúp bạn được, mà chỉ có thể làm một cái lisp để bạn chạy mỗi lần cần thống kê mà thôi.
Điều này có nghĩa mỗi khi bạn thay đổi số lượng các text đó trên bản vẽ, bạn sẽ phải chạy lại lisp một lần bạn ạ. Nếu bạn nhất trí mình có thể giúp bạn viết ra cái lisp đó.
Chúc bạn vui.
Như vậy cũng là tốt lắm rồi, bạn cố gắng giúp tôi nhé, text trên bản vẽ tôi chỉ dùng Dtext thôi, Nếu dùng attribute chắc sẽ gán nhiều thuộc tính hơn với chúc năng "Insert field"
- Text tôi muốn thống kê là một vùng trong bản vẽ
Cám ơn bạn trước nhé
MPL-MultiPlot _ in nhiều bản vẽ trong file DWG (Layout + Model)
trong AutoLisp
Đã đăng · Trả lời báo cáo
Của mình cũng bị lỗi như vậy "Error: no function definition: LM:UNIQUE"
- Bạn thêm chức năng in theo ký hiệu bản vẽ được ko?