Đến nội dung


Hình ảnh
- - - - -

Lựa chọn đối tượng sau khi boundary


  • Please log in to reply
9 replies to this topic

#1 18011985

18011985

    biết lệnh properties

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

Đã gửi 29 December 2010 - 09:47 AM

Mình có 1 hình vẽ như sau: 1 hình vuông và 1 hình tròn nằm bên trong.
1- Tạo đường bo hv, ht (đã làm được)
2- Nếu chọn lại vị trí đó lần nữa thì báo lỗi.
3- Vì bước 2 có nên phải lấy được giá trị boundary của hv và ht
Nên các bạn chỉ hộ mình bước 2 và bước 3
Sau đây là bước 1 của mình
(defun c:thu (/ test)
(setq test 0)
(while (/= test nil)
(setq test (getpoint "Chon diem tinh"))
(if (/= test nil)(vl-cmdf "-boundary" "a" "o" "r" "x" test ""))
)
(princ)
)

  • 0
Trăng 16 trăng tròn
Em 16 bụng ... như trăng

Hướng dẫn sử dụng diễn đàn:
Để cảm ơn hay bài viết có ích: Ấn dấu + cuối bài.
Không vừa lòng hay bài spam: Ấn dấu - cuối bài.

#2 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 29 December 2010 - 09:56 AM

3- Vì bước 2 có nên phải lấy được giá trị boundary của hv và ht

Giá trị này là gì? Ename? Chu vi? Diện tích? Bạn phải nói rõ chứ
Nếu là diện tích hoặc chu vi thì bạn có thể tìm lisp tính diện tích miền kín có lỗ thủng của bác Tue_NV để tham khảo
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#3 18011985

18011985

    biết lệnh properties

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

Đã gửi 29 December 2010 - 10:41 AM

Giá trị này là gì? Ename? Chu vi? Diện tích? Bạn phải nói rõ chứ
Nếu là diện tích hoặc chu vi thì bạn có thể tìm lisp tính diện tích miền kín có lỗ thủng của bác Tue_NV để tham khảo

SSname, Ename đoá bạn à, của bác Tue_VN là select object còn của mình là pick mừ. Select object thì việc lấy dữ liệu của đối tượng thì okie không vấn đề còn cái của mình chọn 1 cái nó sinh ra 2 đối tượng việc lấy dữ liệu của đối tượng mình chia bít. Chỉ dùm mình chút xíu xíu hì hì
  • 0
Trăng 16 trăng tròn
Em 16 bụng ... như trăng

Hướng dẫn sử dụng diễn đàn:
Để cảm ơn hay bài viết có ích: Ấn dấu + cuối bài.
Không vừa lòng hay bài spam: Ấn dấu - cuối bài.

#4 VUVUZELA

VUVUZELA

    biết lệnh chamfer

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

Đã gửi 29 December 2010 - 11:14 AM

SSname, Ename đoá bạn à, của bác Tue_VN là select object còn của mình là pick mừ. Select object thì việc lấy dữ liệu của đối tượng thì okie không vấn đề còn cái của mình chọn 1 cái nó sinh ra 2 đối tượng việc lấy dữ liệu của đối tượng mình chia bít. Chỉ dùm mình chút xíu xíu hì hì


Bạn có thể làm như thế này
Tạo boundnảy tính diện tich xong thì xoá nó đi
(defun c:thu (/ test)
(setq test 0)
(while (/= test nil)
(setq test (getpoint "Chon diem tinh"))
(if (/= test nil)
(progn
(vl-cmdf "-boundary" "a" "o" "r" "x" test "")
(setq ename (entlast))

(command "change" ename "" "P" "C" "Magenta" "")
(vl-cmdf "area" "O" ename)
(setq dientich (getvar "area")
chuvi (getvar "Perimeter")
)
(print (strcat "\nDien tich la : " (rtos dientich 2 2)))
(print (strcat "\nChu vi la : " (rtos chuvi 2 2)))
(print "\n")
(command "erase" ename "")
)
)
)
(princ)
)

  • 0

Hệ thống Liên Kết, Thiết Kế Tự Động

ttps://www.facebook...etThietKeTuDong


#5 18011985

18011985

    biết lệnh properties

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

Đã gửi 29 December 2010 - 11:19 AM

Bạn có thể làm như thế này

(defun c:thu (/ test)
(setq test 0)
(while (/= test nil)
(setq test (getpoint "Chon diem tinh"))
(if (/= test nil)
(progn
(vl-cmdf "-boundary" "a" "o" "r" "x" test "")
(setq ename (entlast))
(vl-cmdf "area" "O" ename)
(setq dientich (getvar "area")
chuvi (getvar "Perimeter")
)
(print (strcat "\nDien tich la : " (rtos dientich 2 2)))
(print (strcat "\nChu vi la : " (rtos chuvi 2 2)))
(print "\n")


)
)
)
(princ)
)

Cảm ơn bác. Nhưng bác ơi như em đã nói ở trên của em sau khi dùng boundary nó sinh ra hai đối tượng mới. Theo cách của bác thì chỉ có mỗi đối tượng cuối cùng được lôi ra. Còn đối tượng trước nó bị lờ đi roài.
  • 0
Trăng 16 trăng tròn
Em 16 bụng ... như trăng

Hướng dẫn sử dụng diễn đàn:
Để cảm ơn hay bài viết có ích: Ấn dấu + cuối bài.
Không vừa lòng hay bài spam: Ấn dấu - cuối bài.

#6 VUVUZELA

VUVUZELA

    biết lệnh chamfer

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

Đã gửi 29 December 2010 - 11:25 AM

Cảm ơn bác. Nhưng bác ơi như em đã nói ở trên của em sau khi dùng boundary nó sinh ra hai đối tượng mới. Theo cách của bác thì chỉ có mỗi đối tượng cuối cùng được lôi ra. Còn đối tượng trước nó bị lờ đi roài.


Cái này thì bạn có thể dùng theo 2 cách
1. Đổi lại pp chọn đối tượng tính dt theo cách chọn đối tượng (select object) mà không chọn điểm nữa thì bạn sẽ tách được 2 dt dễ dàng
2. Néu theo cách chọn điểm như trên thì ta chọn cách đi vòng : lấy tập điểm dt sau để dùng ssget "WP" chọn dt nằm trong theo list điểm của dt2
Thân
  • 1

Hệ thống Liên Kết, Thiết Kế Tự Động

ttps://www.facebook...etThietKeTuDong


#7 18011985

18011985

    biết lệnh properties

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

Đã gửi 29 December 2010 - 12:10 PM

Chà cái này khó nghĩ nhỉ, mình muốn truy hồi các đối tượng được sinh ra vì có phải đến đấy là hết đâu, mình chọn thêm vùng khác nữa và kiểm tra xem vùng mới có trùng với vùng cũ không? Nên việc tách biệt các vùng để so sánh là tốt nhất.
  • 0
Trăng 16 trăng tròn
Em 16 bụng ... như trăng

Hướng dẫn sử dụng diễn đàn:
Để cảm ơn hay bài viết có ích: Ấn dấu + cuối bài.
Không vừa lòng hay bài spam: Ấn dấu - cuối bài.

#8 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 29 December 2010 - 12:51 PM

Đơn giản mà. Cách làm vẫn giống cách bác Tue_NV đã làm đó thôi
- Trước khi vẽ boundary bạn lấy ename của đối tượng cuối cùng được tạo ra trong bản vẽ bằng hàm entlast
- vẽ boundary. lệnh này có thể sinh ra n đối tượng. kệ nó
- có cái mốc ở bước 1 rồi thì bạn cứ thế mà Entnext cho đến khi hàm entnext trả về nil là bạn đã thu được toàn bộ ename của các đối tượng mới.
(setq EL (entlast))
(vl-cmdf "-boundary" "a" "o" "r" "x" test "")
(while (setq EL (entnext EL)) (setq Listname (cons EL Listname)))
  • 1

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#9 18011985

18011985

    biết lệnh properties

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

Đã gửi 29 December 2010 - 01:11 PM

Đơn giản mà. Cách làm vẫn giống cách bác Tue_NV đã làm đó thôi
- Trước khi vẽ boundary bạn lấy ename của đối tượng cuối cùng được tạo ra trong bản vẽ bằng hàm entlast
- vẽ boundary. lệnh này có thể sinh ra n đối tượng. kệ nó
- có cái mốc ở bước 1 rồi thì bạn cứ thế mà Entnext cho đến khi hàm entnext trả về nil là bạn đã thu được toàn bộ ename của các đối tượng mới.
(setq EL (entlast))
(vl-cmdf "-boundary" "a" "o" "r" "x" test "")
(while (setq EL (entnext EL)) (setq Listname (cons EL Listname)))

Oạch đúng vậy thía mà em không nghĩ ra cho nó 1 mốc thời điểm cố định. Thanks tất cả mọi người.
  • 0
Trăng 16 trăng tròn
Em 16 bụng ... như trăng

Hướng dẫn sử dụng diễn đàn:
Để cảm ơn hay bài viết có ích: Ấn dấu + cuối bài.
Không vừa lòng hay bài spam: Ấn dấu - cuối bài.

#10 18011985

18011985

    biết lệnh properties

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

Đã gửi 29 December 2010 - 04:21 PM

Bip Bip cấp cứu em chút xíu, Vụ này dính tới thằng region em không biết nếu chọn 1 vùng tính roài chọn lại thì báo chọn rùi bác nào chỉ em với, mở mã DXF của region toàn là thằng (1. ...) nên em bó tay. T_T
  • 0
Trăng 16 trăng tròn
Em 16 bụng ... như trăng

Hướng dẫn sử dụng diễn đàn:
Để cảm ơn hay bài viết có ích: Ấn dấu + cuối bài.
Không vừa lòng hay bài spam: Ấn dấu - cuối bài.