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.
Đăng nhập để thực hiện theo  
Danh Cong

Test Post Bài

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

Các anh chị kiểm tra giúp em đoạn code sau em sai chỗ nào với ạ. Em thử test đoạn code em viết ( em viết tập tành- chứ ko có mục đích sâu xa gì )

Y/c lisp: Cắt 1 đường thẳng bởi các điểm point nằm trên đường thẳng đó, các điểm point không theo thứ tự

 

Sơ lược các ý như sau: 

B1:  Tạo ra list tập hợp các điểm point nằm trên đường Polyline:   < lstp >

B2: Tạo ra list tập hợp khoảng cách tính từ điểm đầu trên Polyline tới điểm point < Lstdis >

B3: Sắp xếp list danh sách khoảng cách theo thứ tự giảm dần. Trả về chỉ số của phần tử trong danh sách list khoảng cách < Lstindex >

 

(Mục đích của việc sắp xếp này là em đọc phần viết của anh "GiaBach" nói: Sau khi break thì Ename của đối tượng sẽ giữ lại đối với phần nào gắn liền với thằng StartParam.) nên em mới nảy ra ý tưởng sắp xếp này. http://www.cadviet.com/forum/topic/15057-lisp-bien-1-phan-cua-doan-thang-tro-thanh-net-hidden2/?p=79845

 

B4. Dựa vào chỉ số , em sắp xếp lại thứ tự list điểm point < Lstre >

Sau đó thì Break cái đường Polyline đấy ra.  

 

Kết quả: Em cắt cái đường line đó tại mỗi 1 điểm. Hổng hiểu là em đang sai đoạn nào.

Code em viết chỉ mang tính chất test, nên còn thừa thiếu nhiều, mong các anh 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

Lisp em thử test: ^^

 

(defun c:Test ()

  (and
  (setq obj (car (entsel "Chon poline: \n")))
  (setq poit (ssget))
  )
 
  (setq lstp nil
i     0)
         
  (repeat (sslength poit)
          (progn
       (setq lstp (append (list (cdr (assoc 10 (entget (ssname poit i))))) lstp)
     i (+ 1 i))
 )
  )
 
  (setq lstdis nil
ii      0)
  (repeat (sslength poit)
 (progn
      (setq lstdis (append (list (vlax-curve-getDistAtPoint obj (nth ii lstp))) lstdis)
     ii (+ 1 ii))
   )
  )
  (setq lstindex (vl-sort-i lstdis '>))
  (setq lstre nil)
  (foreach tt lstindex
      (setq lstre (append lstre (list (nth tt lstp)))))
  (foreach pp lstre
           (command "break" obj "non" pp "non" pp))
 
  (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

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

Đăng nhập để thực hiện theo  

×