Đến nội dung


Hình ảnh
5 stars - based on 24598 reviews
* - - - - 1 Bình chọn

Test Post Bài


  • Please log in to reply
1 reply to this topic

#1 Danh Cong

Danh Cong

    biết dimstyle

  • Moderator
  • PipPipPipPipPip
  • 383 Bài viết
Điểm đánh giá: 84 (tàm tạm)

Đã gửi 04 January 2017 - 02:32 PM

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.c...idden2/?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 ạ. ^^


  • 0

            *** Vô lo - Vô nghĩ - Vô sầu hận ***
*** Chẳng thương - Chẳng giận - Chẳng đau lòng ***


#2 Danh Cong

Danh Cong

    biết dimstyle

  • Moderator
  • PipPipPipPipPip
  • 383 Bài viết
Điểm đánh giá: 84 (tàm tạm)

Đã gửi 04 January 2017 - 03:00 PM

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))

 


  • 0

            *** Vô lo - Vô nghĩ - Vô sầu hận ***
*** Chẳng thương - Chẳng giận - Chẳng đau lòng ***