Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
gunner1605

Lệnh Trim CAD đặc biệt- làm thế nào để ấn phần dài cắt phần ngắn?

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

gunner1605    1

Xin các cao thủ ở diễn đàn chuyên về autocad lớn nhất việt nam một chiêu:

 

Tôi muốn cắt trim cái phần thừa 5 mm của 1 Line ( do quá trình vẽ bắt điểm nó lệch 1  chút xíu - 5 mm ), mà tôi ko muốn zoom lại để cắt

Tôi có lần gặp 1 cao thủ mà sau khi ấn lệnh gì đó ( cứ coi như có lệnh khác ngoài lệnh trim đi ) rồi chọn đường giới hạn cắt rồi ấn phần line dài --> phần line thừa ngắn tự bị cắt đi-->rút ngắn time để zoom to ra để chọn phần thừa nhỏ để cắt

Hình vẽ bên dưới- XIN CHÂN THÀNH CẢM ƠN.

77157_lenh_trim_dac_biet_2.jpg

  • 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
Doan Van Ha    2.676

Ý tưởng ngộ nghĩnh này thật là hay. Đỡ tốn công zoom, nhiều khi phải mất vài lần zoom. Vote!

Cad thì hình như chịu. Lisp thì khả dĩ.

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
Tue_NV    3.841

Chẳng cần dùng đường giới hạn cắt. Lệnh Lengthen kéo ngắn đoạn -5 không cần đường giới hạn cắt.,không cần zoom

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
Tue_NV    3.841

Trong trường hợp không muốn mất công đo cái đoạn thừa ra nên có PA khác ngoài lengthen :)

 

Có đường giới hạn cắt

Nếu không biết thừa ra bao nhiêu thì có thể Extrim.

Nếu Extrim thấy "nguy hiểm" quá thì Break  :lol:

Cả Extrim và Break đều hổng cần đến "DOM"  :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
Doan Van Ha    2.676

Chẳng cần dùng đường giới hạn cắt. Lệnh Lengthen kéo ngắn đoạn -5 không cần đường giới hạn cắt.,không cần zoom

 

 

Có đường giới hạn cắt

Nếu không biết thừa ra bao nhiêu thì có thể Extrim.

Nếu Extrim thấy "nguy hiểm" quá thì Break  :lol:

Phiêu! Length không được. Extrim không ổn. Break khác gì?

Đừng zoom mới là điều chủ topic mong muốn.

Bạn NNS có PA khá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
Tue_NV    3.841

Phiêu! Length không được. Extrim không ổn. Break khác gì?

Đừng zoom mới là điều chủ topic mong muốn.

Bạn NNS có PA khác?

 

Tại sao lengthen không được?

Extrim không ổn sợ dính chấu mấy thèn khác. Sử dụng trong TH đường giới hạn cắt chỉ cắt đối tượng mong muốn

Break không sử dụng Zoom. Break 2 điểm điểm thứ nhất bắt giao điểm. Điểm thứ hai chính là điểm phía cần 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
Doan Van Ha    2.676

Giả dụ bài toán có 100 em cần cắt bởi 1 dao. 100 em này có thể cong/thẳng và đoạn dư cực nhỏ và chưa biết.

Trim phần dài của 100 em đó rất đơn giản, còn length+extrim+break thì phải lập lại bao nhiêu lần?

Nếu có lệnh "trim ngược" - tạm gọi như vậy, để trim tất cả phần ngắn thì hay quá chứ 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

Phiêu! Length không được. Extrim không ổn. Break khác gì?

Đừng zoom mới là điều chủ topic mong muốn.

Bạn NNS có PA khác?

Trước mình cũng có 1 code VBA làm được điều này. Để mình tìm lại rồi Code

Nó hoạt động như sau:

1.Chọn PL

2.Chọn các đối tượng line => Tìm giao điểm của các đối tượng trong SSet với PL

3.Update lại các line cắt qua

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
Tue_NV    3.841

Giả dụ bài toán có 100 em cần cắt bởi 1 dao. 100 em này có thể cong/thẳng và đoạn dư cực nhỏ và chưa biết.

Trim phần dài của 100 em đó rất đơn giản, còn length+extrim+break thì phải lập lại bao nhiêu lần?

Nếu có lệnh "trim ngược" - tạm gọi như vậy, để trim tất cả phần ngắn thì hay quá chứ nhỉ?

 

Xin bác đó...... , không được với chậm là 2 cái khác nhau. Nếu rứa thì Extrim là được.....

Yêu cầu : chỉ làm có 1 LINE  :D

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
Doan Van Ha    2.676

Trước mình cũng có 1 code VBA làm được điều này. Để mình tìm lại rồi Code

Nó hoạt động như sau:

1.Chọn PL

2.Chọn các đối tượng line => Tìm giao điểm của các đối tượng trong SSet với PL

3.Update lại các line cắt qua

Đỏ: trim có thể là line, pline, spline... >> update nó lại là khó nhằn lắ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
Doan Van Ha    2.676

Xin bác đó...... , không được với chậm là 2 cái khác nhau. Nếu rứa thì Extrim là được.....

Yêu cầu : chỉ làm có 1 LINE  :D

Xin bác luôn... ép dầu ép mỡ chứ ai nỡ ép LINE! :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
Doan Van Ha    2.676

Extrim là xong mà, ép chi đâu bác?

Ngộ nhỡ 2 bên con dao đều có đối tượng cắt qua (ví dụ 3), trong khi ta chỉ muốn trim 2 em, thì nó hào phóng chơi với cả 3 em?

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 có thể là line, pline, spline... >> update nó lại là khó nhằn lắm.

Với Line mình sử lý được. còn Pline,spile chắc khó hơn vì mình dùng VBA :)

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
dinhvantrang    64

nếu chỉ là các đường Line ko thì vấn đề gì.Cái này có thể giải quyết bằng VBA được,nếu đối tượng khác Line thì tôi chưa thử.

Phương án của mình trong VBA là,tìm giao điểm giữa đường cần cắt  và đường giới hạn,so sánh 2 phần,nếu phần nào ngắn hơn thì Delete nó đi 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
Tue_NV    3.841

Ngộ nhỡ 2 bên con dao đều có đối tượng cắt qua (ví dụ 3), trong khi ta chỉ muốn trim 2 em, thì nó hào phóng chơi với cả 3 em?

 

Ví dụ 3 là ví dụ mô bác?

Quan niệm lưỡi dao cắt qua chổ nào thì nó cắt qua chổ đó thôi, Lưỡi dao chỉ muốn chơi với 2 em thôi, bác ép nó chơi với cả 3 em mần chi 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
Doan Van Ha    2.676

Ví dụ 3 là ví dụ mô bác?

Quan niệm lưỡi dao cắt qua chổ nào thì nó cắt qua chổ đó thôi, Lưỡi dao chỉ muốn chơi với 2 em thôi, bác ép nó chơi với cả 3 em mần chi bác? 

Giả sử con dao là line thẳng đứng. Có 2 line nằm ngang bị dao này cắt. Khi đó extrim thì chọn phía bên nào, trong khi user chỉ muốn trim 1 line 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
phamthanhbinh    3.123

Với Line mình sử lý được. còn Pline,spile chắc khó hơn vì mình dùng VBA :)

Hề hề hề, 

Tuy chưa viết thử, song mình nghĩ như ri không biết có ổn không, mong các bác soi xét.

1/- Do đã có con dao nên có thể quy định rằng khi pick một diểm p thì điểm chọn sẽ là p' đối xứng với p qua con dao đó.

2/- Như vậy có thể dùng lisp để chơi thằng cu này sát gốc đượ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
Doan Van Ha    2.676

Hề hề hề, 

Tuy chưa viết thử, song mình nghĩ như ri không biết có ổn không, mong các bác soi xét.

1/- Do đã có con dao nên có thể quy định rằng khi pick một diểm p thì điểm chọn sẽ là p' đối xứng với p qua con dao đó.

2/- Như vậy có thể dùng lisp để chơi thằng cu này sát gốc được.

Một con dao lúc cong lúc thẳng có khi dùi thì lấy đối xứng kiểu răng bác ơ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
ketxu    2.649

Chết thật, cái yêu cầu theo câu chữ của chủ thớt thì đơn giản rồi, mở rộng cho họ nhà Line mới phực tạp hơn

 

Chỉ không hiểu câu này :

Xin các cao thủ ở diễn đàn chuyên về autocad lớn nhất việt nam một chiê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
nataca    553

Có phải ý bạn là thế này? 

TRT.gif

 

(defun C:TRT (/ DTCAT ENT P P1 P2 PG ENT1 LENT PD) ;;;Trim Trai chieu
	(prompt "\nChon doi tuong cat")
	(setq dtcat (ssget))
	(prompt "\nChon doi tuong bi cat")
	(setq	p			(getpoint)
				Lent	(C_S2L (ssget "C" p (getcorner p)))
	)
	(foreach ent Lent
		(setq pg		(car (INTS_2ENT (ssname dtcat 0) ent)))
		(if (eq (DXF 0 ent) "LINE")
			(progn
				(setq ent1 	(MK_PLINE1 (list (DXF 10 ent) (DXF 11 ent)))
							p1 		(car (P_VPL ent1))
							p2		(last (P_VPL ent1))
							pd		(vlax-curve-getClosestPointTo ent1 p)
				)
				(entdel ent1)
			)
			(setq p1 		(car (P_VPL ent))
						p2		(last (P_VPL ent))
						pd			(vlax-curve-getClosestPointTo ent p)
			)
		)
		(if (equal (AG_3P pg pd p1) 0 0.0001)
			(setq pd p2)
			(setq pd p1)
		)
		(if (eq (DXF 0 ent) "LINE")
			(vl-cmdf "trim" dtcat "" pd  "")
			(entmod (subst (cons 10 pg) (cons 10 pd) (entget ent)))
		)
	)
)
(defun INTS_2ENT (ent1 ent2 / ob1 ob2 g kq sd)
	(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
	)
)
(defun MK_PLINE1 (Vpl)
	(vl-cmdf "Pline")
	(foreach v Vpl
		(vl-cmdf v)
	)
	(vl-cmdf "")
	(entlast)
)
(defun DXF (Id Obj)
	(cdr (assoc Id (entget Obj)))
)
(defun C_S2L (ss)
	(if	ss
		(vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
		nil
	)
)
(defun P_VPL (Pline)
	(if Pline
		(mapcar	'cdr
						(vl-remove-if-not
							'(lambda (x) (= 10 (car x)))
							(entget Pline)
						)
		)
		nil
	)
)
(defun AG_3P (Pt0 pt1 pt2 / goc goc1 goc2)
	(setq	goc1 (angle Pt0 Pt1)
				goc2 (angle Pt0 Pt2)
				goc	 (if (> (abs (- goc1 goc2)) pi)
							 (- (* 2 pi) (abs (- goc1 goc2)))
							 (abs (- goc1 goc2))
						 )
	)
	goc
)
  • 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
Hoan1111    694

 

Tôi muốn cắt trim cái phần thừa 5 mm của 1 Line ( do quá trình vẽ bắt điểm nó lệch 1  chút xíu - 5 mm ), mà tôi ko muốn zoom lại để cắt

 

 

Em không hiểu bác bắt điểm kiểu gì  mà bắt điểm nó lại lệnh 1 chút xíu - 5mm.? Em thử <Osnap off> rồi vẽ hai đường thẳng  a và b song song với nhau và vuông góc với đường thẳng đã cho, kết quả khi <Osnap on> lên để đo thì nó chỉ lệch một cái  thiếu 0.0001, một cái thừa 0.0008

 

Lisp trim ngược của bác Nataca rất hay đỡ phải phóng to khi đầu thừa ít, thanks!

Tiện đây nhờ các bác viết lisp minh họa bằng hình ảnh sau:114276_%C3%A0af70.png

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
phamthanhbinh    3.123

Một con dao lúc cong lúc thẳng có khi dùi thì lấy đối xứng kiểu răng bác ơi.

Hề hề hề,

Xin lỗi các bác về vụ mình đoán mò do chưa viết líp mà mới chỉ "nghĩ" thôi. Khi bắt tay vào mới thấy nó cũng khá loằng ngoằng thiệt. Bởi cái vụ đối xứng này không hề đơnm giản, không phải đối xứng quatru5c mà là đối xứng qua tâm. Thế nhưng cái độ dài của phần thừa lại chả biết trước thì ...... 

Đúng là đã dốt lại hay nói càn, mong các bác chớ giận nhé.

Để mình mò mẫm thêm chút chút xem có sáng ra được tí nào không rồi sẽ lại ...... cản mũii vậy....

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


×