Đến nội dung


Hình ảnh

Cho em hỏi về TOLERANCE!


  • Please log in to reply
49 replies to this topic

#1 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 16 March 2011 - 10:46 AM

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.c.../3/tolerace.dwg
Cảm ơn mọi người nhiều!
  • 0

#2 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 16 March 2011 - 11:03 AM

Vậy tại sao bạn phải dùng Tol ?? Sao không là text ngay từ đầu hè ??
  • 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


#3 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 16 March 2011 - 01:24 PM

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!
  • 0

#4 ketxu

ketxu

    Copier - Paster - Editor

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

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

Không cần link có được k bạ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


#5 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 16 March 2011 - 01:40 PM

Không cần link có được k bạn ^^

Dạ! Cái cần là cái đó đó bạn! Dùng FIELD thì hiện tùm lum ký tự hết! Mong bạn giúp dùm mình với!
  • 0

#6 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 16 March 2011 - 03:43 PM

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)
))

  • 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


#7 truongthanh

truongthanh

    biết lệnh text

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

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

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á!
  • 0

#8 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

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

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é.
  • 1

#9 ketxu

ketxu

    Copier - Paster - Editor

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

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

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 ^^
  • 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


#10 truongthanh

truongthanh

    biết lệnh text

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

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

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.c...tolerance_1.dwg
  • 0

#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 17 March 2011 - 06:40 AM

Nhờ anh TUE giúp em với!
http://www.cadviet.c...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)
)

  • 1

#12 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 17 March 2011 - 07:46 AM

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!
  • 0

#13 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 17 March 2011 - 08:23 AM

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 đó :)
  • 2

#14 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 17 March 2011 - 11:28 AM

Đó ^^ 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 đã ^^
  • 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


#15 truongthanh

truongthanh

    biết lệnh text

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

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

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?
  • 0

#16 ketxu

ketxu

    Copier - Paster - Editor

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

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

Bạn quét hết màn hình đi :D
  • 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


#17 truongthanh

truongthanh

    biết lệnh text

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

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

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!
  • 0

#18 ketxu

ketxu

    Copier - Paster - Editor

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

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

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
  • 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


#19 truongthanh

truongthanh

    biết lệnh text

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

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

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!
  • 0

#20 ketxu

ketxu

    Copier - Paster - Editor

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

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

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 ^^
  • 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