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.
ssg

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

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

HDT    3

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
Doan Van Ha    2.678

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
HDT    3

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
HDT    3

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
HDT    3

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
Doan Van Ha    2.678

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
HDT    3

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
HDT    3

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
HDT    3

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

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
ketxu    2.652

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


×