![](https://consid.vn/banner/tuyenkientrucsu.png)
![](https://www.cadviet.com/forum/uploads/set_resources_1/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
![](https://www.cadviet.com/forum/uploads/monthly_2017_09/V.png.3437a931e77b4d07856ab01b95acc192.png)
vietduc147258
-
Số lượng nội dung
196 -
Đã tham gia
-
Lần ghé thăm cuối
-
Ngày trúng
20
Bài đăng được đăng bởi vietduc147258
-
-
4 giờ trước, DNcouples đã nói:bạn ơi mình dùng thì nó báo lỗi thế này ko biết xử lý ntn, cảm ơn bạn:
error: no function definition: SETVAR\ \ \Thấy lisp không có gì sai cả. mà không hiểu sao báo lỗi này luôn.
nếu cad mới thử coi có lệnh DIMLAYER. nếu có thì khỏi cần đến lisp này.
không thì thử cái này:
(defun c:DL ( / old *error* msg)
(defun *error*(msg)
(princ "Error: ") (princ msg)
(setvar 'clayer old) (princ))(setq old (getvar 'clayer))
(setvar 'clayer "DIM")
(command "_dimlinear")
(while (= 1 (logand 1 (getvar 'cmdactive)))
(command "\\")
)
(setvar 'clayer old)
(princ)
)-
1
-
-
1. Sửa ở đâu, sửa cái gì?
2. Sao lại là "sau khi chọn đối tượng" ???
-
Cái này là do bên phần mềm khác xuất ra cad hoặc vẽ bằng phần mềm khác không phải Autocad.
Không thích thông báo này thì chọn do not show me again
-
-
Vào lúc 18/6/2024 tại 17:55, Hòa197 đã nói:anh ơi cho em xin lại lisp cộng dim làm tròn với ạ. Lisp a gửi lên lỗi k
Không phải lisp lỗi đâu. Trước cũng lisp đó dùng bình thường. Xong reset seting autocad xong cái không dùng được. Toàn thành 0=0+0+0...thôi à
-
11 phút trước, conghoa đã nói:Bên trên mình có ghi rõ là dùng Lisp Replace Block chứ ko phải công cụ có sẵn.
Bạn đọc để tham khảo :)
Cám ơn bạn đã nhiệt tình giúp đỡ.
Giải thích lisp rất rõ ràng. Nhưng sửa được lisp thì phải học hỏi nhiều nữa.
Thay vì sửa chắc sẽ kết hợp 1 lisp chọn Block cùng tên - > Rename Block - Leemac -> Replace Block sẽ dễ hơn
-
1
-
-
2 giờ trước, limfx đã nói:Bạn thử thêm vòng lặp foreach vào lisp cụ LeeMac sau khi ssget quét chọn vùng để coppy và đổi tên từng đối tượng si!
Thank! Ước gì có thể hiểu được lisp của Lee mac. Để tìm hiểu thử foreach xem sao. Chưa học cái đó.
1 giờ trước, conghoa đã nói:Có một cách đơn giản hơn một chút mà ko cần copy qua lại.
- Dùng lisp của Leemac để đổi tên 1 block trong nhóm Block2
- Dùng thêm 1 lisp Replace Blocks (thay để block đã đổi tên cho các block còn lại của nhóm Block2)
:D
Thank! Chức năng Replace Block trong Express nó thay thế toàn bộ luôn, chứ không thay riêng 1 vùng được. Với lại không hỗ trợ pick chọn Block động nữa.
Nhờ gợi ý thì có kiếm được cái lisp này dùng đỡ.
-
Các bác trong diễn đàn cho mình hỏi chút. Là có cách nào để phân biệt được DiametricDimension với AlignedDimension trong lisp để áp dụng cho trường hợp thêm ký tự Ø như trên không? Vì lấy cái assoc 100 nó toàn ra (100 . "AcDbDimension") như nhau thôi. Nên nếu để thêm chữ Ø vào thì khi Dim cho đường tròn sẽ bị thừa kí tự Ø
-
16 giờ trước, nguyenxuanbien1994 đã nói:Ok bác. Bác làm trong lĩnh vực gì vậy. Nếu có lisp liên quan em sẽ chia sẻ ạ.
Làm thợ đụng bạn ơi. IB giao lưu nha
-
Xin chào các anh chị, các bạn trong diễn đàn. Tôi có 1 vấn đề nhờ mọi người trong diễn đàn giúp.
Đó là đổi tên 1 nhóm Block cùng tên được quét chọn mà vẫn giữ lại tên của Block của vùng không được chọn.
Bình thường tôi muốn đổi tên 1 Block như thế thì dùng lisp của lee-mac https://www.lee-mac.com/copyblock.html.
Nhưng Lisp này chỉ đổi được tên 1 Block thôi. Tại Block của nhóm sau có cách bố trí và hình dạng gần giống Block trước (tầng 1, tầng 2, hay phương án 1, phương án 2...).
Bình thường tôi sẽ copy nhóm Block muốn đồi tên sang file cad trống rồi đổi tên. Sau đó copy lại về sửa.
Cách này hơi bất tiện chút nên bạn nào có cách khác tốt hơn chỉ giúp tôi với.
Xin cám ơn!
-
Tùy mục đích sử dụng có thể bỏ cái {} thì Edit sẽ tiện hơn.
Lisp cho cơ khí hơi ít, sẵn tiện Edit lại cho mình dùng luôn.
Dùng Mechanical thì không cần lisp này lắm. Nhưng vì hay hay phải chuyển qua lại giữa cad thường và cad Mechanical nên dùng lisp vẫn tiện hơn.
-
1
-
-
Cái trị số dung sai trong lisp này đâu có đúng. Với lại chỉ hỗ trợ Đk dưới 80.
Dùng lisp của bác @Doan Van Ha hỗ trợ tới 400. Nhưng có nhược điểm là Dim hình tròn sẽ bị dư thêm chữ Ø
Sửa lại lisp bạn gửi rồi.
Nhưng giữ nguyên lỗi ban đầu là khi Dim đường thẳng sẽ không có chữ Ø
(defun c:hh7(/ ob num n chk entl dimtol ds) (princ "\\n Chon Dim : ")(princ) (setq ob (ssget (list (cons 0 "DIMENSION") ))) (setq num (sslength ob)) (setq n 0) (while (ssname ob n) (setq chk (ssname ob n)) (setq ent1 (entget chk)) (setq dimtol (cdr (assoc 42 ent1))) (setq chk (cdr (assoc 1 ent1))) (cond ((<= dimtol 3) (setq ds "<>{}{\\H0.71x;\\C92;\\S+0.001^0;}") ) ((<= dimtol 6) (setq ds "<>{}{\\H0.71x;\\C92;\\S+0.012^0;}") ) ((<= dimtol 10) (setq ds "<>{}{\\H0.71x;\\C92;\\S+0.015^ 0;}") ) ((<= dimtol 18) (setq ds "<>{}{\\H0.71x;\\C92;\\S+0.018^ 0;}") ) ((<= dimtol 30) (setq ds "<>{}{\\H0.71x;\\C92;\\S+0.021^ 0;}") ) ((<= dimtol 50) (setq ds "<>{}{\\H0.71x;\\C92;\\S+0.025^ 0;}") ) ((<= dimtol 80) (setq ds "<>{}{\\H0.71x;\\C92;\\S+0.003^ 0;}") ) ((<= dimtol 120) (setq ds "<>{}{\\H0.71x;\\C92;\\S+0.035^ 0;}") ) ((<= dimtol 180) (setq ds "<>{}{\\H0.71x;\\C92;\\S+0.04^ 0;}") ) ((<= dimtol 250) (setq ds "<>{}{\\H0.71x;\\C92;\\S+0.046^ 0;}") ) ((<= dimtol 315) (setq ds "<>{}{\\H0.71x;\\C92;\\S+0.052^ 0;}") ) ((<= dimtol 400) (setq ds "<>{}{\\H0.71x;\\C92;\\S+0.057^ 0;}") ) ((<= dimtol 450) (setq ds "<>{}{\\H0.71x;\\C92;\\S+0.063^ 0;}") ) (princ "Done")(princ) ) (entmod (subst (cons 1 ds) (assoc 1 ent1) ent1))(princ) (setq n (1+ n)) ) )
-
10 giờ trước, nguyenxuanbien1994 đã nói:Hiện tại em đang có cái lisp điền dung sai nhưng đang bị lỗi như trong hình.
Nhờ các bác khắc phục giúp em với ạ.Em xin cảm ơn.
Thử coi nha
-
Vào lúc 27/5/2024 tại 21:15, NgocCham03 đã nói:Con chào các cô các chú trong nhóm, con đang muốn vẽ tâm đường tròn theo điểm point. kích thước đường tròn thì theo text có số sẵn trong bản vẽ
Cho con hỏi là có cách nào vẽ nhanh hơn không. Con đang vẽ lệnh C thủ công ạNhờ giúp đỡ mà không nói rõ gì cả. Rốt cuộc là vẽ đường tròn theo text màu đỏ hay text màu xanh. Nhìn qua thì tưởng text màu đỏ. Nhưng mò đến vùng dữ liệu thì mới biết là nằm trong text màu xanh. Đưa cả Cad với PDF nhưng cuối cùng cũng không hiểu gì luôn á
-
1
-
-
5 phút trước, cuongtk2 đã nói:Sắp hết thời của phần mềm lậu chưa các bác?
Chắc cũng còn lâu nữa. Doanh nghiệp lớn thì có thể, doanh nghiệp nhỏ thì chưa chắc. Có chiêu là cấp laptop cho nhân viên. Khi kiểm tra thì là máy tính cá nhân thôi chứ không phải máy của doanh nghiệp.
Với tình hình kinh tế như hiện tại thì việc dùng phần mềm lậu còn dài dài.
Việt Nam mình có Vinacad mới ra. Không biết đã ai trải nghiệm chưa. Cái này theo hướng xây dựng nên cơ khí như mình không thử
-
Vừa xong, Doan Van Ha đã nói:Chủ topic biến lâu rồi. Tự các lisper tranh luận với nhau, giờ trách ai?
Có tranh luộn vậy diễn đàn mình mới tồn tại lâu dài chứ
-
9 phút trước, conghoa đã nói:Mình cũng thấy thế, nên cách tạo block hợp với yêu cầu mà lại nhanh thì nên dùng cách này:
1. Chọn đối tượng cần làm Block rồi: Ctrl + C
2. Ctrl + Shift + V
3. Chèn vào vị trí cần :)
Cách này nhanh nhất.
Nhược điểm là mặc dù tên tạo ra ngẫu nhiên nhưng vẫn bị trùng tên khi copy sang block khác.
Cái tên nhìn không được cảm tình cho lắm.
Nhưng được cái tên nó gom về 1 chỗ cũng tiện. Khi Rename chọn A&C* là được cả đám rồi.
Lisp này nguyên bản thì tên là Newblock+ rất đễ trùng tên. Lấy tên file thì hạn chế bớt nhưng tên block lại dài quá..
Nói chũng cũng khó hoàn hảo lắm
-
Chủ đề này vậy mà kéo dài quá. Cái này là tạo Block tự động. Hay dùng cho các block không quan trọng lắm. Ngay cả cái tên còn không quan trọng thì lo gì đến điểm chèn.
Nếu một block quan trọng thì sẽ làm thủ công rồi. Lúc đó thì mới xét xem điểm chèn ở đâu là phù hợp.
Tôi không dùng lisp này, chỉ góp ý chút vậy thôi.
-
2 giờ trước, mr.thanh2610 đã nói:Cảm ơn bài viết, mình có thể nhờ bạn chỉnh sửa tự tạo block điểm chèn tự động tại tâm của Block không ạ, không cần pick điểm, cảm ơn
Làm sao xác định được tâm của những đối tượng đã chọn. Thậm chí còn chưa nói đến khái nệm đó. Tâm của một polyline khép kín thì có. Với lại thêm 1 cái pick chuột không mất thời gian lắm đâu
-
Vào lúc 20/12/2017 tại 11:13, Danh Cong đã nói:Kết hợp lisp theo cách đổi trục và vẽ hình chữ nhật:
(defun c:test2 ()
(command "cmdecho" 0)
(defun *Error* (msg)
(command "ucs" "p")
(princ msg))
(prompt "\nChon 2 diem theo huong ve HCN: ")
(command "ucs" pause pause "")(prompt "\nVe HCN:")
(command "rectang" pause pause)
(command "ucs" "p")
(princ))ý tưởng đơn giản mà hay. Nhưng hơi cảm thấy hụt hẫng vì pick xong 2 điểm rồi mà chưa thấy hcn đâu cả.
Có sửa lại chút tận dụng điểm pick thứ nhất.
(defun c:test2 ()
(command "cmdecho" 0)
(defun *Error* (msg)
(command "ucs" "p")
(princ msg))
(prompt "\nChon 2 diem theo huong ve HCN: ")
(command "ucs" pause pause "")(prompt "\nVe HCN:")
(command "rectang" "0,0" pause)
(command "ucs" "p")
(princ))Cái lisp này hình như có bẫy lỗi rồi nhưng khi thoát ra giữa chừng vẫn không về lại UCS cũ được. Do mới tìm hiểu về lisp nên không biết khắc phục lỗi này
-
1 giờ} trướ}c, tannguyen291 đã nói:đã nói là giống sketchup rồi mà. dùng thử cái lisp lee mac mình đăng bên trên xem có dễ dùng hơn k.
Không có nhu cầu vẽ HCN giống tác giả nên chưa dùng thử lisp của lee mac. Do cũng đang tìm hiểu về lisp nên thử viết thực hành đó mà
-
Vào lúc 20/12/2017 tại 09:15, kienxd04 đã nói:Xin chào các bạn
Hiện tại công việc của mình là phải vẽ hình chữ nhật rồi phải xoay hình chữ nhật theo phương ý muốn (vì mặt bằng cần xoay nhiều hướng) nên mình cần sự giúp đỡ của các bạn viết lisp vẽ hình chữ nhật rồi nó tự xoay theo phương bất kỳ (giống như ve hình chữ nhật trong sketchup vậy)
Rất mong sự giúp đỡ của các bạn rành về lisp
Xin cảm ơn.
Thử cái này nhé. Suy nghĩ đơn giản thôi nên viết đơn giản vậy thôi.
Nhược điểm là chiều dài, chiều rộng của HCN phụ thuộc vào điểm thứ 3 thôi.
(defun c:cnn (/ pt1 pt2)
(setq pt1 (getpoint "\nChon diem dau:"))
(setq pt2 (getpoint pt1 "\nChon goc nghieng:"))
(command "_.rectang" pt1 "R" pt2 Pause)
(command "_.rectang" "0,0" "R" 0 \)
)-
1
-
-
Hầu hết lỗi có thể giải quyết bằng menu Star - tìm Autocad - Tìm reset setting..
-
Thử cái này:
(defun c:QB (/ selectionset insertionpoint number Blockname)
;;; Tharwat 11. May. 2012 ;;
(if (and (setq selectionset (ssget "_:L"))
(setq insertionpoint (getpoint "\n Specify insertion point :"))
)
(progn
(setq bname (substr (getvar "dwgname") 1 (- (strlen (getvar "dwgname")) 4)))
(setq number 1
Blockname (strcat bname (itoa number))
)
(while (tblsearch "BLOCK" Blockname)
(setq Blockname
(strcat bname (itoa (setq number (1+ number))))
)
)
(command "_.-Block" Blockname insertionpoint selectionset "")
(command "_.-insert" Blockname insertionpoint "" "" "")
)
(princ)
)
(princ)
)-
1
-
1
-
Sửa lại lệnh DIM cho tiện dụng hơn
trong AutoLisp
Đã đăng · Trả lời báo cáo
Thử các lisp sau.
Layer direct của leemac. Hoặc lisp trong bài viết này
⅞