Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
4 replies to this topic

#1 trungkien8338

trungkien8338

    biết pan

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

Đã gửi 16 March 2009 - 11:24 AM

Để 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.
  • 0

#2 kts_k80

kts_k80

    biết zoom

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

Đã gửi 16 March 2009 - 11:36 AM

Để 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
  • 0

#3 tdvn

tdvn

    biết lệnh rotate

  • Members
  • PipPipPip
  • 134 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 16 March 2009 - 01:17 PM

Để 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
  • 0

#4 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 16 March 2009 - 04:39 PM

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

#5 tdvn

tdvn

    biết lệnh rotate

  • Members
  • PipPipPip
  • 134 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 16 March 2009 - 11:57 PM

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