Đến nội dung


Hình ảnh

Sửa nhiều text theo quy luật


  • Please log in to reply
7 replies to this topic

#1 Chiencienco8

Chiencienco8

    biết zoom

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

Đã gửi 21 April 2010 - 09:03 AM

Các bác cho em hỏi muốn sửa nhiều text cùng 1 lúc (các text này theo quy luật). Ví dụ sửa các số giảm dần trong một bản vẽ.
Chẳng hạn mình có các số 8 8 8 8 8 8 8 8
muốn sửa thành 7.9 7.9 7.9 7.9 7.9 7.9 7.9 7.9
thì làm thế nào cho nhanh? (Em đang phải sửa rất nhiều kái như thế?
  • 0

#2 khieuhung

khieuhung

    biết vẽ line

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

Đã gửi 21 April 2010 - 10:26 AM

Các bác cho em hỏi muốn sửa nhiều text cùng 1 lúc (các text này theo quy luật). Ví dụ sửa các số giảm dần trong một bản vẽ.
Chẳng hạn mình có các số 8 8 8 8 8 8 8 8
muốn sửa thành 7.9 7.9 7.9 7.9 7.9 7.9 7.9 7.9
thì làm thế nào cho nhanh? (Em đang phải sửa rất nhiều kái như thế?

bạn có thể tham khỏa tại đây http://www.cadviet.c...p?sho...2&st=0
  • 0

#3 Mr.Po

Mr.Po

    biết zoom

  • Members
  • Pip
  • 14 Bài viết
Điểm đánh giá: 16 (tàm tạm)

Đã gửi 21 April 2010 - 10:28 AM

Bạn chọn lệnh "find" sau đó nó hiện ra 1 cai bản, bạn vào đó chỉnh lai cái "option" theo ý mình tức là muốn đổi cái nào chọn cái đó, vị dụ đổi số hay chữ của text, dim.... nếu ko nó nhảy lung tung ko kiềm soát đc. Nhập đọan text cần sửa vào ô "Find text string" và sau đó nhập nội dung mình muốn nhập mới vào "Replace with" rồi bấm vào nút "Replace All" rồi Ok thế là đc
  • 0
Welcome to www.logleman.com

#4 Chiencienco8

Chiencienco8

    biết zoom

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

Đã gửi 21 April 2010 - 06:55 PM

Ý em là thế này
em đang phải làm cái phân lớp đắp cát, chiều dày mối lớp là 20cm.Trong đó mình đã biết cao độ lớp đỉnh.Giờ mình phải sửa các cao đô lớp dưới
VD lớp 9: 9.1 9.2 9.2 9.3 9.4 9.5 9.5 9.6
lớp 8: 8.9 9.0 9.0 9.1 9.2 9.3 9.3 9.4
lớp 7: 8.7 8.8 8.8 8.9 9.0 9.1 9.1 9.2
lớp 6: 8.5 8.6 8.6 8.7 8.8 8.9 8.9 9.0
lớp 5: 8.3 8.4 8.4 8.5 8.6 8.7 8.7 8.8
...........
Có cách nào làm nhanh như kiểu ở exel ko hả các bác?Thanks
  • 0

#5 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 21 April 2010 - 09:31 PM

Ý em là thế này
em đang phải làm cái phân lớp đắp cát, chiều dày mối lớp là 20cm.Trong đó mình đã biết cao độ lớp đỉnh.Giờ mình phải sửa các cao đô lớp dưới
VD lớp 9: 9.1 9.2 9.2 9.3 9.4 9.5 9.5 9.6
lớp 8: 8.9 9.0 9.0 9.1 9.2 9.3 9.3 9.4
lớp 7: 8.7 8.8 8.8 8.9 9.0 9.1 9.1 9.2
lớp 6: 8.5 8.6 8.6 8.7 8.8 8.9 8.9 9.0
lớp 5: 8.3 8.4 8.4 8.5 8.6 8.7 8.7 8.8
...........
Có cách nào làm nhanh như kiểu ở exel ko hả các bác?Thanks

Tue_NV hiểu ý bạn. Nhưng không biết file CAD của bạn thể hiện điều đó như thế nào?
Bạn vui lòng upload file CAD của bạn lên diễn đàn mới được.
Vậy nhé
  • 0

#6 Chiencienco8

Chiencienco8

    biết zoom

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

Đã gửi 21 April 2010 - 09:57 PM

Tue_NV hiểu ý bạn. Nhưng không biết file CAD của bạn thể hiện điều đó như thế nào?
Bạn vui lòng upload file CAD của bạn lên diễn đàn mới được.
Vậy nhé

http://www.cadviet.c...iles/2/pl_1.dwg
file đây, bác nhớ trả lời em sớm sớm chút nhá.Em đang phải làm gấp.Cảm ơn bác nhiều
  • 0

#7 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 22 April 2010 - 06:08 AM

http://www.cadviet.c...iles/2/pl_1.dwg
file đây, bác nhớ trả lời em sớm sớm chút nhá.Em đang phải làm gấp.Cảm ơn bác nhiều

Trong trường hợp này, sử dụng lệnh find để mà thay thế là 1 ..... cực hình
Để nhanh chóng thì thế này nhé :
Bạn sử dụng CAD hoặc Lisp để gán cao độ các lớp dưới bằng với cao độ của lớp đỉnh.
Đây là file CAD thể hiện điều đó
http://www.cadviet.c...es/2/pl_1_2.dwg
Sau đó chạy Lisp này .
Lisp này sẽ hoạt động theo đúng như điều bạn muốn. Hãy chạy thử code này và file CAD trên để kiểm chứng. Khi chạy quét hết 1 loạt text nhé.
Đây là code :

(defun c:mfi(/ ob obt L i j Res dt oldos)
;copyright by Tue_NV
(vl-load-com)
(setq oldos (getvar "osmode"))
(setq ob (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "TEXT")))))))
(setq obt (mapcar '(lambda(x) (cdr(assoc 1 (entget x)))) ob))
(setq L '())
(foreach x obt
(if (not(member x L)) (setq L (append L (list x))))
)
(setq L (vl-sort L '(lambda(x y) (< (atof x) (atof y)))))
(setq ob (vl-sort ob '(lambda(x y)
(< (atof (cdr(assoc 1 (entget x))))
(atof (cdr(assoc 1 (entget y))))
))))
(setq ob (vl-sort ob '(lambda(x y)
(if (= (atof (cdr(assoc 1 (entget x))))
(atof (cdr(assoc 1 (entget y))))
)
(> (caddr(assoc 10 (entget x)))
(caddr(assoc 10 (entget y)))
)
)
)
)
)
(setq i 0 j -1 Res '() dt (nth i L))
(setq cdo (getreal "\n Nhap do day phan lop dap cat :"))
(setvar "osmode" 0)
(foreach x ob
(if (= (cdr(assoc 1 (entget x))) dt)
(vlax-put (vlax-ename->vla-object x) 'textstring
(rtos (- (atof (cdr(assoc 1 (entget x))))
(* (setq j (1+ j)) cdo))
2 2)
)
(setq j 0 dt (nth (setq i (1+ i)) L))
)
);foreach
(setvar "osmode" oldos)
(princ)
)

Chúc các bạn 1 ngày mới tốt lành.
  • 1

#8 Chiencienco8

Chiencienco8

    biết zoom

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

Đã gửi 23 April 2010 - 01:03 PM

Trong trường hợp này, sử dụng lệnh find để mà thay thế là 1 ..... cực hình
Để nhanh chóng thì thế này nhé :
Bạn sử dụng CAD hoặc Lisp để gán cao độ các lớp dưới bằng với cao độ của lớp đỉnh.
Đây là file CAD thể hiện điều đó
http://www.cadviet.c...es/2/pl_1_2.dwg
Sau đó chạy Lisp này .
Lisp này sẽ hoạt động theo đúng như điều bạn muốn. Hãy chạy thử code này và file CAD trên để kiểm chứng. Khi chạy quét hết 1 loạt text nhé.
Đây là code :


(defun c:mfi(/ ob obt L i j Res dt oldos)
;copyright by Tue_NV
(vl-load-com)
(setq oldos (getvar "osmode"))
(setq ob (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "TEXT")))))))
(setq obt (mapcar '(lambda(x) (cdr(assoc 1 (entget x)))) ob))
(setq L '())
(foreach x obt
(if (not(member x L)) (setq L (append L (list x))))
)
(setq L (vl-sort L '(lambda(x y) (< (atof x) (atof y)))))
(setq ob (vl-sort ob '(lambda(x y)
(< (atof (cdr(assoc 1 (entget x))))
(atof (cdr(assoc 1 (entget y))))
))))
(setq ob (vl-sort ob '(lambda(x y)
(if (= (atof (cdr(assoc 1 (entget x))))
(atof (cdr(assoc 1 (entget y))))
)
(> (caddr(assoc 10 (entget x)))
(caddr(assoc 10 (entget y)))
)
)
)
)
)
(setq i 0 j -1 Res '() dt (nth i L))
(setq cdo (getreal "\n Nhap do day phan lop dap cat :"))
(setvar "osmode" 0)
(foreach x ob
(if (= (cdr(assoc 1 (entget x))) dt)
(vlax-put (vlax-ename->vla-object x) 'textstring
(rtos (- (atof (cdr(assoc 1 (entget x))))
(* (setq j (1+ j)) cdo))
2 2)
)
(setq j 0 dt (nth (setq i (1+ i)) L))
)
);foreach
(setvar "osmode" oldos)
(princ)
)

Chúc các bạn 1 ngày mới tốt lành.


em dùng rùi bác ạh.Chạy ngon rùi tuy hơi bất tiện là mỗi lần làm lại phải sửa hết các lớp cuối về lớp đầu.Cảm ơn bác nhiều nhá
  • 0