Đến nội dung


Hình ảnh
- - - - -

Lisp tạo các point 3d từ file bình đồ


  • Please log in to reply
15 replies to this topic

#1 BKXD98

BKXD98

    biết vẽ circle

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

Đã gửi 02 December 2007 - 09:29 PM

Trong file bình đồ có nhiều đối tượng, trong đó có các text cao độ (tọa độ của text là 2d), tôi đang cần 1 tiện ích chọn các text cao độ, tiện ích sẽ tạo ra các đối tượng point 3d (có tọa độ x và y là tọa độ của insertpoint của text và tọa độ z là giá trị của text cao độ).
Xin cảm ơn các bác.
  • 0

#2 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 03 December 2007 - 07:59 AM

Trong file bình đồ có nhiều đối tượng, trong đó có các text cao độ (tọa độ của text là 2d), tôi đang cần 1 tiện ích chọn các text cao độ, tiện ích sẽ tạo ra các đối tượng point 3d (có tọa độ x và y là tọa độ của insertpoint của text và tọa độ z là giá trị của text cao độ).
Xin cảm ơn các bác.

- Lệnh MP (make points)
- Các đối tượng là TEXT (chương trình bỏ qua, không xét MTEXT)
- Các chữ, ví dụ "abxy" xem như có giá trị 0
- Bạn có yêu cầu gì thêm thì nêu rõ

;;;------------------------------------------------------------------------
(defun emk1p(e / d x y z)
(setq
d (entget e)
x (car (cdr (assoc 10 d)))
y (cadr (cdr (assoc 10 d)))
z (atof (cdr (assoc 1 d)))
)
(entmake (list (cons 0 "POINT") (cons 10 (list x y z))))
)
;;;=======================================
(defun C:MP( / ss e)
(setq ss (ssget '((0 . "TEXT"))))
(while (setq e (ssname ss 0))
(emk1p e)
(ssdel e ss)
)
(princ)
)
;;;=======================================

  • 0

#3 BKXD98

BKXD98

    biết vẽ circle

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

Đã gửi 03 December 2007 - 08:23 AM

Bác ssg viết code nhanh quá. Nếu có thể, bác làm cho chương trình như thế này, tạo 1 menu, trên menu có 1 listbox mà item là các layer trong bản vẽ, chương trình sẽ duyệt qua tất cả các text trong bản vẽ có layer được chọn (không xét text chữ, không phải số, vd "aabb"). Thanks.
  • 0

#4 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 03 December 2007 - 08:39 AM

Bác ssg viết code nhanh quá. Nếu có thể, bác làm cho chương trình như thế này, tạo 1 menu, trên menu có 1 listbox mà item là các layer trong bản vẽ, chương trình sẽ duyệt qua tất cả các text trong bản vẽ có layer được chọn (không xét text chữ, không phải số, vd "aabb"). Thanks.



http://www.cadviet.com/upfiles/435.rar

Cái này tôi viết lâu lắm rồi nên cũng không biết mã nguồn ở đâu nữa, lệnh chạy là CV
Tôi sẽ đưa mã nguồn lên sau
  • 0

#5 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 03 December 2007 - 02:25 PM

... tạo 1 menu, trên menu có 1 listbox mà item là các layer trong bản vẽ, chương trình sẽ duyệt qua tất cả các text trong bản vẽ có layer được chọn (không xét text chữ, không phải số, vd "aabb"). Thanks.

Unzip, đọc readme và theo hướng dẫn:

http://www.cadviet.com/upfiles/MK3DP.zip

Duyệt qua tất cả các text thì chẳng có vấn đề gì, chỉ cần sửa 1 dòng code. Nhưng theo mình thấy như vậy không hay lắm. Bạn chủ động chọn sẽ dễ kiểm soát hơn.

@vndes: Bạn nhầm với cái khác hay sao ấy, chương trình không chấp nhận các đối tượng Text!
  • 0

#6 BKXD98

BKXD98

    biết vẽ circle

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

Đã gửi 03 December 2007 - 05:11 PM

Thấy bác ssq nhiệt tình quá, tôi nhờ bác giúp thêm 1 vấn đề, thêm 2 option trong menu : chọn text theo layer hay người dùng tự chọn; và option tạo point 3d hay là chuyển các text đó thành text 3d.
Xin cảm ơn bác.
  • 0

#7 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 04 December 2007 - 01:30 PM

... thêm 2 option trong menu : chọn text theo layer hay người dùng tự chọn; và option tạo point 3d hay là chuyển các text đó thành text 3d.

Bạn xác nhận lại các yêu cầu về options như sau có đúng không?
1) Chọn text bằng 1 trong 2 cách
- Theo layer bằng popup_list như hiện tại
- Người dùng chọn tùy ý, các đối tượng text có thể ở nhiều layer khác nhau
2) Chương trình thực hiện 1 trong 2 thao tác:
- Tạo point 3d như hiện tại
- Nâng đối tượng text lên độ cao z = giá trị của text, x và y giữ nguyên
  • 0

#8 BKXD98

BKXD98

    biết vẽ circle

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

Đã gửi 04 December 2007 - 05:20 PM

Đúng vậy bác ssq
  • 0

#9 HaMinhSon

HaMinhSon

    biết zoom

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

Đã gửi 05 December 2007 - 03:09 PM

cam ơn các bác rất nhiều, những bài viêt thât hay
  • 0

#10 HaMinhSon

HaMinhSon

    biết zoom

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

Đã gửi 05 December 2007 - 03:52 PM

toi đã chạy thử mà sao vẫn k đc bạc ạ,có thông báo là giới hạn quyền tác giả
  • 0

#11 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 05 December 2007 - 04:23 PM

Đúng vậy bác ssq

Tất cả đã đúng như ý bạn:

http://www.cadviet.com/upfiles/MK3DPoint.zip

Có điều này bạn nên rút kinh nghiệm: phân tích thật kỹ vấn đề mình muốn và đưa ra yêu cầu chuẩn xác, đầy đủ ngay từ đầu. Lập chương trình lần 1 không ngại, nhưng sửa đi sửa lại hoài ngán lắm!
  • 0

#12 BKXD98

BKXD98

    biết vẽ circle

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

Đã gửi 05 December 2007 - 05:13 PM

Xin cảm ơn bác ssq , tôi chỉ dự định hỏi xin bác nào đã có tiện ích nào tương tự như vậy thôi, chứ không có ý định nhờ viết mới, thấy bác ssq nhiệt tình quá nên mới yêu cầu ... Thanks.
  • 0

#13 anhcos

anhcos

    biết lệnh hatchedit

  • Advance Member
  • PipPipPipPip
  • 260 Bài viết
Điểm đánh giá: 170 (tàm tạm)

Đã gửi 20 December 2007 - 03:45 PM

Trong file bình đồ có nhiều đối tượng, trong đó có các text cao độ (tọa độ của text là 2d), tôi đang cần 1 tiện ích chọn các text cao độ, tiện ích sẽ tạo ra các đối tượng point 3d (có tọa độ x và y là tọa độ của insertpoint của text và tọa độ z là giá trị của text cao độ).
Xin cảm ơn các bác.


Tôi có viết chương trình này, hy vọng là giúp cho công việc của bạn:
Chương trình này tôi viết đã lâu rồi nên chỉ hỗ trợ cho ACAD 2004 và 2005 thôi.
Sắp tới sẽ có version mới hơn, hỗ trợ hầu hết các phiên bản AutoCAD

Chương trình AutoCAD Utilities
part 1: http://www.cadviet.com/upfiles/ACAD_Utilitiespart1.rar
part 2: http://www.cadviet.com/upfiles/ACAD_Utilitiespart2_1.rar
Cài đặt chương trình với mã: anhcos-270773-723472

*Để nâng cao độ của 2DText với Z=nội dung
Trong phần Thay đổi dữ liệu
Chọn bộ lọc là Text or MText or All Text tùy bạn
Trong mục Z bạn ghi: =T
Các mục khác giũ nguyên
Nhất nút thay đổi, chọn các 2DText, Enter.
Các 2DText sẽ được nâng cao độ lên bằng chính nội dung của nó.

Bạn cũng có thể chuyển nội dung thành dạng X, Y ,Z bằng cách ghi vào trong mục T: = "X=" & X & "/p" & "Y=" & Y & "/p" & "Z=" & Z
/p là dùng để xuống hàng trong MText.

*Để chuyển các 2D Text thành 3D point bạn làm theo 2 bước

Bước 1:
Trong phần lấy dữ liệu, chọn lọc: All Text
Sau đó chọn các 2DText, dữ liệu sẽ xuất qua bảng tính Excel
Trong Excel bạn hãy xóa cột chứa Z, lúc này cột chứa nội dung sẽ là toạ độ Z của điểm
Quét khối toàn bộ các dữ liệu X,Y,Z của các điểm và trở về chương trình

Bước 2:
Trong phần tạo thực thể: chọn là Point
Và ấn nút Tạo, các điểm 3D point sẽ được tạo ra, bạn chỉ cần xóa đi các 2DText là dc
  • 0
Clear sky!

MF Rock collection.

#14 BKXD98

BKXD98

    biết vẽ circle

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

Đã gửi 26 December 2007 - 08:38 PM

Thanks bác anhcos , cái lisp của bác hơi nặng (~4mb), chắc là gồm nhiều tiện ích khác ?
  • 0

#15 anhcos

anhcos

    biết lệnh hatchedit

  • Advance Member
  • PipPipPipPip
  • 260 Bài viết
Điểm đánh giá: 170 (tàm tạm)

Đã gửi 27 December 2007 - 08:25 AM

Thanks bác anhcos , cái lisp của bác hơi nặng (~4mb), chắc là gồm nhiều tiện ích khác ?

Cái này viết bằng VB6.0, hơi cũ, nên rất lớn, sau này viết bằng VB.NET thì nhỏ gọn hơn nhiều.
Mình học Lisp cách đây khoảng 10năm rồi, nhưng khoảng 3 năm sau đó thì viết bằng VB, vì nó thích hợp với các chương trình lớn và tính toán phức tạp hơn.
  • 0
Clear sky!

MF Rock collection.

#16 tientaiutc2612

tientaiutc2612

    biết pan

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

Đã gửi 08 July 2016 - 09:58 AM

Tất cả đã đúng như ý bạn:

http://www.cadviet.c...s/MK3DPoint.zip

Có điều này bạn nên rút kinh nghiệm: phân tích thật kỹ vấn đề mình muốn và đưa ra yêu cầu chuẩn xác, đầy đủ ngay từ đầu. Lập chương trình lần 1 không ngại, nhưng sửa đi sửa lại hoài ngán lắm!

anh ơi giúp em vấn đề này với , e có đăng bài nhờ mọi người giúp nhưng chưa thấy ai hồi đáp a ạ

vấn đề của em là

 

cái lệnh quick select  khi mình dùng lệnh thì sẽ phải chọn các thông số mình cần như :

Object type là đối tượng gì , properties và cả value nữa , 

ví dụ như Object type là text , properties là Layer , Value là layer "0"  

bây giờ e muốn tất cả các thao tác đó chỉ trong một nút lệnh "chon" ,

 anh viết lisp giúp em với ạ

em cảm ơn anh nhiều lắm


  • 0