Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
Chiencienco8

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

Các bài được khuyến nghị

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ế?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
khieuhung    4
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.com/forum/index.php?sho...2&st=0&

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Mr.Po    16

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

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Ý 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

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Tue_NV    3.841
Ý 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é

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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.com/upfiles/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

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Tue_NV    3.841
http://www.cadviet.com/upfiles/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.com/upfiles/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.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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.com/upfiles/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á

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

Đăng nhập để thực hiện theo  

×