Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] lsp tách 1 nhóm layer thành nhiều layer khác nhau


  • Please log in to reply
39 replies to this topic

#1 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 01 November 2012 - 04:27 PM

các anh nào giúp em về lsp này với, em có nhiều đối tượng thuộc cùng 1 layer mỗi đối tượng là 1 nhóm, thật em cũng ko pit định nghĩa sao cho đúng nữa em chỉ mới pit ít về cad và lsp thời gian gần đây, em sử dụng cad cũng lâu nhưng chủ yếu là dùng phầm mềm của cơ quan hỗ trợ cho cad có sẵn rùi bắt chước mấy anh trong công ty đi chước chỉ sao làm vậy rùi quen tay chứ chứa thật sự hiểu rõ về cad lắm. Ý em là trên tờ bản đồ có nhiều thửa, mỗi thửa có thể hiện loại đất, số thửa, diện tích thửa đó, trong đó loại đất đc ký hiệu bằng file text, số thửa là số nguyên, diện tích là số thực, số thửa nằm ở trên diện tích nằm ở dưới, ngăn nhau bởi 1 line, ký hiệu loại đất nằm bên trái ở giữa line, tất cả đều là cùng 1 layer, giờ em mún tách các đối tượng đó ra thành từng layer riêng biệt giống như file vd bên dưới, và mình chỉ cần làm cho 1 thửa thì các thửa khác cũng tự động biến đổi theo. Em hiểu sao thì em trình bày vậy có gì sai mong các anh thông cảm. Anh nào có thể giúp em, em xin cám ơn rất nhiều.
PS: xin lỗi vì sự sơ sót của em trong bài post cũ
http://www.cadviet.c...04473_mau_3.dwg
  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#2 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 01 November 2012 - 04:48 PM

nhoclangbat sửa lại bài viết đi. Phần nội dung yêu cầu trình bay bằng lời, kèm theo file + hình ảnh nếu có. Tên tiêu đề sai trầm trọng về định nghĩa nhóm layer. Phần mình fw thì chuyển vào thẻ quote làm gợi ý để bạn mày mò hoặc ai đó viết giúp, k phải lấy thay lời yêu cầ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


#3 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 995 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 01 November 2012 - 06:44 PM

- Quét chọn toàn bộ các text thuộc layer 13 (ss)
- Phân nhỏ tập chọn ss thành 2 phần : toàn số (sso) và toàn chữ (schu)
- Duyệt qua từng text (x) toàn chữ (text ruộng đất) và chuyển thành layer Ruộng đất
+ Tìm trong tập text toàn số 2 text (m và n) gần text chữ (x) nhất.
+ Sắp xếp 2 text theo thứ tự từ trên xuống, chuyển chữ bên trên thành layer số thửa, chữ bên dưới thành layer diện tích
+ Xóa 2 text số khỏi tập số (sso)

Chú ý là việc tìm kiếm theo khoảng cách có thể có sai lầm, phải kiểm tra lại số thửa là số nguyên (hoặc 1 vài đặc thù khác mà e cần tự chỉ ra cho lispers quy luật nhận biết) :)

- Trong trường hợp tên thửa ruộng chắc chắn là chữ, số thửa luôn là số nguyên, diện tích luôn là số thực (có ít nhất 1 số lẻ sau dấu ,) thì bài toán giải quyết rất dễ dàng, chuyển toàn bộ chữ thành layer thửa, toàn bộ số nguyên thành layer số thửa và toàn bộ STP thành layer diện tích.
file vd:
http://www.cadviet.c...04473_mau_3.dwg

Yêu cầu nhưng cũng chẳng có lời hay ý đẹp. Cũng ko kèm theo lời cảm ơn. Cứ như kiểu đưa lên đó thì khắc có người làm giúp. Nhạt
  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#4 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 01 November 2012 - 07:05 PM

dạ em sorry mấy anh nhiều em sơ sót wá, em chỉ nghĩ làm vậy cho lẹ thui, mấy anh đừng giận em
  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#5 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 01 November 2012 - 08:08 PM

Hỏi: trên bản vẽ của bạn còn có đối tượng nào thuộc layer "13" nữa hay không, hay chỉ gồm có 4 loại đó là thuộc layer "13" thô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.


#6 aliosa

aliosa

    biết vẽ polygon

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

Đã gửi 02 November 2012 - 12:15 AM

Cũng thông cảm thôi! Thực ra mới bắt tay vào làm Cad thì vất lắm. Không trình bày rành mạch được. Bạn "nhoclangbat" đã viết một đoạn dài thế để trình bày là thiệt tình rồi. Còn cách trình bày có trong và sáng không thì cái này cần nhiều thời gian lắm. Mọi người ra tay giúp bạn đó đi. Thấy bạn Ketxu dạo này làm công việc quản lý nhiều hơn rùi. Viết lách cũng ít đi không thấy giống Lemac lắm !
  • 0

#7 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 02 November 2012 - 06:41 AM

Cũng thông cảm thôi! Thực ra mới bắt tay vào làm Cad thì vất lắm. Không trình bày rành mạch được. Bạn "nhoclangbat" đã viết một đoạn dài thế để trình bày là thiệt tình rồi. Còn cách trình bày có trong và sáng không thì cái này cần nhiều thời gian lắm. Mọi người ra tay giúp bạn đó đi. Thấy bạn Ketxu dạo này làm công việc quản lý nhiều hơn rùi. Viết lách cũng ít đi không thấy giống Lemac lắm !

:) Cái đoạn dài dài đó là ketxu nói đó bạn ạ ^^
Mình thì quá bận nên k tham gia viết nhiều được, chứ về mọi mặt từ trước đến giờ chưa có lúc nào có cửa so với LM được :)
  • 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


#8 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 02 November 2012 - 06:55 AM

da chỉ có 4 đối tượng đó thuộc layer 13 thui anh
  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#9 hochoaivandot

hochoaivandot

    biết dimradius

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

Đã gửi 02 November 2012 - 07:57 AM

Bạn có thể upload file cad gốc không?
Bạn đo giải thửa đúng không?
Mình nghĩ nếu file cad ghi kết quả đo giải thửa của bạn đang có là sản phầm của 1 tiện ích nào đó, thì rất có khả năng nó là 1 block thuộc tính.
Cho nên bạn thử upload file cad đó lên để mọi người cũng nghiên cứu.
Và nếu may mắn hơn, mình đoán đúng. Đối tượng đó là block thuộc tính thì viết lisp rất đơn giản.
Lúc đó, cadviet sẽ viết 1 lisp tổng quát hơn:
+ Explode attribute to text.
+ Gán layer của các text được explode ra theo layer (tên layer là Tag của attribute)
Chào bạn!
  • 0

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#10 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 02 November 2012 - 10:21 AM

Gán layer trước rồi burst sau chứ HHVD ^^ Đập chết nó trong rọ rồi thả ra, chứ để nó xổng ra rồi chạy theo mệt lắm ^^

@nhoclangbat : bài toán dễ, nên post toàn bộ file lên để lispers nắm rõ quy luật. Nếu đúng như những dòng mình đoán thì lisp k quá 10 dòng ^^
  • 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


#11 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 02 November 2012 - 10:40 AM

da chỉ có 4 đối tượng đó thuộc layer 13 thui anh

Bạn giải quyết bằng CAD cũng được, cũng nhanh
Này nhé:
Dùng Layiso -> Hiện layer 13 lên
Chọn hết đối tượng thuộc Layer13
- Dùng lệnh Find :
chọn đối tượng có "@" (chính tên T) chuyển sang Layer ruộng đât ->
chọn đối tượng có "#" (chính tên 128.1) chuyển sang Layer diện tích ->
chọn đối tượng có "~@" (chính tên 112) chuyển sang Layer số thửa ->
Cái Line còn lại thuộc Layer 13 -> thôi không chuyển nữa là xong
  • 0

#12 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 02 November 2012 - 10:50 AM

"#" thì gồm cả 128.1 và 112 mà?
  • 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.


#13 aliosa

aliosa

    biết vẽ polygon

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

Đã gửi 02 November 2012 - 10:56 AM

Nói thế thôi ! Cảm ơn các bạn Catviet và Ketxu nhiều lắm. Các bạn đã rất nhiệt tình rồi. Còn phải dành thời gian cho gia đình và chuyện cơm áo gạo tiền nữa. Quả thật nhiều khi đọc các câu hỏi yêu cầu trong diễn đàn mình cũng không hiểu yêu cầu nữa, nhưng các bạn trong diễn đàn vẫn nhiệt tình trao đổi. Cái này như đã nói nên thông cảm thôi (giống mình ngày xưa ý mà).
Qua Cadviet mình cũng lên tay nhiều. Xuất thân chỉ học Pascan ở đại học được 1 tháng nhờ có diễn đàn mà nay đã tự viết được một số lisp đơn giản. Còn khoản copy lisp và chỉnh sửa lại chút chút để dùng thì khá hơn.
Xin chúc các thành viên Cadviet mạnh khỏe và thành công !!!
  • 0

#14 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 02 November 2012 - 11:09 AM

anh tue_vn em chưa hiểu lắm cách tìm lệnh fine thì em pit nhưng "@" rùi "#" , "~@" ko pit là sao hết hii, sẵn đây em sẽ đưa file góc để mấy anh nghiên cứu rõ hơn, thật ra lúc đầu mấy cụm thuộc layer13 đó là 1 block bình thường thui ko phải block thuộc tính, trước tiên phải phá hết block rùi mới đổi layer , hồi đó ở công ty có lsp đó mà máy em man man cài lại win, mất hết, mấy anh trong công ty giờ thì ko dùng lsp đó nữa nên cũng ko có, mà em wen xài vậy nên mới nhờ mấy anh thử nghiên cứu hộ em hihi
http://www.cadviet.c...04473_mau_4.dwg
  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#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 02 November 2012 - 11:22 AM

"#" thì gồm cả 128.1 và 112 mà?

Tue_NV thử với lệnh find chỉ có 128.1 thôi bác ạ.
Bác đã thử chưa?
  • 0

#16 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 02 November 2012 - 11:25 AM

Theo wcmatch thì phải thế, và thử rồi cũng vẫn thế: nó lượm cả 2 thằng!
  • 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.


#17 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 02 November 2012 - 11:45 AM

Theo wcmatch thì phải thế, và thử rồi cũng vẫn thế: nó lượm cả 2 thằng!

À quên, bác phải vô option -> chọn Find whole words only mới được
  • 0

#18 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 02 November 2012 - 11:54 AM

Vậy chắc nên chọn "*.*" cho nó trực quan nhỉ?
  • 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.


#19 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 02 November 2012 - 12:06 PM

Ví dụ nếu toàn text thì quét chọn :

(defun c:test(/ ss a )(vl-load-com)
(setq a '((INT . "SOTHUA")(REAL . "DIENTICH")(STR . "LOAIRUONGDAT"))
tmp (ssget (list (cons 0 "TEXT")(cons 8 "13")))
)
(vlax-for x (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object)))
(if (setq tmp (assoc (type (read (vla-get-textstring x))) a))
(vla-put-layer x (cdr tmp))
)
)
)
Lưu ý nhoclangbat, nếu là các text rời rạc thì chẳng có cớ j để chỉnh 1 thằng những thằng khác chạy theo cả :)


P/s : vừa ngồi máy down đc file CAD về xem, thấy toàn là block anon, thật k hiểu sao người viết ct lại quản lý bằng cách đó :) => nhoclangbat : explode ra nhé

@aliosa : pascal thì mình cũng có nghe qua, pascan thì chưa ^^
  • 3

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


#20 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 02 November 2012 - 01:13 PM

em cũng ko pit nửa anh ketxu ơi tờ bản đồ đó góc là làm bên microstation sau đó export qua cad là nó dậy lun đó, ah còn về lsp anh ketxu viết gần đúng ý em hihi, chắc tại em chưa nói rõ là nó tự tao layer sothua và dientich lun , cái chữa T khỏi cũng đc, lsp anh viết nó chỉ đổi khi trong layer của file cad đã có sẵn 2 layer đó rùi nó đổi hihi
  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^