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

Xin lisp giống lệnh trim

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

Cho em hỏi có lisp nào thao tác giống lệnh trim nhưng xóa tất cả những nét được chọn.

(Đại ý là kết hợp lệnh Trim và erase_trên diễn đàn mới có trong vùng kí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

Cho em hỏi có lisp nào thao tác giống lệnh trim nhưng xóa tất cả những nét được chọn.

(Đại ý là kết hợp lệnh Trim và erase_trên diễn đàn mới có trong vùng kín)

(1).Trim và Erase từng cặp đối tượng?

hay

(2).Trim và Erase cùng lúc 2 tập hợp chọn?

(1) thì dễ nhưng (2) thì còn phụ thuộc thứ tự chọn đối tượng nữa. Bạn muốn sao?

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

(1).Trim và Erase từng cặp đối tượng?

hay

(2).Trim và Erase cùng lúc 2 tập hợp chọn?

(1) thì dễ nhưng (2) thì còn phụ thuộc thứ tự chọn đối tượng nữa. Bạn muốn sao?

Đại ý là như thế này: Mình có 1 hình vẽ. Vẽ 1 đường line và muốn xóa một nửa và giữ lại một nửa.Thường là trim rồi sau đó erase.Mình muốn gộp chúng lạ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

Đại ý là như thế này: Mình có 1 hình vẽ. Vẽ 1 đường line và muốn xóa một nửa và giữ lại một nửa.Thường là trim rồi sau đó erase.Mình muốn gộp chúng lại.

Thú thật: tôi không hiểu ý bạn. Có 1 hình gồm nhiều đối tượng, sau đó trim thì đương nhiên 1 nửa sẽ bị xóa, còn lại 1 nửa. Nhưng trim rồi erase nghĩa là erase cái gì?

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

Thú thật: tôi không hiểu ý bạn. Có 1 hình gồm nhiều đối tượng, sau đó trim thì đương nhiên 1 nửa sẽ bị xóa, còn lại 1 nửa. Nhưng trim rồi erase nghĩa là erase cái gì?

Trim thì chỉ những đường thuộc 1 hình thôi.còn nếu các nét vẽ mà ko thuộc hình đó thì mình lại phải erase.

  • Vote giảm 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

Trim thì chỉ những đường thuộc 1 hình thôi.còn nếu các nét vẽ mà ko thuộc hình đó thì mình lại phải erase.

Pó tay...!!!???

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

Trim thì chỉ những đường thuộc 1 hình thôi.còn nếu các nét vẽ mà ko thuộc hình đó thì mình lại phải erase.

Trim có thể thực hiện cho 1 tập hợp chọn chứ không phải chỉ 1 hình đâu 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

Pó tay...!!!???

Em bó chân, ko thể hiểu ý của tác giả 47c1 qua diễn đạt chữ nghĩa mà ko có hình anh minh họa!????

(trên diễn đàn từng có nhiều bài viết, mà mọi người không hiểu ý tác giả, lại phải yêu cầu tác giả gửi bản vẽ lên, gây lãng phí thời gian)

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 bó chân, ko thể hiểu ý của tác giả 47c1 qua diễn đạt chữ nghĩa mà ko có hình anh minh họa!????

(trên diễn đàn từng có nhiều bài viết, mà mọi người không hiểu ý tác giả, lại phải yêu cầu tác giả gửi bản vẽ lên, gây lãng phí thời gian)

Đùa chứ tưởng là dễ hiểu nên chả cần phải giải thích nhiều. Ví dụ bạn có 1 cái bình đồ rất rộng. Vẽ 1 đường line làm giới hạn thành 2 nửa bình đồ.

Bạn ko thể xóa toàn bộ cả 1 nửa bình đồ. đầu tiên bạn phải trim các đường cắt qua đường line giới hạn sau đó mới erase các đường bị tách rời.

Mình muốn gộp lại xóa tất 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

Mình thì đoán bạn đó đang trim ở Acad2004 trở về trước,hoặc là bạn nhầm lẫn giữa trim và break, không biết có phải thế không 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 thì đoán bạn đó đang trim ở Acad2004 trở về trước,hoặc là bạn nhầm lẫn giữa trim và break, không biết có phải thế không nhỉ? >:)

Đương nhiên là ko phải.

Thui câu hỏi này mình hỏi cho cá nhân vì đôi khi cũng hơi phiền hà.nhưng mà thực ra Trim xong rồi erase cũng ko sao.

Mình tìm trên diễn đàn hình như có cách trim một hình kín.Ko biết liệu có thể làm như thế này được không: mình vẽ 1 hình chữ nhật(hoặc hình tròn, elip) sau đó muốn lựa chọn để xóa các phần nằm ngoài hoặc xóa các phần nằm trong hình chữ nhật(hoặc hình tròn, elip)đó được ko?

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

Đùa chứ tưởng là dễ hiểu nên chả cần phải giải thích nhiều. Ví dụ bạn có 1 cái bình đồ rất rộng. Vẽ 1 đường line làm giới hạn thành 2 nửa bình đồ.

Bạn ko thể xóa toàn bộ cả 1 nửa bình đồ. đầu tiên bạn phải trim các đường cắt qua đường line giới hạn sau đó mới erase các đường bị tách rời.

Mình muốn gộp lại xóa tất luôn.

Bây giờ thì botay.com lẫn bochan.com 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

Lệnh Trim thì chỉ xoá những đuờng cắt với đuờng giới hạn mình định. sau đó mình phải erase.Ý mình là muốn xoá luôn những đuờng ko cắt với đuờng giới hạn đó luôn.Sao mọi nguời lại ko hiểu ý câu hỏi mình 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

Lệnh Trim thì chỉ xoá những đuờng cắt với đuờng giới hạn mình định. sau đó mình phải erase.Ý mình là muốn xoá luôn những đuờng ko cắt với đuờng giới hạn đó luôn.Sao mọi nguời lại ko hiểu ý câu hỏi mình nhỉ.

Vậy chớ "đường bị tách rời" là đường nào?

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 nhiên là ko phải.

Thui câu hỏi này mình hỏi cho cá nhân vì đôi khi cũng hơi phiền hà.nhưng mà thực ra Trim xong rồi erase cũng ko sao.

Mình tìm trên diễn đàn hình như có cách trim một hình kín.Ko biết liệu có thể làm như thế này được không: mình vẽ 1 hình chữ nhật(hoặc hình tròn, elip) sau đó muốn lựa chọn để xóa các phần nằm ngoài hoặc xóa các phần nằm trong hình chữ nhật(hoặc hình tròn, elip)đó được ko?

Cái này thì Cadviet đã có. Khuya quá, sáng mai mình sẽ post cho. Thực ra do bạn đặt đề khó hiểu quá nên khó giúp được bạn thôi. Sorry.

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

Cho em hỏi có lisp nào thao tác giống lệnh trim nhưng xóa tất cả những nét được chọn.

(Đại ý là kết hợp lệnh Trim và erase_trên diễn đàn mới có trong vùng kín)

 

 

Đùa chứ tưởng là dễ hiểu nên chả cần phải giải thích nhiều. Ví dụ bạn có 1 cái bình đồ rất rộng. Vẽ 1 đường line làm giới hạn thành 2 nửa bình đồ.

Bạn ko thể xóa toàn bộ cả 1 nửa bình đồ. đầu tiên bạn phải trim các đường cắt qua đường line giới hạn sau đó mới erase các đường bị tách rời.

Mình muốn gộp lại xóa tất luôn.

 

 

Đương nhiên là ko phải.

Thui câu hỏi này mình hỏi cho cá nhân vì đôi khi cũng hơi phiền hà.nhưng mà thực ra Trim xong rồi erase cũng ko sao.

Mình tìm trên diễn đàn hình như có cách trim một hình kín.Ko biết liệu có thể làm như thế này được không: mình vẽ 1 hình chữ nhật(hoặc hình tròn, elip) sau đó muốn lựa chọn để xóa các phần nằm ngoài hoặc xóa các phần nằm trong hình chữ nhật(hoặc hình tròn, elip)đó được ko?

Bạn nên chú ý cách giải thích vấn đề của mình, tránh làm cả bạn và mọi người mất quá nhiều thời gian

Ý xanh : được

Ý đỏ : được

Bạn có thể theo dõi ở đây, chính là topic mà bạn nói chỉ có "trong" chứ chưa có ngoài, nhưng thực ra đã có, các lisp bác giabach và bác thiep viết rất hay :

http://www.cadviet.com/forum/index.php?showtopic=27121&st=40

 

Còn đây là mình độ giùm theo 2 yêu cầu của bạn. Yêu cầu xanh : mình cụ thể là bên trái hoặc bên phải Line,Pline, chưa có thời gian làm tổng quát :)

Link EE

;free lisp from Cadviet.com @gia_bach -> ketxu ^^
(defun C:EE ( / en ss lst ssall bbox tmpvt lit) 
(vl-load-com)
(if (null etrim)(load "extrim.lsp"))
(setq tmpvt '(1e+10 0 0))
 (if (and (setq en (car(entsel "\n Chon duong bao : ")))
          (wcmatch (cdr(assoc 0 (entget en))) "LINE,*POLYLINE"))		   
   (progn
     (setq bbox (ACET-ENT-GEOMEXTENTS en))
     (setq bbox (mapcar '(lambda(x)(trans x 0 1)) bbox))
     (setq lst (ACET-GEOM-OBJECT-POINT-LIST en 1e-3)
		lit (nth (1- (length lst)) lst))
     (ACET-SS-ZOOM-EXTENTS (ACET-LIST-TO-SS (list en)))
     (command "_.Zoom" "0.95x") 
  (setq ssall (ssget "_X" (list (assoc 410 (entget en)))))
  (if (vlax-curve-isClosed en)	  
	(progn
		(etrim en (getpoint "\n Phia cat va xoa bo : "))
		(setq ss (ssget "_CP" lst))			
	)
	(progn	
		(initget 1 "t p T P")
		(if (= (strcase(getkword "\n Phia cat va xoa bo : [T/P]")) "T")
			(progn
				(etrim en (mapcar '- (nth 0 lst) '(1e+10 0 0)))
				(setq ss (ssget "_CP"  
					(append  (list (nth 0 lst) (mapcar '+ (nth 0 lst) tmpvt) (mapcar '+ lit tmpvt) lit))))
			)
			(progn
			(etrim en (mapcar '+ (nth 0 lst) '(1e+10 0 0)))
			(setq ss (ssget "_CP"  
				(append  (list (nth 0 lst) (mapcar '- (nth 0 lst) tmpvt) (mapcar '- lit tmpvt) lit))))
			)
		)
	)
  )
  (setq lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
			(foreach e1 lst (ssdel e1 ssall))
			(ACET-SS-ENTDEL ssall)
  )
 )
)

 

Chú ý : chưa kiểm định, mần trên lý thuyết ^^

  • 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

cái này theo mình đâu có cần dùng lisp. Cad cũng có hỗ trợ 1 lệnh đó là extrim ( bạn vào express/tool/command alias editor để thiết lập phím tắt theo ý muốn) lệnh này có thể làm theo ý bạn với điều kiện phần bị cắt ko có đường multiline nào bị cắt. nếu dính thì thanh multiline sẽ bị thay đổi. Chúc bạn thành cô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

Bạn nên chú ý cách giải thích vấn đề của mình, tránh làm cả bạn và mọi người mất quá nhiều thời gian

Ý xanh : được

Ý đỏ : được

Bạn có thể theo dõi ở đây, chính là topic mà bạn nói chỉ có "trong" chứ chưa có ngoài, nhưng thực ra đã có, các lisp bác giabach và bác thiep viết rất hay :

http://www.cadviet.com/forum/index.php?showtopic=27121&st=40

 

Còn đây là mình độ giùm theo 2 yêu cầu của bạn. Yêu cầu xanh : mình cụ thể là bên trái hoặc bên phải Line,Pline, chưa có thời gian làm tổng quát :)

Link EE

;free lisp from Cadviet.com @gia_bach -> ketxu ^^
(defun C:EE ( / en ss lst ssall bbox tmpvt lit) 
(vl-load-com)
(if (null etrim)(load "extrim.lsp"))
(setq tmpvt '(1e+10 0 0))
 (if (and (setq en (car(entsel "\n Chon duong bao : ")))
          (wcmatch (cdr(assoc 0 (entget en))) "LINE,*POLYLINE"))		   
   (progn
     (setq bbox (ACET-ENT-GEOMEXTENTS en))
     (setq bbox (mapcar '(lambda(x)(trans x 0 1)) bbox))
     (setq lst (ACET-GEOM-OBJECT-POINT-LIST en 1e-3)
		lit (nth (1- (length lst)) lst))
     (ACET-SS-ZOOM-EXTENTS (ACET-LIST-TO-SS (list en)))
     (command "_.Zoom" "0.95x") 
  (setq ssall (ssget "_X" (list (assoc 410 (entget en)))))
  (if (vlax-curve-isClosed en)	  
	(progn
		(etrim en (getpoint "\n Phia cat va xoa bo : "))
		(setq ss (ssget "_CP" lst))			
	)
	(progn	
		(initget 1 "t p T P")
		(if (= (strcase(getkword "\n Phia cat va xoa bo : [T/P]")) "T")
			(progn
				(etrim en (mapcar '- (nth 0 lst) '(1e+10 0 0)))
				(setq ss (ssget "_CP"  
					(append  (list (nth 0 lst) (mapcar '+ (nth 0 lst) tmpvt) (mapcar '+ lit tmpvt) lit))))
			)
			(progn
			(etrim en (mapcar '+ (nth 0 lst) '(1e+10 0 0)))
			(setq ss (ssget "_CP"  
				(append  (list (nth 0 lst) (mapcar '- (nth 0 lst) tmpvt) (mapcar '- lit tmpvt) lit))))
			)
		)
	)
  )
  (setq lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
			(foreach e1 lst (ssdel e1 ssall))
			(ACET-SS-ENTDEL ssall)
  )
 )
)

 

Chú ý : chưa kiểm định, mần trên lý thuyết ^^

Hoàn toàn làm mình ưng ý với lisp này.Hix quả thật là giải thích đôi khi hơi khó hiểu.Nhưng mà thực ra người nào gặp tình trạng như mình thì biết ngay mình nói gì mà.

Cái link bạn đưa mình chưa đọc trước đó mà đọc link khác. Thank bạn ketxu

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 có thể nhấn Vote ^^ Thực ra cái này mình nghĩ sẽ lỗi khi gặp đường bao PL hở + cách chọn "CP", tuy nhiên với Line thì có thể ít lỗi hơn ^^ Trong trường hợp lỗi mà thấy rõ mồn một thì hãy quay lại etrim + erase truyền thống :) Mình cũng có thể cho extrim với cả Dim, nhưng với file Bình đồ có lẽ k cần thiết ?? ^^

  • 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 có thể nhấn Vote ^^ Thực ra cái này mình nghĩ sẽ lỗi khi gặp đường bao PL hở + cách chọn "CP", tuy nhiên với Line thì có thể ít lỗi hơn ^^ Trong trường hợp lỗi mà thấy rõ mồn một thì hãy quay lại etrim + erase truyền thống :) Mình cũng có thể cho extrim với cả Dim, nhưng với file Bình đồ có lẽ k cần thiết ?? ^^

Thế là mình ưng ý rồi. K cần phải lo về đường bao hở. Vì tự mình sẽ vẽ đường kín để cắt. :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

Bạn có thể nhấn Vote ^^ Thực ra cái này mình nghĩ sẽ lỗi khi gặp đường bao PL hở + cách chọn "CP", tuy nhiên với Line thì có thể ít lỗi hơn ^^ Trong trường hợp lỗi mà thấy rõ mồn một thì hãy quay lại etrim + erase truyền thống :) Mình cũng có thể cho extrim với cả Dim, nhưng với file Bình đồ có lẽ k cần thiết ?? ^^

Còn 1 lỗi nữa. Đó là đường bao kín thì khi chọn xóa bên trong ko được.Chỉ xóa những cái ở bên ngoài đường bao thui.

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

Lệnh Trim thì chỉ xoá những đuờng cắt với đuờng giới hạn mình định. sau đó mình phải erase.Ý mình là muốn xoá luôn những đuờng ko cắt với đuờng giới hạn đó luôn.Sao mọi nguời lại ko hiểu ý câu hỏi mình nhỉ.

Phải trải qua 12 bài viết của các tác giả khác nhau, đến bài viết thứ 13 ý đồ chiến lược của câu anh hỏi mới lòi ra. Đến đây chắc mọi người đều hiểu ý tác giả nói

Ngày mới tham gia diễn đàn em có biết câu hỏi như anh đã có người hỏi và hình như là bác Phi Phi đã có lisp. (Trong bài viết đó có bác Ssg và bác Bình tham gia, tiếc là em ko tìm lại được.)

Và còn có một câu hỏi tương tự như của anh nhưng tác giả trình bày câu hỏi mạch lạc hơn:

 

Em có 1 bản vẽ, em đã chia đôi bởi 1 đường thằng nằm ở giữa. Em muốn 1 cái lisp để xóa toàn bộ các vật thể nằm ở 1 phía nào đó của đường thẳng đó, có thể coi đường thẳng đó là ranh giới ấy. Bác nào biết thì giúp em cái nhé :(

Bài viết tham khảo:

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

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 ketxu ơi cho em hỏi chút là cái lisp này load lên dùng rất hay nhưng bị lỗi gì đó mà sau lần dùng đầu tiên là nó không chọn được vùng đối tượng chọn trên bản đồ nữa. mỗi lần mở 1 bản vẽ lên là phải nhấn Esc nhiều lần và sau đó chọn nhiều lần 1 đối tượng được thì mới chọn vùng đối tượng được (không hiện lỗi gì dưới dòng command!). gỡ ra thì chọn vùng đối tượng bình thườ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

Bạn gửi bản vẽ lỗi lên xem nào :) Mình viết từ hồi nảo đến giờ, còn không nhớ lisp nó làm cái j nữa cơ, nhưng mà nó k báo lỗi gì thì tệ quá ^^

  • 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 gửi bản vẽ lỗi lên xem nào :) Mình viết từ hồi nảo đến giờ, còn không nhớ lisp nó làm cái j nữa cơ, nhưng mà nó k báo lỗi gì thì tệ quá ^^

Hề hề hề,

Nhân tiện bác Ketxu cho hỏi thăm đường một chút:

Cái tham số 1e-3 (0.001) có ý nghĩa gì đối với cái hàm (acet-geon-object-point-list .....)

Mình tìm hiểu thì thấy nói rằng:

 

(ACET-GEOM-OBJECT-POINT-LIST ename [-1,0,1])

Trả về list tọa độ các đỉnh của curve. tham số [-1; 0; 1] chỉ có ý nghĩa với các đường cong. nếu tham số này = -1, hàm sẽ chia đường cong thành các đoạn nhỏ và lấy ra tọa độ các đỉnh chia đó.

Vậy là tìm hoài mà chửa hiểu, đi hoài mà chửa đế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

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

×