Rated 5/5 based on 240179 internet user reviews

Jump to content


Change Photo
* * * - - 2 Phiếu

lisp xa tất cả cc đối tượng trong 1 vng kn


  • Please log in to reply
74 replies to this topic

#1 namhai

namhai

    biết vẽ rectang

  • Members
  • PipPip
  • 81 posts
Danh tiếng: 18 (tm tạm)

Gửi vào 26 June 2009 - 04:13 PM

e muốn xo tất cả cc đối tượng trong 1 vng kn nhưng phải lm thủ cng bằng lệnh trim v erase, như vậy rất mất cng v tốn thời gian, bc no c cch no gip e giải quyết vấn đề ny 1 cch nhanh chng khng?
  • 0
Hy lm việc hết mnh rồi mọi điều tốt đẹp sẽ đến với bạn.....

#2 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 901 posts
Danh tiếng: 493 (tốt)

Gửi vào 26 June 2009 - 04:22 PM

e muốn xo tất cả cc đối tượng trong 1 vng kn nhưng phải lm thủ cng bằng lệnh trim v erase, như vậy rất mất cng v tốn thời gian, bc no c cch no gip e giải quyết vấn đề ny 1 cch nhanh chng khng?


Mnh khng biết viết lisp. nhưng c vi cch gip bạn đỡ thủ cng hơn.
1. Dng lệnh Trim với tham số f.
2. Bạn dng lệnh extrim của express tool
cả 2 lệnh trn vẫn kết hợp vơi Erase nhưng nhanh hơn rất nhiều.
3. Dng wipeout để che đi tất cả đối tượng trong vng kn. Mnh nghĩ cch ny giải quyết tốt nhất vấn đề của bạn.
  • 0

Posted Image
IN HIM, I TRUST. THE TRUST IN MY GOD


#3 namhai

namhai

    biết vẽ rectang

  • Members
  • PipPip
  • 81 posts
Danh tiếng: 18 (tm tạm)

Gửi vào 27 June 2009 - 08:05 AM

Mnh khng biết viết lisp. nhưng c vi cch gip bạn đỡ thủ cng hơn.
1. Dng lệnh Trim với tham số f.
2. Bạn dng lệnh extrim của express tool
cả 2 lệnh trn vẫn kết hợp vơi Erase nhưng nhanh hơn rất nhiều.
3. Dng wipeout để che đi tất cả đối tượng trong vng kn. Mnh nghĩ cch ny giải quyết tốt nhất vấn đề của bạn.

Minh vẫn đang dng cch ny nhưng trong trường hợp cần xo nhiều đối tượng th vẫn thủ cng qu, n chỉ hữu ch khi cc đường mng cần xo cắt với đường bao tạo nn vng kn đấy, cn dng wipeout chỉ l che cc đối tượng, ci mnh muốn l xo hẳn cc đối tượng đấy đi!!
  • 0
Hy lm việc hết mnh rồi mọi điều tốt đẹp sẽ đến với bạn.....

#4 leejang

leejang

    biết lệnh move

  • Members
  • PipPipPip
  • 120 posts
Danh tiếng: 4 (bnh thường)

Gửi vào 27 June 2009 - 08:26 AM

Minh vẫn đang dng cch ny nhưng trong trường hợp cần xo nhiều đối tượng th vẫn thủ cng qu, n chỉ hữu ch khi cc đường mng cần xo cắt với đường bao tạo nn vng kn đấy, cn dng wipeout chỉ l che cc đối tượng, ci mnh muốn l xo hẳn cc đối tượng đấy đi!!

Bạn chọn đối tượng bằng Window bấm S ri CP sao đ vẽ dọc theo hnh kn đ l chọn được cc đối tượng trong hnh ri E thế l ok !!!
  • 0

#5 thiep

thiep

    biết dimdiameter

  • Members
  • PipPipPipPipPip
  • 331 posts
Danh tiếng: 247 (kh)

Gửi vào 27 June 2009 - 09:12 AM

e muốn xo tất cả cc đối tượng trong 1 vng kn nhưng phải lm thủ cng bằng lệnh trim v erase, như vậy rất mất cng v tốn thời gian, bc no c cch no gip e giải quyết vấn đề ny 1 cch nhanh chng khng?

Đy l lisp bạn cần:
;;;-------------------------------------------------------------(defun c:erC (/ sc cur p0 P1 L1 d L n ssgDEL glength)  (princ "\nFree lisp from www.cadviet.com")  (command "undo" "be")  (setvar "osmode" 0)  (setq	sc	2009	cur	(car (entsel "\nchon duong: "))	glength	(lambda (e) (command ".lengthen" e "") (getvar "perimeter"))	d	(/ (glength cur) sc)	l1	0.0	p0	(vlax-curve-getStartPoint cur)	L	(list p0)  )  (redraw cur 4)  (repeat sc    (setq      l1 (+ l1 d)      p1 (vlax-curve-getPointAtDist cur l1)    )    (setq L (append L (List p1)))  )  (setq ssgDEL (ssget "WP" L))  (setq n 0)  (repeat (sslength ssgDEL)    (entdel (ssname ssgDEL n))    (setq n (1+ n))  )  (command "undo" "end")  (princ "\nChuc cac ban may man va thanh cong - Thiep 0918841230")  (princ))(vl-load-com)
Khng phải xa thủ cng nữa nh.
  • 5

#6 namhai

namhai

    biết vẽ rectang

  • Members
  • PipPip
  • 81 posts
Danh tiếng: 18 (tm tạm)

Gửi vào 27 June 2009 - 09:21 AM

Bạn chọn đối tượng bằng Window bấm S ri CP sao đ vẽ dọc theo hnh kn đ l chọn được cc đối tượng trong hnh ri E thế l ok !!!

sau khi minh chọn đối tượng theo cch của bạn được rồi mnh đnh lệnh e để xo th khng được, theo cch bạn lm c phải chỉ để chọn đối tượng, cn lệnh erase th phải thực hiện sau?
  • 0
Hy lm việc hết mnh rồi mọi điều tốt đẹp sẽ đến với bạn.....

#7 namhai

namhai

    biết vẽ rectang

  • Members
  • PipPip
  • 81 posts
Danh tiếng: 18 (tm tạm)

Gửi vào 27 June 2009 - 09:26 AM

Đy l lisp bạn cần:

;;;-------------------------------------------------------------(defun c:erC (/ sc cur p0 P1 L1 d L n ssgDEL glength)  (princ "\nFree lisp from www.cadviet.com")  (command "undo" "be")  (setvar "osmode" 0)  (setq	sc	2009	cur	(car (entsel "\nchon duong: "))	glength	(lambda (e) (command ".lengthen" e "") (getvar "perimeter"))	d	(/ (glength cur) sc)	l1	0.0	p0	(vlax-curve-getStartPoint cur)	L	(list p0)  )  (redraw cur 4)  (repeat sc    (setq      l1 (+ l1 d)      p1 (vlax-curve-getPointAtDist cur l1)    )    (setq L (append L (List p1)))  )  (setq ssgDEL (ssget "WP" L))  (setq n 0)  (repeat (sslength ssgDEL)    (entdel (ssname ssgDEL n))    (setq n (1+ n))  )  (command "undo" "end")  (princ "\nChuc cac ban may man va thanh cong - Thiep 0918841230")  (princ))(vl-load-com)
Khng phải xa thủ cng nữa nh.

Bc Thiệp , lisp của bc tuyệt vời qu, e thanks bc nhiều nh! tiện đy bc gip e lisp xo cc đối tượng nằm ngoi vng kn với đưọc khng ạ?
  • 3
Hy lm việc hết mnh rồi mọi điều tốt đẹp sẽ đến với bạn.....

#8 thiep

thiep

    biết dimdiameter

  • Members
  • PipPipPipPipPip
  • 331 posts
Danh tiếng: 247 (kh)

Gửi vào 27 June 2009 - 11:33 AM

Bc Thiệp , lisp của bc tuyệt vời qu, e thanks bc nhiều nh! tiện đy bc gip e lisp xo cc đối tượng nằm ngoi vng kn với đưọc khng ạ?

Lisp trn hiểu cả cc đường Cur khng kn, cn đy lisp xa cc đối tượng ngoi Cur:
;;;-------------------------------------------------------------(defun ss2ent (ss / i Le e)  (setq	i  0	Le nil  )  (repeat (sslength ss)    (setq      e	 (ssname ss i)      Le (append Le (list e))      i	 (1+ i)    )  )  Le);--------------------------(defun C:eoC (/ sc cur p0 P1 L1 d L n ssgDEL glength)  (princ "\nFree lisp from www.cadviet.com")  (command "undo" "be")  (setvar "osmode" 0)  (setq	sc	2009	cur	(car (entsel "\nChon duong curve: "))	glength	(lambda (e) (command ".lengthen" e "") (getvar "perimeter"))	d	(/ (glength cur) sc)	l1	0.0	p0	(vlax-curve-getStartPoint cur)	L	(list p0)  )  (redraw cur 4)  (repeat sc    (setq      l1 (+ l1 d)      p1 (vlax-curve-getPointAtDist cur l1)    )    (setq L (append L (List p1)))  )  (setq ssall (ssget "X")        ssginC (ssget "WP" L)	enssginC (ss2ent ssginC))  (foreach eni enssginC    (ssdel eni ssall)    )  (setq n 0)  (repeat (sslength ssall)    (entdel (ssname ssall n))    (setq n (1+ n))  )  (command "undo" "end")  (princ "\nChuc cac ban may man va thanh cong - Thiep")  (princ))(vl-load-com)

  • 2

#9 xuandao0708

xuandao0708

    biết lệnh scale

  • Members
  • PipPipPip
  • 140 posts
Danh tiếng: 9 (bnh thường)

Gửi vào 27 June 2009 - 12:24 PM

Bc Thiep oi, dựa trn 2 lệnh xa trn th bc c thể chỉnh xửa 1 cht để khi chạy th chương trnh dng đng trong mọi trường hợp. Em đề xuất bc c thể lồng lệnh extrim vo trong 2 lệnh trn để người dng chỉ cần vẽ 1 đường pline khp kn th chương trnh sẽ xa tại giao điểm cắt của đường pline kn. Em c mơn Bc nhiều.
Đy l file cad mẫu nhờ bc Thiep ngm cứu hộ
http://www.cadviet.c...files/mau_4.dwg
( Xin lỗi Bc do em khng biết viết lisp, nn c g sai xt mong Bc thng cảm bỏ qua)
  • 0

#10 thiep

thiep

    biết dimdiameter

  • Members
  • PipPipPipPipPip
  • 331 posts
Danh tiếng: 247 (kh)

Gửi vào 27 June 2009 - 05:19 PM

Bc Thiep oi, dựa trn 2 lệnh xa trn th bc c thể chỉnh xửa 1 cht để khi chạy th chương trnh dng đng trong mọi trường hợp. Em đề xuất bc c thể lồng lệnh extrim vo trong 2 lệnh trn để người dng chỉ cần vẽ 1 đường pline khp kn th chương trnh sẽ xa tại giao điểm cắt của đường pline kn. Em c mơn Bc nhiều.
Đy l file cad mẫu nhờ bc Thiep ngm cứu hộ
http://www.cadviet.c...files/mau_4.dwg
( Xin lỗi Bc do em khng biết viết lisp, nn c g sai xt mong Bc thng cảm bỏ qua)

Thiep c thể gộp 2 Lisp trn lại thnh 1. Lisp yu cầu thm: xa cc đối tượng trong hay ngoi CUR.
Cn lồng thm lệnh extrim th thiep khng lm được như yu cầu, v trong lisp extrim c những hm được viết sẵn bằng ObjectARX, khng hiểu được bn trong l ci g. Chịu, ci hiện nay thiep cn b l:
- Lm sao Lisp hiểu được mnh pick trong hay ngoi đường CUR
- Trong extrim.lsp, cc listpoint (lst, lst2...) được tạo như thế no.
Chắc nhờ bc Honh, VNdoc, hay cc bậc cao thủ khc am hiểu về ObjectARX viết tiếp thi.
Tuy nhin, thiep chỉ thm một động tc gọi lệnh extrim trước để xn cc đối tượng cắt ngang qua CUR, bn trong hay bn ngoi. cn sau đ, sẽ thực hiện lisp cua Thiep. Lisp erc.lsp đ chỉnh sửa:
;; ERC.LSP free lisp from cadviet.com;;;-------------------------------------------------------------(defun ss2ent (ss / i Le e)(setq i 0Le nil)(repeat (sslength ss)(setqe (ssname ss i)Le (append Le (list e))i (1+ i)))Le);;;-------------------------------------------------------------(defun c:erc (/ sc cur p0 P1 L1 d L n ssgDEL glength)  (princ "\nFree lisp from www.cadviet.com")  (vl-load-all "C:/Program Files/AutoCAD 2007/Express/extrim.lsp")  (c:extrim)  (command "undo" "be")  (setvar "osmode" 0)  (setq	sc	2009	cur	(car (entsel "\nchon duong: "))	glength	(lambda (e) (command ".lengthen" e "") (getvar "perimeter"))	d	(/ (glength cur) sc)	l1	0.0	p0	(vlax-curve-getStartPoint cur)	L	(list p0)  )  (redraw cur 4)  (repeat sc    (setq      l1 (+ l1 d)      p1 (vlax-curve-getPointAtDist cur l1)    )    (setq L (append L (List p1)))  )  (setq n 0)  (initget "T N")  (setq bit (getkword "\nBan muon xoa Trong hay Ngoai Curve < T/N>: "))  (cond	((= bit "T")	 (setq ssgDEL (ssget "WP" L))	)	((= bit "N")	 (progn	   (setq ssgDEL	  (ssget "X")		 ssginC	  (ssget "CP" L)		 enssginC (ss2ent ssginC)	   )	   (foreach eni	enssginC	     (ssdel eni ssgDEL)	   )	 )	)  )  (repeat (sslength ssgDEL)    (entdel (ssname ssgDEL n))    (setq n (1+ n))  )  (command "undo" "end")  (princ "\nChuc cac ban may man va thanh cong - Thiep 0918841230")  (princ))(vl-load-com)

Ngy cuối tun vui vẻ!.
  • 4

#11 xuandao0708

xuandao0708

    biết lệnh scale

  • Members
  • PipPipPip
  • 140 posts
Danh tiếng: 9 (bnh thường)

Gửi vào 27 June 2009 - 05:45 PM

C mơn Thiep rất nhiều, mong cc cao thủ về lisp c thể nghe v để hon thiện lisp ny. Thank mọi người nhiều. Chc mọi người cuối tuần vui vẻ :blink: :s_big: :blink:
  • 0

#12 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 3,723 posts
Danh tiếng: 4318 (đỉnh cao)

Gửi vào 28 June 2009 - 12:15 AM

Thiep c thể gộp 2 Lisp trn lại thnh 1. Lisp yu cầu thm: xa cc đối tượng trong hay ngoi CUR.
Cn lồng thm lệnh extrim th thiep khng lm được như yu cầu, v trong lisp extrim c những hm được viết sẵn bằng ObjectARX, khng hiểu được bn trong l ci g. Chịu, ci hiện nay thiep cn b l:
- Lm sao Lisp hiểu được mnh pick trong hay ngoi đường CUR
- Trong extrim.lsp, cc listpoint (lst, lst2...) được tạo như thế no.
Chắc nhờ bc Honh, VNdoc, hay cc bậc cao thủ khc am hiểu về ObjectARX viết tiếp thi.
Tuy nhin, thiep chỉ thm một động tc gọi lệnh extrim trước để xn cc đối tượng cắt ngang qua CUR, bn trong hay bn ngoi. cn sau đ, sẽ thực hiện lisp cua Thiep. Lisp erc.lsp đ chỉnh sửa:

Ci ny đơn giản thi m! Bạn c thể đọc m nguồn của extrim.lsp để hiểu n.

Bạn thay dng lệnh (c:extrim) bằng (etrim ent p) l bạn c thể 'lồng' vo lệnh extrim được rồi.

Hm etrim với 2 tham số, tham số thứ nhất l entity name của đối tượng, tham số thứ hai l điểm pick.
Ta c thể biết cch dng lệnh etrim qua v dụ dưới đy:
(vl-load-all "C:/Program Files/AutoCAD 2007/Express/extrim.lsp")
(defun c:myextrim( / ent p)
(setq 
ent (car (entsel "\nHay chon doi tuong: ")) 
p (getpoint "\nHay pick vao phia can trim: ")
)
(etrim ent p)
)

  • 3

#13 khaosat2009

khaosat2009

    biết lệnh offset

  • Members
  • PipPipPip
  • 171 posts
Danh tiếng: 10 (tm tạm)

Gửi vào 28 June 2009 - 07:19 AM

Anh c thể gip em lp copy cc đối tuợng trong vng kn được chọn
Rất cm ơn
  • 0

#14 namhai

namhai

    biết vẽ rectang

  • Members
  • PipPip
  • 81 posts
Danh tiếng: 18 (tm tạm)

Gửi vào 29 June 2009 - 07:46 AM

Hnh như lisp trn khng xo được cc đối tượng nằm trong khu vực được giới hạn bởi 2 vng kn(chẳng hạn e chỉ muốn xo cc đối tượng trong hnh vnh khăn tức l đối tượng được giới hạn bởi 2 đường trn đồng tm c bn knh khc nhau), mong cc cao thủ ra tay gip đỡ
  • 0
Hy lm việc hết mnh rồi mọi điều tốt đẹp sẽ đến với bạn.....

#15 thiep

thiep

    biết dimdiameter

  • Members
  • PipPipPipPipPip
  • 331 posts
Danh tiếng: 247 (kh)

Gửi vào 29 June 2009 - 11:28 AM

Hnh như lisp trn khng xo được cc đối tượng nằm trong khu vực được giới hạn bởi 2 vng kn(chẳng hạn e chỉ muốn xo cc đối tượng trong hnh vnh khăn tức l đối tượng được giới hạn bởi 2 đường trn đồng tm c bn knh khc nhau), mong cc cao thủ ra tay gip đỡ

Nanhai , v ban đầu bạn chỉ yu cầu xa cc đối tượng trong 1 curve.
Sau đ th Nanhai yu cầu thm xa cc đối tượng ngoi 1 curve.
By giờ th yu cầu thm xa cc đối tượng giữa 2 curve, chứ khng c "hnh như" bạn ạ
Thiep sẽ chỉnh sửa Lisp theo cả 3 yu cầu ny cho bạn.
Nhớ lần sau Namhai ra đầu đề 1 lần thi, khỏi phải viết đi viết lại nhiều lần bạn nh?
Lisp đ chỉnh sửa:

  • 3

#16 xuandao0708

xuandao0708

    biết lệnh scale

  • Members
  • PipPipPip
  • 140 posts
Danh tiếng: 9 (bnh thường)

Gửi vào 29 June 2009 - 01:08 PM

Nhờ Bc Thiep coi lại dm em Lisp er2c n bo lỗi khng chạy được.
-Command: er2c
Free lisp from www.cadviet.com
too many arguments
Đy l file cad mẫu:
http://www.cadviet.c...pfiles/mau1.dwg

Tiện thể Bc cho em hỏi Lisp xo cc đối tượng bn trong hoặc bn ngoi 1 đường Pline kp kn c lồng thm lệnh Extrim Bc đ viết xong chưa vậy? Nếu viết xong rồi th em c mơn Bc nhiều lắm. Thank Bc nhiều.
  • 0

#17 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 3,723 posts
Danh tiếng: 4318 (đỉnh cao)

Gửi vào 29 June 2009 - 01:26 PM

Nhờ Bc Thiep coi lại dm em Lisp er2c n bo lỗi khng chạy được.
-Command: er2c
Free lisp from www.cadviet.com
too many arguments
Đy l file cad mẫu:
http://www.cadviet.c...pfiles/mau1.dwg

Tiện thể Bc cho em hỏi Lisp xo cc đối tượng bn trong hoặc bn ngoi 1 đường Pline kp kn c lồng thm lệnh Extrim Bc đ viết xong chưa vậy? Nếu viết xong rồi th em c mơn Bc nhiều lắm. Thank Bc nhiều.

Bạn thư lại đi,
trước đy bị lỗi phần download
  • 1

#18 xuandao0708

xuandao0708

    biết lệnh scale

  • Members
  • PipPipPip
  • 140 posts
Danh tiếng: 9 (bnh thường)

Gửi vào 29 June 2009 - 01:52 PM

Em c thể nhờ cc Bc cải thiến thm 1 cht cho n hon chỉnh theo như file mẫu k vậy? Nếu được th n rất hữa ch.
Dưới đy l file mẫu
http://www.cadviet.c...iles/mau1_1.dwg
Em c mơn cc Bc nhiều.
  • 0

#19 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1,271 posts
Danh tiếng: 1326 (rất tốt)

Gửi vào 30 June 2009 - 07:32 AM

Nhờ pc Thiệp xem lại. Lisp er2c.lsp bị lỗi khng chạy dc.
Bị lỗi như thế ny. Lisp của bc thật tuyệt. Thanks bc nhiều nhiều.
Command: er2c
Free lisp from www.cadviet.com; error: no function definition: ACET-ERROR-INIT
Command:

Cho xataraku
hm ACET-ERROR-INIT thuộc thư viện Express Tool.
bạn phải ci bộ Express Tool th LISP er2c mới chạy đuợc.
  • 1

#20 namhai

namhai

    biết vẽ rectang

  • Members
  • PipPip
  • 81 posts
Danh tiếng: 18 (tm tạm)

Gửi vào 30 June 2009 - 08:08 AM

Nanhai , v ban đầu bạn chỉ yu cầu xa cc đối tượng trong 1 curve.
Sau đ th Nanhai yu cầu thm xa cc đối tượng ngoi 1 curve.
By giờ th yu cầu thm xa cc đối tượng giữa 2 curve, chứ khng c "hnh như" bạn ạ
Thiep sẽ chỉnh sửa Lisp theo cả 3 yu cầu ny cho bạn.
Nhớ lần sau Namhai ra đầu đề 1 lần thi, khỏi phải viết đi viết lại nhiều lần bạn nh?
Lisp đ chỉnh sửa:

Bc Thiếp ,,sory bc v lc đầu e chỉ gặp rắc rối với 1 curve, vấn đề về 2 curve l tưởng pht sinh m, hh...nhưng sao lisp ny khng kết hợp được với extrim giống như 1 curve hả bc thiep?nếu kết hợp được với extrim th tuyệt qu bc thip a!Thanks bc nhiều nhiều nha
  • 0
Hy lm việc hết mnh rồi mọi điều tốt đẹp sẽ đến với bạn.....