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.
Jin Yong

Hỏi về Lisp (thuật toán, ý tưởng, coding,...)

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

ketxu    2.653

Bài toán dễ dàng giải quyết bằng mapcar hoặc các vòng lặp mà trinhhoanghieu090 ?

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
pphung183    425

Các bác ơi cho em hỏi chút, trong một list có thể gồm nhiều phần tử giống nhau, ví dụ ( "A" "A" 1 1 3 4 0 4). Em muốn xóa các phần tử giống nhau này đi chỉ để lại một phần tử duy nhất, có hàm nào làm được việc này không các bác. Như List ở trên sau khi xử lý sẽ thành ( "A" 1 3 4 0)

Học thầy xong trả hết cho thầy :lol:

(defun TraThay (lst / L x) ;;;Delete same items in List
(foreach x lst 
(if (not (member x L)) (setq L (append L (list x))))) L)


Test : (TraThay (list "A" "A" 1 1 3 4 0 4))

  • 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

Học thầy xong trả hết cho thầy :lol:

(defun TraThay (lst / L x) ;;;Delete same items in List
(foreach x lst 
(if (not (member x L)) (setq L (append L (list x))))) L)


Test : (TraThay (list "A" "A" 1 1 3 4 0 4))

ý bác khó hiểu quá! thanks bác nha. :D

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
thanhduan2407    227

Các bác cho em hỏi 1 số biến với!

Em muốn cài đặt 1 số thông số này cho việc đo góc: (DIMSAH ;    DIMBLK1 ; DIMBLK2 ; DIMSCALE) ở trong Standards nhưng chưa biết cách. Nhờ các bác chỉ cho em với

36665_11.jpg

 

36665_22.jpg

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
thanhduan2407    227

Cảm ơn bác Hạ. Tuy nhiên nó lại chạy vào Style Overrides. Chính điều khó này nên em hỏi các bác để sao cho nó nhảy vào Standards bác ạ!

36665_555_1.jpg

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

Học thầy xong trả hết cho thầy :lol:

(defun TraThay (lst / L x) ;;;Delete same items in List
(foreach x lst 
(if (not (member x L)) (setq L (append L (list x))))) L)


Test : (TraThay (list "A" "A" 1 1 3 4 0 4))

 

Việc so sánh không nên sử dụng với hàm member. Có những TH tuy là bằng nhau nhưng có sự sai số

Nên sử dụng hàm equal cho chắc chắ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

 

Việc so sánh không nên sử dụng với hàm member. Có những TH tuy là bằng nhau nhưng có sự sai số

Nên sử dụng hàm equal cho chắc chắn.

  

Command -dimstyle và lựa chọn Save

P/s Bác Tuệ : giống mà bác, k phải bằng ^^

Thực ra mục đích của em là loại bỏ những phần tử trùng nhau trong 2 tập hợp text và đường thẳng giống lệnh overkill. Text thì đơn giản rồi còn đường thẳng đang gặp chút khó khăn nếu như chiều dài của chúng không băngd nhau. Em đã cố gắng đơn giản hoá vấn đề nhất để nhờ mọi người tư vấn và còn để cho não nó vận động cho khỏi teo :D

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
thanhduan2407    227

  Thực ra mục đích của em là loại bỏ những phần tử trùng nhau trong 2 tập hợp text và đường thẳng giống lệnh overkill. Text thì đơn giản rồi còn đường thẳng đang gặp chút khó khăn nếu như chiều dài của chúng không băngd nhau. Em đã cố gắng đơn giản hoá vấn đề nhất để nhờ mọi người tư vấn và còn để cho não nó vận động cho khỏi teo :D

Ném nó vào 1 danh sách rồi so sánh lọc loại bỏ.

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

  Thực ra mục đích của em là loại bỏ những phần tử trùng nhau trong 2 tập hợp text và đường thẳng giống lệnh overkill. Text thì đơn giản rồi còn đường thẳng đang gặp chút khó khăn nếu như chiều dài của chúng không băngd nhau. Em đã cố gắng đơn giản hoá vấn đề nhất để nhờ mọi người tư vấn và còn để cho não nó vận động cho khỏi teo :D

 

Giờ là không bằng nhau chứ không phải là giống nhau nữa rồi!

Nên sử dụng đoạn code có sử dụng hàm equal hơn là đoạn code có sử dụng hàm member!

  • 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

Tiện đây cho em hỏi thêm về hàm loại bỏ của bác thanhduan247 ở trên với, kiểu lặp hàm con trong hàm con như thế thì gọi là lặp kiểu gì, em cũng vẫn còn rất mơ hồ về vấn đề này để tự áp dụng cho bản thân.

(defun LM:_UniqueFuzz ( l fz )
    (if l
      (cons (car l)
        (LM:_UniqueFuzz
          (vl-remove-if '(lambda ( x ) (equal x (car l)  fz)) (cdr l)) fz
        )
      )
    )
)

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

 

Tiện đây cho em hỏi thêm về hàm loại bỏ của bác thanhduan247 ở trên với, kiểu lặp hàm con trong hàm con như thế thì gọi là lặp kiểu gì, em cũng vẫn còn rất mơ hồ về vấn đề này để tự áp dụng cho bản thân.

(defun LM:_UniqueFuzz ( l fz )
    (if l
      (cons (car l)
        (LM:_UniqueFuzz
          (vl-remove-if '(lambda ( x ) (equal x (car l)  fz)) (cdr l)) fz
        )
      )
    )
)

 

Đó là thuật toán đệ quy bạn ạ. "Một đối tượng được gọi là đệ quy nếu nó được mô tả thông qua định nghĩa của chính nó."

  • 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

Thanks bác Tue_NV, quay lại vấn đề đoạn thẳng trùng nhau (nằm đè lên nhau), em mới chỉ nghĩ ra được điều kiện để kiểm tra như sau:

-Tính chiều dài các đoạn thẳng

- Sắp xếp theo thứ tự chiều dài nhỏ dần trong list bằng vl-sort

-Dùng hàm của bác thanhduan247 ở trên để kiểm tra điều kiện:

Chiều dài đoạn thẳng lớn hơn = [tổng khoảng cách của các đầu đoạn thẳng lớn đến các đầu đoạn thẳng nhỏ

                                                                                                                       hoặc đến các đầu của (reverse của đoạn thẳng nhỏ)]

                                                     + với chiều dài đoạn thẳng nhỏ

                                                                                                                      kèm sai số.

Mong các bác chỉ giáo thêm133631_untitled_1.jpg

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
thanhduan2407    227

Các bác cho em hỏi về entmod Polyline.

Em muốn thay đổi danh sách tọa độ đỉnh mới cho 1 polyline mà vẫn giữ nguyên các thuộc tính polyline đó thì hàm sẽ ntn ạ?

Entmod 2DPolyline và Entmod 3DPolyline có khác nhau nhiều lắm ko ạ?

Em cảm ơn các bác 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
nhoclangbat    382

- hi trong bài nhoc đc học của anh Ket, có viết hàm entmod với trường hợp là polyline, ko biết có giúp  đc gì cho anh Duan ko, còn vụ 3dpolyline nhoc chưa mò tới ^^

(foreach x lst_new
			(if (= (car x) 10) (setq lstcu (subst x (assoc 10 lstcu) lstcu)) (setq lstcu (append lstcu (list x)))))

- lst_new là danh sách tọa độ mới, lst_cu là là danh sách khi entget polyline 

  • 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
thanhduan2407    227

- hi trong bài nhoc đc học của anh Ket, có viết hàm entmod với trường hợp là polyline, ko biết có giúp  đc gì cho anh Duan ko, còn vụ 3dpolyline nhoc chưa mò tới ^^

(foreach x lst_new
			(if (= (car x) 10) (setq lstcu (subst x (assoc 10 lstcu) lstcu)) (setq lstcu (append lstcu (list x)))))

- lst_new là danh sách tọa độ mới, lst_cu là là danh sách khi entget polyline 

Cảm ơn em nhé! ^^

Anh test đã. ^^

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
thanhduan2407    227

Nhoclangbat xem lại giúp anh nhé!

(foreach x lst_new
			(if (= (car x) 10) (setq lstcu (subst x (assoc 10 lstcu) lstcu)) (setq lstcu (append lstcu (list x)))))

Cấu trúc này ko ổn.

 

Em đưa lên cả đoạn để anh xem đi.

 

lst_new là list tọa độ => (car x) = Tọa độ X, đâu bằng 10

 

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


×