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

Lisp Tự Động Đo Và Ghi Kích Thước Nhiều Đối Tượng

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

Thưa mọi người

Hiện mình có 02 ý tưởng:

 

Ý tưởng 1: auto dim cho nhiều đối tượng khác nhau bằng 1 click.

Giống như http://lanloylisp.blogspot.com/2012/12/automatic-dimensioning.html

 

Ý tưởng 2: 1 dim có sẵn nhưng không có đối tượng, vẽ đối tượng di qua 2 chân dim.

http://www.cadviet.com/upfiles/7/24851_lisp.dwg

 

Cảm ơn mọi người!

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

Ý bạn là gì :) 2 ý tưởng này thực hiện nó không khó tí nào :)

Ý tưởng 1 mình có viết đo hàng loạt đoạn thẳng rồi, bạn lấy chỉnh sửa khoảng cách thôi.

http://www.cadviet.com/forum/topic/166596-xin-lisp-tu-dong-do-chieu-dai-nhieu-line-ko-tinh-tong/

Ý tưởng 2 thì lấy 2 đầu defpoint rồi entmake Line :)

  • 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

Ý bạn là gì :) 2 ý tưởng này thực hiện nó không khó tí nào :)

Ý tưởng 1 mình có viết đo hàng loạt đoạn thẳng rồi, bạn lấy chỉnh sửa khoảng cách thôi.

http://www.cadviet.com/forum/topic/166596-xin-lisp-tu-dong-do-chieu-dai-nhieu-line-ko-tinh-tong/

Ý tưởng 2 thì lấy 2 đầu defpoint rồi entmake Line :)

Cảm ơn Anh ketxu.

1. Em cũng có xài lisp của Anh nhưng thấy rằng. Đối tượng vẫn là dimension nhưng không thể export tới excel bằng lisp này được

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/topic/55599-yeu-cau-lisp-lay-gia-tri-cua-dimenson-text-va-xuat-ra-file-text/


(defun C:HA( / lst fn fw index x y z txt)	;Doan Van Ha Cadviet.com

 (princ "\nChon cac Text/Mtext/Dimension can xuat ra file...")

 (setq lst (acet-ss-to-list (ssget '((0 . "*TEXT,DIMENSION"))))

       	fn (getfiled "Chon file de save" "" "csv" 1)

       	fw (open fn "w")

       	index 0 x 1 y 1 z 1)

 (repeat (length lst)

  (cond

   ((= (cdr (assoc 0 (entget (nth index lst)))) "TEXT") (setq txt (strcat (cdr (assoc 1 (entget (nth index lst)))) "," "text" (itoa x)) x (1+ x)))

   ((= (cdr (assoc 0 (entget (nth index lst)))) "MTEXT") (setq txt (strcat (cdr (assoc 1 (entget (nth index lst)))) "," "mtext" (itoa y)) y (1+ y)))

   ((= (cdr (assoc 0 (entget (nth index lst)))) "DIMENSION")

	(if (= (cdr (assoc 1 (entget (nth index lst)))) "")

 	(setq txt (strcat (rtos (cdr (assoc 42 (entget (nth index lst))))) "," "dim" (itoa z)) z (1+ z))

 	(setq txt (strcat (cdr (assoc 1 (entget (nth index lst)))) "," "dim" (itoa z)) z (1+ z)))))

  (princ (strcat txt "\n") fw)

  (setq index (1+ index)))

 (close fw))



và em muốn vẫn hiện các đường gióng có được không (anh cứ để 2 phương án nha  :) )

2. Lệnh entmake Line này có từ cad bao nhiêu trở lên vậy. Vì em đang xài cad 2007.

Cảm ơn Anh ketxu

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

2. Lệnh entmake Line này có từ cad bao nhiêu trở lên vậy. Vì em đang xài cad 2007.

 

--------->>>>>>Lệnh entmake có từ cad 14 tới cad 2017 ^_^

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

2. Lệnh entmake Line này có từ cad bao nhiêu trở lên vậy. Vì em đang xài cad 2007.

 

--------->>>>>>Lệnh entmake có từ cad 14 tới cad 2017 ^_^

Xin lỗi Bee không biết gọi là Anh hay là Bạn nhưng mình gõ thì không thấy có lệnh này trong cad nhỉ? Bạn có thể chỉ rõ cho mình hơn theo suy nghĩ mình nêu ra ở trên không?

Trân trọ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

 Khổ thân bạn quá ^^ 2 anh ấy "hại não" bạn rồi ... Entmake nó nằm ở trong Lisp, tức là câu lệnh lập trình Autolisp... Chứ gõ hoài, gõ miết trên màn hình nó cũng ko ra đâu.  B) B)

Anh #Bee, anh #Két xù có kinh nghiệm 15-16 năm ... cầm đuôi chuột ---> Cao thủ rồi. Vậy bạn gọi anh ấy là anh hay bạn thì tùy  :P  hê hê..

Viết cho bạn code trong trường hợp này...

 
 

 

 

(defun c:test ( / oldos object n i dxf pt1 pt2)
(command "undo" "begin")
(command "cmdecho" 0)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
 
(prompt "Chon cac dimension: \n")
(setq object (ssget '(( 0 . "*dimension")))
      n      (SSLENGTH object)
      i 0)
(repeat n
  (progn
    (setq dxf (entget (ssname object i))
 pt1 (cdr (assoc 13 dxf))
 pt2 (cdr (assoc 14 dxf)))
    (command ".line" pt1 pt2 "")
    (setq i (1+ i))
    )
  )
 
  (setvar "osmode" oldos)
 (command "undo" "end")
  (princ))

 

  • Vote tăng 2

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

 

 Khổ thân bạn quá ^^ 2 anh ấy "hại não" bạn rồi ... Entmake nó nằm ở trong Lisp, tức là câu lệnh lập trình Autolisp... Chứ gõ hoài, gõ miết trên màn hình nó cũng ko ra đâu.  B) B)

Anh #Bee, anh #Két xù có kinh nghiệm 15-16 năm ... cầm đuôi chuột. Vậy bạn gọi anh ấy là anh hay bạn thì tùy  :P  hê hê..

Viết cho bạn code trong trường hợp này...

 

Cảm ơn A Công. Đó là lisp em mong muốn.

Em muốn hỏi them chút nữa: lisp ở bài #3. Em muốn thay vì tổng hợp các chiều dài giống nhau theo từng layer thì bây giờ em không muốn như thế nữa. Em muốn nó xuất chiều dài (có bảng theo layer) nhưng không tổng hợp số lượng nữa.

https://drive.google.com/file/d/0B7RFgrbUdYzzc2ZQZ0R2dnFsYUU/view?usp=sharing

Tương tự như câu hỏi ở bài #14 http://www.cadviet.com/forum/topic/64022-yeu-cau-lisp-thong-ke-doan-thang/

Trân trọng!

  • Vote giảm 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  sửa luôn trong lisp bác #Ha < bên dưới này > cho bạn. Bạn copy về xem thế nào. Bạn nên cám ơn những người cống hiến vì diễn đàn nhiều như bác Kết vs bác Bee kia kìa. :) Mình đi học mót thôi, trình còn gà lắm.

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/topic/55599-yeu-cau-lisp-lay-gia-tri-cua-dimenson-text-va-xuat-ra-file-text/


(defun C:HA( / lst fn fw index x y z txt)	;Doan Van Ha Cadviet.com

 (princ "\nChon cac Text/Mtext/Dimension can xuat ra file...")

 (setq lst (acet-ss-to-list (ssget '((0 . "*TEXT,DIMENSION"))))

       	fn (getfiled "Chon file de save" "" "csv" 1)

       	fw (open fn "w")

       	index 0 x 1 y 1 z 1)

 (repeat (length lst)

  (cond

   ((= (cdr (assoc 0 (entget (nth index lst)))) "TEXT") (setq txt (strcat (cdr (assoc 1 (entget (nth index lst)))) "," "text" (itoa x)) x (1+ x)))

   ((= (cdr (assoc 0 (entget (nth index lst)))) "MTEXT") (setq txt (strcat (cdr (assoc 1 (entget (nth index lst)))) "," "mtext" (itoa y)) y (1+ y)))

   ((= (cdr (assoc 0 (entget (nth index lst)))) "DIMENSION")

	(if (= (cdr (assoc 1 (entget (nth index lst)))) "")

 	(setq txt (strcat (rtos (cdr (assoc 42 (entget (nth index lst))))) "," "dim" (itoa z) "," (cdr (assoc 8 (entget (nth index lst))))) z (1+ z))

 	(setq txt (strcat (cdr (assoc 1 (entget (nth index lst)))) "," "dim" (itoa z)  "," (cdr (assoc 8 (entget (nth index lst))))) z (1+ z)))))

  (princ (strcat txt "\n") fw)

  (setq index (1+ index)))

 (close fw))



  • 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  sửa luôn trong lisp bác #Ha < bên dưới này > cho bạn. Bạn copy về xem thế nào. Bạn nên cám ơn những người cống hiến vì diễn đàn nhiều như bác Kết vs bác Bee kia kìa. :) Mình đi học mót thôi, trình còn gà lắm.

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/topic/55599-yeu-cau-lisp-lay-gia-tri-cua-dimenson-text-va-xuat-ra-file-text/


(defun C:HA( / lst fn fw index x y z txt)	;Doan Van Ha Cadviet.com

 (princ "\nChon cac Text/Mtext/Dimension can xuat ra file...")

 (setq lst (acet-ss-to-list (ssget '((0 . "*TEXT,DIMENSION"))))

       	fn (getfiled "Chon file de save" "" "csv" 1)

       	fw (open fn "w")

       	index 0 x 1 y 1 z 1)

 (repeat (length lst)

  (cond

   ((= (cdr (assoc 0 (entget (nth index lst)))) "TEXT") (setq txt (strcat (cdr (assoc 1 (entget (nth index lst)))) "," "text" (itoa x)) x (1+ x)))

   ((= (cdr (assoc 0 (entget (nth index lst)))) "MTEXT") (setq txt (strcat (cdr (assoc 1 (entget (nth index lst)))) "," "mtext" (itoa y)) y (1+ y)))

   ((= (cdr (assoc 0 (entget (nth index lst)))) "DIMENSION")

	(if (= (cdr (assoc 1 (entget (nth index lst)))) "")

 	(setq txt (strcat (rtos (cdr (assoc 42 (entget (nth index lst))))) "," "dim" (itoa z) "," (cdr (assoc 8 (entget (nth index lst))))) z (1+ z))

 	(setq txt (strcat (cdr (assoc 1 (entget (nth index lst)))) "," "dim" (itoa z)  "," (cdr (assoc 8 (entget (nth index lst))))) z (1+ z)))))

  (princ (strcat txt "\n") fw)

  (setq index (1+ index)))

 (close fw))



Vâng! Không chỉ có Anh #ket; Anh #Bee; Anh #Ha mà còn có cả Anh nữa. Nếu không có tất cả mọi người thì bọn em vẫn đang hì hục làm thủ công. Vừa chậm, vừa không chuyên nghiệp.

Anh #DANH CONG xem lại hộ em nhé. Lisp không chạy được.

Và em cũng có nhờ mọi người xem lại mấy lisp, anh cũng ngó qua coi dzum em.

1. Lisp lấy giá trị của dimension từ giá trị của anh #ket: Anh đang xem nhưng em test thì thấy nó chưa hoạt động.

2. Lisp của A #KET em muốn giữ nguyên các đường gióng.

3. Lisp đếm chiều dài đối tượng và xuất ra excel. Em không muốn nó tổng hợp nữa. Mà để nguyên các giá trị đó. Tương tự như câu hỏi ở bài #14 http://www.cadviet.com/forum/topic/64022-yeu-cau-lisp-thong-ke-doan-thang/

 

Cảm ơn Anh!

  • Vote giảm 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

Bạn nói rõ hơn được ko. Không chạy được là không chạy ở phần nào. ?

Mình tải y đoạn code bác Hà. Chạy lệnh "Ha", chọn các dimension... vẫn ra số liệu ầm ầm :)

DXF 1 của Dimension còn trường hợp này nữa: <> displays the (automatic) Measurement Value.

(​Sau khi chạy lisp của Ket thì dxf 1 của dim được chuyển về: "<>\\P   "

  • 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

DXF 1 của Dimension còn trường hợp này nữa: <> displays the (automatic) Measurement Value.

(​Sau khi chạy lisp của Ket thì dxf 1 của dim được chuyển về: "<>\\P   "

Anh #DANHCONG : Lỗi y như #quocmanh04tt nói đấ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

Anh #DANHCONG : Lỗi y như #quocmanh04tt nói đấy ạ!

Bạn có thể đăng 1 bản vẽ lên để mình sửa được không?

#Anh Quốc Mạnh. : Đúng là lisp bỏ qua trường hợp này

  • 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

Bạn có thể đăng 1 bản vẽ lên để mình sửa được không?

#Anh Quốc Mạnh. : Đúng là lisp bỏ qua trường hợp này

Đây là các đề nghị của em. Cái nào giải quyết đúng, chưa đúng em đều ghi rõ rồi Anh nhé:

https://drive.google.com/open?id=0B7RFgrbUdYzzTFdldlJzTVJIdnM

Trân trọ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

Đây là các đề nghị của em. Cái nào giải quyết đúng, chưa đúng em đều ghi rõ rồi Anh nhé:

https://drive.google.com/open?id=0B7RFgrbUdYzzejVpTThNcGlwQ2c

Trân trọng!

Mình xài Cad Version 2012 bạn ơi !..... Bản vẽ đời cao hơn ko xài đượ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

Em đã sửa lại đường link rồi nhé 

https://drive.google.com/open?id=0B7RFgrbUdYzzTFdldlJzTVJIdnM

Mình có ghé qua chỗ Anh #quocmanh04tt và được giải đáp giùm.

Xin chia sẻ với tất cả mọi người nếu thấy cần thiết 

https://drive.google.com/file/d/0B2LetfHDljPGUThCUGJfV3FuWVU/view

Các Anh nếu ghé thăm, có thể xem qua và chia sẻ thêm.

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 có ghé qua chỗ Anh #quocmanh04tt và được giải đáp giùm.

Xin chia sẻ với tất cả mọi người nếu thấy cần thiết 

https://drive.google.com/file/d/0B2LetfHDljPGUThCUGJfV3FuWVU/view

Các Anh nếu ghé thăm, có thể xem qua và chia sẻ thêm.

 

+ Xem file bạn gửi, hình như đang sử dụng món QuickDim của anh Kết. ^^.

+ Anh QuocManh xài file .Fas thì mọi người ko hiểu kết cấu bên trong lisp. Nên bạn chia sẻ file mà ko có "Hướng dẫn sử dụng " thì ko ai xài được đâu . Hề hề. Dù sao thì nó cũng là vấn đề bản quyền tác giả.

  • 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

+ Xem file bạn gửi, hình như đang sử dụng món QuickDim của anh Kết. ^^.

+ Anh QuocManh xài file .Fas thì mọi người ko hiểu kết cấu bên trong lisp. Nên bạn chia sẻ file mà ko có "Hướng dẫn sử dụng " thì ko ai xài được đâu . Hề hề. Dù sao thì nó cũng là vấn đề bản quyền tác giả.

http://www.cadviet.com/upfiles/7/162051_dim_nhieu_doi_tuong_cung_luc_1.dwg

nhờ anh viết giúp lisp dìm nhiều đối tượng cùng lúc nha

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

http://www.cadviet.com/upfiles/7/162051_dim_nhieu_doi_tuong_cung_luc_1.dwg

nhờ anh viết giúp lisp dìm nhiều đối tượng cùng lúc nha

Lisp QDD chỉ áp dụng với đường Line thôi, còn cái bạn cần dim là Pline. Nên bạn "X" các đường Pline rồi sử dụng lại lệnh QDD

  • 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

Lisp QDD chỉ áp dụng với đường Line thôi, còn cái bạn cần dim là Pline. Nên bạn "X" các đường Pline rồi sử dụng lại lệnh QDD

ban cho minh xin lisp QDD nha

  • Vote giảm 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

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  

×