trungkien8338 0 Báo cáo bài đăng Đã đăng Tháng 3 16, 2009 Để 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
kts_k80 3 Báo cáo bài đăng Đã đăng Tháng 3 16, 2009 Để 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
tdvn 53 Báo cáo bài đăng Đã đăng Tháng 3 16, 2009 Để 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
ndtnv 481 Báo cáo bài đăng Đã đăng Tháng 3 16, 2009 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
tdvn 53 Báo cáo bài đăng Đã đăng Tháng 3 16, 2009 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