Đến nội dung


Hình ảnh
- - - - -

lisp chặt rời các đối tượng làm hai phần


  • Please log in to reply
21 replies to this topic

#1 trieubb

trieubb

    biết vẽ ellipse

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

Đã gửi 04 September 2008 - 02:44 PM

Em cần gấp chặt rời các đối tượng ra làm hai phần;
Bác nào có cái lisp chặt rời các đối tượng làm hai phần, tức là (_break at point) ấy
Ví dụ em muốn chặt đường 1 mà có đường 2 cắt qua nó em
se làm như sau:
gõ lệnh, sau đó chọn đối tượng cần chặt (tức đường 1) rồi Enter cái, rồi chọn đường để chặt (tức đường 2)
rồi Enter thế là đường 1 bị chặt ra làm hai phần
các bác ơi cái này mỗi ngày em làm mấy ngìn đường đấy bác ạ, mà em cứ ngồi chặt thủ công mãi chán quá rồi
các bác giúp em nhanh với
em cảm ơn các bác nhiều

  • 0

#2 traitimsat034

traitimsat034

    biết vẽ pline

  • Members
  • PipPip
  • 61 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 04 September 2008 - 02:51 PM

Em cần gấp chặt rời các đối tượng ra làm hai phần;
Bác nào có cái lisp chặt rời các đối tượng làm hai phần, tức là (_break at point) ấy
Ví dụ em muốn chặt đường 1 mà có đường 2 cắt qua nó em
se làm như sau:
gõ lệnh, sau đó chọn đối tượng cần chặt (tức đường 1) rồi Enter cái, rồi chọn đường để chặt (tức đường 2)
rồi Enter thế là đường 1 bị chặt ra làm hai phần
các bác ơi cái này mỗi ngày em làm mấy ngìn đường đấy bác ạ, mà em cứ ngồi chặt thủ công mãi chán quá rồi
các bác giúp em nhanh với
em cảm ơn các bác nhiều

sao bạn không chịu đọc mà đã hỏi. mình đã gửi cho bạn lisp breakall rồi đấy thôi.
  • 0

#3 ghost8.3

ghost8.3

    biết dimdiameter

  • Members
  • PipPipPipPipPip
  • 335 Bài viết
Điểm đánh giá: 162 (tàm tạm)

Đã gửi 04 September 2008 - 03:48 PM

Em cần gấp chặt rời các đối tượng ra làm hai phần;
Bác nào có cái lisp chặt rời các đối tượng làm hai phần, tức là (_break at point) ấy
Ví dụ em muốn chặt đường 1 mà có đường 2 cắt qua nó em
se làm như sau:
gõ lệnh, sau đó chọn đối tượng cần chặt (tức đường 1) rồi Enter cái, rồi chọn đường để chặt (tức đường 2)
rồi Enter thế là đường 1 bị chặt ra làm hai phần
các bác ơi cái này mỗi ngày em làm mấy ngìn đường đấy bác ạ, mà em cứ ngồi chặt thủ công mãi chán quá rồi
các bác giúp em nhanh với
em cảm ơn các bác nhiều

Bạn chịu khó search trên diễn đàn, sẽ có khối đó
Chứ ai cũng chờ dọn lên mâm mà xơi thì có mà...
Lưu ý bạn là bạn tạo quá nhiều TOPIC cùng 1 chủ đề rồi đó. điều này sẽ không hay chút nào và cũng nên nêu yêu cầu đúng chỗ của nó để người khác còn tìm mà đọc nữa chứ
  • 0

Hình đã gửi


#4 trieubb

trieubb

    biết vẽ ellipse

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

Đã gửi 04 September 2008 - 04:00 PM

sao bạn không chịu đọc mà đã hỏi. mình đã gửi cho bạn lisp breakall rồi đấy thôi.


OK
cảm ơn bác TRAITIMSAT034 rất nhiều
mình xem lại rồi cái đó OK lắm rồi
thanks các bác nhé

  • 0

#5 trieubb

trieubb

    biết vẽ ellipse

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

Đã gửi 04 September 2008 - 05:51 PM

sao bạn không chịu đọc mà đã hỏi. mình đã gửi cho bạn lisp breakall rồi đấy thôi.


à bác TRAITIMSAT034 ơi
nếu đường của em ở trong block thì nó không chọn được
bác đã giúp em thì giúp cho trót để thằng em khỏi khổ
thanks bác nhé

  • 0

#6 phamtuan

phamtuan

    biết lệnh scale

  • Members
  • PipPipPip
  • 145 Bài viết
Điểm đánh giá: 222 (khá)

Đã gửi 04 September 2008 - 07:35 PM

Em cần gấp chặt rời các đối tượng ra làm hai phần;
Bác nào có cái lisp chặt rời các đối tượng làm hai phần, tức là (_break at point) ấy
Ví dụ em muốn chặt đường 1 mà có đường 2 cắt qua nó em
se làm như sau:
gõ lệnh, sau đó chọn đối tượng cần chặt (tức đường 1) rồi Enter cái, rồi chọn đường để chặt (tức đường 2)
rồi Enter thế là đường 1 bị chặt ra làm hai phần
các bác ơi cái này mỗi ngày em làm mấy ngìn đường đấy bác ạ, mà em cứ ngồi chặt thủ công mãi chán quá rồi
các bác giúp em nhanh với
em cảm ơn các bác nhiều

Của bạn đây, lisp này mình lấy bên ForumCad.cz chứ không phải của bố nào Vn đâu bạn nhé, nói nhanh cho nó vuông
http://www.cadviet.c...es/breakall.lsp
  • 0

#7 traitimsat034

traitimsat034

    biết vẽ pline

  • Members
  • PipPip
  • 61 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 04 September 2008 - 07:37 PM

à bác TRAITIMSAT034 ơi
nếu đường của em ở trong block thì nó không chọn được
bác đã giúp em thì giúp cho trót để thằng em khỏi khổ
thanks bác nhé

Lisp này là do mình sưu tập. mình biết ít về lisp lắm. cái này bạn nhờ các cao thủ trên diến đàn đi.
  • 0

#8 traitimsat034

traitimsat034

    biết vẽ pline

  • Members
  • PipPip
  • 61 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 04 September 2008 - 07:39 PM

Của bạn đây, lisp này mình lấy bên ForumCad.cz chứ không phải của bố nào Vn đâu bạn nhé, nói nhanh cho nó vuông
http://www.cadviet.c...es/breakall.lsp

Lạ thật! ngay từ đầu mình có nói là do mình viết đâu. hic
  • 0

#9 nataca

nataca

    biết lệnh adcenter

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

Đã gửi 04 September 2008 - 08:04 PM

Của bạn đây, lisp này mình lấy bên ForumCad.cz chứ không phải của bố nào Vn đâu bạn nhé, nói nhanh cho nó vuông
http://www.cadviet.c...es/breakall.lsp

anh Phamtuan không nên nói căng thẳng thế. Anh em vào đây để học hỏi để nâng cao trình độ . Việc tham khảo các chương trình lisp ở trang web nước ngoài là bình thường. Với bản thân tôi chỉ quan tâm đến việc xử lý thuật toán trong lisp chứ ko quan tâm nhiều đến "create by"
  • 0

#10 traitimsat034

traitimsat034

    biết vẽ pline

  • Members
  • PipPip
  • 61 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 04 September 2008 - 08:47 PM

Của bạn đây, lisp này mình lấy bên ForumCad.cz chứ không phải của bố nào Vn đâu bạn nhé, nói nhanh cho nó vuông
http://www.cadviet.c...es/breakall.lsp

hĩ hĩ mình thì mình vẫn thích thẳng hơn vuông.

Trích dẫn(traitimsat034 @ Sep 3 2008, 9:13) *
Mình có sưu tập được một lisp giống với yêu cầu của bạn, hi vọng giúp ích cho bạn.

;;;=======================[ BreakObjects.lsp ]==============================
;;; Author: Copyright© 2006,2007 Charles Alan Butler
;;; Contact @ www.TheSwamp.org
;;; Version: 1.3 April 9,2007
;;; Globalization by XANADU - www.xanadu.cz

vừa rồi mình có đọc và thấy vuông của bạn.

; Program Name: Troy.lsp [Troy R5] - Asteroids AutoLISP game
; Created By: phamtuan (Email: tuanngph@hpc.org.vn)
; Date Created: 1-20-06

còn cái này.
; Program Name: Troy.lsp [Troy R5] - Asteroids AutoLISP game
; Created By: Terry Miller (Email: terrycadd@yahoo.com)
; (URL: http://web2.airmail.net/terrycad)
; For the International version of this game, download Troy-I.lsp
; from the above website.
; Date Created: 1-20-06

????????????????????????
  • 0

#11 trieubb

trieubb

    biết vẽ ellipse

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

Đã gửi 05 September 2008 - 09:11 AM

Của bạn đây, lisp này mình lấy bên ForumCad.cz chứ không phải của bố nào Vn đâu bạn nhé, nói nhanh cho nó vuông
http://www.cadviet.c...es/breakall.lsp


Đúng rồi cái này bác TRAITIMSAT034 đã cho em rồi
nhưng vẫn hạn chế là nếu cái đường 2 nằm trong BLOCK thì nó kô chọn được
các bác giúp em luôn cái hạn chế đó nhé
giúp cho chót mà
thankss các bác

  • 0

#12 nataca

nataca

    biết lệnh adcenter

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

Đã gửi 05 September 2008 - 10:40 AM

Đúng rồi cái này bác TRAITIMSAT034 đã cho em rồi
nhưng vẫn hạn chế là nếu cái đường 2 nằm trong BLOCK thì nó kô chọn được
các bác giúp em luôn cái hạn chế đó nhé
giúp cho chót mà
thankss các bác

Đối tượng đa tuyến thì cậu dùng lisp TRAITIMSAT034 . Còn nếu đối tượng chặt là block thì dùng thêm cái này.

(defun c:Boj ( / ent1 ent2 giao ent3 ent)
(vl-load-com)
(setq ent1 (car (setq ent3 (entsel "\nVao doi tuong can cat: "))))
(redraw ent1 3)
(setq ent (entsel "\nVao doi tuong dung de cat: "))

(cond ( (= "INSERT" (cdr (assoc 0 (entget (car ent)))))
(command "undo" "mark")
(command "explode" ent)
(setq ent2 (entget (ssname (ssget "L") 0)))
(command "undo" "back")
(entmake ent2)
(setq ent2 (ssname (ssget "L") 0))
)
(T (setq ent2 (car ent)))
)
(redraw ent1 4)
(setq giao (giaodt ent1 ent2))
(if giao
(foreach pp giao
(command "break" ent3 "f" pp "@")
)
(alert "2 doi tuong khong giao nhau!")
)
(if (= "INSERT" (cdr (assoc 0 (entget (car ent)))))
(entdel ent2)
)
(princ)
)
(defun GiaoDT (ent1 ent2)
(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
)
)

  • 0

#13 trieubb

trieubb

    biết vẽ ellipse

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

Đã gửi 05 September 2008 - 11:51 AM

cái của bác vẫn chưa chọn được nhiều đối tượng bác ạ
bác làm thế nào mà chọn được nhiều đối tượng cơ
cố lên bác nhé
OK?????

  • 0

#14 nataca

nataca

    biết lệnh adcenter

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

Đã gửi 05 September 2008 - 03:26 PM

cái của bác vẫn chưa chọn được nhiều đối tượng bác ạ
bác làm thế nào mà chọn được nhiều đối tượng cơ
cố lên bác nhé
OK?????

Nhiều đối tượng đây. Vẫn là lệnh BOJ . Chọn nhóm đối tượng cần break, chọn 1 đối tượng làm dao cắt. Chú ý là lisp này vẫn chỉ giới hạn bởi đối tượng cần break là đường thẳng, cung tròn, nếu polynine nhiều đoạn thì mỗi lần chỉ cắt được 1 đoạn ( cái này phải cần thêm thời gian để hoàn thiện ).

(defun c:BOJ ( / ss ent dem ent1 giao)
(SAVE_MODE)
(INIT)
(prompt "\nChon doi tuong can cat: ")
(setq ss (ssget))
(setq ent (entsel "\n Chon doi tuong dung de cat: ")
dem 0
)
(cond ( (= "INSERT" (cdr (assoc 0 (entget (car ent)))))
(command "undo" "mark")
(command "explode" ent)
(setq ent1 (entget (ssname (ssget "L") 0)))
(command "undo" "back")
(entmake ent1)
(setq ent1 (ssname (ssget "L") 0))
)
(T (setq ent1 (car ent)))
)
(repeat (sslength ss)
(setq giao (giaodt ent1 (ssname ss dem)))
(if giao
(foreach pp giao
(command "break" (list (ssname ss dem) (list 0.0 0.0 0.0)) "f" pp "@")
)
)
(setq dem (1+ dem))
)
(if (= "INSERT" (cdr (assoc 0 (entget (car ent)))))
(entdel ent1)
)
(princ)
(DONE)
(RESTORE)
)
;;;==========================================================================
; HAM BAY LOI
(defun INIT ()
(setq OLD_ERROR *error*
*error* MYERROR
)
)

(defun MYERROR (errmsg)

(cond
( (= errmsg "quit / exit abort")
(princ)
)
( (/= errmsg "Function cancelled")
(princ (strcat "\n Co loi: " errmsg))
)
)

(command "Undo" "back")
(setvar "osmode" OLD_OSMODE)
(command "CECOLOR" OLD_CECOLOR)

(DONE)

(prompt "\n Da thuc hien ham *error*, Reset lai thiet lap ban dau")

)

(defun DONE ()
(if OLD_ERROR (setq *error* OLD_ERROR))
)

;;;----------------------------------------------------------------------
; HAM LUU VA TRA LAI CAC THONG SO BAN DAU
(defun SAVE_MODE()

(command "Undo" "Mark")
(command "UCS" "W" "")
(setq OLD_OSMODE (getvar "OSMODE"))
(setq OLD_CECOLOR (getvar "CECOLOR"))
(command "cmdecho" 0)
(vl-load-com)

)
(defun RESTORE()

(if OLD_OSMODE
(setvar "osmode" OLD_OSMODE)
)
(if OLD_CECOLOR
(command "CECOLOR" OLD_CECOLOR)
)
(command "cmdecho" 1)
(Grtext -1 "Lisp's written by Nataca - 0983.715.333")
)
;---------------------------------------------------------------------------
(defun GiaoDT (ent1 ent2)
(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
)
)

  • 0

#15 Snowman

Snowman

    biết lệnh mirror

  • Members
  • PipPipPip
  • 155 Bài viết
Điểm đánh giá: 90 (tàm tạm)

Đã gửi 05 September 2008 - 08:22 PM

Anh nghĩ ko cần dùng đến lisp đâu chú "Natasa" ah, anh vẫn thường dùng extrim có sẵn để ..."break" những mảnh Bình đồ QH lớn. Chỉ với một mẹo nhỏ thôi: copy bản vẽ thành 2, một phần dùng extrim cắt fía này, một phần cắt fía kia, sau đó ráp lại với nhau. Còn nếu muốn dùng lisp break thì có thể sửa lisp extrim có sẵn (để hoàn thiện được như thế cũng hơi vất vả đấy :lol: )
  • 0

. - ' * ' - .. - ... "Sống trong đời sống cần có một tấm lòng..." . - ' * ' - .. -
-----------------------------------------------------------------------------------

Hình đã gửi Hình đã gửi


#16 nataca

nataca

    biết lệnh adcenter

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

Đã gửi 05 September 2008 - 08:38 PM

Anh nghĩ ko cần dùng đến lisp đâu chú "Natasa" ah, anh vẫn thường dùng extrim có sẵn để ..."break" những mảnh Bình đồ QH lớn. Chỉ với một mẹo nhỏ thôi: copy bản vẽ thành 2, một phần dùng extrim cắt fía này, một phần cắt fía kia, sau đó ráp lại với nhau. Còn nếu muốn dùng lisp break thì có thể sửa lisp extrim có sẵn (để hoàn thiện được như thế cũng hơi vất vả đấy :lol: )

Cách của bác cũng hay. Nhưng theo em chỉ áp dụng cho trường hợp cắt mảnh lớn, còn cắt lẻ tẻ thì chắc là không áp dụng được.
  • 0

#17 meohoang

meohoang

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 811 Bài viết
Điểm đánh giá: 342 (khá)

Đã gửi 07 September 2008 - 11:22 AM

Cách của bác cũng hay. Nhưng theo em chỉ áp dụng cho trường hợp cắt mảnh lớn, còn cắt lẻ tẻ thì chắc là không áp dụng được.

Tôi có 1 mẹo này nhé:
Bác có hằng trăm đưòng như thế mà cắt đi thì rất uổng phí; biết đâu sau này lại cần nó thì sao nối lại à? Ko ổn dzồi.
Bác vẽ 2 đưòng pline cắt qua vùng muốn cắt. Sau đó vẽ thêm 2 pline ở 2 đầu -> dùng lệnh Pedit nối thành 1pline kín -> dùng lệnh wipeout chọn pline vừa nối Ok .
Thấy chưa các đưòng của bác bị che giống như cắt nhưng lại ko sao cả. Bạn làm thử sẽ khoái chí ngay í....
  • 0

#18 nataca

nataca

    biết lệnh adcenter

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

Đã gửi 08 September 2008 - 12:53 AM

Tôi có 1 mẹo này nhé:
Bác có hằng trăm đưòng như thế mà cắt đi thì rất uổng phí; biết đâu sau này lại cần nó thì sao nối lại à? Ko ổn dzồi.
Bác vẽ 2 đưòng pline cắt qua vùng muốn cắt. Sau đó vẽ thêm 2 pline ở 2 đầu -> dùng lệnh Pedit nối thành 1pline kín -> dùng lệnh wipeout chọn pline vừa nối Ok .
Thấy chưa các đưòng của bác bị che giống như cắt nhưng lại ko sao cả. Bạn làm thử sẽ khoái chí ngay í....

Cách này tôi chỉ hay dùng để cắt đường đồng mức thôi. Còn trong bản vẽ quy hoạch lớn thì chưa dùng wipeout đã nặng rồi, cho thêm nó vào để che thì càng nặng mà thực tế những hiện trạng thừa cắt đi cũng " không đáng tiếc", nó còn giúp giảm bớt dung lượng bản vẽ. Với lại chủ để này là break đối tượng làm hai phần, có lẽ chúng ta đã đi lạc đề
  • 0

#19 trieubb

trieubb

    biết vẽ ellipse

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

Đã gửi 08 September 2008 - 04:08 PM

Đúng đấy bác Snowman ạ
cái extrim thì em dùng suốt rồi
nhưng trường hợp này thì kô được đâu bác ạ
nếu được thì bác để ý lại tí
vì em muốn chặt làm hai phần chứ không phải cắt đi như extrim



bác meohoang cúng có ý hay
nhưng chỉ áp dụng được bình đồ (tức đường đồng mức) thôi
chứ cắt ngang thì bó tay không áp dụng được bác ạ

  • 0

#20 trieubb

trieubb

    biết vẽ ellipse

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

Đã gửi 08 September 2008 - 04:11 PM

Hay hay hay
cám on bác nataca cái nhé
để em dùng tí xem sao
còn cái polyline bác cố lên nhé
em đợi bác
thanks bác nhiều

  • 0