Đến nội dung


Hình ảnh
- - - - -

anh em trợ giúp vấn đề này nhe


  • Please log in to reply
40 replies to this topic

#21 nguyen chuong

nguyen chuong

    biết vẽ line

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

Đã gửi 16 March 2011 - 04:34 PM

Mình hỏi lại lần nữa là link MF bạn đưa ra có đến 7 file Rar, mỗi file trong đấy có những thằng nào thì mình không biết, nhưng hiện tại không có cái nào tên CHUNG cả. Lẽ nào để xem phải down hết cả bộ ? Bạn kiểm tra lại nhé

mình xin lỗi vì mình nhờ đứa em up lên dùm .ai ngờ nó up cả file của mình lẫn những cái file của hắn luôn nên mới lung tung thế. mình mới kiểm tra lại. trong các file RAR đó bạn chỉ cần download file MATBANG.RAR. trong file matbang.rar ban mở file tên "chung" là ok.
  • 0

#22 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 16 March 2011 - 06:22 PM

Ok.Bây giờ xử lý vấn đề att Block, bạn có thực sự cần phải dùng Att Block không? Nếu không, mình có thể giúp bạn kẻ lại toàn bộ phần ghi chú bằng Pl, text bình thường theo form trên. Việc của bạn lúc đó chỉ là chọn file Excel thôi.Công việc lúc đó sẽ nhanh gấp n x số point lần
  • -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


#23 nguyen chuong

nguyen chuong

    biết vẽ line

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

Đã gửi 16 March 2011 - 07:13 PM

Ok.Bây giờ xử lý vấn đề att Block, bạn có thực sự cần phải dùng Att Block không? Nếu không, mình có thể giúp bạn kẻ lại toàn bộ phần ghi chú bằng Pl, text bình thường theo form trên. Việc của bạn lúc đó chỉ là chọn file Excel thôi.Công việc lúc đó sẽ nhanh gấp n x số point lần

tôi phải thống kê : tọa độ (x,y), cao độ z, tên point(tên hố ga) tại vị trí point(hố ga) như tôi đã làm 1 cái Block trên bản vẽ và trong cái block ATT đó còn 2 chổ trống là tôi còn phải nhập vào cao độ 2 đầu cống vào hố ga và phải theo hình dạng của cái block tôi làm sẵn vì đó là yêu cầu của tư vấn nước ngoài chung cho tất cả các gói thầu mà trong đó công ty tôi tham gia 1 goi thầu vì vậy không thể làm khác được. thân
  • 0

#24 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 16 March 2011 - 07:36 PM

Nếu hướng đi nhất nhất là field nằm trong Block Att thì bạn phải copy paste tên point thôi ^^
  • 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


#25 nguyen chuong

nguyen chuong

    biết vẽ line

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

Đã gửi 16 March 2011 - 07:46 PM

Nếu hướng đi nhất nhất là field nằm trong Block Att thì bạn phải copy paste tên point thôi ^^

ý nghĩ dùng field để thể hiện tọa độ , cao độ và tên point vào block là tôi nghi như thế , tuy nhiên nếu dùng cách khác giải quyết thì phải đảm bảo dúng hình dạng như cái block tôi đã làm để ghi chú cho từng point vì đó là qui định chung của TVGS.thân!
  • 0

#26 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 16 March 2011 - 08:09 PM

Mình đã đưa ra giả pháp giúp bạn là sẽ vẽ lại toàn bộ bằng PL và các text bình thường, nhưng bạn không ưng. Còn nếu bạn muốn cop cop cục Block đó thì mình sẽ chỉ giúp bạn được ở mức độ bạn chọn text, chọn block -> block cập nhật nội dung text vào tag Tênhốga của bạn, sau đó xóa Text đi. Như vậy sau khi thực hiện lisp E2c ở trên, bạn cần chạy thêm lisp bên dưới nữa. Nếu giải pháp như vậy thì 20p nữa mình post code lên giúp bạn.OK ?
  • 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


#27 nguyen chuong

nguyen chuong

    biết vẽ line

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

Đã gửi 16 March 2011 - 08:59 PM

Mình đã đưa ra giả pháp giúp bạn là sẽ vẽ lại toàn bộ bằng PL và các text bình thường, nhưng bạn không ưng. Còn nếu bạn muốn cop cop cục Block đó thì mình sẽ chỉ giúp bạn được ở mức độ bạn chọn text, chọn block -> block cập nhật nội dung text vào tag Tênhốga của bạn, sau đó xóa Text đi. Như vậy sau khi thực hiện lisp E2c ở trên, bạn cần chạy thêm lisp bên dưới nữa. Nếu giải pháp như vậy thì 20p nữa mình post code lên giúp bạn.OK ?

hihi
  • 0

#28 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 16 March 2011 - 09:08 PM

Oh, thế bạn có đồng ý phương án đó k ^^
  • 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


#29 nguyen chuong

nguyen chuong

    biết vẽ line

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

Đã gửi 16 March 2011 - 09:11 PM

Oh, thế bạn có đồng ý phương án đó k ^^

đồng ý 2 tay mà.vì ý tưởng của mình phá sản rồi
  • 0

#30 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 16 March 2011 - 09:22 PM

Không hẳn là phá sản đâu. Nếu bạn chịu khó ngồi sửa lại điểm InsertPoint của Block trùng vào đúng tâm point đó, mình có thể giúp bạn luôn phần chèn Block vào chỗ đó và lấy tên luôn ^^ Có lẽ, nếu bạn nghĩ như thế là hay hơn thì hãy tạo Block đi, rồi mai mình giúp bạn, vì giờ mình chuẩn bị vào ổ r ^^ .CÒn đây là lời hứa đoạn code vừa nãy.Sau khi chạy E2c để có tên và point, bạn chạy thằng này, quét qua 1 block và 1 text để cập nhật.
Trong code có sử dụng Function bác Hoành và bác Tuệ giới thiệu
(defun ChangeAttributes (lst blk / item atts)  
(if blk
(if (safearray-value
(setq atts
(vlax-variant-value
(vla-getattributes (vlax-ename->vla-object blk))
)
)
)
(progn
(foreach item lst
(mapcar
'(lambda (x)
(if
(= (strcase (car item))
(strcase (vla-get-tagstring x))
)
(vla-put-textstring x (cdr item))
)
)
(vlax-safearray->list atts)
)
)
(vla-update (vlax-ename->vla-object blk))
)
)
)
)
(defun laydt(ss kieu)
(acet-list-to-ss
(vl-remove-if '(lambda(x)
(null (wcmatch (acet-dxf 0 (entget x)) kieu)))
(acet-ss-to-list ss)
)
)
)

(defun c:e2cc(/ ss eText tName)
(princ "\n Free Lisp From Cadviet.com @ ketxu")
(defun chDXF (dxf val ent) (entmod (subst (cons dxf val) (assoc dxf (entget ent)) (entget ent))))
(defun dxf (dxf ent) (cdr (assoc dxf (entget ent))))
(princ "\nChon Blocks va text :")
(setq ss (ssget))
(setq tname(dxf 1 (setq eText(ssname (Laydt ss "TEXT") 0))))
(ChangeAttributes (list (cons "TENHOGA" tName)) (ssname (Laydt ss "INSERT") 0))
(entdel eText)
)

  • 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


#31 nguyen chuong

nguyen chuong

    biết vẽ line

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

Đã gửi 16 March 2011 - 09:45 PM

Không hẳn là phá sản đâu. Nếu bạn chịu khó ngồi sửa lại điểm InsertPoint của Block trùng vào đúng tâm point đó, mình có thể giúp bạn luôn phần chèn Block vào chỗ đó và lấy tên luôn ^^ Có lẽ, nếu bạn nghĩ như thế là hay hơn thì hãy tạo Block đi, rồi mai mình giúp bạn, vì giờ mình chuẩn bị vào ổ r ^^ .CÒn đây là lời hứa đoạn code vừa nãy.Sau khi chạy E2c để có tên và point, bạn chạy thằng này, quét qua 1 block và 1 text để cập nhật.
Trong code có sử dụng Function bác Hoành và bác Tuệ giới thiệu

(defun ChangeAttributes (lst blk / item atts)  
(if blk
(if (safearray-value
(setq atts
(vlax-variant-value
(vla-getattributes (vlax-ename->vla-object blk))
)
)
)
(progn
(foreach item lst
(mapcar
'(lambda (x)
(if
(= (strcase (car item))
(strcase (vla-get-tagstring x))
)
(vla-put-textstring x (cdr item))
)
)
(vlax-safearray->list atts)
)
)
(vla-update (vlax-ename->vla-object blk))
)
)
)
)
(defun laydt(ss kieu)
(acet-list-to-ss
(vl-remove-if '(lambda(x)
(null (wcmatch (acet-dxf 0 (entget x)) kieu)))
(acet-ss-to-list ss)
)
)
)

(defun c:e2cc(/ ss eText tName)
(princ "\n Free Lisp From Cadviet.com @ ketxu")
(defun chDXF (dxf val ent) (entmod (subst (cons dxf val) (assoc dxf (entget ent)) (entget ent))))
(defun dxf (dxf ent) (cdr (assoc dxf (entget ent))))
(princ "\nChon Blocks va text :")
(setq ss (ssget))
(setq tname(dxf 1 (setq eText(ssname (Laydt ss "TEXT") 0))))
(ChangeAttributes (list (cons "TENHOGA" tName)) (ssname (Laydt ss "INSERT") 0))
(entdel eText)
)

nhưng bạn ơi để chạy đoạn code này thì làm như thế nào?
  • 0

#32 nguyen chuong

nguyen chuong

    biết vẽ line

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

Đã gửi 16 March 2011 - 09:51 PM

Không hẳn là phá sản đâu. Nếu bạn chịu khó ngồi sửa lại điểm InsertPoint của Block trùng vào đúng tâm point đó, mình có thể giúp bạn luôn phần chèn Block vào chỗ đó và lấy tên luôn ^^ Có lẽ, nếu bạn nghĩ như thế là hay hơn thì hãy tạo Block đi, rồi mai mình giúp bạn, vì giờ mình chuẩn bị vào ổ r ^^ .CÒn đây là lời hứa đoạn code vừa nãy.Sau khi chạy E2c để có tên và point, bạn chạy thằng này, quét qua 1 block và 1 text để cập nhật.
Trong code có sử dụng Function bác Hoành và bác Tuệ giới thiệu

(defun ChangeAttributes (lst blk / item atts)  
(if blk
(if (safearray-value
(setq atts
(vlax-variant-value
(vla-getattributes (vlax-ename->vla-object blk))
)
)
)
(progn
(foreach item lst
(mapcar
'(lambda (x)
(if
(= (strcase (car item))
(strcase (vla-get-tagstring x))
)
(vla-put-textstring x (cdr item))
)
)
(vlax-safearray->list atts)
)
)
(vla-update (vlax-ename->vla-object blk))
)
)
)
)
(defun laydt(ss kieu)
(acet-list-to-ss
(vl-remove-if '(lambda(x)
(null (wcmatch (acet-dxf 0 (entget x)) kieu)))
(acet-ss-to-list ss)
)
)
)

(defun c:e2cc(/ ss eText tName)
(princ "\n Free Lisp From Cadviet.com @ ketxu")
(defun chDXF (dxf val ent) (entmod (subst (cons dxf val) (assoc dxf (entget ent)) (entget ent))))
(defun dxf (dxf ent) (cdr (assoc dxf (entget ent))))
(princ "\nChon Blocks va text :")
(setq ss (ssget))
(setq tname(dxf 1 (setq eText(ssname (Laydt ss "TEXT") 0))))
(ChangeAttributes (list (cons "TENHOGA" tName)) (ssname (Laydt ss "INSERT") 0))
(entdel eText)
)

.........................hehe
  • 0

#33 nguyen chuong

nguyen chuong

    biết vẽ line

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

Đã gửi 16 March 2011 - 09:53 PM

Không hẳn là phá sản đâu. Nếu bạn chịu khó ngồi sửa lại điểm InsertPoint của Block trùng vào đúng tâm point đó, mình có thể giúp bạn luôn phần chèn Block vào chỗ đó và lấy tên luôn ^^ Có lẽ, nếu bạn nghĩ như thế là hay hơn thì hãy tạo Block đi, rồi mai mình giúp bạn, vì giờ mình chuẩn bị vào ổ r ^^ .CÒn đây là lời hứa đoạn code vừa nãy.Sau khi chạy E2c để có tên và point, bạn chạy thằng này, quét qua 1 block và 1 text để cập nhật.
Trong code có sử dụng Function bác Hoành và bác Tuệ giới thiệu

(defun ChangeAttributes (lst blk / item atts)  
(if blk
(if (safearray-value
(setq atts
(vlax-variant-value
(vla-getattributes (vlax-ename->vla-object blk))
)
)
)
(progn
(foreach item lst
(mapcar
'(lambda (x)
(if
(= (strcase (car item))
(strcase (vla-get-tagstring x))
)
(vla-put-textstring x (cdr item))
)
)
(vlax-safearray->list atts)
)
)
(vla-update (vlax-ename->vla-object blk))
)
)
)
)
(defun laydt(ss kieu)
(acet-list-to-ss
(vl-remove-if '(lambda(x)
(null (wcmatch (acet-dxf 0 (entget x)) kieu)))
(acet-ss-to-list ss)
)
)
)

(defun c:e2cc(/ ss eText tName)
(princ "\n Free Lisp From Cadviet.com @ ketxu")
(defun chDXF (dxf val ent) (entmod (subst (cons dxf val) (assoc dxf (entget ent)) (entget ent))))
(defun dxf (dxf ent) (cdr (assoc dxf (entget ent))))
(princ "\nChon Blocks va text :")
(setq ss (ssget))
(setq tname(dxf 1 (setq eText(ssname (Laydt ss "TEXT") 0))))
(ChangeAttributes (list (cons "TENHOGA" tName)) (ssname (Laydt ss "INSERT") 0))
(entdel eText)
)

nhưng bạn ơi để chạy đoạn code này thì làm như thế nào?
  • 0

#34 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 16 March 2011 - 09:55 PM

Bạn cũng load như vậy và chạy với lệnh E2cc, chọn text và block theo cặp đã được tạo ra từ lệnh E2c để nó update tên vào. Còn ý kiến của mình ở bài trước bạn nghĩ sao ? Nhanh nhé ^^
Điều kiện là 10 phát thanks :rolleyes:
  • 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


#35 nguyen chuong

nguyen chuong

    biết vẽ line

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

Đã gửi 16 March 2011 - 10:07 PM

Bạn cũng load như vậy và chạy với lệnh E2cc, chọn text và block theo cặp đã được tạo ra từ lệnh E2c để nó update tên vào. Còn ý kiến của mình ở bài trước bạn nghĩ sao ? Nhanh nhé ^^
Điều kiện là 10 phát thanks :rolleyes:

tôi nghĩ là 10 phát thank cũng chưa đủ để ghi nhận sự nhiệt tình của ban đâu
  • 0

#36 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 16 March 2011 - 10:17 PM

Ồ, nếu bạn đã nói thế thì chờ mình 10p, mần xong giúp bạn vậy, rồi bạn cứ nhiệt tình nhấn dấu + dưới bài post của ai đó mà bạn cho là hay và có ích nhé, không nhất thiết là mình đâu ^^ 10 phát vote ghi nợ :rolleyes:

Update :
1 - Bạn tạo 1 block tên là Test giống như mình tạo mẫu đây, hoặc dùng nó luôn cũng được, vì mình lấy nguyên của bạn, chỉ đổi tên Block và điểm chèn. Nhớ là lisp mình viết riêng cho mẫu này, tức là block sẽ có 4 att, và tag TENHOGA tạo ra cuối cùng như mẫu bạn gửi trong file. Nếu có thay đổi hãy nhắn lại với mình để điều chỉnh
Mẫu Block
2- Ở file cần thao tác, bạn cop block "Test" bên trên tới, dùng lisp này, lệnh E2c
E2C
3- Ngồi chờ nó finish và ấn Tks ^^
  • 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


#37 nguyen chuong

nguyen chuong

    biết vẽ line

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

Đã gửi 17 March 2011 - 12:25 PM

mọi thứ đều ok!
tôi chỉ muốn thay đổi cái block củ bạn có cái râu dài thêm chút nữa như hình dang trong file tôi up lên (kế bên cái block của bạn)
http://www.cadviet.c...block_chung.dwg
lisp dung lệnh e2cc link bị lỗi rồi bạn ah
  • 0

#38 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 17 March 2011 - 01:35 PM

Rất buồn vì bạn không đọc hướng dẫn của mình bên trên
1. Block bạn gửi lại mình thấy các text không còn link field nữa, k chạy theo tọa độ, k biết tại sao
2. Bạn muốn cho dài bao nhiêu thì dài, các đối tượng thế nào thì thế, bạn cứ tạo theo ý bạn, chỉ cần insertpoint nằm đúng điểm chỉ Point
3 .E2cc là lisp cũ mình chỉ đưa code lên diễn đàn chứ k dùng link
4. E2c.vlx mình đã gửi k biết bạn có dùng hay không ? Bạn thấy đc k ?
5. Block mình gửi là BLOCK của BẠN :unsure:
  • 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


#39 nguyen chuong

nguyen chuong

    biết vẽ line

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

Đã gửi 17 March 2011 - 02:05 PM

Rất buồn vì bạn không đọc hướng dẫn của mình bên trên
1. Block bạn gửi lại mình thấy các text không còn link field nữa, k chạy theo tọa độ, k biết tại sao
2. Bạn muốn cho dài bao nhiêu thì dài, các đối tượng thế nào thì thế, bạn cứ tạo theo ý bạn, chỉ cần insertpoint nằm đúng điểm chỉ Point
3 .E2cc là lisp cũ mình chỉ đưa code lên diễn đàn chứ k dùng link
4. E2c.vlx mình đã gửi k biết bạn có dùng hay không ? Bạn thấy đc k ?
5. Block mình gửi là BLOCK của BẠN :unsure:


minh đã dùng lisp E2C.vlx của bạn rồi hoàn toàn tự động , đỡ mất thời gian.nhưng mình muốn sữa cái đuôi của cái ghi chú đó thì nó không còn field nữa có lẽ là chưa rành vể dùng field trong block.mình cũng chỉ mới dùng block ATT thôi nên cũng chưa hiểu hết những gì bạn diễn đạt:"chỉ cần insertpoint nằm đúng điểm chỉ Point".mình muốn lấy lisp e2cc về dùng thử xem ntn mình lick vào nút download lisp file phía trên đoạn code của bạn thì down về không được.MÌNH CHUỐI VỀ CAD LẮM NÊN ....hihi
  • 0

#40 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 17 March 2011 - 02:14 PM

Ok. Mình sẽ giúp bạn sửa cái block giống như hình bạn post. Trong lúc đó bạn nghiên cứu thếm 1 chút về điểm chèn basepoint của Block nhé
Update : Block

P/S : chức năng download lisp của diễn đàn đang lỗi, bạn lấy code bằng cách copy hết code, hoặc reply lại bài mình để copy code
  • 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