Đến nội dung


Hình ảnh

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


  • Please log in to reply
40 replies to this topic

#21 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 25 May 2013 - 11:41 AM

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.


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#22 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 25 May 2013 - 12:01 PM

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:


  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#23 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 25 May 2013 - 01:23 PM

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
)

  • 1

#24 Hoan1111

Hoan1111

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2587 Bài viết
Điểm đánh giá: 692 (tốt)

Đã gửi 25 May 2013 - 01:36 PM

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


  • 0

66 Câu Phật Học Cho Cuộc Sống : http://ngocchinh.com...-cho-cuoc-song/

Gió đưa cây cải về trời / Rau răm ở lại chịu lời đắng cay...

 

 


#25 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 25 May 2013 - 02:32 PM

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


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

#26 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 25 May 2013 - 02:52 PM

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


1). Chỉ có Line thì ổn định. Có thêm Pline, Arc, Spline thì lỗi.

2). Bổ sung undo begin và undo end nữa.


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#27 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 25 May 2013 - 03:04 PM

1). Chỉ có Line thì ổn định. Có thêm Pline, Arc, Spline thì lỗi.

2). Bổ sung undo begin và undo end nữa.

- Xin lỗi vì không chú thích. Cái này chỉ dùng cho Pline và Line, còn đối tượng khác không áp dụng. Vì đối tượng khác ít dùng, viết tổng quát mất nhiều thời gian, không cần thiết.

- Begin và Undo ai biết về lisp thì tự thêm vào, còn nếu ko biết thì ko có cũng ko sao.


  • 0

#28 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 25 May 2013 - 03:11 PM

Tôi góp ý cho cộng đồng thôi. "Không cần thiết" + "Không sao" thì kệ vậy thôi.

Nếu các đối tượng bị cắt bao gồm cả Pline và Line vẫn bị lỗi.


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#29 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 25 May 2013 - 06:03 PM

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.

 

Cũng dễ thôi bác. Ẩn nhóm Line1 đi, Extrim Line2. Hiện nhóm Line1 -> ExtrimLine1 -> Rồi xong


  • 0

#30 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1431 Bài viết
Điểm đánh giá: 1425 (rất tốt)

Đã gửi 26 May 2013 - 12:03 PM

........

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

Hy vọng Lisp này đáp ứng được yêu cầu của "em" Hoằn.

(Chỉ sử dụng với Line và Arc)

(defun C:cut(/ ent ss e pt1 pt2 iPts)
  (command "undo" "be")
  (while
    (not
      (and
	(setq ent (car (entsel "Duong chuan :")))
	(if ent (wcmatch (cdr (assoc 0 (entget ent))) "LINE,ARC,RAY,XLINE" ) ) ) )
    (princ "\nSelect Again: ")    )
  (setq ent (vlax-ename->vla-object ent))
  (princ "\nVat bi cat...")
  (if(setq ss (ssget "_:L" (list (cons 0 "LINE,ARC"))))
    (foreach e (mapcar 'vlax-ename->vla-Object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
      (setq iPts (vlax-Invoke ent "IntersectWith" e 2)
	    ObjName (vla-get-ObjectName e)
	    pt1 (vlax-curve-getStartPoint e)
	    pt2 (vlax-curve-getEndPoint e))
      (if (and iPts (= 3(length iPts) ))
	(cond
	  ((eq ObjName "AcDbLine") ;LINE
	   (if (> (distance iPts pt1)(distance iPts pt2))
	     (vla-put-EndPoint e (vlax-3d-point iPts))
	     (vla-put-StartPoint e (vlax-3d-point iPts)) ) )
	  ((eq ObjName "AcDbArc") ;ARC
	   (setq center (vlax-safearray->list (variant-value (vla-get-Center e))))
	   (if (> (distance iPts pt1)(distance iPts pt2))
	     (vla-put-EndAngle e (vlax-make-variant(angle center iPts)) )
	     (vla-put-StartAngle e (vlax-make-variant(angle center iPts))) ) )   ))))
  (command "undo" "e")(princ)  )

  • 2

#31 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 26 May 2013 - 08:27 PM

Ai muốn sử dụng lệnh Trim mở rộng, xem thêm link này:

http://www.cadviet.c...h-trim-mo-rong/


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#32 gunner1605

gunner1605

    biết pan

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

Đã gửi 26 May 2013 - 08:57 PM

Các bác làm e hoa cả mắt- e muốn tìm cái "trim ngược" đó chứ lengthen với extrim là ko nhanh và ko ổn ( vì có thể cắt cả các line e ko muốn cắt )

E thấy bác Nataca là chuẩn đấy. Thanks bác Nataca nhé- cái này sẽ còn dùng đến rất nhiều trong khi vẽ.


  • 0

#33 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 26 May 2013 - 09:01 PM

Bạn thử theo link trên (bài #31) sẽ khỏi hoa mắt.


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#34 gunner1605

gunner1605

    biết pan

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

Đã gửi 26 May 2013 - 09:06 PM

Cảm ơn bác Đoàn Văn Hà nhé. nhiều lựa chọn hơn rồi. Từ nay e edit mấy bản vẽ xây dựng chắc sẽ nhanh hơn vì nó sẽ được dùng nhiều trong quá trình vẽ và chỉnh sửa


  • 0

#35 gunner1605

gunner1605

    biết pan

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

Đã gửi 26 May 2013 - 09:20 PM

Bị lỗi khi chạy trong cad 2008 bác Hà ợ. Nếu giả sử sau này có dùng được thì có 2 điều e rút ra sau khi sử dụng là:

-Mà e thấy vẫn phải lựa chọn nhiều quá. E chỉ muốn có 3 bước như lệnh trim gốc thôi: ấn lệnh tr, chọn đối tượng làm dao cắt, chọ đối tượng cắt là xong.

- Bác đặt cái tên lênh làm sao chỉ ấn 1 cái hay là 2 phím gần nhau ví dụ như lệnh trim bình thường thì ấn tr, trim ngược thì ấn rt chẳng hạn để nhằm tiết kiệm time ấn lệnh trên bàn phím

Chứ lựa chọn nhiều quá thà lăn con trỏ e zoom vài cái là e cắt được cái đoạn nhỏ đó đỡ phải ấn bàn phím nhiều mất time.

Bác xem làm sao chỉ cần ấn lệnh, chọn đường cần giới hạn cắt, chọn phần line dài để dễ ấn thì cắt được line ngắn. Như vậy bỏ qua được cái zoom vào đỡ hoa cả mắt vừa tiết kiệm time.

Thanks.


  • 0

#36 Hoan1111

Hoan1111

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2587 Bài viết
Điểm đánh giá: 692 (tốt)

Đã gửi 26 May 2013 - 11:20 PM

Hy vọng Lisp này đáp ứng được yêu cầu của "em" Hoằn.

(Chỉ sử dụng với Line và Arc)

(defun C:cut(/ ent ss e pt1 pt2 iPts)
  (command "undo" "be")
  (while
    (not
      (and
	(setq ent (car (entsel "Duong chuan :")))
	(if ent (wcmatch (cdr (assoc 0 (entget ent))) "LINE,ARC,RAY,XLINE" ) ) ) )
    (princ "\nSelect Again: ")    )
  (setq ent (vlax-ename->vla-object ent))
  (princ "\nVat bi cat...")
  (if(setq ss (ssget "_:L" (list (cons 0 "LINE,ARC"))))
    (foreach e (mapcar 'vlax-ename->vla-Object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
      (setq iPts (vlax-Invoke ent "IntersectWith" e 2)
	    ObjName (vla-get-ObjectName e)
	    pt1 (vlax-curve-getStartPoint e)
	    pt2 (vlax-curve-getEndPoint e))
      (if (and iPts (= 3(length iPts) ))
	(cond
	  ((eq ObjName "AcDbLine") ;LINE
	   (if (> (distance iPts pt1)(distance iPts pt2))
	     (vla-put-EndPoint e (vlax-3d-point iPts))
	     (vla-put-StartPoint e (vlax-3d-point iPts)) ) )
	  ((eq ObjName "AcDbArc") ;ARC
	   (setq center (vlax-safearray->list (variant-value (vla-get-Center e))))
	   (if (> (distance iPts pt1)(distance iPts pt2))
	     (vla-put-EndAngle e (vlax-make-variant(angle center iPts)) )
	     (vla-put-StartAngle e (vlax-make-variant(angle center iPts))) ) )   ))))
  (command "undo" "e")(princ)  )

 

Em Hoằn vừa đưa thêm SPLINE vào "Duong chuan :"  trong Lips để trim thử, cảm ơn bác Gia_bạch nhiều nhé!

Hi vọng Lisp của bác đáp ứng được yêu cầu của "em" ...chủ thớt: "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..." :) :) :)


  • 0

66 Câu Phật Học Cho Cuộc Sống : http://ngocchinh.com...-cho-cuoc-song/

Gió đưa cây cải về trời / Rau răm ở lại chịu lời đắng cay...

 

 


#37 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 27 May 2013 - 07:09 AM

Bị lỗi khi chạy trong cad 2008 bác Hà ợ. Nếu giả sử sau này có dùng được thì có 2 điều e rút ra sau khi sử dụng là:

-Mà e thấy vẫn phải lựa chọn nhiều quá. E chỉ muốn có 3 bước như lệnh trim gốc thôi: ấn lệnh tr, chọn đối tượng làm dao cắt, chọ đối tượng cắt là xong.

- Bác đặt cái tên lênh làm sao chỉ ấn 1 cái hay là 2 phím gần nhau ví dụ như lệnh trim bình thường thì ấn tr, trim ngược thì ấn rt chẳng hạn để nhằm tiết kiệm time ấn lệnh trên bàn phím

Chứ lựa chọn nhiều quá thà lăn con trỏ e zoom vài cái là e cắt được cái đoạn nhỏ đó đỡ phải ấn bàn phím nhiều mất time.

Bác xem làm sao chỉ cần ấn lệnh, chọn đường cần giới hạn cắt, chọn phần line dài để dễ ấn thì cắt được line ngắn. Như vậy bỏ qua được cái zoom vào đỡ hoa cả mắt vừa tiết kiệm time.

Thanks.

Bạn sang topic "[Đã xong] Lệnh Trim mở rộng" đặt câu hỏi kẻo lạc chủ đề:

http://www.cadviet.c...h-trim-mo-rong/


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#38 nga4vong

nga4vong

    Chưa sử dụng CAD

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

Đã gửi 11 June 2013 - 03:52 PM

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


  • 0

#39 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 11 June 2013 - 03:54 PM

Đây:

http://www.cadviet.c...h-trim-mo-rong/


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#40 bebaongu

bebaongu

    biết zoom

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

Đã gửi 11 June 2013 - 05:36 PM

Các bác cho em hỏi ké 1 câu hỏi nha: Tsao đồ gá khoét doa không cần then dẫn hướng khi gia công trên máy khoan cần


  • 0