Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
hoacotu

Thắc mắc về lệnh "Boundary"

Các bài được khuyến nghị

Các bạn làm ơn cho mình hoỉ về lệnh "Bo", ý nghiã cuả từng mục trên bảng lệnh "Bo".

Đặc biệt là 2 lưạ chọn: Region và Polyline là như thế naò được không???

 

Mình xin cảm ơn các bạn nhiêù!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Các bạn làm ơn cho mình hoỉ về lệnh "Bo", ý nghiã cuả từng mục trên bảng lệnh "Bo".

Đặc biệt là 2 lưạ chọn: Region và Polyline là như thế naò được không???

 

Mình xin cảm ơn các bạn nhiêù!

Lệnh BO dùng để vẽ một vùng kín, lựa chọn của lệnh này cũng như khi bạn dùng lệnh HATCH. Ví dụ: Bạn có một polyline kín, khi dùng lệnh BO sẽ cho ban một Polyline kín nữa hoặc 1 region. Plyline thì bạn đã hiểu, còn region là 1 miền (đặc) để có thể sử dụng lệnh union, subtract và intersect. Chúc vui!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

:undecided: cái thằng region này kết hợp với uni,su,...xài để vẽ MB kiến trúc thì hay tuyệt bạn àh- bản vẽ rất chuyên nghiệp- xuất qua Max extrude luôn...

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Các bạn làm ơn cho mình hoỉ về lệnh "Bo", ý nghiã cuả từng mục trên bảng lệnh "Bo".

Đặc biệt là 2 lưạ chọn: Region và Polyline là như thế naò được không???

 

Mình xin cảm ơn các bạn nhiêù!

 

Bạn tham khảo bài viế :Gặp sự cố khi sử dụng lệnh BO, Nguyên nhân- Cách khắc phục

 

http://www.cadviet.com/forum/index.php?showtopic=3347

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Bạn tham khảo bài viế :Gặp sự cố khi sử dụng lệnh BO, Nguyên nhân- Cách khắc phục

 

http://www.cadviet.com/forum/index.php?showtopic=3347

 

Cảm ơn bạn nhiều!

Mình đã đọc bài của bạn. Bạn nói rằng bạn thường dùng lệnh Bo> Rev để tính diện tích và khối lượng của một hình. Vậy lệnh Rev dùng như thế nào hở bạn???

 

- Hoa cô tử -

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Cảm ơn bạn nhiều!

Mình đã đọc bài của bạn. Bạn nói rằng bạn thường dùng lệnh Bo> Rev để tính diện tích và khối lượng của một hình. Vậy lệnh Rev dùng như thế nào hở bạn???

 

- Hoa cô tử -

 

Rev là lệnh tắt để vẽ hình 3D. Ví dụ khi bạn vẽ một đoạn ống tròn, bạn có hình cắt của cái ống. Dùng Bo để tạo ra đường khép kín mặt cắt thể hiện chiều dầy ống> chỉ chuột vào hai đầu của trục đối xứng nó ra tạo ra cho bạn hình 3D cái ống trụ.

Rev > chọn đối tượng là đường khép kín > Bấm chuột vào hai đầu trục đối xứng > Enter.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

chào các bác trên diễn đàn,em cũng dùng lệnh Bo mục đích là để tạo một đường bao khép kín bên ngoài các hình nhỏ(tạo đường biên cho một tờ bản đồ) đường biên này phải trùng khít với các cạnh bên ngoài,Nhưng khi dùng lệnh này em lại thấy nhưng chỗ cạnh khấp khúc hay cong gãy thì đường biên này bị lệch.Bác nào biết cách làm cho nó trùng khít giúp em được không ạ?em xin cám ơn nhiều!63415_lenh_bo.jpghttp://www.cadviet.com/upfiles/3/63415_bo.rar

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

chào các bác trên diễn đàn,em cũng dùng lệnh Bo mục đích là để tạo một đường bao khép kín bên ngoài các hình nhỏ(tạo đường biên cho một tờ bản đồ) đường biên này phải trùng khít với các cạnh bên ngoài,Nhưng khi dùng lệnh này em lại thấy nhưng chỗ cạnh khấp khúc hay cong gãy thì đường biên này bị lệch.Bác nào biết cách làm cho nó trùng khít giúp em được không ạ?em xin cám ơn nhiều!http://www.cadviet.com/upfiles/3/63415_bo.rar

Hề hề hề,

Bạn nên xem lại thao tác dùng lệnh boundary của bạn. 

Lưu ý rằng vùng lấy boundary phải hoàn toàn nhìn thấy được trên màn hình mà không bị che khuất chút nào.

Mình đã test trên chính bản vẽ bạn gửi thì boundary vẫn cực ngon và chả kề bị lỗi như bạn nói.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

đây là toàn bộ thao tác của mình trên cad 2013,kết quả là  vẫn lỗi,rất mong được bạn chỉ rõ hơn,gửi cả hình ảnh nhé.63415_lenhbo.jpg63415_lenh_bo2.jpg63415_lenh_bo3.jpg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

đây là toàn bộ thao tác của mình trên cad 2013,kết quả là  vẫn lỗi,rất mong được bạn chỉ rõ hơn,gửi cả hình ảnh nhé.

Hề hề hề,

Cad2013 thì mình hổng có để check.

CAD2004 thì mình làm như sau:

1/- Đây là bản vẽ nguyêng gốc bạn gửi:

5194_hd1.png

2/- Xóa bỏ các phần thừa không cần thiết:

5194_hd2.jpg

3/- Zoom màn hình để nhìn thấy hết vùng chọn và nhập lệnh boundary, chọn pick internal point.

5194_hd3.jpg

4/- Đưa con trỏ vào trong vùng chọn và pick:

5194_hd4.jpg

5/- Xem cái boundary màu đỏ được tạo thành đã Ok xa lem chưa nhể???

5194_hd5.jpg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

ôi,bạn hiểu nhầm ý định của mình rồi,đó là đường biên trong thửa(một thửa nhỏ của cả tờ bản đồ với nhiều thửa nhỏ),mục đích của mình là vẽ đường  bao quanh biên ngoài nhất của các thửa đó.Đường màu xanh ngoài nhất bạn ạ

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Bạn dùng thử cái này xem có đúng ý không. Trước khi quét vùng cần Boundary thì cần tắt bớt 1 số Layer đối tượng bên trong thửa như là nhà hoặc ao và chỉ để đối tượng là thửa đất thôi nhé!

(defun c:BN (/ boun_lst cnt i ov sec ss time vl)
(command "-layer" "n" "BOUNDARY" "l" "CONTINUOUS" "BOUNDARY" "c" 4 "BOUNDARY" "")
   (command "-layer" "s" "BOUNDARY" "")
  (vl-load-com)
  (command "_.undo" "_begin")  
  (if (setq ss (ssget '((0 . "LINE"))))
    (progn
      (setq vl '("DELOBJ" "CMDECHO") ; Sys Var list
	    ov (mapcar 'getvar vl))  ; Get Old values
      (setq time (getvar "millisecs"))
      (mapcar 'setvar vl '( 1 0))
      (setq ss (break_SSLine ss))
      (command "region" ss "")
      (if (setq ss (ssget "x" '((0 . "region"))))
	(progn
	  (setq i 0)
	  (while (< i (sslength ss))
	    (if (> (sslength ss) 50)
	      (princ (strcat "Objects Convert " (itoa i) "\r"))  )
	    (command "explode" (ssname ss i))
	    (command "pedit" "l" "" "j" (ssget "p") "" "")
	    (setq boun_lst (cons (entlast) boun_lst))
	    (setq i (1+ i))    )
	  (setq boun_lst(moveAreaMax boun_lst))
	  (setq sec (/ (- (getvar "MILLISECS") time) 1000.0)  )
	  (if (>(setq cnt (length boun_lst))0)
	    (princ (strcat "\nTao duoc " (itoa cnt)
			   " duong bao voi Th/gian = "(rtos sec 2 2) " s."))
	    (princ (strcat "\nSorry! Khong tao duoc duong bao!")))  ))
      (mapcar 'setvar vl ov)))
  (command "_.undo" "_end")
  (princ))

(defun moveAreaMax (lst / area otmp tmp)
  (setq	tmp 0
	otmp nil)
  (foreach e lst
    (if (> (setq area (vla-get-area (vlax-ename->vla-object e))) tmp)
      (setq tmp area
	    otmp e)) )
  (if otmp
    (progn
      (entdel otmp)
      (vl-remove otmp lst)  )  ))

(defun break_SSLine (ss / ds ent intpts lastentindatabase lst masterlist oc sslst)
  (defun ssget->vla-list (ss / i ename allobj)
    (setq i -1)
    (while (setq  ename (ssname ss (setq i (1+ i))))
      (setq allobj (cons (vlax-ename->vla-object ename) allobj))       )
    allobj  )

  (defun list->3pair (old / new)
    (while (setq new (cons (list (car old) (cadr old) (caddr old)) new)
                 old (cdddr old)))
    (reverse new)  )
  
  (defun get_interpts (obj1 obj2 / iplist)
    (if (not (vl-catch-all-error-p
	       (setq iplist (vl-catch-all-apply
                            'vlax-safearray->list
                            (list
                              (vlax-variant-value
                                (vla-intersectwith obj1 obj2 acextendnone) ))))))
    iplist  ))
  
;;====================================
;;  CAB - get last entity in datatbase
(defun GetLastEnt ( / ename result )
  (if (setq result (entlast))
    (while (setq ename (entnext result))
      (setq result ename)    )  )
  result)

(defun GetNewSS (ename / new)
  (setq new (ssadd))
  (cond
    ((null ename) (alert "Ename nil"))
    ((eq 'ENAME (type ename))
      (while (setq ename (entnext ename))
        (if (entget ename) (ssadd ename new)) )    )
    ((alert "Ename wrong type."))  )
  new)

(defun break_line (ent brkptlst / pt1 pt2  x)
  (if brkptlst
    (progn
      (setq brkptlst (mapcar '(lambda(x) (list x (vlax-curve-getdistatparam ent
						   ;; ver 2.0 fix
						   (cond ((vlax-curve-getparamatpoint ent x))
							 ((vlax-curve-getparamatpoint ent
							    (vlax-curve-getclosestpointto ent x))))))
				) brkptlst))
      ;; sort primary list on distance
      (setq brkptlst (vl-sort brkptlst '(lambda (a1 a2) (< (cadr a1) (cadr a2)))))
      (setq pt1 (car(car brkptlst)))
      (foreach e (cdr brkptlst)
	(setq pt2 (car e))
	(entmake (list '(0 . "LINE")(cons 10 pt1)(cons 11 pt2) ))
	(setq pt1 pt2)
	(and *BrkVerbose* (princ (setq *brkcnt* (1+ *brkcnt*))) (princ "\r"))	)      ) ))
  
  ;;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  ;;         S T A R T  S U B R O U T I N E   H E R E              
  ;;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  (setq LastEntInDatabase (GetLastEnt))
  (if ss
    (progn
      (setq oc 0
            ssLst (ssget->vla-list ss))
      (if (> (length ssLst) 22) (setq *BrkVerbose* t) )
      (and *BrkVerbose*
	   (princ (strcat "Objects to be Checked: "
			  (rtos (* 0.5(length ssLst)(length ssLst))2 0) "\n")))
      ;;  CREATE a list of entity & it's break points
      (foreach obj ssLst
        (setq lst nil)
	;; check for break pts with other objects in ss2brkwith
	(foreach intobj (vl-remove obj ssLst)
	  (if (and (not (equal obj intobj))
		   (setq intpts (get_interpts obj intobj)))
	    (setq lst (append (list->3pair intpts) lst)) )  )
	(if lst
	  (setq masterlist (cons (cons (vlax-vla-object->ename obj) lst) masterlist)) ) )
      
      (and *BrkVerbose* (princ "\nBreaking Objects.\n"))
      (setq *brkcnt* 0) ; break counter
      (if masterlist
        (foreach obj2brk masterlist
          (break_line (car obj2brk) (cdr obj2brk)) ) ) ) )
;;==============================================================
   (and (zerop *brkcnt*) (princ "\nNone to be broken."))
   (setq *BrkVerbose* nil)
  (GetNewSS LastEntInDatabase) ; return list of enames of new objects
)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

mình thử rồi nhưng không thấy kết quả.bạn thử trên bản vẽ mình up lên thấy ổn không?mà nếu chỉ tạo ở lớp thửa(10)thì không được.Vì nếu mương,hoặc ao(31,32) hay đường (23) ở ngoài biên , ta mà tắt đi thì đường biên sẽ sai bạn ạ.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

ôi,bạn hiểu nhầm ý định của mình rồi,đó là đường biên trong thửa(một thửa nhỏ của cả tờ bản đồ với nhiều thửa nhỏ),mục đích của mình là vẽ đường  bao quanh biên ngoài nhất của các thửa đó.Đường màu xanh ngoài nhất bạn ạ

Hề hề hề,

Vậy là bạn muốn cái này:

5194_hd6.jpg

hay là cái này:

5194_hd7.jpg

Hay đúng hơn là cái này nhể:

5194_hd8.jpg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

đúng rồi bạn ạ.Mình muốn đường bao ngoài cùng đó nhưng điều kiện là phải ôm khít đường biên của các cạnh thửa( đường nối).Túm lại giống như ta vẽ đường biên giới vậy nên trùng khít các cạnh về phía ngoài là điều tất nhiên.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

đúng rồi bạn ạ.Mình muốn đường bao ngoài cùng đó nhưng điều kiện là phải ôm khít đường biên của các cạnh thửa( đường nối).Túm lại giống như ta vẽ đường biên giới vậy nên trùng khít các cạnh về phía ngoài là điều tất nhiên.

Hề hề hề,

vậy chứ nó trùng như vậy bạn đã thấy OK chưa???

Nếu OK thì chỉ là cách thức bạn thực hiện lệnh boundary chưa đúng chứ bản thân lệnh chả có tí lỗi nào cả. Bằng chứng chính là cái hình mình đã post để bạn xem.

Để có thể hiểu đúng và thực hiện tốt cái lệnh này, bạn có thể tham khảo trong help của CAD. Nó nói khá rõ và qua đó bạn sẽ hiểu vì sao khi dùng như bạn lại bị lỗi. 

Vì vốn tiếng Anh của mình không tốt nên chỉ có thể hiểu ngầm nó nói gì chứ không đảm bảo là mình hiểu đúng nên cũng chả thể dịch ra giúp bạn được.

Nếu nói nôm theo cách mình hiểu thì lệnh boundary yêu cầu bạn phải chọn một vùng kín đơn với các đường bao không trùng lặp hay giao cát nhau. Vì thế nếu bạn làm không đúng sẽ dính lỗi như trên.

Hy vong bạn hiểu và làm được theo yêu cầu của bạn.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

thank bạn nhiều nhé,mình tìm ra cách rồi,thay vì dùng lệnh "bo" mình dùng lệnh region là ok luôn bạn ạ.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Nếu nói nôm theo cách mình hiểu thì lệnh boundary yêu cầu bạn phải chọn một vùng kín đơn với các đường bao không trùng lặp hay giao cát nhau. Vì thế nếu bạn làm không đúng sẽ dính lỗi như trên.

Hy vong bạn hiểu và làm được theo yêu cầu của bạn.

 

 Lệnh Bo chỉ cho Pick internal point chứ không cho quét chọn tất cả các đối tương như lệnh Region, 

không hiểu bác Bình  đã thao tác lệnh như thế nào để ra nhanh được đường "biên giới" ???

 

Thanks anh  hg_aum: Đúng là dùng lệnh Region vừa rẻ vừa giòn !

Command: reg REGION

Select objects: Specify opposite corner: 177 found

Select objects:

36 loops extracted.

1 loop rejected.

    Null region, possible coincident edges : 1 loop.

35 Regions created.

Command: Specify opposite corner:

Command:

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay
Đăng nhập để thực hiện theo  

×