Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
20 replies to this topic

#1 amateurday

amateurday

    biết lệnh break

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

Đã gửi 08 April 2009 - 11:19 PM

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

#2 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 08 April 2009 - 11:56 PM

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?
  • 0

#3 amateurday

amateurday

    biết lệnh break

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

Đã gửi 09 April 2009 - 12:03 AM

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

#4 sv_nuce

sv_nuce

    biết zoom

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

Đã gửi 09 April 2009 - 12:12 AM

à, 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!
  • 0
Diễn đàn cadviet thiệt là PRO!

#5 amateurday

amateurday

    biết lệnh break

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

Đã gửi 09 April 2009 - 01:12 AM

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

#6 tdvn

tdvn

    biết lệnh rotate

  • Members
  • PipPipPip
  • 134 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 09 April 2009 - 01:22 AM

à, 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 "")
)
)

  • 0

#7 amateurday

amateurday

    biết lệnh break

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

Đã gửi 09 April 2009 - 01:38 AM

Đâ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
  • 0

#8 tdvn

tdvn

    biết lệnh rotate

  • Members
  • PipPipPip
  • 134 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 09 April 2009 - 08:36 AM

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 "")
)
)
  • 2

#9 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 09 April 2009 - 11:52 AM

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à.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#10 amateurday

amateurday

    biết lệnh break

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

Đã gửi 09 April 2009 - 12:32 PM

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

#11 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 175 (tàm tạm)

Đã gửi 09 April 2009 - 05:15 PM

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.c...o...c=9019&st=0
  • 0

#12 tdvn

tdvn

    biết lệnh rotate

  • Members
  • PipPipPip
  • 134 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 09 April 2009 - 05:59 PM

à, 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)
)
)

  • 1

#13 amateurday

amateurday

    biết lệnh break

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

Đã gửi 10 April 2009 - 12:10 AM

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

#14 amateurday

amateurday

    biết lệnh break

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

Đã gửi 14 April 2009 - 11:25 PM

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

#15 tdvn

tdvn

    biết lệnh rotate

  • Members
  • PipPipPip
  • 134 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 15 April 2009 - 12:00 AM

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)
)
)

  • 1

#16 amateurday

amateurday

    biết lệnh break

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

Đã gửi 15 April 2009 - 02:41 PM

Ðâ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.
  • 0

#17 amateurday

amateurday

    biết lệnh break

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

Đã gửi 16 April 2009 - 10:24 AM

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

#18 tdvn

tdvn

    biết lệnh rotate

  • Members
  • PipPipPip
  • 134 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 16 April 2009 - 11:39 AM

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é
  • 0

#19 tdvn

tdvn

    biết lệnh rotate

  • Members
  • PipPipPip
  • 134 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 17 April 2009 - 12:21 AM

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)
)
)

  • 1

#20 trumxike8x

trumxike8x

    biết vẽ line

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

Đã gửi 17 April 2009 - 03:03 AM

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