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

Doan Van Ha

Moderator
  • Số lượng nội dung

    6.220
  • Đã tham gia

  • Lần ghé thăm cuối

  • Ngày trúng

    446

Bài đăng được đăng bởi Doan Van Ha


  1. 15 phút trước, levietmy đã nói:

    Cám ơn bạn.

    Có lẽ mình diễn đạt chưa rõ ràng nên code bạn trả lời chưa đúng ý mình.

    Ý là mình muốn chọn ename của đối tượng qua một điểm p cho trước, mình đang dùng hàm (nentselp p). Nhưng hàm này cho ra ename (do mình chọn trúng nằm trong cái block) chứ không phải cái ename đó giống như khi dùng ssget hay entsel (khi dùng 2 hàm này thì 0 có đối số điểm p).

    Ví dụ khi dùng (setq ss (ssget)) (setq name (ssname ss 0)), cái name này chính là cái mình ý mình muốn chọn thông qua cái điểm p.

    Răng rứa hè? Vẫn lấy ename của block
    (cdr (assoc 330 (entget (car (nentselp (getpoint))))))

    • Like 1

  2. 8 phút trước, duy782006 đã nói:

    (setq sl (getstring 5"\nSo luong:"))

    -Lưu ý con số 5 này nhé, nếu không có nó thì khi nhập chuổi nút Space sẽ tương đương với enter nghĩa là kết thúc quá trình nhập chuổi, còn có nó thì Space là khoảng trắng.
    Tùy theo nhu cầu chuổi cần nhập mà quyết định có số 5 này hay không.

    initget thì getkword chứ đâu phải getstring mà space được.


  3. 9 phút trước, thewind0910 đã nói:

    GPT code đc lisp mà bác. Nma k phải lisp nào cũng hoạt động theo đúng ý hoặc ko hoạt động đc.

    Tại mình cũng k hiểu chứ nếu ae hiểu lấy ý tưởng nó code rồi sửa cho hoàn chỉnh là ok mà

    1. GPT nó code được mấy bài toán đơn giản thôi, ví dụ vẽ đường thẳng nếu biết 2 điểm chẳng hạn.

    Còn nếu GPT mà code được những yêu cầu phức tạp thì con người ở giá hết trơn.

    2. Bạn @vietduc147258 đã gởi bạn cái lisp ấy dùng được trong việc tạo layer có độ MỜ, nhưng bạn không chịu (hoặc không biết?) nghiên cứu thôi.

    • Vote tăng 1

  4. 21 phút trước, tannguyen291 đã nói:

    thi thoảng đánh dấu '(lambda thì không đặt được break point phải viết về function.

    Nhưng em thấy dùng lệnh chưa có khác gì nhau.

    sau khi tra tài liệu thì với file *.lsp không có gì khác biệt tuy nhiên khi compile qua .fas hoặc  .vlx  thì viết tường minh sẽ oke hơn ạ

    image.png.03741e29d31bf18df823aba9752e85c5.png

    Anh toàn viết '(lambda. Không hề viết (function (lambda. Nhưng khi chuyển qua vlx and fas đều không hề lỗi. Nên chưa hiểu lắm.
    Còn dùng 2 dấu phẩy trên thì mù tịt luôn.


  5. 4 phút trước, limfx đã nói:

    Khi dùng '' và ' nhiều quá code đọc khó hiểu

    Nên cách rút gọn chỉ cho người chuyên nghiệp. Em nghĩ vậy

    Khi người ta xây dựng 1 ngôn ngữ lập trình thì không có gì thừa đâu bạn. Chỉ là mình chậm hiểu thôi. Và chắc họ cũng không xây dựng cho người chuyên nghiệp và người kém chuyên nghiệp đâu.


  6. 26 phút trước, ndtnv đã nói:

    Cách viết '''((u v) tôi copy của 1 member trên cadviet từ lâu rồi, vì ngắn hơn nên dùng thôi, cũng như '(1 2) ngắn hơn (list 1 2) vậy

     

    '(1 2) và (list 1 2) nó khác nhau là một bên thì các element bên trong là phần tử tường minh, còn một bên thì bên trong có thể tường minh hoặc là biến được lấy từ hàm setq.
    Còn cách viết dùng 2 dấu phẩy trên này khó hiểu quá, và cũng mới gặp lần đầu.
    Em "lambda" đang tự hỏi: sinh em ra làm gì cho dài dòng mà không dùng 2 dấu phẩy trên cho gọn?

     

    • Vote tăng 1

  7. 30 phút trước, ndtnv đã nói:

    Vì không có bản vẽ nên bạn tự đặt thuộc tính các đoạn thẳng cần vẽ

    
    (defun C:TOP ( / l p q)
        (foreach e (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "LINE"))))))
            (setq p (cdr (assoc 10 (entget e))) q (cdr (assoc 11 (entget e))))
            (setq l (cons (if (> (cadr p) (cadr q)) p q) l))
        )
        (setq l (vl-sort l ''((u v) (< (car u) (car v)))))
        (mapcar ''((u v) (entmakex (list '(0 . "LINE") (cons 10 u) (cons 11 v)))) l (cdr l))
    )
    
    

    Cho hỏi tí:

    1. Tại sao viết '''((u v) thì tương đương với '(lambda(u v)   ?
    2. Cách viết 1 ngoài ngắn gọn thì có gì ưu điểm so với cách viết dùng lambda? Và liệu lambda có phải là hàm thừa?


  8. 46 phút trước, thewind0910 đã nói:

    Em đang có lisp thêm dấu ngoặc () vào text nhờ các anh chị viết thêm cho em 1 lisp thành thêm dấu ngoặc nhọn <> vào text được chọn vs ạ.
    Tại ngôn ngữ code toàn ngoặc ))(( nên em k biết sửa ở chỗ nào

    Thanks anh chị

    G-Them () text-`.lsp

      (setq ttdangt "(") 
      (setq ttdangs ")") 

    Thành:

      (setq ttdangt "<") 
      (setq ttdangs ">") 
     

    • Vote tăng 1
×