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

Help .......nhờ các anh viết lisp ....về lệnh trim

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

9 phút trước, lethanh2004 đã nói:

Bản vẽ đây ạ . các bác giúp em vs

test1.dwg

Bạn cứ làm lần lượt từng đường 1, lưu ý khi vẽ thêm đường mới giao với đường cũ thì nên vẽ thành 1 polyline kính đến ko phải bo nữa.

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

 

4 phút trước, conghoa đã nói:

Bạn cứ làm lần lượt từng đường 1, lưu ý khi vẽ thêm đường mới giao với đường cũ thì nên vẽ thành 1 polyline kính đến ko phải bo nữa.

Vâng cảm ơn bác Conghoa chia sẻ . ý của bác  em làm được với bản vẽ vài chục ha . nhưng với bản vài ngàn ha thì cần nghiên cứu thê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

Đường đỏ dưới hình cần cắt. Thì làm sao hiểu ý của USER là cắt trong vùng 1, hay 2, hay 3, hay 4?? Nên nhớ rằng đường cắt của bạn chạy không có quy luật nào cả? Thì làm sao nhận biết được?? => Nếu bạn không đưa ra được "Luật chơi" thì bài toán sẽ không có lời giải . Việc chọn nhiều đường PLINE cùng lần để công vciệc nhanh hơn sẽ bất khả thi -> phá sản

image.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
1 giờ} trướ}c, Tue_NV đã nói:

Đường đỏ dưới hình cần cắt. Thì làm sao hiểu ý của USER là cắt trong vùng 1, hay 2, hay 3, hay 4?? Nên nhớ rằng đường cắt của bạn chạy không có quy luật nào cả? Thì làm sao nhận biết được?? => Nếu bạn không đưa ra được "Luật chơi" thì bài toán sẽ không có lời giải . Việc chọn nhiều đường PLINE cùng lần để công vciệc nhanh hơn sẽ bất khả thi -> phá sản

image.png

Vâng bác tuệ . đối với em em nghĩ lisp của bác quá tuyệt vs em rồi . em chỉ nhờ bác chỉnh sửa thế nào để xóa được đối tượng là đường đồng mức đó thôi . em nghĩ bác thêm cho em đối tượng bị cắt có thể là l, pl , spl , arc ....em cảm ơ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
22 giờ trước, conghoa đã nói:

Nó thuộc phạm trù về kỹ năng vẽ của bạn, cái này không cần lisp cũng làm nhanh được. Chỉ cần hiện riêng layer 0, Bo lại phần đường, dùng lệnh extrim là được.

 

image.png.86c860d5cf02c484c4397e2cab26b7d8.png

 

 

Theo kinh nghiệm của mình thì đường mòn trên núi không nên cắt TRIM như vậy, vừa xấu lại khó cho bên thiết kế tính toán. Thay vì điều đó, hãy Wipeout nó lại. Chỉ là che phủ phần đường,  vừa nhẹ nhàng lại đẹp. 
Có phải bạn bổ sung con đường dựa trên bình đồ 1/10000 và 1/25000 không?

Thuốc cho bạn đây!

Lệnh WPL áp dụng cho Polyline

Lệnh WPT áp dụng cho Text

Link: https://www.mediafire.com/file/cp882xr222mg8mv/Wipeout_Polyline_(WPL)_and_Text_(WPT).VLX/file

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
Vào lúc 8/6/2019 tại 08:04, thanhduan2407 đã nói:

Nó sử dụng thế nào vậy anh Duân

 

Theo kinh nghiệm của mình thì đường mòn trên núi không nên cắt TRIM như vậy, vừa xấu lại khó cho bên thiết kế tính toán. Thay vì điều đó, hãy Wipeout nó lại. Chỉ là che phủ phần đường,  vừa nhẹ nhàng lại đẹp. 
Có phải bạn bổ sung con đường dựa trên bình đồ 1/10000 và 1/25000 không?

Thuốc cho bạn đây!

Lệnh WPL áp dụng cho Polyline

Lệnh WPT áp dụng cho Text

Link: https://www.mediafire.com/file/cp882xr222mg8mv/Wipeout_Polyline_(WPL)_and_Text_(WPT).VLX/file

 

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 dùng lisp này đóng 2 đầu đoạn đường cho nhanh

(defun C:00 (/ ELAST LTS1 LTS2 OBJ1 OBJ2 OLMODE PNTC1 PNTC2 PNTD1 PNTD2)
  (defun *error* (msg)
    (if	Olmode
      (setvar 'osmode Olmode)
    )
    (if	(not (member msg '("*BREAK,*CANCEL*,*EXIT*")))
      (princ (strcat "\nError: " msg))
    )
    (princ)
  )
  (setq Olmode (getvar "OSMODE"))
  (setvar "OSMODE" 0)

  (setq	Obj1
	 (car
	   (LM:SelectIf
	     "\nCh\U+1ECDn \U+0111\U+01B0\U+1EDDng th\U+1EE9 nh\U+1EA5t:  "
	     (lambda (x)
	       (member (cdr (assoc 0 (entget (car x))))
		       (list "LINE" "POLYLINE" "LWPOLYLINE" "ARC" "ELLIPSE" "SPLINE")
	       )
	     )
	     entsel
	     nil
	   )
	 )
  )
  (setq	Obj2
	 (car
	   (LM:SelectIf
	     "\nCh\U+1ECDn \U+0111\U+01B0\U+1EDDng th\U+1EE9 hai:  "
	     (lambda (x)
	       (member (cdr (assoc 0 (entget (car x))))
		       (list "LINE" "POLYLINE" "LWPOLYLINE" "ARC" "ELLIPSE" "SPLINE")
	       )
	     )
	     entsel
	     nil
	   )
	 )
  )
  (setq	kch
	 (LM:GetXWithDefault
	   getdist
	   "\nNh\U+1EADp kho\U+1EA3ng c\U+00E1ch l\U+1EDBn h\U+01A1n s\U+1EBD kh\U+00F4ng n\U+1ED1i"
	   '*kch*
	   5.0
	 )
  )
  (setq Elast (entlast))
  (if (and Obj1 Obj2 (/= Obj1 Obj2))
    (progn
      (setq PntD1 (vlax-curve-getStartPoint Obj1))
      (setq PntC1 (vlax-curve-getEndPoint Obj1))
      (setq PntD2 (vlax-curve-getStartPoint Obj2))
      (setq PntC2 (vlax-curve-getEndPoint Obj2))
      (if (< (distance PntD1 PntD2) (distance PntD1 PntC2))
	(progn
	  (if (< (distance PntD1 PntD2) kch)
	    (MakeLWPolyline (list PntD1 PntD2) nil nil nil nil nil nil)
	  )
	  (if (< (distance PntC1 PntC2) kch)
	    (MakeLWPolyline (list PntD1 PntD2) nil nil nil nil nil nil)
	  )
	)
	(progn
	  (if (< (distance PntD1 PntC2) kch)
	    (MakeLWPolyline (list PntD1 PntC2) nil nil nil nil nil nil)
	  )
	  (if (< (distance PntC1 PntD2) kch)
	    (MakeLWPolyline (list PntC1 PntD2) nil nil nil nil nil nil)
	  )
	)
      )
    )
  )
  (setq Lts1 (GetNewEnts Elast))
  (setq Lts2 (append Lts1 (list Obj1 Obj2)))
  (if (member "LINE"
	      (list (cdr (assoc 0 (entget Obj1))) (cdr (assoc 0 (entget Obj2))))
      )
    (command "_.pedit" "_m" (CV:List-to-ss Lts2) "" "Y" "_j" "" "")
    (command "_.pedit" "_m" (CV:List-to-ss Lts2) "" "_j" "" "")
  )
  (setvar "OSMODE" Olmode)
  (princ)
)
(defun GetNewEnts (ename / new)
  (while (setq ename (entnext ename))
    (if	(entget ename)
      (setq new (cons ename new))
    )
  )
  new
)

(defun MakeLWPolyline (listpoint closed Linetype LTScale Layer Color xdata / Lst)
  (setq	Lst (list (cons 0 "LWPOLYLINE")
		  (cons 100 "AcDbEntity")
		  (cons	8
			(if Layer
			  Layer
			  (getvar "Clayer")
			)
		  )
		  (cons	6
			(if Linetype
			  Linetype
			  "bylayer"
			)
		  )
		  (cons	48
			(if LTScale
			  LTScale
			  1
			)
		  )
		  (cons	62
			(if Color
			  Color
			  256
			)
		  )
		  (cons 100 "AcDbPolyline")
		  (cons 90 (length listpoint))
		  (cons	70
			(if closed
			  1
			  0
			)
		  )
	    )
  )
  (foreach PP listpoint (setq Lst (append Lst (list (cons 10 PP)))))
  (if xdata
    (setq Lst (append lst (list (cons -3 (list xdata)))))
  )
  (entmakex Lst)
)
(defun CV:List-to-ss (lst / ss)
  (setq ss (ssadd))
  (foreach item	lst
    (or	(= (type item) 'Ename)
	(setq item (vlax-vla-object->ename item))
    )
    (setq ss (ssadd item ss))
  )
  ss
)

(defun LM:SelectIf (msg pred func keyw / sel)
  (setq pred (eval pred))
  (while
    (progn
      (setvar 'ERRNO 0)
      (if keyw
	(apply 'initget keyw)
      )
      (setq sel (func msg))
      (cond
	((= 7 (getvar 'ERRNO))
	 (princ
	   "\nB\U+1EA1n ch\U+1ECDn sai r\U+1ED3i! H\U+00E3y ch\U+1ECDn l\U+1EA1i."
	 )
	)
	((eq 'STR (type sel))
	 nil
	)
	((vl-consp sel)
	 (if (and pred (not (pred sel)))
	   (princ "")
	 )
	)
      )
    )
  )
  sel
)
(defun LM:GetXWithDefault (_function _prompt _symbol _default / _toString)
  ;; © Lee Mac 2010

  (setq	_toString
	 (lambda (x)
	   (cond
	     ((eq getangle _function) (angtos x))
	     ((eq 'REAL (type x)) (rtos x))
	     ((eq 'INT (type x)) (itoa x))
	     (x)
	   )
	 )
  )

  (set _symbol
       (
	(lambda	(input)
	  (if (or (not input) (eq "" input))
	    (eval _symbol)
	    input
	  )
	)
	 (_function (strcat _prompt
			    "<"
			    (_toString (set _symbol
					    (cond ((eval _symbol))
						  (_default)
					    )
				       )
			    )
			    "> : "
		    )
	 )
       )
  )
)
 ;|«Visual LISP© Format Options»
(200 2 60 2 nil "end of " 80 9 0 0 0 T T T T)
;*** DO NOT add text below the comment! ***|;

 

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

×