Đến nội dung


Hình ảnh
- - - - -

Hỏi Về Lisp Tạo Boundary Từ Các Polyline Không Giao Nhau


  • Please log in to reply
7 replies to this topic

#1 Superlong

Superlong

    biết vẽ arc

  • Members
  • PipPip
  • 49 Bài viết
Điểm đánh giá: -9 (bình thường)

Đã gửi 24 March 2016 - 10:30 AM

   ví dụ tôi có 2 pline nằm rời rạc như thế nay tôi muốn tạo boundary bằng cách chọn 2 pline đó thì boundary sẽ được tạo là bao quanh các đỉnh của 2 pline này , em thử dùng 2 hàm (acet-geom-vertex-list (ssget)) để lấy tọa độ xog dùng hàm (acet-pline-make) nhưng lại báo lỗi error: bad argument type: lentityp nil

các bác có thể giúp em không 

(defun c:yeah ( / dt dt1 dt2 rec1 rec2 ss)

(setq dt (ssget '((0 . "LWPOLYLINE"))))

(setq dt1 (ssname dt 1)

dt2 (ssname dt 2)

rec1 (acet-geom-vertex-list dt1)

rec2 (acet-geom-vertex-list dt2))

(setq ss (append rec1 rec2))

(acet-pline-make ss))

 

150337_capture_3.png


  • -1

#2 tien2005

tien2005

    biết lệnh properties

  • Members
  • PipPipPipPip
  • 257 Bài viết
Điểm đánh giá: 94 (tàm tạm)

Đã gửi 24 March 2016 - 01:08 PM

lisp của bạn đâu?


  • 0

#3 Superlong

Superlong

    biết vẽ arc

  • Members
  • PipPip
  • 49 Bài viết
Điểm đánh giá: -9 (bình thường)

Đã gửi 30 March 2016 - 10:23 AM

mình vừa bổ sung rồi đó bạn


  • 0

#4 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 30 March 2016 - 10:41 AM

Đối tượng thứ nhất có index là 0 chứ không phải 1 nhé.


  • 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 Superlong

Superlong

    biết vẽ arc

  • Members
  • PipPip
  • 49 Bài viết
Điểm đánh giá: -9 (bình thường)

Đã gửi 30 March 2016 - 10:52 AM

sau khi sửa lại thì nó báo  error: bad argument type: listp 6.7799

(defun c:yeah ( / dt dt1 dt2 rec1 rec2 ss)

(setq dt (ssget '((0 . "LWPOLYLINE"))))

(setq dt1 (ssname dt 0)

dt2 (ssname dt 1)

rec1 (acet-geom-vertex-list dt1)

rec2 (acet-geom-vertex-list dt2))

(setq ss (append rec1 rec2))

(acet-pline-make ss))


  • 0

#6 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 30 March 2016 - 11:08 AM

1). ss sửa lại là (list ss)

2). Phải xắp xếp điểm theo 1 chiều quay, nếu không thì nó vẽ không đúng ý đồ.

3). Bổ sung thêm 1 điểm đầu hoặc cuối nữa để khép kín pline.

Bạn tự nghiên cứu nhé!


  • 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.


#7 Superlong

Superlong

    biết vẽ arc

  • Members
  • PipPip
  • 49 Bài viết
Điểm đánh giá: -9 (bình thường)

Đã gửi 30 March 2016 - 11:32 AM

à em hiểu rồi cám ơn bác rất nhìu

(defun c:yeah ( / dt dt1 dt2 rec1 rec2 pt ss)

(setq dt (ssget '((0 . "LWPOLYLINE"))))

(setq dt1 (ssname dt 0)

dt2 (ssname dt 1)

rec1 (acet-geom-vertex-list dt1)



rec2 (acet-geom-vertex-list dt2)
pt (nth 0 rec1)
)

(setq ss (append rec1 (reverse rec2) (list pt)))

(acet-pline-make (list ss)))


  • 0

#8 toiyeuvietnam

toiyeuvietnam

    biết vẽ polygon

  • Members
  • PipPip
  • 78 Bài viết
Điểm đánh giá: -1 (bình thường)

Đã gửi 31 March 2016 - 06:06 AM

lisp này muốn dùng cho cả line thì làm thế nào các anh nhỉ?


  • 0