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

kiểu dữ liệu mở rộng trong autocad

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

Để quản lý bản vẽ tốt hơn mình muốn thêm vào một đối tượng một tên mà không trùng nhau với mỗi đối tượng trong bản vẽ và không đổi khi đóng mỡ bản vẽ (giống như HANDLE), mình nghe nói kiểu dữ liệu mở rộng trong cad có thể làm dc. Vậy bạn nào biết giúp mình với. (dùng lisp trong acad).

Vd mình có list của một text như sau: ((-1 . ) (0 . "TEXT") (330 .

name: 7ef8fcf8>) (5 . "17302") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8

. "THUAPC") (6 . "Continuous") (100 . "AcDbText") (10 614121.0 1.19654e+006

0.0) (40 . 2.4) (1 . "89-53") (50 . 0.698132) (41 . 1.0) (51 . 0.0) (7 .

"Vavon") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 .

"AcDbText") (73 . 0))

Mình muốn thêm chuỗi (1000 . "doituong 1") vao cuối chuỗi trên

Kết qủa mình mong muốn là: ((-1 . ) (0 . "TEXT") (330 .

name: 7ef8fcf8>) (5 . "17302") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8

. "THUAPC") (6 . "Continuous") (100 . "AcDbText") (10 614121.0 1.19654e+006

0.0) (40 . 2.4) (1 . "89-53") (50 . 0.698132) (41 . 1.0) (51 . 0.0) (7 .

"Vavon") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 .

"AcDbText") (73 . 0) (1000 . "doituong 1") )

Cảm ơn các bạn nhe.

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
Để quản lý bản vẽ tốt hơn mình muốn thêm vào một đối tượng một tên mà không trùng nhau với mỗi đối tượng trong bản vẽ và không đổi khi đóng mỡ bản vẽ (giống như HANDLE), mình nghe nói kiểu dữ liệu mở rộng trong cad có thể làm dc. Vậy bạn nào biết giúp mình với. (dùng lisp trong acad).

Vd mình có list của một text như sau: ((-1 . ) (0 . "TEXT") (330 .

name: 7ef8fcf8>) (5 . "17302") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8

. "THUAPC") (6 . "Continuous") (100 . "AcDbText") (10 614121.0 1.19654e+006

0.0) (40 . 2.4) (1 . "89-53") (50 . 0.698132) (41 . 1.0) (51 . 0.0) (7 .

"Vavon") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 .

"AcDbText") (73 . 0))

Mình muốn thêm chuỗi (1000 . "doituong 1") vao cuối chuỗi trên

Kết qủa mình mong muốn là: ((-1 . ) (0 . "TEXT") (330 .

name: 7ef8fcf8>) (5 . "17302") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8

. "THUAPC") (6 . "Continuous") (100 . "AcDbText") (10 614121.0 1.19654e+006

0.0) (40 . 2.4) (1 . "89-53") (50 . 0.698132) (41 . 1.0) (51 . 0.0) (7 .

"Vavon") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 .

"AcDbText") (73 . 0) (1000 . "doituong 1") )

Cảm ơn các bạn nhe.

hình như không có mã dxf nào là 1000 cả trong bảng từ điển đối tượng cả. còn mã số (1. "abc...") quản lí nội dung text. thêm gì có khi là thêm ở đấy

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
Để quản lý bản vẽ tốt hơn mình muốn thêm vào một đối tượng một tên mà không trùng nhau với mỗi đối tượng trong bản vẽ và không đổi khi đóng mỡ bản vẽ (giống như HANDLE), mình nghe nói kiểu dữ liệu mở rộng trong cad có thể làm dc. Vậy bạn nào biết giúp mình với. (dùng lisp trong acad).

Vd mình có list của một text như sau: ((-1 . ) (0 . "TEXT") (330 .

name: 7ef8fcf8>) (5 . "17302") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8

. "THUAPC") (6 . "Continuous") (100 . "AcDbText") (10 614121.0 1.19654e+006

0.0) (40 . 2.4) (1 . "89-53") (50 . 0.698132) (41 . 1.0) (51 . 0.0) (7 .

"Vavon") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 .

"AcDbText") (73 . 0))

Mình muốn thêm chuỗi (1000 . "doituong 1") vao cuối chuỗi trên

Kết qủa mình mong muốn là: ((-1 . ) (0 . "TEXT") (330 .

name: 7ef8fcf8>) (5 . "17302") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8

. "THUAPC") (6 . "Continuous") (100 . "AcDbText") (10 614121.0 1.19654e+006

0.0) (40 . 2.4) (1 . "89-53") (50 . 0.698132) (41 . 1.0) (51 . 0.0) (7 .

"Vavon") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 .

"AcDbText") (73 . 0) (1000 . "doituong 1") )

Cảm ơn các bạn nhe.

Sau đây là các hàm thao tác trên dlmr do mình lập. Bạn có thể tham khảo

;Hàm lấy dlmr

(defun laydlmr( tendlmr tendt / ent)

(setq ent (entget tendt (list tendlmr)))

(setq ent (cdr (cadr (cadr (assoc -3 ent)))))

)

;Hàm tạo dlmr

(defun taodlmr( tendt code tendlmr dl / ent loai)

(if (null (tblsearch "APPID" tendlmr)) (regapp tendlmr))

(setq ent (entget tendt (list tendlmr)))

(setq loai (cons code dl))

(if (null (assoc -3 ent))

(progn

(setq ent (append ent (list (list -3 (list tendlmr loai)))))

(entmod ent)

))

)

;Hàm thay đổi dlmr

(defun t-doidlmr(tendt code tendlmr dl / ent entold entnew loai)

(if (tblsearch "APPID" tendlmr)

(progn

(setq ent (entget tendt (list tendlmr)))

(setq loai (cons code dl))

(setq entold (assoc -3 ent))

(setq entnew (list -3 (list tendlmr loai)))

(entmod (subst entnew entold ent))

)

(taodlmr tendt code tendlmr dl)

)

)

 

Ghi chú : Dữ liệu mở rộng không xem được bằng hàm (entget name)

Tùy kiểu dữ liệu bạn chọn code mở rộng cho phù hợp

 

Tiện đây các bạn cho tôi hỏi. Thời tôi học về lisp chưa có visuallisp. Lúc đó kiểu dữ liệu của lisp chưa có kiểu dữ liệu mảng (array) và kiểu danh sách cũng yếu (muốn thêm một phần tử vào danh sách phải nhớ lại toàn bộ danh sách) nên chạy rất chậm. Không biết đến nay, vl có cải thiện gì 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
Tiện đây các bạn cho tôi hỏi. Thời tôi học về lisp chưa có visuallisp. Lúc đó kiểu dữ liệu của lisp chưa có kiểu dữ liệu mảng (array) và kiểu danh sách cũng yếu (muốn thêm một phần tử vào danh sách phải nhớ lại toàn bộ danh sách) nên chạy rất chậm. Không biết đến nay, vl có cải thiện gì không

Dùng kiểu safearray, xem help về các hàm vlax-safearray

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ùng kiểu safearray, xem help về các hàm vlax-safearray

Do bận rộn quá nên từ ngày có vl mình cũng chýa nghiên cứu. Cám õn bạ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  

×