Chuyển đến nội dung
Diễn đàn CADViet
trieubb

lisp chặt rời các đối tượng làm hai phần

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

Em cần gấp chặt rời các đối tượng ra làm hai phần;

Bác nào có cái lisp chặt rời các đối tượng làm hai phần, tức là (_break at point) ấy

Ví dụ em muốn chặt đường 1 mà có đường 2 cắt qua nó em

se làm như sau:

gõ lệnh, sau đó chọn đối tượng cần chặt (tức đường 1) rồi Enter cái, rồi chọn đường để chặt (tức đường 2)

rồi Enter thế là đường 1 bị chặt ra làm hai phần

các bác ơi cái này mỗi ngày em làm mấy ngìn đường đấy bác ạ, mà em cứ ngồi chặt thủ công mãi chán quá rồi

các bác giúp em nhanh với

em cảm ơn các 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
Em cần gấp chặt rời các đối tượng ra làm hai phần;

Bác nào có cái lisp chặt rời các đối tượng làm hai phần, tức là (_break at point) ấy

Ví dụ em muốn chặt đường 1 mà có đường 2 cắt qua nó em

se làm như sau:

gõ lệnh, sau đó chọn đối tượng cần chặt (tức đường 1) rồi Enter cái, rồi chọn đường để chặt (tức đường 2)

rồi Enter thế là đường 1 bị chặt ra làm hai phần

các bác ơi cái này mỗi ngày em làm mấy ngìn đường đấy bác ạ, mà em cứ ngồi chặt thủ công mãi chán quá rồi

các bác giúp em nhanh với

em cảm ơn các bác nhiều

sao bạn không chịu đọc mà đã hỏi. mình đã gửi cho bạn lisp breakall rồi đấy thô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
Em cần gấp chặt rời các đối tượng ra làm hai phần;

Bác nào có cái lisp chặt rời các đối tượng làm hai phần, tức là (_break at point) ấy

Ví dụ em muốn chặt đường 1 mà có đường 2 cắt qua nó em

se làm như sau:

gõ lệnh, sau đó chọn đối tượng cần chặt (tức đường 1) rồi Enter cái, rồi chọn đường để chặt (tức đường 2)

rồi Enter thế là đường 1 bị chặt ra làm hai phần

các bác ơi cái này mỗi ngày em làm mấy ngìn đường đấy bác ạ, mà em cứ ngồi chặt thủ công mãi chán quá rồi

các bác giúp em nhanh với

em cảm ơn các bác nhiều

Bạn chịu khó search trên diễn đàn, sẽ có khối đó

Chứ ai cũng chờ dọn lên mâm mà xơi thì có mà...

Lưu ý bạn là bạn tạo quá nhiều TOPIC cùng 1 chủ đề rồi đó. điều này sẽ không hay chút nào và cũng nên nêu yêu cầu đúng chỗ của nó để người khác còn tìm mà đọc nữa chứ

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
sao bạn không chịu đọc mà đã hỏi. mình đã gửi cho bạn lisp breakall rồi đấy thôi.

 

OK

cảm ơn bác TRAITIMSAT034 rất nhiều

mình xem lại rồi cái đó OK lắm rồi

thanks các bác 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
sao bạn không chịu đọc mà đã hỏi. mình đã gửi cho bạn lisp breakall rồi đấy thôi.

 

à bác TRAITIMSAT034 ơi

nếu đường của em ở trong block thì nó không chọn được

bác đã giúp em thì giúp cho trót để thằng em khỏi khổ

thanks bác 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
Em cần gấp chặt rời các đối tượng ra làm hai phần;

Bác nào có cái lisp chặt rời các đối tượng làm hai phần, tức là (_break at point) ấy

Ví dụ em muốn chặt đường 1 mà có đường 2 cắt qua nó em

se làm như sau:

gõ lệnh, sau đó chọn đối tượng cần chặt (tức đường 1) rồi Enter cái, rồi chọn đường để chặt (tức đường 2)

rồi Enter thế là đường 1 bị chặt ra làm hai phần

các bác ơi cái này mỗi ngày em làm mấy ngìn đường đấy bác ạ, mà em cứ ngồi chặt thủ công mãi chán quá rồi

các bác giúp em nhanh với

em cảm ơn các bác nhiều

Của bạn đây, lisp này mình lấy bên ForumCad.cz chứ không phải của bố nào Vn đâu bạn nhé, nói nhanh cho nó vuông

http://www.cadviet.com/upfiles/breakall.lsp

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 TRAITIMSAT034 ơi

nếu đường của em ở trong block thì nó không chọn được

bác đã giúp em thì giúp cho trót để thằng em khỏi khổ

thanks bác nhé

Lisp này là do mình sưu tập. mình biết ít về lisp lắm. cái này bạn nhờ các cao thủ trên diế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
Của bạn đây, lisp này mình lấy bên ForumCad.cz chứ không phải của bố nào Vn đâu bạn nhé, nói nhanh cho nó vuông

http://www.cadviet.com/upfiles/breakall.lsp

Lạ thật! ngay từ đầu mình có nói là do mình viết đâu. hic

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ủa bạn đây, lisp này mình lấy bên ForumCad.cz chứ không phải của bố nào Vn đâu bạn nhé, nói nhanh cho nó vuông

http://www.cadviet.com/upfiles/breakall.lsp

anh Phamtuan không nên nói căng thẳng thế. Anh em vào đây để học hỏi để nâng cao trình độ . Việc tham khảo các chương trình lisp ở trang web nước ngoài là bình thường. Với bản thân tôi chỉ quan tâm đến việc xử lý thuật toán trong lisp chứ ko quan tâm nhiều đến "create by"

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ủa bạn đây, lisp này mình lấy bên ForumCad.cz chứ không phải của bố nào Vn đâu bạn nhé, nói nhanh cho nó vuông

http://www.cadviet.com/upfiles/breakall.lsp

hĩ hĩ mình thì mình vẫn thích thẳng hơn vuông.

 

Trích dẫn(traitimsat034 @ Sep 3 2008, 9:13) *

Mình có sưu tập được một lisp giống với yêu cầu của bạn, hi vọng giúp ích cho bạn.

 

;;;=======================[ BreakObjects.lsp ]==============================

;;; Author: Copyright© 2006,2007 Charles Alan Butler

;;; Contact @ www.TheSwamp.org

;;; Version: 1.3 April 9,2007

;;; Globalization by XANADU - www.xanadu.cz

 

vừa rồi mình có đọc và thấy vuông của bạn.

 

; Program Name: Troy.lsp [Troy R5] - Asteroids AutoLISP game

; Created By: phamtuan (Email: tuanngph@hpc.org.vn)

; Date Created: 1-20-06

 

còn cái này.

; Program Name: Troy.lsp [Troy R5] - Asteroids AutoLISP game

; Created By: Terry Miller (Email: terrycadd@yahoo.com)

; (URL: http://web2.airmail.net/terrycad)

; For the International version of this game, download Troy-I.lsp

; from the above website.

; Date Created: 1-20-06

 

????????????????????????

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ủa bạn đây, lisp này mình lấy bên ForumCad.cz chứ không phải của bố nào Vn đâu bạn nhé, nói nhanh cho nó vuông

http://www.cadviet.com/upfiles/breakall.lsp

 

Đúng rồi cái này bác TRAITIMSAT034 đã cho em rồi

nhưng vẫn hạn chế là nếu cái đường 2 nằm trong BLOCK thì nó kô chọn được

các bác giúp em luôn cái hạn chế đó nhé

giúp cho chót mà

thankss các 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
Đúng rồi cái này bác TRAITIMSAT034 đã cho em rồi

nhưng vẫn hạn chế là nếu cái đường 2 nằm trong BLOCK thì nó kô chọn được

các bác giúp em luôn cái hạn chế đó nhé

giúp cho chót mà

thankss các bác

Đối tượng đa tuyến thì cậu dùng lisp TRAITIMSAT034 . Còn nếu đối tượng chặt là block thì dùng thêm cái này.

(defun c:Boj ( / ent1 ent2 giao ent3 ent)
 	(vl-load-com)
  	(setq ent1 (car (setq ent3 (entsel "\nVao doi tuong can cat: "))))
 	(redraw ent1 3)
 	(setq 	ent (entsel "\nVao doi tuong dung de cat: "))

 	(cond (	(= "INSERT" (cdr (assoc 0 (entget (car ent)))))
       		(command "undo" "mark")
  		(command "explode" ent)
  		(setq ent2 (entget (ssname (ssget "L") 0)))
       		(command "undo" "back")
       		(entmake ent2)
       		(setq ent2 (ssname (ssget "L") 0))
 		)
      (T (setq ent2 (car ent)))
     	)
 	(redraw ent1 4)
 	(setq giao (giaodt ent1 ent2))
 	(if giao
   		(foreach pp	giao
	  	(command "break" ent3 "f" pp "@")
   		)
  	(alert "2 doi tuong khong giao nhau!")
 	)
 	(if (= "INSERT" (cdr (assoc 0 (entget (car ent)))))
 		(entdel ent2)
 	)
  	(princ)
)
(defun GiaoDT	(ent1 ent2)
   		(setq 	ob1 (vlax-ename->vla-object ent1)
  		ob2 (vlax-ename->vla-object ent2)
   		)
   	(setq 	g 	(vlax-variant-value
      			(vla-IntersectWith ob1 ob2 acExtendNone)
    		)
   	)
   	(if	(/= (vlax-safearray-get-u-bound g 1) -1)
     		(setq g (vlax-safearray->list g))
     		(setq g nil)
   	)
   	(if	g
     		(progn
		(setq 	kq nil
      			sd (fix (/ (length g) 3))
		)
		(repeat	sd
  			(setq	kq (append kq (list (list (car g) (cadr g) (caddr g))))
				g  (cdddr g)
  			)
		)
		kq
     		)
     		nil
   	)
)

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ái của bác vẫn chưa chọn được nhiều đối tượng bác ạ

bác làm thế nào mà chọn được nhiều đối tượng cơ

cố lên bác nhé

OK?????

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ái của bác vẫn chưa chọn được nhiều đối tượng bác ạ

bác làm thế nào mà chọn được nhiều đối tượng cơ

cố lên bác nhé

OK?????

Nhiều đối tượng đây. Vẫn là lệnh BOJ . Chọn nhóm đối tượng cần break, chọn 1 đối tượng làm dao cắt. Chú ý là lisp này vẫn chỉ giới hạn bởi đối tượng cần break là đường thẳng, cung tròn, nếu polynine nhiều đoạn thì mỗi lần chỉ cắt được 1 đoạn ( cái này phải cần thêm thời gian để hoàn thiện ).

(defun c:BOJ ( / ss ent dem ent1 giao)
	(SAVE_MODE)
 	(INIT)
 	(prompt "\nChon doi tuong can cat: ")
  	(setq ss (ssget))
 	(setq 	ent 	(entsel "\n Chon doi tuong dung de cat: ")
 		dem	0
)
(cond 	(	(= "INSERT" (cdr (assoc 0 (entget (car ent)))))
       		(command "undo" "mark")
  		(command "explode" ent)
  		(setq ent1 (entget (ssname (ssget "L") 0)))
       		(command "undo" "back")
       		(entmake ent1)
       		(setq ent1 (ssname (ssget "L") 0))
 		)
      	(T (setq ent1 (car ent)))
     	)
 	(repeat (sslength ss)
 		(setq giao (giaodt ent1 (ssname ss dem)))
 		(if giao
   			(foreach pp	giao
	  		(command "break" (list (ssname ss dem) (list 0.0 0.0 0.0)) "f" pp "@")
   			)
 		)
       	(setq dem (1+ dem))
     	)
 	(if (= "INSERT" (cdr (assoc 0 (entget (car ent)))))
 		(entdel ent1)
 	)
  	(princ)
 	(DONE)
 	(RESTORE)
)
;;;==========================================================================
; HAM BAY LOI
(defun INIT ()
 	(setq 	OLD_ERROR *error*
	*error* MYERROR
)
)

(defun MYERROR (errmsg)

 	(cond
   		(	(= errmsg "quit / exit abort")
	 	(princ)
	)
   		(	(/= errmsg "Function cancelled")
	 	(princ (strcat "\n Co loi: " errmsg))
	)
 	)

 	(command "Undo" "back")			
 	(setvar "osmode" OLD_OSMODE)
   	(command "CECOLOR" OLD_CECOLOR)

 	(DONE)

 	(prompt "\n Da thuc hien ham *error*, Reset lai thiet lap ban dau")

)

(defun DONE ()
 	(if OLD_ERROR (setq *error* OLD_ERROR))
)

;;;----------------------------------------------------------------------
; HAM LUU VA TRA LAI CAC THONG SO BAN DAU
(defun SAVE_MODE()

 	(command "Undo" "Mark")
(command "UCS" "W" "")
   	(setq OLD_OSMODE (getvar "OSMODE"))
    	(setq OLD_CECOLOR (getvar "CECOLOR"))
 	(command "cmdecho" 0)
 	(vl-load-com)

)
(defun RESTORE()

   	(if OLD_OSMODE
 		(setvar "osmode" OLD_OSMODE)
 	)
 	(if OLD_CECOLOR
   		(command "CECOLOR" OLD_CECOLOR)
 	)
 	(command "cmdecho" 1)
     	(Grtext -1 "Lisp's written by Nataca - 0983.715.333")
)
;---------------------------------------------------------------------------
(defun GiaoDT	(ent1 ent2)
   		(setq 	ob1 (vlax-ename->vla-object ent1)
  		ob2 (vlax-ename->vla-object ent2)
   		)
   	(setq 	g 	(vlax-variant-value
      			(vla-IntersectWith ob1 ob2 acExtendNone)
    		)
   	)
   	(if	(/= (vlax-safearray-get-u-bound g 1) -1)
     		(setq g (vlax-safearray->list g))
     		(setq g nil)
   	)
   	(if	g
     		(progn
		(setq 	kq nil
      			sd (fix (/ (length g) 3))
		)
		(repeat	sd
  			(setq	kq (append kq (list (list (car g) (cadr g) (caddr g))))
				g  (cdddr g)
  			)
		)
		kq
     		)
     		nil
   	)
)

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

Anh nghĩ ko cần dùng đến lisp đâu chú "Natasa" ah, anh vẫn thường dùng extrim có sẵn để ..."break" những mảnh Bình đồ QH lớn. Chỉ với một mẹo nhỏ thôi: copy bản vẽ thành 2, một phần dùng extrim cắt fía này, một phần cắt fía kia, sau đó ráp lại với nhau. Còn nếu muốn dùng lisp break thì có thể sửa lisp extrim có sẵn (để hoàn thiện được như thế cũng hơi vất vả đấy :lol: )

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
Anh nghĩ ko cần dùng đến lisp đâu chú "Natasa" ah, anh vẫn thường dùng extrim có sẵn để ..."break" những mảnh Bình đồ QH lớn. Chỉ với một mẹo nhỏ thôi: copy bản vẽ thành 2, một phần dùng extrim cắt fía này, một phần cắt fía kia, sau đó ráp lại với nhau. Còn nếu muốn dùng lisp break thì có thể sửa lisp extrim có sẵn (để hoàn thiện được như thế cũng hơi vất vả đấy :lol: )

Cách của bác cũng hay. Nhưng theo em chỉ áp dụng cho trường hợp cắt mảnh lớn, còn cắt lẻ tẻ thì chắc là không áp dụ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
Cách của bác cũng hay. Nhưng theo em chỉ áp dụng cho trường hợp cắt mảnh lớn, còn cắt lẻ tẻ thì chắc là không áp dụng được.

Tôi có 1 mẹo này nhé:

Bác có hằng trăm đưòng như thế mà cắt đi thì rất uổng phí; biết đâu sau này lại cần nó thì sao nối lại à? Ko ổn dzồi.

Bác vẽ 2 đưòng pline cắt qua vùng muốn cắt. Sau đó vẽ thêm 2 pline ở 2 đầu -> dùng lệnh Pedit nối thành 1pline kín -> dùng lệnh wipeout chọn pline vừa nối Ok .

Thấy chưa các đưòng của bác bị che giống như cắt nhưng lại ko sao cả. Bạn làm thử sẽ khoái chí ngay í....

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 có 1 mẹo này nhé:

Bác có hằng trăm đưòng như thế mà cắt đi thì rất uổng phí; biết đâu sau này lại cần nó thì sao nối lại à? Ko ổn dzồi.

Bác vẽ 2 đưòng pline cắt qua vùng muốn cắt. Sau đó vẽ thêm 2 pline ở 2 đầu -> dùng lệnh Pedit nối thành 1pline kín -> dùng lệnh wipeout chọn pline vừa nối Ok .

Thấy chưa các đưòng của bác bị che giống như cắt nhưng lại ko sao cả. Bạn làm thử sẽ khoái chí ngay í....

Cách này tôi chỉ hay dùng để cắt đường đồng mức thôi. Còn trong bản vẽ quy hoạch lớn thì chưa dùng wipeout đã nặng rồi, cho thêm nó vào để che thì càng nặng mà thực tế những hiện trạng thừa cắt đi cũng " không đáng tiếc", nó còn giúp giảm bớt dung lượng bản vẽ. Với lại chủ để này là break đối tượng làm hai phần, có lẽ chúng ta đã đi lạ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

Đúng đấy bác Snowman ạ

cái extrim thì em dùng suốt rồi

nhưng trường hợp này thì kô được đâu bác ạ

nếu được thì bác để ý lại tí

vì em muốn chặt làm hai phần chứ không phải cắt đi như extrim

 

 

bác meohoang cúng có ý hay

nhưng chỉ áp dụng được bình đồ (tức đường đồng mức) thôi

chứ cắt ngang thì bó tay không áp dụng được 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 nataca ơi

bác kiểm tra lại đi thôi

cái của bác có lỗi đấy

vì nó chẳng chặt được gì cả

mong bác cố gắng giúp em sớm nhé

mấy hôm nay chặt bằng tay mỏi quá rồi 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 nataca ơi

bác kiểm tra lại đi thôi

cái của bác có lỗi đấy

vì nó chẳng chặt được gì cả

mong bác cố gắng giúp em sớm nhé

mấy hôm nay chặt bằng tay mỏi quá rồi bác ạ

Vậy tốt nhất bạn đưa file của bạn lên đây để tôi có hướng giải quyết. Bạn cũng giúp tôi nêu rõ lỗi như thế nào nhé . Vì dính đến block là phức tạp rồi, mà lại block nhiều tầng nữa thì càng gay. Thế 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

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

×