Tue_NV
-
Số lượng nội dung
4260 -
Đã tham gia
-
Lần ghé thăm cuối
-
Ngày trúng
288
Bài đăng được đăng bởi Tue_NV
-
-
sao lại không mở được hở bácPassword là www.cadviet.com. Bạn sẽ mở được
-
Chào mọi người!Tôi mới tìm hiểu về lisp. Mong mọi người giúp đỡ. Tôi viết một chương trình nhỏ nhưng chạy không được không biết lỗi chỗ nào. Chỉ dùm tôi với:
(defun c:dt()
(command "cicrle") Sai lệnh
(setq pt (getpoint "cho tam duong tron:"))
(setq D (getdist "cho ban kinh duong tron:")
(princ)
)
Thứ nhát là : Bạn viết tên lệnh bị sai. Lệnh vẽ đường tròn là circle chứ không phải là "cicrle")
Thứ hai ở dòng đậm : (setq D (getdist "cho ban kinh duong tron:") bạn thiếu dấu đóng ngoặc , phải viết là :
(setq D (getdist "cho ban kinh duong tron:"))
Thứ ba là dòng thực hiện lệnh : Command bạn phải đưa xuống dưới cùng :
Mình viết lại như sau :
Tên lệnh là : dt
(defun c:dt () (prompt "Ve duong tron :") (setq pt (getpoint "cho tam duong tron:")) (terpri) (setq D (getdist "cho ban kinh duong tron:")) (command "circle" pt D) )
.
Bạn có thắc mắc gì hỏi nhé.
-
Em rất hay phải dùng lệnh scale với tỉ lệ khác nhau, thường thì em vẫn thường dùng lệnh scale->"r" rồi nhập 2 kích thước. Dùng cách này cũng được nhưng khi hay phải dùng thi mất thời gian quá. Bác có cái lisp mỗi khi dùng thì mình chỉ cần chọn hình cần phải scale, sau đó pick vào 2 cạnh (vd: 2 cạnh của 2 hình chữ nhật, hoặc 2 đường line) thì nó tự chia chiều dài cạnh (hoặc line) của hình này cho hình kia và scale hình minh cần scale đúng theo tỉ lệ đó không các anh?thankssss!!!!
Mình mới viết được đoạn lisp này. Hy vọng nó chạy theo đúng ý bạn :
(defun C:SCC () (prompt "Ban chon doi tuong scale") (princ "\nSelect object :") (setq obj (ssget)) (setq base (getpoint "Diem goc scale :")) (terpri) (prompt "Ban nhap ti le scale = canh thu 1 chia cho canh thu 2") (terpri) (setq c1 (getpoint "Pick vao canh 1:")) (terpri) (command "lengthen" c1 "") (setq L1 (getvar "perimeter")) (setq c2 (getpoint "Pick vao canh 2:")) (terpri) (command "lengthen" c2 "") (setq L2 (getvar "perimeter")) (setq TL (/ L1 L2)) (command "scale" obj "" base TL) )
.
Các bạn cho ý kiến. Thanks động viên nhé.
-
1
-
-
Tên của lệnh này là gì vậy bạn. Mình vẽ cad, sử dụng lips nhiều nhưng không biết tý tẹo gì về viết lips hết. Buồn....* Để biết tên lệnh là gì?
Bạn mở file lsp ra, tìm đến các dòng mã (defun c:, phía sau c: là tên lệnh. Ví dụ: (defun c:CT thì tên lệnh là CT.
Bạn xem ở đây: Hướng dẫn sử dụng mã lisp
-
Trong Autocad có những dạng đường mà có cả chữ xen kẽ với nét vẽ, nhưng em ko biết cách thay đổi chữ đó theo ý của mình. Ví dụ muốn có đường dạng : -------CN---------CN---------, hoặc --------TN-----------TN--------------TN----------. Bác nào biết chỉ dùm em với. Mình có thể thay đổi cái chữ đó hay là mình phải tạo ra một dạng đường khác với chữ theo ý của mình?Cám ơn các bác trước,
Tạo kiểu nét phức hình chuỗi :
Bạn phải đưa văn bản và thuộc tính của nó vào trong định nghĩa kiểu nét.
Định dạng của kiểu nét phức hình chuỗi là :
["String",Text Style, Text Height, Rotation, X-offset,Y-offset]
Mình sẽ viết kiểu nét phức chuỗi "CN" như thế này :
*DuongkethopchuCN,CN
A,0.75,["CN",Standard,S=0.1,A=0,X=0.05,Y=-0.05],-0.575
Bạn mở chương trình soạn thảo Notepad lên, chép đoạn chữ in đậm vào và lưu file với đuôi mở rộng là .lin
Sau đó vào CAD, đánh lệnh linetype -> Trong hộp thoại Linetype Manager chọn load -> trong hộp thoại load and reload linetype -> Chọn file -> sau đó chọn file .lin mà bạn vừa tạo -> OK.
Lúc này, bạn sẽ tạo đwợc đường có chữ CN xen kẽ với nét vẽ.
Muốn thay đổi chữ CN thành chữ TN thì bạn thay chuuõi "CN" thành chữ "TN" trong file .lin vừa tạo.
Bạn cứ làm thử. Nếu có gì vướng mắc hỏi mình nhé.
-
Tôi thấy ko chuột giữa ko sao!Pan : P enter ;
Zoom : Z enter
muốn nhìn toàn bộ phần vẽ: e enter
muốn nhìn 1 phần nhỏ: chọn cửa sổ nhỏ là zoom lên liền
Ah quên để nhanh hơn nên đánh lệnh: VTduration trước cho mặc định 750 thành 0 là ok!
cách của tôi thế được không các Pro.
Cách của bạn chỉ thực hiện được khi mình chưa thực hiện được câu lệnh nào cả.
Còn khi thực hiện câu lệnh rồi (Ví dụ như lệnh Move thì ở dòng select object: thì làm sao gõ Zoom : Z enter được..
tức là ta không thể dùng cách của bạn để phóng to hay pan ở dòng lệnh Select Object đwợc.
Lúc này bạn phải vào Tool ->option ->Customize -> chọn Keyboard ->
Ở nhãn Categories -> Chọn View Menu -> Thiết lập phím tắt cho zoom realtime và pan realtime mới đwợc.
. Lúc này bạn pan hay zoom bằng phím tắt được. Chúc thành công.
-
Xin hỏi, lúc vẽ đường tròn xong rồi zoom lại, thì thấy đường tròn có biểu hiện những nét gãy khúc, vậy làm cách nào để làm đường tròn mịn hơn vậy các bác. xin cảm ơn.Bạn gõ lệnh Viewres như sau :
Command: viewres
Do you want fast zooms? [Yes/No] <Y>: Y : Gõ Y
Enter circle zoom percent (1-20000) <100>: 20000 : Gõ 20000 : Giá trị cao nhất
Regenerating model.
.Đường tròn, Spline sẽ mịn hơn, trơn tru hơn. Bạn thử xem. Chúc thành công.
-
tại sao khi em dùng betterWMF chuyển từ cad sang word nó lại bị lỗi font hoài, bác nào biết chỉ giúp em vớiBạn Xem ở đây : Chuyển cad sang Word
-
mình muốn chuyển 1 đường từ layer này sang layer khác, bạn nào biết cách giúp mình với. Mình dùng lệnh change mà không được. Chỉ có một file bị như thế thôi, các file khác thì vẫn chuyển bình thường.Mình sử dụng lệnh change được mà. Nếu sử dụng lệnh change không được thì bạn sử dụng lệnh sau :
-> Chọn Tool -> Express -> Layers -> Layer Match (tức là sử dụng lệnh laymch trong phụ trợ Express của AutoCad.
-
Bạn vào Tool -> option -> Display -> ở mục Layout element chọn tick display layout and model Tabs là đượcXin lỗi nhầm. Bạn vào Tool -> option -> Display -> ở mục Window element chọn tick display scroll bars in drawing windows
-
bác nào giúp lấy lại thanh cuộ phía dưới mành hình với tự nhiên nó mất đâu rồi.cái thanh mà để di chuyển sangtrái ,sang phai ấyBạn vào Tool -> option -> Display -> ở mục Layout element chọn tick display layout and model Tabs là được
-
Mình đánh lệnhCommand : tktt
Hiện lên hộp thoại THONG KE THEP TRON. Mình chọn nút Tổng hợp ở dưới cùng.
Sau đó chương trình hiện lên hộp thoại TONG HOP THEP TRON. Chọn tiếp nút Tổng hợp,
chương trình hỏi chọn điểm trên bên trái. Mình chọn điểm trên, bên trái (dưới chữ CK ở bên trái),
chương trình hỏi chọn điểm dưới bên phải. Mình chọn điểm dưới, bên phải (góc bên phải dwới cùng của bảng thống kê),
chương trình hỏi chọn điểm viết kết quả thì mình chọn một điểm trên màn hình.
Và sau đó thì chương trình báo lỗi sau :
Command:
Chon diem tren ben trai:
Chon diem duoi ben phai:
Chon diem viet ket qua: INSERT Enter block name or [?] <tieude>: thtoktruoc
"thtoktruoc.dwg": Can't find file in search path:
C:\Documents and Settings\Administrator\Application Data\Autodesk\AutoCAD
2004\R16.0\enu\support\
C:\Program Files\AutoCAD 2004\support\
C:\Program Files\AutoCAD 2004\fonts\
C:\Program Files\AutoCAD 2004\help\
C:\Program Files\AutoCAD 2004\express\
C:\Program Files\AutoCAD 2004\support\color\
C:\Tktduy\
C:\Program Files\AutoCAD 2004\
*Invalid*
Error:Function cancelled; error: An error has occurred inside the *error*
functionbad argument type: fixnump: "4"
Hình như trong file C:\Tkduy còn thiếu file tổng hợp thép nào đó.
Mong bác duy 782006 hồi âm sơm. cảm ơn nhiều.
Hình như trong file C:\Tkduy còn thiếu file tổng hợp thép nào đó.
Mong bác duy 782006 hồi âm sơm. cảm ơn nhiều.
-
nếu bạn có hình chữ nhặt kích thước 30x50 muốn có hình chữ nhật có chiều rộng 50 x chiều dài sẽ tăng lên theo tỷ lệ phóng của chiều rộngKhi Sc nhập tỷ lệ phóng: 50/30 là được
Bạn sử dụng lệnh scale kết hợp với lệnh cal như sau :
Command: sc SCALE
Select objects: Specify opposite corner: 1 found : Chọn đối tượng
Select objects: không chọn đối tượng nữa
Specify base point: điểm gốc scale
Specify scale factor or [Reference]: 'cal ; nhấn 'cal
>> Expression: 50/30 ; nhấn 50/30
1.66667
là được. Chúc thành công.
-
1
-
-
Lổi sao bạn?Nó có lên được hộp thoại hỏi cấu kiện và tổng hợp không?
Mình đánh lệnh
Command : tktt
Hiện lên hộp thoại THONG KE THEP TRON. Mình chọn nút Tổng hợp ở dưới cùng.
Sau đó chương trình hiện lên hộp thoại TONG HOP THEP TRON. Chọn tiếp nút Tổng hợp,
chương trình hỏi chọn điểm trên bên trái. Mình chọn điểm trên, bên trái (dưới chữ CK ở bên trái),
chương trình hỏi chọn điểm dưới bên phải. Mình chọn điểm dưới, bên phải (góc bên phải dwới cùng của bảng thống kê),
chương trình hỏi chọn điểm viết kết quả thì mình chọn một điểm trên màn hình.
Và sau đó thì chương trình báo lỗi sau :
Command:
Chon diem tren ben trai:
Chon diem duoi ben phai:
Chon diem viet ket qua: INSERT Enter block name or [?] <tieude>: thtoktruoc
"thtoktruoc.dwg": Can't find file in search path:
C:\Documents and Settings\Administrator\Application Data\Autodesk\AutoCAD
2004\R16.0\enu\support\
C:\Program Files\AutoCAD 2004\support\
C:\Program Files\AutoCAD 2004\fonts\
C:\Program Files\AutoCAD 2004\help\
C:\Program Files\AutoCAD 2004\express\
C:\Program Files\AutoCAD 2004\support\color\
C:\Tktduy\
C:\Program Files\AutoCAD 2004\
*Invalid*
Error:Function cancelled; error: An error has occurred inside the *error*
functionbad argument type: fixnump: "4"
Hình như trong file C:\Tkduy còn thiếu file tổng hợp thép nào đó.
Mong bác duy 782006 hồi âm sơm. cảm ơn nhiều.
-
<a href="http://www.cadviet.com/upfiles/tktduy.zip" target="_blank"><a href="http://www.cadviet.com/upfiles/tktduy.zip" target="_blank"><a href="http://www.cadviet.com/upfiles/tktduy.zip" target="_blank">http://www.cadviet.com/upfiles/tktduy.zip</a></a></a>Đây là lisp thống kê thép do tôi viết: vì đang nghiên cứu phần hộp thoaị nên cái này hơi tệ nhưng ba con dùng thử xem:
- TKTT: thống kê thép tròn (24 hình dáng thép)
- TKTH: thống kê thép hình (C; O; []; V)
- TKTM: thống kê thép mã
Mình dùng các lệnh đều chạy tốt cả. Cảm ơn bác duy782006. Riêng lệnh TKTT và trong hộp thoại này có tổng hợp thì chương trình báo lỗi. Hình như bị thiếu file để tổng hợp thép đấy. Bác xem lại giúp nhé.
-
khi sử dụng lềnh mesure (me) để tạo một đường phân khối trữ lượng khai thác thì đường này thường chạy ra rất xa so với đường ranh giới. tôi phải move về rất mất thời gian. Ai có thể giúp tôi vấn đề này được khôngBạn có thể nói rõ hơn không? Bạn hãy upload file bản vẽ đó lên diễn đàn.
-
đã làm theo và mất dòng chữ nhưng lỗi mới là chỉ thấy được khung không thấy chi tiết vẽ, ở đây chỉ là khung của picture không có ảnh trong đó!!!?????Bạn vào Tool -> Chọn option -> View -> Sau đó trong mục Show bỏ chọn dấu tick Picture PlaceHolder.
-
e đang làm đồ án cần copy những hình vẽ từ CAD sang MS Word mà sau khi copy xong paste vào Word thì trong Word chỉ hiện lên mỗi dòng chữ{EMBED AutoCAD.Drawing.16} mà không hiển thị hình vẽ mà e copy. làm sao cho đc bây giờ mấy anh ơi!?
mail hoac trả lời giúp đệ với! namtai2003@yahoo.com
Bạn vào Menu : Tool -> Chọn option -> View -> Sau đó trong mục Show bỏ chọn dấu tick Field Codes .
-
Tôi cũng biết lệnh Change text (CHT) trong acad nhưng tôi muốn hỏi cách viết mã lisp để học hỏi về nhôn ngữ lisp.- ttôi đã biết được mã lisp để chọn tất cả các text trong lớp "HOten" nhưng không biết đoạn mã nào để thay đổi tất cả thuộc tính của chúng.
Các bạn gíup tôi với nhé .
Text có rất nhiều thuộc tính. Bạn nói chung chung quá. Bạn có thể nói rõ hơn được không?
-
Tôi mới làm quen với lisp. Tôi xin hỏi các bạn là : tôi muốn thay đổi thuộc tính (Heihght = 5, textstyle= vnarial) tất cả các đối tượng text thuộc lớp "hoten" trong bản vẽ thì viết lisp như thế nào ? tôi đã viết lệnh sau nhưng không được. Tôi không biết dùng hàm gì để thay dổi được tất cả các text thuộc lớp "hoten" trong bản vẽ.các bạn xem giúp tôi nhé.
(setq ent(ssget "x" (list (cons 8 "hoten")(cons 0 "TEXT"))))
(setq n(sslength ent))
(command "text" "j" "C" "" "0" n )
Mình nghĩ rằng không nhất thiết phải sử dụng Lisp, bạn hãy dùng lệnh filter trong AutoCad.
Để thay đổi đối tượng thì đầu tiên bạn phải lựa chọn đối tượng
Command : filter
Bạn Add to list :
layer = hoten
Text Style name = vnarial
Text Height = 5
Object = Text
Bạn lưu cách chọn lựa này theo một tên nào đó trong hộp Save As sau đó Apply chọn đối tượng là xong
-
Đoạn Code trên tính tích 2 cột số và cho kết quả sẽ thay thế là cột số thứ ba tương ứng.
Và để hỗ trợ thống kê thép thì tuyệt vời. Đúng là cái mà mình đang cần.
Cám ơn bạn nhé.
-
Chọn text là số
trong AutoLisp
Hàm Isnumeric và hàm ChonTextSo là Hàm lọc các đối tượng TEXT có nội dung là số (nguyên, thập phân) đã giúp em xử lý các phép toán số học về text số (sau khi loại bỏ các text chữ).
Em cảm ơn anh nhiều lắm.
-
Chọn text là số
trong AutoLisp
Hy vọng đoạn code sau đúng ý bạn.(DEFUN IsNumeric (str) (if (not(vl-string-search " " str)) (if (member (type (read str)) '(REAL INT) ) T nil ) nil ) ) (defun C:cg1 () (setvar "CMDECHO" 0) (setq pre (getint "\nSo chu so sau dau phay?")) (command "luprec" pre) (setq tong 0) (SETQ TH (SSGET (list (cons 0 "TEXT")))) (SETQ QUANT (SSLENGTH TH)) (SETQ INDEX 0) (WHILE (< INDEX QUANT) (setq s (entget (SSNAME TH INDEX))) (setq otext (assoc 1 s)) (setq ot (cdr otext)) (if (IsNumeric ot) ;neu noi dung ot la so (setq ot (atof ot) tong (+ ot tong)) ; tinh tong ) (setq index (+ index 1)) ) (prompt "\n Chon gia tri can thay the") (SETQ TT (SSGET)) (SETQ QUAN (SSLENGTH TT)) (SETQ INDE 0) (WHILE (< INDE QUAN) (setq s (entget (SSNAME TT INDE))) (setq otext (assoc 1 s)) (setq nt (cons 1 (rtos Tong 2 pre))) (setq s (subst nt otext s)) (entmod s) (setq inde (+ inde 1)) ) )Đúng là đoạn Code trên tính tổng của các số (sau khi loại bỏ các text chữ). Nhưng ý của em ngay từ đầu là muốn chọn đối tượng là text số để xử lý phép tính số học sau khi chọn bằng Grid.
Ứng dụng hàm IsNumeric là hàm kiểm tra nội dung của 1 chuỗi là số, em viết đoạn Code dưới đây để thực hiện phép tính cộng thêm vào giá trị được chọn để giá trị được chọn nhận kết quả mới là thêm một giá trị cộng thêm vào. Nhưng đoạn Code dưới bị lỗi mà em chưa biết sai ở đâu. Anh sửa lại giúp em với nhé.
(DEFUN IsNumeric (str) (if (not(vl-string-search " " str)) (if (member (type (read str)) '(REAL INT) ) T nil ) nil ) ) (defun c:cso() (setvar "CMDECHO" 0) (setq pre (getint "\nSo chu so sau dau phay?")) (command "luprec" pre) (setq co (getreal "\nGia tri can cong them:")) (SETQ TH (SSGET(list(cons 0 "TEXT")))) (SETQ QUANT (SSLENGTH TH)) (SETQ INDEX 0) (WHILE (< INDEX QUANT) (setq s (entget (SSNAME TH INDEX))) (setq otext (assoc 1 s)) (setq ot (cdr otext)) (if(IsNumeric ot) (setq ot (atof ot)) (setq nt (cons 1 (rtos (+ ot co)))) (setq s (subst nt otext s)) (entmod s) ) (setq index (+ index 1)) ) )Cám ơn anh nhé.
-
Chọn text là số
trong AutoLisp
Hàm kiểm tra nội dung của 1 chuỗi là sốkhông xét t/hợp chuỗi có định dạng thêm khoảng trắng giữa hàng ngàn. vd : 23 000 -> 23000
(DEFUN IsNumeric (str)
(if (not(vl-string-search " " str))
(if (member (type (read str)) '(REAL INT) )
T
nil
)
nil
)
)
Đoạn code của bạn được sửa lại :
(DEFUN IsNumeric (str) (if (not(vl-string-search " " str)) (if (member (type (read str)) '(REAL INT) ) T nil ) nil ) ) (defun C:cg () (setvar "CMDECHO" 0) (setq pre (getint "\nSo chu so sau dau phay?")) (command "luprec" pre) (setq tong 0) (SETQ TH (SSGET)) (SETQ QUANT (SSLENGTH TH)) (SETQ INDEX 0) (WHILE (< INDEX QUANT) (IF (AND (= "TEXT" (CDR (ASSOC 0 (SETQ A (ENTGET (SSNAME TH INDEX))))) ) ) (PROGN (setq s (entget (SSNAME TH INDEX))) (setq otext (assoc 1 s)) (setq ot (cdr otext)) (if (IsNumeric ot) ;neu noi dung ot la so (setq ot (atof ot) tong (+ ot tong)) ; tinh tong ) ) ) (setq index (+ index 1)) ) (prompt "\n Chon gia tri can thay the") (SETQ TT (SSGET)) (SETQ QUAN (SSLENGTH TT)) (SETQ INDE 0) (WHILE (< INDE QUAN) (IF (AND (= "TEXT" (CDR (ASSOC 0 (SETQ A (ENTGET (SSNAME TT INDE))))) ) ) (PROGN (setq s (entget (SSNAME TT INDE))) (setq otext (assoc 1 s)) ;;; (setq ot (cdr otext)) ;;; (setq ot (read (substr ot 1))) (setq nt (cons 1 (rtos Tong 2 pre))) (setq s (subst nt otext s)) (entmod s) ) ) (setq inde (+ inde 1)) ) )Rất cảm ơn anh đã giúp đỡ cho em.
Nhưng tổng quát ý của em ngay từ đầu là muốn chọn đối tượng là số để xử lý sau khi chọn bằng Grid.
Vì còn nhiều lệnh AutoLisp về phép tính số học cần được giải quyết.
Hàm IsNumeric này quả thật em chưa biết.
Anh giúp em nhé. Cảm ơn anh.
(Có thể bạn chọn đối tượng đầu tiên bằng Grid rồi thực hiện lệnh AutoLisp thì các Grid biến mất. nhưng khi thực hiện lệnh Lisp thì ở trong câu Select Object : bạn nhấn chữ P(previous) các đối tượng text số chọn ra đó sẽ được chọn lại. )
Nhờ các bác lisp tính diện tích, chu vi, khối lượng của một tiết diện
trong AutoLisp
Đã đăng · Trả lời báo cáo
Đây là lisp của bạn mình làm theo ý bạn rồi nè :
Bạn chạy thử nhé.