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

Nhờ các chú các bác hỗ trợ tạo Field ạ

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

Do nhu cầu cháu hay phải lặp đi lặp lại cái tạo field trong autocad trong công việc mà mấy anh trên công ty giao cho nên cháu mong các bác, các chú hỗ trợ để đỡ mất công sức trong công việc ạ. Hiện tại là cháu hay tạo field cad từ block att, text, mtext như đối tượng trong hình mong các bác các chú có thể tạo 1 lisp có thể tạo field từ những đối tượng này, dạng nhập lệnh -> enter->chọn đối tượng->chọn 1 vùng chống trên màn hình-> tạo ra text có field đối tượng đó ạ 

Drawing1.dwg

image.png

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

Đây cháu nhé!

;=========link gia tri text toi text==
(defun C:lgt (/ obn Tkq Lob)
(setq     o (vlax-ename->vla-object (car (nentsel "\nChon doi tuong nguon")))
    Tkq (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-objectid o)) ">%).TextString>%")
)
(while (setq obd (car (nentsel "\nChon text dich")))
    (vla-put-textstring (vlax-ename->vla-object obd) Tkq)
)
(vl-cmdf "regen")
(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
17 giờ trước, quangcda đã nói:

Đây cháu nhé!

;=========link gia tri text toi text==
(defun C:lgt (/ obn Tkq Lob)
(setq     o (vlax-ename->vla-object (car (nentsel "\nChon doi tuong nguon")))
    Tkq (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-objectid o)) ">%).TextString>%")
)
(while (setq obd (car (nentsel "\nChon text dich")))
    (vla-put-textstring (vlax-ename->vla-object obd) Tkq)
)
(vl-cmdf "regen")
(princ)
)

cháu cảm ơn bác đã viết lisp cho cháu, bác có thể thêm cho cháu cái tạo text tự động khi mình pick vào khoảng chống bên ngoài ko phải là text được không ạ

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
(defun C:t2f (/ obj obj-type tkq text-style text-height rotation insertion-point)
  ;; Chon doi tuong nguon
  (setq obj (car (nentsel "\nChon doi tuong text, mtext, attribute, hoac dimension: ")))
  (if obj
    (progn
      (setq obj (vlax-ename->vla-object obj)
            obj-type (vla-get-ObjectName obj))

      ;; Xu ly thong tin tu TEXT, MTEXT, ATTRIB, ATTDEF, hoac DIMENSION
      (cond
        ;; Doi tuong TEXT
        ((equal obj-type "AcDbText")
         (setq tkq (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-objectid obj)) ">%).TextString>%")
               text-style (vla-get-StyleName obj)
               text-height (vla-get-Height obj)
               rotation (if (vlax-property-available-p obj 'Rotation) (vla-get-Rotation obj) 0.0)
               insertion-point (vlax-safearray->list (vlax-variant-value (vla-get-InsertionPoint obj)))))

        ;; Doi tuong MTEXT
        ((equal obj-type "AcDbMText")
         (setq tkq (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-objectid obj)) ">%).Text>%")
               text-style (vla-get-StyleName obj)
               text-height (vla-get-Height obj) ;; Đúng
               rotation (vla-get-Rotation obj)
               insertion-point (vlax-safearray->list (vlax-variant-value (vla-get-InsertionPoint obj)))))

        ;; Doi tuong ATTDEF hoac ATTRIB
        ((or (equal obj-type "AcDbAttributeDefinition")
             (equal obj-type "AcDbAttribute"))
         (setq tkq (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-objectid obj)) ">%).TextString>%")
               text-style (if (vlax-property-available-p obj 'StyleName) (vla-get-StyleName obj) "")
               text-height (if (vlax-property-available-p obj 'Height) (vla-get-Height obj) 0.0)
               rotation (if (vlax-property-available-p obj 'Rotation) (vla-get-Rotation obj) 0.0)
               insertion-point (vlax-safearray->list (vlax-variant-value (vla-get-InsertionPoint obj)))))

        ;; Doi tuong DIMENSION
        ((equal obj-type "AcDbDimension")
         ;; Lay gia tri cua Text trong Dimension
         (setq tkq (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-objectid obj)) ">%).Measurement>%")
               text-style (vla-get-StyleName obj)
               text-height (vla-get-TextHeight obj)
               rotation (if (vlax-property-available-p obj 'Rotation) (vla-get-Rotation obj) 0.0)
               insertion-point (vlax-safearray->list (vlax-variant-value (vla-get-TextPosition obj)))))

        ;; Doi tuong khong duoc ho tro
        (T (princ "\nDoi tuong chon khong phai TEXT, MTEXT, ATTRIBUTE hoac DIMENSION.")
           (setq obj nil)))
      
      ;; Neu doi tuong hop le, yeu cau nguoi dung chon vi tri tao TEXT moi
      (if obj
        (progn
          (setq insertion-point (getpoint "\nChon vi tri tao text moi: "))
          (if insertion-point
            (progn
              ;; Tao mot TEXT moi voi Field tai vi tri duoc chon
              (entmake
                (list
                  (cons 0 "TEXT") ; Doi tuong la TEXT
                  (cons 8 (vla-get-Layer obj)) ; Lop giong voi doi tuong nguon
                  (cons 7 text-style) ; Kieu TEXT giong voi doi tuong nguon
                  (cons 40 text-height) ; Chieu cao TEXT
                  (cons 10 insertion-point) ; Diem chen
                  (cons 1 tkq) ; Noi dung la Field
                  (cons 50 rotation) ; Goc xoay
                )
              )
              (vl-cmdf "regen")
              (princ "\nText moi da duoc tao thanh cong.")
            )
            (princ "\nKhong chon vi tri tao TEXT moi.")
          )
        )
      )
    )
    (princ "\nKhong chon doi tuong hop le.")
  )
  (princ)
)

Đây là lisp cho AI viết, thực hiện được nội dung bạn mong muốn đối với : Text, Mtext, Att, Dim. 

Lisp sẽ lấy đúng thông số của đối tượng gốc để tạo text field mới (bao gồm kiểu chữ, góc, chiều cao .v.v.)

 

Tuy nhiên với file cad nặng thì sẽ chạy khá chậm, bạn có thể dùng tạm.

  • 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
Vào lúc 23/11/2024 tại 12:48, NTHAHT đã nói:

Gửi cháu lisp này: https://drive.google.com/file/d/10jrJecv1cTAlUTfScYwRBOrlGp-3QAkH/view?usp=sharing

Lệnh đầy đủ: FieldTextStringFromObject

Trong quá trình xác định điểm đặt, có thể thay đổi chiều cao text.

 

ffo.gif

Cháu cảm ơn bá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
2 giờ trước, conghoa đã nói:

(defun C:t2f (/ obj obj-type tkq text-style text-height rotation insertion-point)
  ;; Chon doi tuong nguon
  (setq obj (car (nentsel "\nChon doi tuong text, mtext, attribute, hoac dimension: ")))
  (if obj
    (progn
      (setq obj (vlax-ename->vla-object obj)
            obj-type (vla-get-ObjectName obj))

      ;; Xu ly thong tin tu TEXT, MTEXT, ATTRIB, ATTDEF, hoac DIMENSION
      (cond
        ;; Doi tuong TEXT
        ((equal obj-type "AcDbText")
         (setq tkq (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-objectid obj)) ">%).TextString>%")
               text-style (vla-get-StyleName obj)
               text-height (vla-get-Height obj)
               rotation (if (vlax-property-available-p obj 'Rotation) (vla-get-Rotation obj) 0.0)
               insertion-point (vlax-safearray->list (vlax-variant-value (vla-get-InsertionPoint obj)))))

        ;; Doi tuong MTEXT
        ((equal obj-type "AcDbMText")
         (setq tkq (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-objectid obj)) ">%).Text>%")
               text-style (vla-get-StyleName obj)
               text-height (vla-get-Height obj) ;; Đúng
               rotation (vla-get-Rotation obj)
               insertion-point (vlax-safearray->list (vlax-variant-value (vla-get-InsertionPoint obj)))))

        ;; Doi tuong ATTDEF hoac ATTRIB
        ((or (equal obj-type "AcDbAttributeDefinition")
             (equal obj-type "AcDbAttribute"))
         (setq tkq (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-objectid obj)) ">%).TextString>%")
               text-style (if (vlax-property-available-p obj 'StyleName) (vla-get-StyleName obj) "")
               text-height (if (vlax-property-available-p obj 'Height) (vla-get-Height obj) 0.0)
               rotation (if (vlax-property-available-p obj 'Rotation) (vla-get-Rotation obj) 0.0)
               insertion-point (vlax-safearray->list (vlax-variant-value (vla-get-InsertionPoint obj)))))

        ;; Doi tuong DIMENSION
        ((equal obj-type "AcDbDimension")
         ;; Lay gia tri cua Text trong Dimension
         (setq tkq (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-objectid obj)) ">%).Measurement>%")
               text-style (vla-get-StyleName obj)
               text-height (vla-get-TextHeight obj)
               rotation (if (vlax-property-available-p obj 'Rotation) (vla-get-Rotation obj) 0.0)
               insertion-point (vlax-safearray->list (vlax-variant-value (vla-get-TextPosition obj)))))

        ;; Doi tuong khong duoc ho tro
        (T (princ "\nDoi tuong chon khong phai TEXT, MTEXT, ATTRIBUTE hoac DIMENSION.")
           (setq obj nil)))
      
      ;; Neu doi tuong hop le, yeu cau nguoi dung chon vi tri tao TEXT moi
      (if obj
        (progn
          (setq insertion-point (getpoint "\nChon vi tri tao text moi: "))
          (if insertion-point
            (progn
              ;; Tao mot TEXT moi voi Field tai vi tri duoc chon
              (entmake
                (list
                  (cons 0 "TEXT") ; Doi tuong la TEXT
                  (cons 8 (vla-get-Layer obj)) ; Lop giong voi doi tuong nguon
                  (cons 7 text-style) ; Kieu TEXT giong voi doi tuong nguon
                  (cons 40 text-height) ; Chieu cao TEXT
                  (cons 10 insertion-point) ; Diem chen
                  (cons 1 tkq) ; Noi dung la Field
                  (cons 50 rotation) ; Goc xoay
                )
              )
              (vl-cmdf "regen")
              (princ "\nText moi da duoc tao thanh cong.")
            )
            (princ "\nKhong chon vi tri tao TEXT moi.")
          )
        )
      )
    )
    (princ "\nKhong chon doi tuong hop le.")
  )
  (princ)
)

Đây là lisp cho AI viết, thực hiện được nội dung bạn mong muốn đối với : Text, Mtext, Att, Dim. 

Lisp sẽ lấy đúng thông số của đối tượng gốc để tạo text field mới (bao gồm kiểu chữ, góc, chiều cao .v.v.)

 

Tuy nhiên với file cad nặng thì sẽ chạy khá chậm, bạn có thể dùng tạm.

Cháu cảm ơn bác, lisp dùng thấy mượt chưa thấy lag gì ạ, có thể để AI truyền nội dụng vào text nữa đc ko ạ và thêm các đối tượng là hatch, line, poliline, arc, crices,... nữa do lúc đầu cháu sợ viết nhiều đối tượng khó quá không ai giúp cháu ạ, cháu xin cảm ơn các bác, các chú đã hỗ trợ

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

"truyền nội dụng vào text nữa đc ko ạ và thêm các đối tượng là hatch, line, poliline, arc, crices" <--- đoạn này là như nào nhỉ, mình đọc mà không hiểu

  • Like 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
27 phút trước, conghoa đã nói:

"truyền nội dụng vào text nữa đc ko ạ và thêm các đối tượng là hatch, line, poliline, arc, crices" <--- đoạn này là như nào nhỉ, mình đọc mà không hiểu

dạ, là tức có text sẵn thì chọn vào text đó sẽ thành field ạ, còn cái hatch, line, poliline, arc, crices là các đối tượng đó cũng xuất ra field đc thay vì giới hạn ở TEXT, MTEXT, ATTRIBUTE, DIMENSION hiện tại. cháu cảm ơn vì bác đã dành thời gian ạ

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ấn đề là lấy Property nào của các đối tượng (hatch, line, polyline, arc, cricle)? Chiều dài, diện tích ... hay là cái gì đó!

  • Like 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
13 phút trước, NTHAHT đã nói:

Vấn đề là lấy Property nào của các đối tượng (hatch, line, polyline, arc, cricle)? Chiều dài, diện tích ... hay là cái gì đó!

dạ, hatch thì lấy diện tích, còn line, polilien, arc, cricle lấy chiều dà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
1 giờ} trướ}c, Nguyễn Lộc 2k 2 đã nói:

dạ, hatch thì lấy diện tích, còn line, polilien, arc, cricle lấy chiều dài ạ

Bạn tải lại ở link cũ ở trên.

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  

×