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

[share] Link diện tích,chiều dài đối tượng tới Mtext(phải Regen sau khi thay đổi)

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

Mình lang thang trên mạng mới tìm được bài viết này, mình nghĩ nó khá hay cho các vọc lisp tiếp tục phát triển

Nhưng đương nhiên nó cũng có ích với các mem cad thực sự cần

Tác dụng

Tự viết ra 1 dòng Mtext với nội dung là diện tích hoặc chiều dài của một đối tượng (pick chuột)

Code như sau:(xin phép không đưa vào box code)

Với diện tích

 

(command "mtext" (getpoint "\nChon diem chen") pause

(strcat

"%<\\AcObjProp Object(%<\\_ObjId "

(Get-ObjectIDx64 (vlax-ename->vla-object(car (entsel))))

">%).Area \\f \"%pr2%lu2%qf1 %ps[s= ,dv^2]%zs8\">%"

) ""

)

Với Chiều dài(chu vi)

 

(command "mtext" (getpoint "\nChon diem chen") pause

(strcat

"%<\\AcObjProp Object(%<\\_ObjId "

(Get-ObjectIDx64 (vlax-ename->vla-object(car (entsel))))

">%).Length \\f \"%pr2%lu2%qf1 %ps[L= ,dv]%zs8\">%"

) ""

)

 

Trong đó bắt buộc phải tải hàm con Get-ObjectIDx64 (hàm con này là nguyên mẫu của nguồn mình kiếm được nó giúp cho code chạy được trên Cad 64 bit - Nguồn http://www.jtbworld.com/lisp/AreaText.htm)

(defun Get-ObjectIDx64 (obj / util)
 (setq util (vla-get-Utility (vla-get-activedocument (vlax-get-acad-object))))
 (if (= (type obj) 'ENAME)(setq obj (vlax-ename->vla-object obj)))
 (if (= (type obj) 'VLA-OBJECT)
(if (> (vl-string-search "x64" (getvar "platform")) 0)
 	(vlax-invoke-method util "GetObjectIdString" obj :vlax-False)
 	(rtos (vla-get-objectid obj) 2 0)
)
 )
)

Nhìn vào hai code của Mtext trên các bạn hãy để ý các phần

  1. màu đỏ: Area và Length đó là các Code diện tích và Length lấy theo dòng code từ lệnh FIELD(xem video của nguồn đã up)
  2. màu xanh: [s= , dv^2] [L= , dv] đó là các thành phần tự thêm vào trước và sau giá trị các bạn có thể tự sửa tùy ý(viết tiếng việt được nếu dùng UNICODE)
  3. dòng màu tím là quy định hay không quy định việc bỏ các số 0 vô nghĩa ở kết quả cuối

  • 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

Mình lang thang trên mạng mới tìm được bài viết này, mình nghĩ nó khá hay cho các vọc lisp tiếp tục phát triển

Nhưng đương nhiên nó cũng có ích với các mem cad thực sự cần

Tác dụng

Tự viết ra 1 dòng Mtext với nội dung là diện tích hoặc chiều dài của một đối tượng (pick chuột)

....

Đây là code viết bởi vl

(defun c:AT (/ entObject entObjectID InsertionPoint ad)
 (vl-load-com)
 (setq entObject (vlax-ename->vla-object(car (entsel)))
   	entObjectID (Get-ObjectIDx64 entObject)
   	InsertionPoint (vlax-3D-Point (getpoint "Select point: "))
   	ad (vla-get-ActiveDocument (vlax-get-acad-object))
 )
 (vla-addMText
(if (= 1 (vla-get-activespace ad))
 	(vla-get-modelspace ad)
 	(if (= (vla-get-mspace ad) :vlax-true)
(vla-get-modelspace ad)
(vla-get-paperspace ad)
)
 	)
InsertionPoint 0.0
(strcat
 	"%<\\AcObjProp Object(%<\\_ObjId "
 	entObjectID
 	">%).Area \\f \"%pr2%lu2%qf1 %ps[s= ,mm^2]%zs8\">%"
 	)
)
 (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

Cảm ơn tinh thần chia sẻ. Cadviet cũng có vài topic về vấn đề này rồi. Bạn có thể nghiên cứu thêm tại:

http://www.cadviet.com/forum/index.php?showtopic=1515

http://www.cadviet.com/forum/index.php?showtopic=13131&st=0

  • 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

Cảm ơn tinh thần chia sẻ. Cadviet cũng có vài topic về vấn đề này rồi. Bạn có thể nghiên cứu thêm tại:

http://www.cadviet.c...?showtopic=1515

http://www.cadviet.c...opic=13131&st=0

Hì, em cũng có lướt qua mấy topic này rồi, hồi đó thấy nó "cao siêu" quá, có dám đọc đâu, giờ lại ngồi nghiền ngẫm vậ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

Lee có cả 1 bài dài giải trình các ý nghĩa trong Field code (pr2%lu2%qf1 %ps j j đó ở trên), bạn nên tìm thêm để đọ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

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  

×