Đến nội dung


Hình ảnh
- - - - -

Nhờ viết lisp thay các đối tượng chọn bằng 1 block khác


  • Please log in to reply
9 replies to this topic

#1 pawuta

pawuta

    biết lệnh move

  • Members
  • PipPipPip
  • 126 Bài viết
Điểm đánh giá: -12 (hơi kém)

Đã gửi 14 November 2014 - 12:49 PM

Nhờ viết lisp thay các đối tượng chọn bằng 1 block khác

Nhờ các bác viết giúp lisp như sau:

Ðánh tên lệnh: DBL enter/ chọn 1 block làm chuẩn/ enter/ chọn các đối tượng muốn chuyển/ enter

Tất cả các đối tượng muốn chuyển bị  xoá và thay vào dó là 1 block mình chọn làm chuẩn

Do bản vẽ phải thay nhiều như thế này, mong các bác giúp đỡ, cảm ơn nhiều!!!

Ðây là file đính kèm: http://www.cadviet.c...hanhblock_1.dwg


  • 0

#2 haanh

haanh

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2875 Bài viết
Điểm đánh giá: 1554 (rất tốt)

Đã gửi 14 November 2014 - 01:49 PM

Không hiểu ý của anh lắm   ???

Anh thử vào chức năng tìm kiếm của diễn đàn gõ vào ô tìm dao kiếm mấy chữ : ánh xạ block xem sao???


  • 1

“Sống trong đời sống cần có một tấm lòng / Để làm gì em biết không ? / Để gió cuốn đi, để gió cuốn đi...”


#3 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 14 November 2014 - 02:03 PM

Bạn thử cái này xem. Máy phải có cài express.

(defun c:dlb (/ blk d0 d1 ss)
  (setq blk (car (entsel "\nChon Block : "))
d0 (car (acet-ent-geomextents blk)))
  (prompt "\nChon doi tuong de thay bang block : ")
  (while (setq ss (ssget))
    (setq d1 (car (acet-geom-ss-extents ss nil)))    
    (command "copy" blk "" "non" d0 "non" d1 "erase" ss "")
  )
  (princ)
)

  • 2

#4 pawuta

pawuta

    biết lệnh move

  • Members
  • PipPipPip
  • 126 Bài viết
Điểm đánh giá: -12 (hơi kém)

Đã gửi 14 November 2014 - 02:24 PM

Quá hay, quá tuyệt vời, cảm ơn bạn Tot77 rất nhiều :))!!


  • 0

#5 pawuta

pawuta

    biết lệnh move

  • Members
  • PipPipPip
  • 126 Bài viết
Điểm đánh giá: -12 (hơi kém)

Đã gửi 14 November 2014 - 02:57 PM

Bạn có thể thêm cái pick điểm chèn vào không ah, vì nó bị như thế này http://www.cadviet.c...hanhblock_2.dwg

 

bị lệch qua 1 bên, Cảm ơn! :))


  • 0

#6 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 14 November 2014 - 03:08 PM

Hiện tại điểm chèn là trái dưới, của cả block lẫn nhóm đối tượng, không biết bạn test thế nào chứ tôi test không có bị lệch.


  • 0

#7 pawuta

pawuta

    biết lệnh move

  • Members
  • PipPipPip
  • 126 Bài viết
Điểm đánh giá: -12 (hơi kém)

Đã gửi 14 November 2014 - 03:14 PM

nếu như block có dim, bên đối chọn không có dim thì lệch bạn ui

 

hình như chiều ngang của block là tính luôn phần dim nên bị lệch,

 

mình làm xong rồi vô block chỉnh sửa lại cũng được, Cảm ơn bạn nhiều nhé!

 

Mình đang làm ở q10. TP.HCM nếu bạn ở gần thì mời bạn Coffee!!


  • 0

#8 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 14 November 2014 - 03:20 PM

À thì ra là bạn chọn luôn dim, nói chung thì kích thước đường bao của block và của cả nhóm các đtg muốn thay nó phải bằng nhau thì nó sẽ không lệch.


  • 1

#9 pawuta

pawuta

    biết lệnh move

  • Members
  • PipPipPip
  • 126 Bài viết
Điểm đánh giá: -12 (hơi kém)

Đã gửi 14 November 2014 - 03:31 PM

ok. thank bạn!


  • 0

#10 kuarambo

kuarambo

    biết pan

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

Đã gửi 14 November 2014 - 04:31 PM

Bạn thử cái này xem. Máy phải có cài express.

 

(defun c:dlb (/ blk d0 d1 ss)
  (setq blk (car (entsel "\nChon Block : "))
d0 (car (acet-ent-geomextents blk)))
  (prompt "\nChon doi tuong de thay bang block : ")
  (while (setq ss (ssget))
    (setq d1 (car (acet-geom-ss-extents ss nil)))    
    (command "copy" blk "" "non" d0 "non" d1 "erase" ss "")
  )
  (princ)
)

Cách này cũng được nhưng chưa làm chủ được điểm thay thế và chưa thay cùng lúc n hiều đối tượng được. Khắc phục được 2 lỗi đó là ok!!!


  • 0