Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Nguyen Hoanh

Học AutoLisp

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

Phần 1: bắt đầu

 

Đầu tiên, chúng ta hãy bắt đầu bằng chương trình viết chữ.

 

Hãy tạo một file mới và save nó với tên hoclisp.lsp.

(princ "\nChao cadviet")

(princ)

Đây là đoạn mã đơn giản nhất của AutoLisp nhằm viết ra một dòng 'Chao cadviet' trên màn hình nhập dữ liệu của autocad. để sử dụng, appload file hoclisp.lsp này. ta sẽ thấy trên màn hình xuất hiện chữ Chao cadviet.

 

Đi sâu vào phân tích lệnh, ta thấy: mỗi hàm của cad được bắt đầu bằng dấu '(' ngay sau đó là tên hàm, tiếp đến là thông số của hàm (có thể có, có thể không có) và kết thúc bằng dấu ')' Trong trường hợp này princ là tên hàm, "\nChao cadviet" là tham số của hàm princ.

 

Trong hai câu lệnh gọi hàm vừa rồi, câu thứ nhất là để viết chữ ra màn hình text, câu lệnh thứ 2 dùng để ẩn kết thúc mà không hiển thị thêm gì cả. Nếu thiếu câu lệnh thứ 2, bạn sẽ nhìn thấy 'Chao cadviet"\nChao cadviet"' trên màn hình, trong đó "\nChao cadviet" là kết quả của hàm (princ "\nChao cadviet").

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
quantvxd    0

bác hoành ơi e muốn tạo lisp là lưu và thoát bản vẽ như nào ạ

ví dụ là

e muon in xong bản vẽ thì tự động lưu và thoát bản vẽ luôn ý

In thì phải tự thực hiện thôi bạn, có chăng nên tách yêu cầu ra.

Ví dụ muốn lưu và thoát thì có thể dùng

(defun c:QQ2()

(command "CLOSE" "yes")

)

mình nghĩ như thế hay hơn

P.s có nhầm lẫn đừng vội dùng nhé, để mình xem lạ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

Xin chào a Hoành, tôi có sử dụng 1 số ct AutoLisp cho công việc của mình (nhưng không rành lập trình AutoLisp), trong quá trình sử dụng tính diện tích trên bản vẽ cad có 1 số vấn đề cần a góp ý điều chỉnh dùm

Tôi có đính kèm 2 file AutoLisp gồm:

1. Tính diện tích liên tục dùng lệnh tdt

2. Tính diện tích dùng lệnh ss

Tôi thích dùng file lisp1 để tính dtich rất nhanh, nhưng tôi thấy file lisp2 có 1 chức năng rất hay mà tôi rất muốn nhờ anh điều chỉnh file lisp1 dùm, đó là trước khi ghi ra số dtich của 1 hình thì sẽ hatch vào hình đó trước rồi mới ghi ra số(vì muốn nhìn thấy được hình dáng vị trí của hình mà minh vừa chọn, tính năng có trong file lisp2).

http://www.cadviet.com/upfiles/5/149234_tinh_dtich_ltuc__tdt_.lsp

http://www.cadviet.com/upfiles/5/149234_tinh_dtich__ss_.lsp

Rất mong nhận được sự giúp đỡ của anh,

Cám ơn anh rất nhiều.

  • 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
lisp_basic    0

Mình thử viết một lisp dựng hệ lưới trục cho bản vẽ như sau, nhưng khi thực hiện thì bị lỗi “bad argument type: number: nil” và không vẽ ra được hệ trục, chỉ vẽ được các đường song song trục Ox, mong mọi người xem và chỉ giùm mình với:
 
 

(defun noiX(/ a b i j slx n)
  (setq slx (getreal "\n Nhap so luoi truc X:") i 1)
  (setq a (list 0) k 0 x 0)
  (while (<= i (- slx 1))
         (setq j (getreal "\n Nhap khoang cach:"))
         (setq n (+ x j))
         (setq x n)                ;;tinh tong khoang cach cac truc
         (setq b (cons (+ j 0) a)) ;;ghep khoang cach vao thanh 1 list
(setq a 
         (setq i (1+ i))
);;ket thuc while
  (setq xn (cdr (reverse a)))      ;;dao nguoc list va loai bo phan tu dau
  (princ)
  (princ xn)
  (princ x)
 
  )
;;------------------------------------------------------
(defun noiY(/ i sly a b j n)
  (setq sly (getreal "\n Nhap so luoi truc Y:") i 1)
  (setq a (list 0) k 0 y 0)
  (while (<= i (- sly 1))
         (setq j (getreal "\n Nhap khoang cach:"))
         (setq n (+ y j))
         (setq y n)
         (setq b (cons (+ j 0) a))
(setq a 
         (setq i (1+ i))
  )
  (setq yn (cdr (reverse a)))
  (princ)
  (princ yn)
  (princ y)
  )
;;-------------------------------------------------------
(defun chendiem()
  (setq pt (getpoint "\n Nhap toa do diem chen he truc:"))
  )
;;-------------------------------------------------------
(defun vtx(/ i j k)
  (command "line" pt (polar pt 0 x) "")
  (setq i 0 k 0)
  (while (<= i (length yn))
    (setq j (+ (nth i yn) k))
    (command "line" (polar pt (/ pi 2) j) (polar (polar pt (/ pi 2) j) 0 x) "")
    (setq k j)
    (setq i (1+ i))
    )
)
;;-------------------------------------------------------
(defun vty(/ i j k)
  (command "line" pt (polar pt (/ pi 2) y) "")
  (setq i 0 k 0)
  (while (<= i (length xn))
    (setq j (+ (nth i xn) k))
    (command "line" (polar pt 0 j) (polar (polar pt 0 j) (/ pi 2) y) "")
    (setq k j)
    (setq i (1+ i))
    )
)
 
;;-------------------------------------------------------
(defun bang()
  (noiX)
  (noiY)
  (chendiem)
  (vtx)
  (vty)
  (command)
)

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
dungndgeo    0

Lâu rồi không thấy bác Hoành viết tiếp nhỉ? Những bài viết cua bác (và của nhiều mem khác nữa) rất hữu ích cho những người mới học như tôi. Cảm ơn các bác nhiều nhé!

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
HUNG NET    5

Công ty mình đang tuyển sinh viên mới ra trường biết vẽ jwcad lương 7.5tr bạn nhé. bạn nên học phần mềm jw cad vì ít người biết phần mềm này nên rất dễ xin việc bạn nhé. 

thông tin đến bạn.

 

Hiện nay công ty Nhật Bản sang Việt Nam Kinh Doanh rất nhiều về các mảng xây dựng, cơ khí,.. Nên phần mềm jw cad không thể thiếu đối với Công ty Nhật tại Việt Nam. Nhưng chắc có lẽ ít người biết đến phần mềm jw cad này nên Đó là cơ hội, bạn có công việc ổn định về mức lương cũng như chế độ tốt. Vì vậy hôm nay Mình xin giới thiệu đến các bạn các khóa học jw cad. bạn nào học thì liên hệ qua Trung Tâm 

sdt 0165 2049 853.
Xin chân thành cảm ơn

  • Vote giảm 2

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
gkhtdd    2

Bác nào làm ơn cho e hỏi, e có 1 yêu cầu hơi oái oăm là: muốn chỉnh đối tượng đường ghi kích thước (thẳng và chéo) riêng lẻ (là đối tượng được chọn) thành như sau:

-layer: defpoint

-text colour: 1 (đỏ)

-đường kích thước và đường gióng đều là màu 8 (màu ghi)

 

Mà em tìm mãi k biết cách viết, xin các huynh chỉ giáo giùm.

 

HuHu

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
Danh Cong    110

Hề hề: Ko oái oăm đâu. ^^

Gợi ý cho bạn cái code - áp dụng cho 1 lần chọn. Hề hề.

 

(defun c:test ()

 
(setq object (car (entsel "Chon duong kich thuoc: ")))
(setq dxfobject (entget object))
(setq dxfobject (subst (cons 8 "defpoint") (assoc 8 dxfobject) dxfobject))
(entmod dxfobject)
 
 
(VL-LOAD-COM)
(vla-put-TextColor  (vlax-ename->vla-object object) 1 )
(vla-put-DimensionLineColor  (vlax-ename->vla-object object) 8 )
(vla-put-ExtensionLineColor  (vlax-ename->vla-object object) 8 )
(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
binhlua8x    2

Các bác cho hỏi xíu!

 

Em đang học về hàm lặp "repeat". Muốn chuyển tất cả các đối tượng em chọn về layer "2" (đã tạo sẵn)

Em xài code sau:

 

(defun c:q2()
(setq tdt (ssget))
(setq sdt (sslength tdt))
(setq index 0)
 
(repeat sdt
(setq abc (ssname tdt index)
      index (+ 1 index)
)
(command ".change" abc "" "p" "la" 2 "")
)
(princ)
)
 
 
Nhưng khi chạy thì bị lỗi. Em biết là mình bị nhầm chỗ nào đó nhưng mò mãi không ra. Mong các bác chỉ giáo!

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
Tue_NV    3.841

 

Các bác cho hỏi xíu!

 

Em đang học về hàm lặp "repeat". Muốn chuyển tất cả các đối tượng em chọn về layer "2" (đã tạo sẵn)

Em xài code sau:

 

(defun c:q2()
(setq tdt (ssget))
(setq sdt (sslength tdt))
(setq index 0)
 
(repeat sdt
(setq abc (ssname tdt index)
      index (+ 1 index)
)
(command ".change" abc "" "p" "la" 2 "")
)
(princ)
)
 
 
Nhưng khi chạy thì bị lỗi. Em biết là mình bị nhầm chỗ nào đó nhưng mò mãi không ra. Mong các bác chỉ giáo!

 

 

Chạy không có lỗi 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ạ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


×