Chuyển đến nội dung
Diễn đàn CADViet
Tào Tháo

Load Lisp Cad Của Lisp Cad

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

tình hình là e đang tìm hiểu về lisp cad, mong mọi người giúp đỡ với !!!!!!. e đang thử viết 1 lisp mà tới lệnh đó nó phải gọi 1 lisp khác mà e có trước nhưng nó lại ko thể goi lisp đó ra được

vd: (command "dimlinear" pcc32 pcc36 "t" "" kt9 "");1 (command "kk" pcc1 "");2  (command "dimlinear" pk4 pk3 "t" "" kt3 ""); 3 /trong đó kk là lệnh của lisp e đã có trước, câu lệnh số 2 ko thể thực hiện đươc và nó chạy qua câu số 3 luô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

Không thấy mặt mũi hàm kk, biến pcc1 là gì thì bó tay

kk la để gọi 1 lisp bất kỳ ra,biến pcc1 la 1 tọa độ mình đã xđịnh trước thôi

mà lisp kk của mình thì ko cần xđịnh trước tọa độ

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

kk la để gọi 1 lisp bất kỳ ra,biến pcc1 la 1 tọa độ mình đã xđịnh trước thôi

mà lisp kk của mình thì ko cần xđịnh trước tọa độ

 

Post đoạn code của bạn lên mọi người xem mặt mũi thế nào mới giúp được bạn à :V

Nhớ kèm đoạn code kk gì đó nữa nhé ^^

  • Vote giảm 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

 (command "c:kk" pcc1 "")

Command: c:kk Unknown command "C:KK".
 Press F1 for help.
\ Command: \
Command: kk \
Unknown command "KK".
 Press F1 for help.Command: nil / cad báo thế đó a ơi

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

Post đoạn code của bạn lên mọi người xem mặt mũi thế nào mới giúp được bạn à :V

Nhớ kèm đoạn code kk gì đó nữa nhé ^^

(command "-layer" "m" "_mss.bao" "")
  (setq ss (ssadd))                    
  (command "line" pstart t1 "")         
  (ssadd (entlast) ss)                 
  (command "line" pstart t2 "")
  (command "in" "")
"in" là lisp in nhiều bản vẽ, ở mình muốn vẽ ra 1 hình chữ nhật rồi dùng lệnh "in" để in luôn bản vẽ

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

 

(command "-layer" "m" "_mss.bao" "")
  (setq ss (ssadd))                    
  (command "line" pstart t1 "")         
  (ssadd (entlast) ss)                 
  (command "line" pstart t2 "")
  (command "in" "")
"in" là lisp in nhiều bản vẽ, ở mình muốn vẽ ra 1 hình chữ nhật rồi dùng lệnh "in" để in luôn bản vẽ

 

 

Nếu bạn đang học Lisp thì mình khuyên bạn nên viết hàm con cho tiện sử dụng và dùng được ở nhiều đoạn lísp khác nhau ^^

ví dụ  của bạn: Viết hàm con (defun IN (tham số / biến cục bộ) nội_dung_hàm)

Khi sử dụng thì chỉ cần code là: (IN tham số)

 

Đoạn code của bạn thì muốn vẽ HCN rồi in theo khung HCN vừa vẽ thì bạn chỉ cần COde:

(setq p1 (getpoint)
 p2 (getcorner p1))
(command "_.rectangle" p1 p2)
(In (entlast))
 
Trong đó hàm IN có đối số là ename của HCN ^^
 
P/s: Sao mình lại bị trừ điểm ở bài trước vậy nhỉ :(
  • 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

 

Nếu bạn đang học Lisp thì mình khuyên bạn nên viết hàm con cho tiện sử dụng và dùng được ở nhiều đoạn lísp khác nhau ^^

ví dụ  của bạn: Viết hàm con (defun IN (tham số / biến cục bộ) nội_dung_hàm)

Khi sử dụng thì chỉ cần code là: (IN tham số)

 

Đoạn code của bạn thì muốn vẽ HCN rồi in theo khung HCN vừa vẽ thì bạn chỉ cần COde:

(setq p1 (getpoint)
 p2 (getcorner p1))
(command "_.rectangle" p1 p2)
(In (entlast))
 
Trong đó hàm IN có đối số là ename của HCN ^^
 
P/s: Sao mình lại bị trừ điểm ở bài trước vậy nhỉ :(

 

cảm ơn bạn rất nhiều về đoạn code trên nhưng mình vẫn muốn gọi lisp đó ra luôn, mình đã tìm và thử nhiều cách rồi mà ko đc hjzhjz

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 xem hàm in cần các tham số nào để gọi cho phù hợp.

Sau đây là 2 VD:

(defun k1 ()
(command "point"))
(defun k2 (p)
(command "point" p))

Hàm k1 không có tham số nên khi gọi:

(k1)

c/trình vẽ 1 điểm do user pick

Hàm k2 có tham số là 1 point, khi gọi

(k2 '(0 0 0))

c/trình vẽ 1 điểm tại (0 0 0)

Nếu gọi sai kiểu hoặc số lượng tham số, sẽ báo lỗi:

(k2 "a")

(k2 '(0 0 0) '(1 0 0))

 

Nếu chưa làm được, hãy đưa lisp in của bạn 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

Bạn xem hàm in cần các tham số nào để gọi cho phù hợp.

Sau đây là 2 VD:

(defun k1 ()
(command "point"))
(defun k2 (p)
(command "point" p))

Hàm k1 không có tham số nên khi gọi:

(k1)

c/trình vẽ 1 điểm do user pick

Hàm k2 có tham số là 1 point, khi gọi

(k2 '(0 0 0))

c/trình vẽ 1 điểm tại (0 0 0)

Nếu gọi sai kiểu hoặc số lượng tham số, sẽ báo lỗi:

(k2 "a")

(k2 '(0 0 0) '(1 0 0))

 

Nếu chưa làm được, hãy đưa lisp in của bạn lên

http://www.cadviet.com/upfiles/5/148203_intplmp1072017.rar

hình như bạn hiểu sai ý mình rồi

ở đay khi mình đang viết 1 lisp mà tới đó thay vì mình gọi lệnh 

(command "circle" v1 5 "") ; để vẽ 1 hình tròn có bán kính = 5 tại điểm v1

thì mình lại muốn gọi 1 lisp khác cụ thể là lisp (in bản vẽ) ở trên hoặc 1 lisp bất kỳ nào khác

(command "in" "")

nhưng cad ko hiểu bỏ qua lệnh (command "in" "") và thực hiện lệnh tiếp theo mà lisp này mình đã " ap " vào trước đó rồi

tóm lại mình chỉ muốn gọi đc 1 lisp khác lên bằng cách viết 1 lệnh nào đó của lisp

thanks bạ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

Tôi không hiểu sai, nhưng do từ đầu bạn không gửi lisp của bạn dùng.

Trên đó là là 2 VD, trong lisp khai báo là:

(defun k1 ..) thì khi gọi là (k1)

Trong vlx của bạn gửi, là file đã biên dịch, khai báo là

(defun C:in ..) thì khi gọi là (C:in)

Nhưng lệnh này khi chạy dùng dialog nên không giao tham số kiểu

(command "kk" pcc1 "") được, mà phải biết trong đó c/trình gọi hàm in của cad như thế nào

Tìm cách gọi hàm in trong vlx đó (nếu có) có thể còn lâu hơn tự viết hàm in riêng.

 

PS: Rất nhiều mem mới hay hỏi nhưng không đưa đầy đủ các dữ kiện kiểu này.

Tôi lấy VD 1 người hỏi muốn vào internet phải làm thế nào? (qua điện thoại)

Vì ở VN đa số người dùng Win nên sẽ trả lời là Bấm vào biểu tượng Internet Explorer.

Nếu người hỏi không biết tiếng Anh thì phải tốn thời gian mô tả icon hoặc đánh vần Internet Explorer.

Tuy nhiên điều này chưa chắc làm được vì có thể trên máy đó dùng trình duyệt khác như Firefox hoặc Chrome ... mà icon không có trên desktop hoặc taskbar. 

Còn nếu người hỏi dùng HDH Mac mà người được hỏi chưa dùng máy Mac thì xem như tịt.

Tuy nhiên trong truờng hợp này, nếu người hỏi nói là đang dùng máy Mac, người được hỏi có thể gg cho câu trả lời là Safari

Tương tự câu hỏi của bạn, không đưa file lên, lệnh in thì hỏi kk nên tôi cũng đã nghĩ là hàm kk do bạn viết.

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ôi không hiểu sai, nhưng do từ đầu bạn không gửi lisp của bạn dùng.

Trên đó là là 2 VD, trong lisp khai báo là:

(defun k1 ..) thì khi gọi là (k1)

Trong vlx của bạn gửi, là file đã biên dịch, khai báo là

(defun C:in ..) thì khi gọi là (C:in)

Nhưng lệnh này khi chạy dùng dialog nên không giao tham số kiểu

(command "kk" pcc1 "") được, mà phải biết trong đó c/trình gọi hàm in của cad như thế nào

Tìm cách gọi hàm in trong vlx đó (nếu có) có thể còn lâu hơn tự viết hàm in riêng.

 

PS: Rất nhiều mem mới hay hỏi nhưng không đưa đầy đủ các dữ kiện kiểu này.

Tôi lấy VD 1 người hỏi muốn vào internet phải làm thế nào? (qua điện thoại)

Vì ở VN đa số người dùng Win nên sẽ trả lời là Bấm vào biểu tượng Internet Explorer.

Nếu người hỏi không biết tiếng Anh thì phải tốn thời gian mô tả icon hoặc đánh vần Internet Explorer.

Tuy nhiên điều này chưa chắc làm được vì có thể trên máy đó dùng trình duyệt khác như Firefox hoặc Chrome ... mà icon không có trên desktop hoặc taskbar. 

Còn nếu người hỏi dùng HDH Mac mà người được hỏi chưa dùng máy Mac thì xem như tịt.

Tuy nhiên trong truờng hợp này, nếu người hỏi nói là đang dùng máy Mac, người được hỏi có thể gg cho câu trả lời là Safari

Tương tự câu hỏi của bạn, không đưa file lên, lệnh in thì hỏi kk nên tôi cũng đã nghĩ là hàm kk do bạn viết.

ok cảm ơn bác đã chỉ bảo, e mới tham gia nên chưa có kinh nghiệm đăng bài trên diễn đàn mong bác bỏ qua, e đã thử theo cách của bác mà cũng ko đc, mong bác chỉ bảo thêm về vấn đề này với hjzhjz

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ần giải thích thì mọi người giải thích cả rồi. Tôi làm cái ví dụ chạy 1 lệnh lisp bằng một lệnh lisp khác đơn giản bạn xem có hiểu không chứ mọi người cũng ko biết thêm cái kiểu gì nửa. Bài viết bị ko hiển thị hết bạn nhấn vào trả lời để xem đủ nội dung nhé!

(defun c:lenhmot ()

(setq diemve (getpoint "Chon diem"))
(command ".circle" "_non" diemve 30)
(princ)
)
(defun c:lenhhai ()
(setq diemve (getpoint "Chon diem"))
(command ".circle" "_non" diemve 30)
(command ".change" "last" "" "p" "c" 10 "")
(princ)
)
(defun c:lenhba ()
(c:lenhmot)
(command ".change" "last" "" "p" "c" 10 "")
(c:lenhmot)
(princ)
)
  • 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ần giải thích thì mọi người giải thích cả rồi. Tôi làm cái ví dụ chạy 1 lệnh lisp bằng một lệnh lisp khác đơn giản bạn xem có hiểu không chứ mọi người cũng ko biết thêm cái kiểu gì nửa. Bài viết bị ko hiển thị hết bạn nhấn vào trả lời để xem đủ nội dung nhé!

(defun c:lenhmot ()

(setq diemve (getpoint "Chon diem"))
(command ".circle" "_non" diemve 30)
(princ)
)
(defun c:lenhhai ()
(setq diemve (getpoint "Chon diem"))
(command ".circle" "_non" diemve 30)
(command ".change" "last" "" "p" "c" 10 "")
(princ)
)
(defun c:lenhba ()
(c:lenhmot)
(command ".change" "last" "" "p" "c" 10 "")
(c:lenhmot)
(princ)
)

 

ok e đã làm đc thanks a nhiều!!!

cho e hỏi thêm câu nữa nha a,

a chỉ e cách xác định toa độ trong 3d, cụ thể là 1 hình hộp chữ nhật, x,y,z là kích thước mình nhập vào đễ vẽ đc hình CN đó trong 3d cad nha a

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ột điểm 3d xác định trong lisp như sau:

(list x y z)

Trong đó x y z là tọa độ tương ứng trục x y và z

Ví dụ lisp vẽ box kích thước x=1 y=2 và z=3 tại điểm chọn bằng lisp"

Bài viết bị ko hiển thị hết bạn nhấn vào trả lời để xem đủ nội dung nhé!

(defun c:lenhbon ()

(setq diemve (getpoint "Chon diem"))
(command "box" "_non" diemve "_non" (list (+ 1 (car diemve))(+ 2 (cadr diemve))(+ 3 (caddr diemve))) "")    
(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ột điểm 3d xác định trong lisp như sau:

(list x y z)

Trong đó x y z là tọa độ tương ứng trục x y và z

Ví dụ lisp vẽ box kích thước x=1 y=2 và z=3 tại điểm chọn bằng lisp"

Bài viết bị ko hiển thị hết bạn nhấn vào trả lời để xem đủ nội dung nhé!

(defun c:lenhbon ()

(setq diemve (getpoint "Chon diem"))
(command "box" "_non" diemve "_non" (list (+ 1 (car diemve))(+ 2 (cadr diemve))(+ 3 (caddr diemve))) "")    
(princ)

)  

thanks a nhiều

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

×