Đến nội dung


Hình ảnh
- - - - -

Nhờ viết lisp tạo block từ các đối tượng giống nhau hay từ block đã bị phá


  • Please log in to reply
27 replies to this topic

#1 canu_a7

canu_a7

    biết vẽ arc

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

Đã gửi 21 March 2013 - 09:00 AM

Chào anh em diễn đàn mình có vấn đề này mong các pro giúp đỡ trong bản vẽ của mình có rất nhiều đối tượng giống nhau có thể là do copy mà không tạo block hay từ một block đã bị phá vỡ mình muốn nhờ mọi người viết giúp mình một cái lisp nhóm các đối tượng giống nhau đó thành một block 

Xin trân thành cảm ơn và chúc anh em ngày càng tiến bộ.


  • -1

#2 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 21 March 2013 - 09:18 AM

1). Bạn cố gắng gởi thêm một ít dấu chấm và dấu phẩy để chèn vào câu hỏi, chứ đọc một mạch khó hiểu quá.

2). Khái niệm "đối tượng giống nhau" là khá mơ hồ. Bạn có thể giải thích thêm?


  • 3

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


#3 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 21 March 2013 - 10:54 AM

1). Bạn cố gắng gởi thêm một ít dấu chấm và dấu phẩy để chèn vào câu hỏi, chứ đọc một mạch khó hiểu quá.

2). Khái niệm "đối tượng giống nhau" là khá mơ hồ. Bạn có thể giải thích thêm?

Hề hề hề,

Quả thật là không thể vui được khi các KỸ SƯ hay GIÁO SƯ mà lại không thể trình bày cái sự hiểu của mình cho ngưới khác hiểu được. Có nhẽ cái sự học ngày nay nó tiến bộ quá nên người học có quyền nói tất cả những gì mình khoái mà không cần người nghe phải hiểu. Và thế là một mớ kỹ sư ra đời với toàn tư tưởng ăn trên ngồi chốc.

Hề hề hề,....


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

#4 canu_a7

canu_a7

    biết vẽ arc

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

Đã gửi 21 March 2013 - 11:30 AM

Là vì mình muốn quản lý bản vẽ bằng block nhưng khi nhận bản vẽ của người khác thì có nhiều chi tiết được người vẽ copy vô tội vạ mà không đóng block nên giờ mình muốn anh em giúp một tay làm sao gom các chi tiết đó lại thành một block cho dễ quản lý chứ giờ mà phải tạo block rồi đặt vào đúng vị trí e hơi mệt 

Đúng là mình trình bầy văn bản hơi ẩu nhưng đó không phải do mình cố ý mong bạn Đoàn Văn Hà thông cảm có gì không hiểu mọi người đều có thể trao đổi

Tư duy của người yêu cầu đến người thực hiện là khác nhau nếu chỉ giựa vào khả năng diễn đạt mà đánh giá lớp kỹ sư thời nay thì mình e là hơi võ đoán đấy bạn Phạm Thanh Bình ag


  • -1

#5 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 21 March 2013 - 11:43 AM

Bạn hãy gởi một bản vẽ lên minh họa. Các chi tiết nào thì cần block lại, vì chúng nhau cái gì, các đối tượng cần block thuộc kiểu đối tượng gì v.v...?

Chứ chỉ diễn giải bằng lời là không hết ý đâu.


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


#6 vnretail

vnretail

    Chưa sử dụng CAD

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

Đã gửi 21 March 2013 - 11:59 AM

1). Bạn cố gắng gởi thêm một ít dấu chấm và dấu phẩy để chèn vào câu hỏi, chứ đọc một mạch khó hiểu quá.

2). Khái niệm "đối tượng giống nhau" là khá mơ hồ. Bạn có thể giải thích thêm?

Mình thích comment thứ 1 của bác này, trực quan và sinh... sự quá ^^


  • 0
www.vnretail.com.vn (Phân phối sản phẩm Wincor Nixdorf tại Việt Nam)

#7 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 21 March 2013 - 12:17 PM

Là vì mình muốn quản lý bản vẽ bằng block nhưng khi nhận bản vẽ của người khác thì có nhiều chi tiết được người vẽ copy vô tội vạ mà không đóng block nên giờ mình muốn anh em giúp một tay làm sao gom các chi tiết đó lại thành một block cho dễ quản lý chứ giờ mà phải tạo block rồi đặt vào đúng vị trí e hơi mệt 

Đúng là mình trình bầy văn bản hơi ẩu nhưng đó không phải do mình cố ý mong bạn Đoàn Văn Hà thông cảm có gì không hiểu mọi người đều có thể trao đổi

Tư duy của người yêu cầu đến người thực hiện là khác nhau nếu chỉ giựa vào khả năng diễn đạt mà đánh giá lớp kỹ sư thời nay thì mình e là hơi võ đoán đấy bạn Phạm Thanh Bình ag

Hề hề hề,

Đúng là võ đoán thật. Thế` còn văn đoán của bạn thì nó thế nào nhỉ??? 

Một người muốn người khác thực hiện cái yêu cầu của mình nhưng lại không thể nói cho người thực hiện hiểu đúng cái yêu cầu của mình thì kết quả công việc ấy ra sao nhỉ?? Và lỗi này chắc hẳn là do cái anh thực hiện quá kém không thể hiểu nối cái tư duy như giời như biển của anh yêu cầu. Đúng không nhỉ????

Học đã tới cái bằng kỹ sư mà còn chưa hiểu được cái tầm quan trọng của việc truyền đạt thông tin đầy đủ và chuẩn xác thì thật là uổng công cho cái sự học.

Làm việc mà không cần người khác hiểu đúng ý mình thì chỉ có thể làm việc một mình, và như vậy thì hẳn là một cách làm việc đúng chăng???

Võ đóan hay văn đoán, chả quan trọng gì cả mà quan trọng ở cái kết quả của việc mở topic này....

Hề hề hề ,....


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

#8 canu_a7

canu_a7

    biết vẽ arc

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

Đã gửi 21 March 2013 - 12:42 PM

đây là file ví dụ

http://www.mediafire...qkn1suptb44cai1

thế nên khi tiếp nhận thông tin gì nếu không hiểu thì phải hỏi cho kỹ bạn Phạm Thanh Bình ah

và mình thích cái điệu cười của bạn 


  • -1

#9 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 21 March 2013 - 01:28 PM

Chịu! Version cao quá, không mở được. Hy vọng có người giúp bạn.


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


#10 canu_a7

canu_a7

    biết vẽ arc

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

Đã gửi 21 March 2013 - 01:34 PM

hic autocad 2010 nhọ.


  • 0

#11 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 21 March 2013 - 01:34 PM

Giống nhau là sao thế nhỉ ? Mình gặp khá nhiều người yêu cầu ntn, chủ yếu phát sinh từ việc k phân biệt người và máy, cứ nghĩ nhìn giống nhau thì chương trình phải nhận diện đc, nghĩ là dễ :)
  • 1

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


#12 canu_a7

canu_a7

    biết vẽ arc

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

Đã gửi 21 March 2013 - 01:36 PM

http://www.cadviet.c...46537_vi_du.dwg

Mong mọi người giúp đỡ thực ra đây chỉ là ý tưởng thôi nếu làm được thì sẽ rất có ích nhưng cũng có thể là nó không làm được


  • 0

#13 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 21 March 2013 - 04:13 PM

http://www.cadviet.c...46537_vi_du.dwg


Mong mọi người giúp đỡ thực ra đây chỉ là ý tưởng thôi nếu làm được thì sẽ rất có ích nhưng cũng có thể là nó không làm được


Hề hề hề,


Và đây là cái kết quả của việc võ đoán. Có thể nó đúng với cái văn đoán của bạn nhưng xin thưa rằng nó chỉ áp dụng cho đúng cái bản vẽ mà bạn đã post lên. Bởi vì các bản vẽ khác sẽ có những dối tượng giống nhau khác chứ chắc mẻm không phải như ở bản vẽ mẫu này. Khi đó bạn có thể phải dùng cái văn đoán của bạn để tìm ra đối tượng chuẩn cũng như cách chọn nhóm đối tượng cùng đối tượng chuẩn để tạo ra block mẫu. Trong trường hợp bản vẽ bạn post, mình võ đoán rằng cái đối tượng chuẩn là cái vòng tròn lớn nhất chứa các đối tượng bên trong và dùng nó để chọn nhóm đối tượng trong block mẫu. Sau khi có block mẫu thì mình chỉ việc xóa sạch những thằng "giống nhau" và nhét cái block mẫu này vào vị trí tương ứng của nó mà thôi.


Bạn cũng có thể áp dụng cái thuật toán này cho các bản vẽ khác của bạn với điều kiện phải văn đoán đúng các đối tượng chuẩn và có cách lựa chọn nhóm đối tượng phù hợp


{codebox]


 


(Defun c:blndt (/ oldos dtm lo pc d la ss ss1 ss2 bln)

(vl-load-com)

(setq oldos (getvar "osmode"))

(setvar "osmode" 0)

(command "undo" "be")

(setq dtm (car (entsel "\n Chon doi tuong chuan"))

          lo (cdr (assoc 0 (entget dtm)))

          pc (cdr (assoc 10 (entget dtm)))

          d (cdr (assoc 40 (entget dtm)))

          la (cdr (assoc 8 (entget dtm)))

          ss (ssget "w" (list (- (car pc) (+ d  0.01)) (- (cadr pc) (+  d  0.01))) (list (+ (car pc) d 0.01) (+ (cadr pc) d 0.01)))  )

(setq bln (getstring T "\n Nhap ten block: " ))

(if (not (tblsearch "block" bln))

    (command "block" bln pc ss "")

    (progn 

          (alert "\n Ten block da co,  yeu cau nhap ten khac " )

          (setq bln nil)

    )

)

(while (/= bln nil)

(setq ss1 (acet-ss-to-list (ssget (list (cons 0 lo) (cons 8 la) (cons 40 d)))))

(foreach en ss1

       (setq pt (cdr (assoc 10 (entget en)))

                ss2 (ssget "w" (list (- (car pt) (+ d 0.01)) (- (cadr pt) (+ d  0.01))) (list (+ (car pt) d 0.01) (+ (cadr pt) d  0.01)))  )

       (command "erase" ss2 "")

       (command "insert" bln pt 1 1 0)

)

(command "insert" bln pc 1 1 0)

 (setq bln nil)

)

(command "undo" "e")

(setvar "osmode" oldos)

(princ)

)

       

[/codebox]

Hề hề hề,

Chúc bạn vui và hãy cố gắng học cách diễn đạt làm sao để mọi người không thể võ đoán hay văn đoán bạn nhé. Cái việc bắt mọi người phải võ đoán hay văn đoán như vậy được mình coi là việc ăn trên ngồi chốc coi thường đồng đội đó bạn ạ.

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

#14 LoveLisp

LoveLisp

    biết lệnh extend

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

Đã gửi 21 March 2013 - 04:23 PM

Tuyệt vời! Nếu lisp này được khái quát lên và đúng cho mọi trường hợp thì nó xứng đáng được AutoDesk mua lại để bổ sung vào tùy chọn của lệnh Purge. Theo mình, đây là một cách tuyệt vời để giảm dung lượng bản vẽ!

P/S: Code của bạn nhiều dòng trống quá!


  • 0

#15 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 21 March 2013 - 04:30 PM

Tuyệt vời! Nếu lisp này được khái quát lên và đúng cho mọi trường hợp thì nó xứng đáng được AutoDesk mua lại để bổ sung vào tùy chọn của lệnh Purge. Theo mình, đây là một cách tuyệt vời để giảm dung lượng bản vẽ!

P/S: Code của bạn nhiều dòng trống quá!

 

Chắc là không bao giờ đúng được cho mọi trường hợp đâu bạn à.

Block là đối tượng phức, chứa nhiều đối tượng khác nhau, đúng trong TH này, nhưng không đúng trong TH khác, 

tùy từng TH có cách xử lý khác nhau


  • 0

#16 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 21 March 2013 - 04:45 PM

Tuyệt vời! Nếu lisp này được khái quát lên và đúng cho mọi trường hợp thì nó xứng đáng được AutoDesk mua lại để bổ sung vào tùy chọn của lệnh Purge. Theo mình, đây là một cách tuyệt vời để giảm dung lượng bản vẽ!

P/S: Code của bạn nhiều dòng trống quá!

Hề hề hề,

Không phải đâu là không phải đâu. Lỗi do cái codebox của diễn đàn đó. Chả hiểu sao mà nó lại nhảy cách như thế.

Diễn đàn đã thay thế thẻ {code] [/code] bằng thẻ {lisp] [/lisp] nhưng sao mình dùng nó vẫn không xi nhê gì cả nên đành chơi thẻ

 
.

Hề hề hề


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

#17 canu_a7

canu_a7

    biết vẽ arc

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

Đã gửi 22 March 2013 - 09:05 AM

Trước tiên mình nợ Phạm Thanh Bình một lời cảm ơn vì đã giúp đỡ quả thật diễn đàn phát triển được là nhờ những người như bạn cho dù những lời nhận xét có là hơi nghiêm khắc nhưng để tiến bộ thì ta phải cố gắng thôi.

Mình đã tải lisp về chạy thử với những hình giống nhau thì lisp chạy ổn định nhưng khi trong hình mà có thêm đối tượng khác thì lisp bị lỗi mong Phạm Thanh Bình cố gắng fix hộ lỗi này 

một lần nữa xin chân thành cảm ơn!http://www.cadviet.c...46537_vi_du.rar


  • 0

#18 canu_a7

canu_a7

    biết vẽ arc

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

Đã gửi 22 March 2013 - 09:20 AM

lisp không nhận những đối tượng có đường bao là PLine


  • 0

#19 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 22 March 2013 - 11:38 AM

lisp không nhận những đối tượng có đường bao là PLine

1/- Cái ni là do bạn không đọc kỹ hướng dẫn trước khi sử dụng mừ.

2/- Hãy gửi cái bản vẽ có đường bao là Pline lên nhé. may ra mình gộp được nó vào cái lisp trên, nếu không thì chơi lisp khác vậy.

3/- Vấn đề cốt lõi của cái lisp này là cách xác định đối tượng chuẩn và từ đó xác định nhóm các đối tượng có trong block. Với các đối tượng chuẩn khác nhau thì phải có cách chọn các đối tượng trong block khác nhau. Vì thế nó chỉ là gợi ý để bạn có thể ứng phó với từng bản vẽ cụ thể của bạn.

Trong bản vẽ bạn gửi, mình chọn đối tượng chuẩn là vòng tròn lớn nhất và nhóm đối tượng trong block được chọn phụ thuộc vào bán kinh của vòng tròn này. Với đối tượng chuẩn là pline thì cách chọn nhóm đối tượng trong block sẽ phải khác đi. Khác như thế nào thì lại cần có bản vẽ của bạn mới võ đoán được. 

Do không thể biết được bạn sẽ cần block những loại đối tượng nào và cách chọn đối tượng chuẩn của bạn nên rất khó để có thể có được một lisp sử dụng đúng cho mọi trường hợp. Nếu có thể bạn phải thống kê được tất cả những gì bạn cần thì người viết lisp mới có thể định hướng giải quyết được bạn ạ. Rất mong bạn thông cảm với sự hiểu biết hạn chế này của mình.


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

#20 canu_a7

canu_a7

    biết vẽ arc

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

Đã gửi 22 March 2013 - 03:12 PM

Những vấn đề nảy sinh mình đã cho trong này rồi nhé

mong bạn Phan Thanh Bình động não tiếp giúp mình và những người quan tâm

http://www.cadviet.c..._vi_du_tiep.rar


  • 0