Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
truongthanh

Cho em hỏi về TOLERANCE!

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

Em có đối tượng text và đối tượng tolerance, bây giờ em muốn dùng field để link nội dung 2 cái đó lại với nhau mà ko được, nó hiện thêm 1 đống ký tự tùm lum nữa!Nhờ mấy anh em giúp dùm em với! Nếu 2 đối tượng này ko link bằng field lại được vậy có cách nào khác ko nhờ giúp dùm em với!(Ví dụ như exlode tolerance ra thành text được ko, em exlode hoài mà ko dc)

Em gửi link nhờ anh em xem giúp em với:

http://www.cadviet.com/upfiles/3/tolerace.dwg

Cảm ơn mọi người 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

Vậy tại sao bạn phải dùng Tol ?? Sao không là text ngay từ đầu hè ??

Dạ! Do bản vẽ này người ta đã làm từ trước rất nhiều! Bây giờ mình tiếp nhận làm tiếp tục ạ!Nhờ bạn giúp dùm mình với!

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

Mình vẫn chưa hiểu ý bạn nói " cái cần là cái đó " tức là sao ? Tức là bạn cần link để lúc bạn thay đổi nó sẽ đổi theo , hay cần lấy cái đoạn text ra thôi ?? Nếu cần, có thể tạo lại toàn bộ các TOL này bằng text và HCN bao quanh, rồi link nội dung, e là lâu ^^

Trước hết bạn dùng thử cái này để copy nội dung TOL vào sau đoạn text bạn cần đã

;free lisp from Cadviet.com @ketxu
(defun c:gl ()
(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 "\n Chon Tolerance : ") 
(while (setq tol (ssname (ssget ":S" '((0 . "TOLERANCE"))) 0))	 
(setq txt (car(entsel "\n Chon text can ghep ")))		
(chdxf 1 (strcat (dxf 1 txt) (vl-string-trim "%%v" (dxf 1 tol))) txt)
))

  • 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

Mình vẫn chưa hiểu ý bạn nói " cái cần là cái đó " tức là sao ? Tức là bạn cần link để lúc bạn thay đổi nó sẽ đổi theo , hay cần lấy cái đoạn text ra thôi ?? Nếu cần, có thể tạo lại toàn bộ các TOL này bằng text và HCN bao quanh, rồi link nội dung, e là lâu ^^

Trước hết bạn dùng thử cái này để copy nội dung TOL vào sau đoạn text bạn cần đã

;free lisp from Cadviet.com @ketxu
(defun c:gl ()
(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 "\n Chon Tolerance : ") 
(while (setq tol (ssname (ssget ":S" '((0 . "TOLERANCE"))) 0))	 
(setq txt (car(entsel "\n Chon text can ghep ")))		
(chdxf 1 (strcat (dxf 1 txt) (vl-string-trim "%%v" (dxf 1 tol))) txt)
))

Do bài trước bạn hỏi có cần link ko nên mình mới nói " cái cần là cái đó ", mình muốn link 2 cái đó chắc là ko dc hả bạn?Hy vọng bạn giúp dùm mình! Lisp kia chỉ lấy text chứ chưa link! Làm phiền bạn nhiều quá!

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

Do bài trước bạn hỏi có cần link ko nên mình mới nói " cái cần là cái đó ", mình muốn link 2 cái đó chắc là ko dc hả bạn?Hy vọng bạn giúp dùm mình! Lisp kia chỉ lấy text chứ chưa link! Làm phiền bạn nhiều quá!

Truong thanh có thể upload file có toàn bộ Tolerance lên đây để thử được không? Nếu file nặng quá thì xóa bớt, chừa lại trên 10 cái Tolerance để thử 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

Hiện tại thì bản thân mình cũng chưa biết nếu làm thủ công thì bạn "link" như thế nào để lấy được cái lõi của Tolerance, nên không thể đưa ra thuật toán được ^^

  • 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

Truong thanh có thể upload file có toàn bộ Tolerance lên đây để thử được không? Nếu file nặng quá thì xóa bớt, chừa lại trên 10 cái Tolerance để thử nhé.

Nhờ anh TUE giúp em với!

http://www.cadviet.com/upfiles/3/tolerance_1.dwg

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

Nhờ anh TUE giúp em với!

http://www.cadviet.com/upfiles/3/tolerance_1.dwg

Truongthanh thử cái này :

Chọn 1 loạt luôn nhé : :rolleyes:

(defun  c:glt(/ oldos sst cs ob str Rec p1 p2 p tt LA ssm chu)
 (command "undo" "be")
 (setq oldos (getvar "osmode"))
 (setvar "osmode" 0)
 (setvar "cmdecho" 0)
 (setq sst (acet-ss-to-list (ssget '((0 . "TOLERANCE")))) )
 (setq cs '(5.0 -20.0 0.0))
 (command "zoom" "e")
 (Foreach e sst    
   	(setq ob (vlax-ename->vla-object e))
   	(setq str (vl-string-trim "%%v" (acet-dxf 1 (entget e))))
   	(setq Rec (ACET-ENT-GEOMEXTENTS e))
       (setq p1 (car Rec) p2 (cadr Rec))
   	(setq p (acet-geom-midpoint (car Rec) (cadr Rec)) )
   	(setq tt
   (entmakex (List
     	         (cons 0 "TEXT") (cons 1 str)
	 (cons 7 (vlax-get ob 'Textstyle))
         (cons 40 (/ (- (cadr p2) (cadr p1)) 2) )
         (cons 10 p) (cons 11 p)
         (cons 72 1) (cons 73 2)
	 (setq LA (assoc 8 (entget e)) )
      )
   )
        )
   	(if (vl-cmdf "rectang" p1 p2)
       	(command "chprop" (entlast) "" "LA" (cdr LA) "")  )
   	(entdel e)
     (setq ssm (ssget "c" p2 (mapcar '+ cs p2)	(list(cons 0 "MTEXT"))))
    (foreach x (acet-ss-to-list ssm)
        (if (wcmatch (setq chu (vl-string-trim ". " (acet-dxf 1 (entget x)))) "OÅ KHOAÙ SOÁ:" )
   	    (vlax-put (vlax-ename->vla-object x) 'Textstring
      (strcat chu "%<\\AcObjProp Object(%<\\_ObjId "
	      (itoa (vlax-get (vlax-ename->vla-object tt) 'ObjectID))
	      ">%).TextString>%")
    )
  )
    )
  )
(command "zoom" "p")
(setvar "osmode" oldos)
(command "undo" "e")
(princ)	 
)

  • 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

Truongthanh thử cái này :

Chọn 1 loạt luôn nhé : :rolleyes:

(defun  c:glt(/ oldos sst cs ob str Rec p1 p2 p tt LA ssm chu)
 (command "undo" "be")
 (setq oldos (getvar "osmode"))
 (setvar "osmode" 0)
 (setvar "cmdecho" 0)
 (setq sst (acet-ss-to-list (ssget '((0 . "TOLERANCE")))) )
 (setq cs '(5.0 -20.0 0.0))
 (command "zoom" "e")
 (Foreach e sst    
   	(setq ob (vlax-ename->vla-object e))
   	(setq str (vl-string-trim "%%v" (acet-dxf 1 (entget e))))
   	(setq Rec (ACET-ENT-GEOMEXTENTS e))
       (setq p1 (car Rec) p2 (cadr Rec))
   	(setq p (acet-geom-midpoint (car Rec) (cadr Rec)) )
   	(setq tt
   (entmakex (List
     	         (cons 0 "TEXT") (cons 1 str)
	 (cons 7 (vlax-get ob 'Textstyle))
         (cons 40 (/ (- (cadr p2) (cadr p1)) 2) )
         (cons 10 p) (cons 11 p)
         (cons 72 1) (cons 73 2)
	 (setq LA (assoc 8 (entget e)) )
      )
   )
        )
   	(if (vl-cmdf "rectang" p1 p2)
       	(command "chprop" (entlast) "" "LA" (cdr LA) "")  )
   	(entdel e)
     (setq ssm (ssget "c" p2 (mapcar '+ cs p2)	(list(cons 0 "MTEXT"))))
    (foreach x (acet-ss-to-list ssm)
        (if (wcmatch (setq chu (vl-string-trim ". " (acet-dxf 1 (entget x)))) "OÅ KHOAÙ SOÁ:" )
   	    (vlax-put (vlax-ename->vla-object x) 'Textstring
      (strcat chu "%<\\AcObjProp Object(%<\\_ObjId "
	      (itoa (vlax-get (vlax-ename->vla-object tt) 'ObjectID))
	      ">%).TextString>%")
    )
  )
    )
  )
(command "zoom" "p")
(setvar "osmode" oldos)
(command "undo" "e")
(princ)	 
)

Cảm ơn anh nhiều! Vậy là mình chỉ explode các đối tượng tolerance ra thôi đúng ko anh, chứ mình đâu link kiểu như field 2 đối tượng tolerance và mtex được phải ko anh?

p/s: Em bấm dấu cộng cảm ơn mà ko cho, nó báo em đã bấm nhiều quá rối!

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

Cảm ơn anh nhiều! Vậy là mình chỉ explode các đối tượng tolerance ra thôi đúng ko anh, chứ mình đâu link kiểu như field 2 đối tượng tolerance và mtex được phải ko anh?

p/s: Em bấm dấu cộng cảm ơn mà ko cho, nó báo em đã bấm nhiều quá rối!

Mình không explode các đối tượng tolerance ra được. Chỉ có điều xóa cái tolerance đó đi và viết cái TEXT y chang như thế, vẽ hình chữ nhật y chang như vậy. Sau đó là tìm cái TEXT có chuỗi : Ổ KHÓA gì gì đó là Link Field lại.

Vậy đó :)

  • Vote tăng 2

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

Đó ^^ Khó mà giữ Tol rồi link được, vì đơn giản nó là như thế ^^

Lưu ý bạn Thanh là bác TUệ viết áp dụng cho trường hợp đặc biệt là dạng TOL như thế này nhé, nên nếu đổi dạng thì cần phải chỉnh ^^ Và còn phần góc quay và Height thì ...bạn chịu khó ^^

Vote đã ^^

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

Mình không explode các đối tượng tolerance ra được. Chỉ có điều xóa cái tolerance đó đi và viết cái TEXT y chang như thế, vẽ hình chữ nhật y chang như vậy. Sau đó là tìm cái TEXT có chuỗi : Ổ KHÓA gì gì đó là Link Field lại.

Vậy đó :)

Sao em thực hiện lisp xong đâu có thấy "Sau đó là tìm cái TEXT có chuỗi : Ổ KHÓA gì gì đó là Link Field lại." như anh nói đâu? cái chữ Ổ KHÓA nó vẫn nằm chình ình như vậy đâu có FIELD với cái P1-34 đâu anh? Hay là công việc FIELD mình tự làm tay vậy anh?

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

Bạn quét hết màn hình đi :D

À mình cảm ơn! Câu hỏi của mình chắc là ko làm được rồi! Phải làm từng cái thôi chứ quét 1 lần hết màn hình thì nó sẽ ko hiểu cái nào field với cái nào!

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

Thế mà nó lại hiểu mới lạ chứ, bạn đã thử chưa ^^ Mình thử thấy OK.

P/S : mỗi khi bạn lấy lisp về, trước hết hãy test ngay bằng nhiều cách

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

Mình không explode các đối tượng tolerance ra được. Chỉ có điều xóa cái tolerance đó đi và viết cái TEXT y chang như thế, vẽ hình chữ nhật y chang như vậy. Sau đó là tìm cái TEXT có chuỗi : Ổ KHÓA gì gì đó là Link Field lại.

Vậy đó :)

Em làm thử rồi anh Tuệ! Giả sử file ví dụ em gửi lên cho anh có 6 cái khung! Em quét hết màn hình thì 6 chữ ổ khóa nó đều link với cùng 1 giá trị đầu tiên mà mình quét thôi phải ko anh? Còn ý em muốn là cái chữ ổ khóa trong khung nào thì nó link với cái chữ P1-XX cũng nằm trong khung đó luôn! Nhưng theo em nghĩ chắc là ko dc phải ko anh, vì cái chữ Ổ Khóa đó nó sẽ ko phân biệt dc là nó đang nằm trong khung nào hết!

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

Lúc mình quét hết nó nhận riêng, chẳng thằng nào giống thằng nào bạn ạ. Lạ thật ^^ Bác TUệ vào giải giùm nào ^^

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

Lúc mình quét hết nó nhận riêng, chẳng thằng nào giống thằng nào bạn ạ. Lạ thật ^^ Bác TUệ vào giải giùm nào ^^

Sao kỳ vậy ta? Mình quét tất cả thì tất cả các chữ ổ khóa nó cùng 1 giá trị hết luôn! Nhờ anh Tuệ xem giúp em với!

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àm thử rồi anh Tuệ! Giả sử file ví dụ em gửi lên cho anh có 6 cái khung! Em quét hết màn hình thì 6 chữ ổ khóa nó đều link với cùng 1 giá trị đầu tiên mà mình quét thôi phải ko anh? Còn ý em muốn là cái chữ ổ khóa trong khung nào thì nó link với cái chữ P1-XX cũng nằm trong khung đó luôn! Nhưng theo em nghĩ chắc là ko dc phải ko anh, vì cái chữ Ổ Khóa đó nó sẽ ko phân biệt dc là nó đang nằm trong khung nào hết!

Khi quét mấy cái Tolerance nó sẽ tự động Link Field luôn. Nó tự hiểu luôn à. Nó phân biệt được tất.

Em gửi file mà em đã test cho anh xem cái nào!

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

Khi quét mấy cái Tolerance nó sẽ tự động Link Field luôn. Nó tự hiểu luôn à. Nó phân biệt được tất.

Em gửi file mà em đã test cho anh xem cái nào!

Thế nhé.

Dạ cảm ơn anh! File công việc nên em gửi vào mail anh dc ko anh?

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

Dạ cảm ơn anh! File công việc nên em gửi vào mail anh dc ko anh?

Được :rolleyes:

Nếu vì file công việc thì em xóa tất cả đi chỉ chừa lại các TOLERANCE và các Text cần Link. OK?

  • 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

Được :rolleyes:

Nếu vì file công việc thì em xóa tất cả đi chỉ chừa lại các TOLERANCE và các Text cần Link. OK?

Xin lỗi anh! Em làm được rồi! Em copy những cái em cần qua một file mới thì làm được rồi! Còn tron file cũ của em, em chỉ quét vùng em cần làm thôi, vùng khác em chưa cần làm thì em ko quét thì nó bị lỗi! Cảm ơn anh nhì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

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  

×