Đến nội dung


Hình ảnh

nối đường 3dpolyline tự động


  • Please log in to reply
9 replies to this topic

#1 tienlong

tienlong

    Chưa sử dụng CAD

  • Members
  • Pip
  • 2 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 30 November 2011 - 05:24 PM

http://www.cadviet.c...gdanvietlsp.zip
  • 0

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 01 December 2011 - 03:12 PM

Viết giùm cho bạn đây luôn! Lần sau y/c thì phải ghi rõ ràng trên CADViet, chứ đừng gói nó vào 1 file như thế là không nên.
Thân thương!

;Doan Van Ha - CADViet.com. 01/12/2011
;Noi cac block diem 3D thanh Polyline theo thu tu ten diem.
(defun c:HA (/ lst)
(vl-load-com)
(command "undo" "be")
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq lst (acet-ss-to-list (ssget (list (cons 0 "insert")))))
(setq lst (vl-sort lst '(lambda (x y) (<
(atoi (cdr (assoc 1 (entget (entnext x)))))
(atoi (cdr (assoc 1 (entget (entnext y)))))))))
(command "3dpoly")
(foreach x lst
(command (cdr (assoc 10 (entget x)))))
(command "")
(setvar "osmode" oldos)
(command "undo" "e")
(princ))

  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#3 tienlong

tienlong

    Chưa sử dụng CAD

  • Members
  • Pip
  • 2 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 01 December 2011 - 03:33 PM

Cảm ơn Bác nhiều nhé! khổ quá em mới lên lần đầu nên chưa biết mấy
một lần nữa cảm ơn bác nhé! em dùng thử rồi chạy tít lắm.
  • 0

#4 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 01 December 2011 - 03:41 PM

Cảm ơn Bác nhiều nhé! khổ quá em mới lên lần đầu nên chưa biết mấy
một lần nữa cảm ơn bác nhé! em dùng thử rồi chạy tít lắm.


Cám ơn tới 2 lần mà không nhấn nỗi cái "Like this" ở góc phải à. Hì hì hì!
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#5 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 01 December 2011 - 04:33 PM

Viết giùm cho bạn đây luôn! Lần sau y/c thì phải ghi rõ ràng trên CADViet, chứ đừng gói nó vào 1 file như thế là không nên.
Thân thương!


;Doan Van Ha - CADViet.com. 01/12/2011
;Noi cac block diem 3D thanh Polyline theo thu tu ten diem.
(defun c:HA (/ lst)
(vl-load-com)
(command "undo" "be")
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq lst (acet-ss-to-list (ssget (list (cons 0 "insert")))))
(setq lst (vl-sort lst '(lambda (x y) (<
(atoi (cdr (assoc 1 (entget (entnext x)))))
(atoi (cdr (assoc 1 (entget (entnext y)))))))))
(command "3dpoly")
(foreach x lst
(command (cdr (assoc 10 (entget x)))))
(command "")
(setvar "osmode" oldos)
(command "undo" "e")
(princ))

Chào Hà, rất may là bạn lấy giá trị của thuộc tính đầu trong block để sắp xếp thứ tự các ename của block. Nếu trường hợp giá trị cần so sánh để sắp xếp không rơi vào thuộc tính đầu "(assoc 1)" thì người dùng phải viết lại lisp thì cực lắm!
Hãy để người dùng thêm tuỳ chọn là thuộc tính nào cần lấy giá trị so sánh để sắp xếp thì nó mới trọn vẹn lisp này.
Ngoài ra khi đã sắp xếp được các ename trong lst rồi thì lọc tiếp để lấy tọa độ insert của block (assoc 10) cho vào 1 list (lst2), sau đó dùng hàm (ACET-PLINE-MAKE (list lst2)) thì lisp sẽ chạy nhanh hơn vì bỏ đươc các "command"!
Thân ái!
  • 0

#6 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 01 December 2011 - 04:44 PM

Chào Hà, rất may là bạn lấy giá trị của thuộc tính đầu trong block để sắp xếp thứ tự các ename của block. Nếu trường hợp giá trị cần so sánh để sắp xếp không rơi vào thuộc tính đầu "(assoc 1)" thì người dùng phải viết lại lisp thì cực lắm!
Hãy để người dùng thêm tuỳ chọn là thuộc tính nào cần lấy giá trị so sánh để sắp xếp thì nó mới trọn vẹn lisp này.
Ngoài ra khi đã sắp xếp được các ename trong lst rồi thì lọc tiếp để lấy tọa độ insert của block (assoc 10) cho vào 1 lisp (lst2), sau đó dùng hàm (ACET-PLINE-MAKE (list lst2)) thì lisp sẽ chạy nhanh hơn vì bỏ đươc các "command"!
Thân ái!


OK các góp ý. Thêm 1 dòng chọn thuộc tính sắp xếp cũng được vậy. Rất may là tôi đã có cái hình bên cạnh của tác giả để suy ra cái "rất may" của (assoc 1). Hì hì hì. Ngoài ra, do lấy lisp trong kho tài nguyên ra sửa nên làm biếng vậy mà!
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#7 DanKhaosat

DanKhaosat

    biết lệnh scale

  • Members
  • PipPipPip
  • 149 Bài viết
Điểm đánh giá: 14 (tàm tạm)

Đã gửi 09 June 2014 - 08:44 PM

  1. Mình có:          - Tập hợp các điểm POINT (x, y, z)
  • Đường chuẩn (Polyline, 3Dpolyline)
  1. Mình muốn nối các đường dạng 3dPoly theo chiều của đường chuẩn ở trên với điều kiện:
  • Nối các POINT (x, y, z) trên tập hợp
  • Các đường nối đều theo chiều đường chuẩn
  • Các đường này không cắt nhau
  • Các đường gần đường chuẩn nối liền tiếp theo đến các đường sau
  • Như file mình đính kèm

Rất mong các cao thủ giúp đỡ nhất là bạn Đoàn Văn Hà

Trân trong cảm ơn!

http://www.cadviet.c...ve_3dpoly_1.dwg


  • 0

#8 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 09 June 2014 - 10:21 PM

Cám ơn bạn đã nhớ đến tôi, dù không chính xác lắm.

Riêng với y/c này thì tôi không thể giúp bạn được, vì bài toán này rắc rối quá. Hy vọng được giúp bạn 1 dịp khác.


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#9 DanKhaosat

DanKhaosat

    biết lệnh scale

  • Members
  • PipPipPip
  • 149 Bài viết
Điểm đánh giá: 14 (tàm tạm)

Đã gửi 10 June 2014 - 07:55 AM

Cảm ơn bạn Hà thế nhờ các cao thủ !


  • 0

#10 DanKhaosat

DanKhaosat

    biết lệnh scale

  • Members
  • PipPipPip
  • 149 Bài viết
Điểm đánh giá: 14 (tàm tạm)

Đã gửi 10 June 2014 - 10:39 AM

Các cao thủ kétxu, thanhduan, Phạm Thanh Bình, Phạm quáooc Duy đâu rồi có thời gian xin chỉ giúp với


  • 0