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

muốn chia 1 đoạn cong thành nhiều đoạn cong

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

các bác cho em hỏi, em muốn chia 1 đoạn cong thành nhiều đoạn cong, với điểm chia là bất kỳ thì làm thế nào ạ.

bạn đã thử lệnh break chưa?

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 đã thử lệnh break chưa?

 

à, em thử rồi, được rồi, nhưng có lisp nào thế này không: break, chọn polylinenhấp vào điểm nào thì ngắt tại đó, và mình cứ nhấp liên tục cho đến khi xong, không phải mỗi lần break là mỗi lần thực hiện lệnh.cám ơn bác

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
à, em thử rồi, được rồi, nhưng có lisp nào thế này không: break, chọn polylinenhấp vào điểm nào thì ngắt tại đó, và mình cứ nhấp liên tục cho đến khi xong, không phải mỗi lần break là mỗi lần thực hiện lệnh.cám ơn bác

Bạn dùng lệnh DIVIDE (DIV) được đấy.Bạn dùng phương thức truy bắt điểm NOD nha.Hoặc có thể dùng lệnh MEASURE cũng được đấy.Bạn dùng thử xem nha!

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 lệnh DIVIDE (DIV) được đấy.Bạn dùng phương thức truy bắt điểm NOD nha.Hoặc có thể dùng lệnh MEASURE cũng được đấy.Bạn dùng thử xem nha!

 

mình đang chia các đoạn cong không bằng nhau, mình thử rồi không được.

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
à, em thử rồi, được rồi, nhưng có lisp nào thế này không: break, chọn polylinenhấp vào điểm nào thì ngắt tại đó, và mình cứ nhấp liên tục cho đến khi xong, không phải mỗi lần break là mỗi lần thực hiện lệnh.cám ơn bác

Đây, thử xem

(defun C:WBREAK( / name p)
 (while (setq name (entsel))
(setq p (cadr name) name (car name))
(command "_.break" name p p)
(command "_.change" (entlast) "" "p" "c" 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
Đây, thử xem

(defun C:WBREAK( / name p)
 (while (setq name (entsel))
(setq p (cadr name) name (car name))
(command "_.break" name p p)
(command "_.change" (entlast) "" "p" "c" 1 "")
 )
)

 

lisp của bác không xài được, bác xem lại có sai ở đâu không

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
lisp của bác không xài được, bác xem lại có sai ở đâu không

Mình thử lại với đường polyline vẫn bình thường mà. Trước khi thực hiện bác tắt chế độ bắt dính đi,hoặc có thể sửa lại như sau

(defun C:WBREAK( / name p)

(setvar "osmode" 0)

(while (setq name (entsel))

(setq p (cadr name) name (car name))

(command "_.break" name p p)

;đoan này không cần thiết

;(command "_.change" (entlast) "" "p" "c" 1 "")

)

)

  • Vote tăng 2

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
lisp của bác không xài được, bác xem lại có sai ở đâu không

Khà khà,

Lisp này chạy ngon, mỗi tội thiếu tí bôi trơn thôi bác ơi. Gọi bác tdvn đi nhậu là nó chạy vù vù ngay ấy mà.

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ử lại với đường polyline vẫn bình thường mà. Trước khi thực hiện bác tắt chế độ bắt dính đi,hoặc có thể sửa lại như sau

(defun C:WBREAK( / name p)

(setvar "osmode" 0)

(while (setq name (entsel))

(setq p (cadr name) name (car name))

(command "_.break" name p p)

;đoan này không cần thiết

;(command "_.change" (entlast) "" "p" "c" 1 "")

)

)

 

 

à, tại em để bắt điểm với lại nó chuyển hết sang màu đỏ nên em không biết. bác giúp em thêm được không.

1. em muốn nó bắt điểm được, với lại lúc mà select object là hắn lại chia đoạn luôn, nếu bắt điểm được thì tốt quá

2. em muốn mỗi lần chia đoạn nó sẽ cho ra 1 màu khác nhau để dễ phân biệt

cám ơn bác nhiều

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ác cho em hỏi, em muốn chia 1 đoạn cong thành nhiều đoạn cong, với điểm chia là bất kỳ thì làm thế nào ạ.

+ Lệnh XDIV dùng chia đường cong, Lines, Pline 3D (chỉ vẽ các Points) theo các đoạn khác nhau do user nhập.

Lisp có post trong bài #7: http://www.cadviet.com/forum/index.php?sho...c=9019&st=0

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ại em ðể bắt ðiểm với lại nó chuyển hết sang màu ðỏ nên em không biết. bác giúp em thêm ðýợc không.

1. em muốn nó bắt ðiểm ðýợc, với lại lúc mà select object là hắn lại chia ðoạn luôn, nếu bắt ðiểm ðýợc thì tốt quá

2. em muốn mỗi lần chia ðoạn nó sẽ cho ra 1 màu khác nhau ðể dễ phân biệt

cám õn bác nhiều

Bạn xem thử, ðổi màu cũng ðc nhýng xem ra cũng không hay lắm. Mình thêm point cho bạn

(defun C:WBREAK( / name p)
 (setvar "pdmode" 33)
 (setvar "pdsize" 0.25)
 (setvar "osmode" 512)
 (while (and (setq p (getpoint "Pick")) (setq name (nentselp p)))
(setq name (car name))
(setvar "osmode" 0)
(command "_.break" name p p)
(command "_.point" p)
(setvar "osmode" 512)
 )
)

  • 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
Bạn xem thử, ðổi màu cũng ðc nhýng xem ra cũng không hay lắm. Mình thêm point cho bạn

(defun C:WBREAK( / name p)
 (setvar "pdmode" 33)
 (setvar "pdsize" 0.25)
 (setvar "osmode" 512)
 (while (and (setq p (getpoint "Pick")) (setq name (nentselp p)))
(setq name (car name))
(setvar "osmode" 0)
(command "_.break" name p p)
(command "_.point" p)
(setvar "osmode" 512)
 )
)

 

cám ơn bác, vậy là tốt lắm rồi. cho em hỏi thêm vì em bị lỗi này:

 

Command: (LOAD "C:/Documents and Settings/comeon811/Desktop/chiaduongcong.lsp")

; error: bad character read (octal): 0

Command: wbreak

Unknown command "WBREAK". Press F1 for help.

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 xem thử, ðổi màu cũng ðc nhýng xem ra cũng không hay lắm. Mình thêm point cho bạn

(defun C:WBREAK( / name p)
 (setvar "pdmode" 33)
 (setvar "pdsize" 0.25)
 (setvar "osmode" 512)
 (while (and (setq p (getpoint "Pick")) (setq name (nentselp p)))
(setq name (car name))
(setvar "osmode" 0)
(command "_.break" name p p)
(command "_.point" p)
(setvar "osmode" 512)
 )
)

 

 

lisp của bác có 1 vấn đề là thế này : nếu có 1 lưới các đường giao nhau (vd lưới ô vuông, lưới spl giao nhau ), thì khi mình muốn cắt tại điểm giao nhau thì lúc thì nó cắt đoạn thẳng đứng, lúc thì nó cắt đoạn nằm ngang. mình không thể chọn đối tượng thẳng đứng hay nằm ngang được. bác giúp em sửa lại cho hoản hảo nhé bác.

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
lisp của bác có 1 vấn ðề là thế này : nếu có 1 lýới các ðýờng giao nhau (vd lýới ô vuông, lýới spl giao nhau ), thì khi mình muốn cắt tại ðiểm giao nhau thì lúc thì nó cắt ðoạn thẳng ðứng, lúc thì nó cắt ðoạn nằm ngang. mình không thể chọn ðối týợng thẳng ðứng hay nằm ngang ðýợc. bác giúp em sửa lại cho hoản hảo nhé bác.

Ðây là lisp ðã ðc chỉnh theo ý bạn. Khi bạn gặp câu : "Chon vi tri chia khac (neu co)", nếu bạn nhập 1 ðiểm thì ðây sẽ là vị trí chia mới, nếu không thì sẽ chia ở vị trí cũ ban ðâu.

(defun C:WBREAK( / name p p1)
 (setvar "pdmode" 33)
 (setvar "pdsize" 0.25)
 (setvar "osmode" 512)
 (while (and (setq p (getpoint "Chon ðoi tuong va vi tri chia")) (setq name (nentselp p)))
(setvar "osmode" 544)
(setq p1 (getpoint "\nChon vi tri chia khac (neu co)"))
(if p1 (setq p p1))
(setq name (car name))
(setvar "osmode" 0)
(command "_.break" name p p)
(command "_.point" p)
(setvar "osmode" 512)
 )
)

  • 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
Ðây là lisp ðã ðc chỉnh theo ý bạn. Khi bạn gặp câu : "Chon vi tri chia khac (neu co)", nếu bạn nhập 1 ðiểm thì ðây sẽ là vị trí chia mới, nếu không thì sẽ chia ở vị trí cũ ban ðâu.

(defun C:WBREAK( / name p p1)
 (setvar "pdmode" 33)
 (setvar "pdsize" 0.25)
 (setvar "osmode" 512)
 (while (and (setq p (getpoint "Chon ðoi tuong va vi tri chia")) (setq name (nentselp p)))
(setvar "osmode" 544)
(setq p1 (getpoint "\nChon vi tri chia khac (neu co)"))
(if p1 (setq p p1))
(setq name (car name))
(setvar "osmode" 0)
(command "_.break" name p p)
(command "_.point" p)
(setvar "osmode" 512)
 )
)

 

 

mỗi lần space bỏ qua dòng này (Chon vi tri chia khac (neu co)) mất công quá bác à. bác có cách nào cải tiến được không: đầu tiên là mình sẽ chọn đối tượng, sau đó thì chia và phải sử dụng được đầy đủ osnap của cad nữa cơ. bác tdvn giúp em thêm cái này nhé bác.

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ỗi lần space bỏ qua dòng này (Chon vi tri chia khac (neu co)) mất công quá bác à. bác có cách nào cải tiến được không: đầu tiên là mình sẽ chọn đối tượng, sau đó thì chia và phải sử dụng được đầy đủ osnap của cad nữa cơ. bác tdvn giúp em thêm cái này nhé bác.

 

bác tdvn giúp em cái này nữa. thank bác

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ác tdvn giúp em cái này nữa. thank bác

Mình đang bận tý việc và cũng đang suy nghĩ xem cách nào thuận lợi cho bạn. Bạn chịu khó chờ tý nhé

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 ðã sửa lại cho bạn ðây. Về các kiểu bắt dính thì bạn có thể chỉnh lại theo ý mình bằng cách. Ðánh lệnh ds, sau ðó chọn các kiểu thích hợp. chọn OK. Sau ðó tại dòng command: ðánh osmode. Ví dụ

Command: osmode

Enter new value for OSMODE <2600>:

dùng giá trị 2600 ở trên nhập vào vị trí của dòng (setvar "osmode" 2600) trong lisp.

(defun C:WBR( / name p p1 p2 a ss l old nl)
 (princ "\nLenh chia  thanh tung doan")
 (setvar "pdmode" 33)
 (setvar "pdsize" 0.25)
 (setvar "osmode" 2600);Day la tong cua mot so kieu bat dinh
 (while (setq p (getpoint "Vi tri va doi tuong"))
(setq old (getvar "osmode"))
(setq a (/ (* (getvar "aperture") (getvar "viewsize")) 400)
p1 (list (- (car p) a) (+ (cadr p) a) 0.0)
p2 (list (+ (car p) a) (- (cadr p) a) 0.0) name nil)
(setq ss (ssget "c" p1 p2 '((0 . "LINE,XLINE,RAY,SPLINE,POLYLINE,LWPOLYLINE,ARC"))))
(if ss (progn
  (setq l (sslength ss))
  (if (= l 1) (setq name (ssname ss 0)) (progn
	(setq name (entsel "\nDiem chon co nhieu doi tuong, chon doi tuong can chia"))
	(if name (setq name (car name)))
  ))
))
(if name (progn
  (setvar "osmode" 0)
			  (setq nl (entlast))
  (command "_.break" name p p)
			  (if (null (equal nl (entlast))) (command "_.point" p))
))
(setvar "osmode" old)
 )
)

  • 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
các bác cho em hỏi, em muốn chia 1 đoạn cong thành nhiều đoạn cong, với điểm chia là bất kỳ thì làm thế nào ạ.

 

câu này ông thày tui cùng từng hỏi khi xưa nhưng nghĩ maĩ không ra..................mấy cách của các ka ka đè ra cũng có vẻ đưọc đây........tui lâu rồi khôg sài cad nên chưa thử

test thử tui PM lại nghen

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 ðã sửa lại cho bạn ðây. Về các kiểu bắt dính thì bạn có thể chỉnh lại theo ý mình bằng cách. Ðánh lệnh ds, sau ðó chọn các kiểu thích hợp. chọn OK. Sau ðó tại dòng command: ðánh osmode. Ví dụ

Command: osmode

Enter new value for OSMODE <2600>:

dùng giá trị 2600 ở trên nhập vào vị trí của dòng (setvar "osmode" 2600) trong lisp.

(defun C:WBR( / name p p1 p2 a ss l old nl)
 (princ "\nLenh chia  thanh tung doan")
 (setvar "pdmode" 33)
 (setvar "pdsize" 0.25)
 (setvar "osmode" 2600);Day la tong cua mot so kieu bat dinh
 (while (setq p (getpoint "Vi tri va doi tuong"))
(setq old (getvar "osmode"))
(setq a (/ (* (getvar "aperture") (getvar "viewsize")) 400)
p1 (list (- (car p) a) (+ (cadr p) a) 0.0)
p2 (list (+ (car p) a) (- (cadr p) a) 0.0) name nil)
(setq ss (ssget "c" p1 p2 '((0 . "LINE,XLINE,RAY,SPLINE,POLYLINE,LWPOLYLINE,ARC"))))
(if ss (progn
  (setq l (sslength ss))
  (if (= l 1) (setq name (ssname ss 0)) (progn
	(setq name (entsel "\nDiem chon co nhieu doi tuong, chon doi tuong can chia"))
	(if name (setq name (car name)))
  ))
))
(if name (progn
  (setvar "osmode" 0)
			  (setq nl (entlast))
  (command "_.break" name p p)
			  (if (null (equal nl (entlast))) (command "_.point" p))
))
(setvar "osmode" old)
 )
)

 

 

thank bác nhiều lắm, nhưng vẫn chọn đối tượng rồi kick điểm chia liên tục thôi. nhưng thôi vậy cũng được rồi, em gửi cho bác bản vẽ bình đồ, đg màu xanh là sông, các đường còn lại là đường đồng mức. cho em hỏi sông được vẽ bằng lệnh gì vậy, tại sao bề dày của nó lại lớn thế, dù em đã tắt lineweight rồi. em dùng lisp của bác sao lại không chia được con sông ra thành nhiều đoạn tại những điểm giao với đường đồng mức. bác rảnh thì xem hộ em nhé. thank bác

 

link file : http://www.mediafire.com/?sharekey=e0519e8...04e75f6e8ebb871

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  

×