Chuyển đến nội dung
Diễn đàn CADViet
ssg

Hướng dẫn lập trình Lisp

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

Nhưng em muốn đưa một giá trị từ một biến a vào trong cái record, nó cứ báo lỗi bad DXF group miết à.

Cụ thể là em là em viết đoạn lisp này k biết sai ở chỗ mô:

(setq ES (entsel) LIST (entget (car ES)) LIST (subst '(1 . a) '(1 . "") LIST))

Có cách gì để đưa biến vào trong record không ạ.

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

Nhưng em muốn đưa một giá trị từ một biến a vào trong cái record, nó cứ báo lỗi bad DXF group miết à.

Cụ thể là em là em viết đoạn lisp này k biết sai ở chỗ mô:

(setq ES (entsel) LIST (entget (car ES)) LIST (subst '(1 . a) '(1 . "") LIST))

Có cách gì để đưa biến vào trong record không ạ.

Bạn không thể viết '(1 . a) mà bạn phải viết (cons 1 a), giải thích hơi khó hiểu tí nhưng dần bạn sẽ hiểu.

  • 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

Mình đã dùng hàm (cons 1 a). Mình đã hiểu. Cái a phải là chuỗi. Mình chuyển nó sang chuỗi thì nó đã nhận. Cảm ơn bạn.

Cảm giác viết xong 1 cái Lisp thật là phê :3

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

Cho em hỏi làm sao để thêm 1 list vào 1 list phức hợp có sẵn ạ. Tìm hoài có cái add_list mà hình như không phả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

Cho em hỏi:

      Em có một dotted pair như sau: (0 . "LINE")

      Tại sao dùng hàm cdr thì nó trả về "LINE" (đáng nhẽ là: ("LINE") chứ)

      Còn dùng hàm cadr thì nó báo lỗi bad argument type: consp "LINE" (đáng nhẽ trả về : "LINE" chứ)

Rất mong được các anh giải đáp.

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

Cho em hỏi:

      Em có một dotted pair như sau: (0 . "LINE")

      Tại sao dùng hàm cdr thì nó trả về "LINE" (đáng nhẽ là: ("LINE") chứ)

      Còn dùng hàm cadr thì nó báo lỗi bad argument type: consp "LINE" (đáng nhẽ trả về : "LINE" chứ)

Rất mong được các anh giải đáp.

Dotted pair là 1 kiểu list đặc biệt nên nó thế  :lol:

Lý luận "đáng lẽ phải thế này thế nọ" của bạn cũng không đúng, vì trong dotted pair còn có dấu chấm (.) chứ không phải chỉ là '(0 "LINE").

Vì đặc biệt nên thậm chí (length '(0 . "LINE")) >> error, trong khi (length '(0 "LINE") >> 2

  • 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

Em muốn lấy diện tích của 1 pline kín. Sao trong danh sách record của nó không có nhỉ.

Các anh giúp em vớ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

Làm phiền anh nói rõ tên đầy đủ được không ạ. Em mới học Lisp tập tõm thôi.

Cảm ơn anh

  • 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

Ví dụ:

(vla-get-area (vlax-ename->vla-object (car (entsel "\nChon doi tuong de lay dien tich: "))))

Anh Hà có tài liệu học lisp của các hàm trên không, em có 2 tập tự học auto Lisp nhưng không thể tìm ra các hàm trên. Mong anh chỉ giáo và chia sẻ. Em cảm ơ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
Chào anh SSG

Trước tiên em đã dùng thử vl-string-translate, và viết được 2 cái lisp sau

1. Lisp chuyển ABC thành 123

.......................

 

2. Lisp chuyển ABC tiếng Anh thành ABC tiếng Nhật.

 

(defun c:hk ( / e d nd td )
;;; (setq chuoi_tim (getstring t "Enter string to search for: ")
;;; chuoi_thaythe (getstring t "Enter string to replace with: "))
(setq chuoi_tim "A"
chuoi_thaythe "A")
(setq e (car(entsel))
d (entget e)
nd (cdr(assoc 1 d))
td (vl-string-subst chuoi_thaythe chuoi_tim nd)
d (subst (cons 1 td) (assoc 1 d) d)
)
(entmod d)
(princ)
)

bạn ơi cho hỏi đoạn code trên nếu bổ sung thêm ký tự ''B'' , ''C'' ...,''X'',.. vào chuoi_tim và chuoi_thaythe nữa được không cho mình xin với, cảm ơn 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

Chào bạn Tuanthietkedien

Mình đã cài rồi mà tại sao cái chữ CAD-2008 Tiếng Nhật vẫn không hiện được

chữ CAD-2008 tiếng Nhật nó ra như cũ thế này : \M+18262\M+18260\M+18263\M+1815B\M+18251\M+1824F\M+1824F\M+18257

và theo mình suy luận như trên :

Tức là chữ C trong tiếng Nhựt tương đương với chữ \M+18262 (trong tiếng Anh)

Tức là chữ A trong tiếng Nhựt tương đương với chữ \M+18260 (trong tiếng Anh)

Tức là chữ D trong tiếng Nhựt tương đương với chữ \M+18263 (trong tiếng Anh)

Không hiểu sao chữ Nhật nó không hiện. Và mình đã viết đoạn Lisp này và đã chạy thành công.

Bạn thử xem nhé :


 

bạn có lisp chuyển ngược từ kiểu gỏ tiếng Nhật sang tiếng Anh ko cho mình xin với, cảm ơn 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

Nhờ bác nào viết giùm em cái lisp như thế này được không ạ.
em đang ghi text độ dài cho các đoạn ống, mà em đang thủ công dim rồi tạo text ghi nên lâu ạ.
Cụ thể em cần lisp như thế này:

Lệnh - chọn điểm đầu "cách" chọn điểm cuối "cách"  Nhập tiền tố "cách" Nhập hậu tố "cách" chọn điểm đầu, cuối làm chân text sẽ ra text cầ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 sao bạn không tạo Dimstyle tắt Extension và Dimension Line (supress), tiền tố hậu tố như bạn muốn rồi Dim ?

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ác Bác cho em hỏi, em có 2 cái lisp đo chiều dài ghi đè lên text. Một cái đo đường line với 1 cái đo đường ML. không hiểu sao cái đo đường ML nó lại làm nhảy vị trí của text khi sửa nó. Bác nào chỉ hộ em được không ạ.http://www.cadviet.com/upfiles/7/147967_do_ml_co_san_d_l.lsphttp://www.cadviet.com/upfiles/7/147967_do_line_nhap_tien_to.lsp

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


×