Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
tuandoosan

Xin nhờ các cao thủ lisp do kích thước bao, xuất ra text...

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

tuandoosan    4

Em xin nhờ các cao thủ giúp e xem có biết lisp nào giải quyết được bài toán này giup e k ah?

 

Tình hình là e đang làm thống kê đo các kích thước của các tấm plate hình dạng bất kỳ (như hình vẽ). đo một 2 tấm thì không sao nhưng đây e phải đo hàng nghìn tấm, vậy e muốn nhờ các cao thủ xem có lisp nào giúp e xem có thể làm nhanh đk k ah?

 136020_1111.jpg

Yêu cầu:

 

1.       Quét cả hình để ra đk kích thước bao (giống như lệnh qdim), làm tròn số.

2.       Chọn đối tượng tiền tố

3.       So sánh 2 giá trị , chọn giá trị bé đứng trước lớn đứng sau, phân cách bởi dấu “x”

4.       Xuất kết quả:  “tiền tố x gtri nhỏ x giá trị lớn”

 

Làm sao có thể gộp được các bước lại là chi cần quét hình và chọn tiền tố là ra kết quả thì tốt.

 

Em xin cảm ơ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
tuandoosan    4

kích thước không có sẵn ah. e chỉ có hình k thui, kích thước mình p tự đo nên mới mất nhiều thời gian. hình là các đường line đơn giản thui ah.

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
Tot77    501

Line thì khó ah, nếu là pline thì bạn có thể quét 1000 cái pline xuất ra kết quả luôn, còn line thì bạn chỉ có thể quét từng cụm một và quét 1000 lần. Trên CV có lsp nối line thành pline, bạn nên làm cái công đoạn đó trước thì tốt cho bạn hơn. Tôi sẽ viết lsp chạy từ pline, ok?

  • 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
Tot77    501

Bạn thử cái này. Có thêm yêu cầu là cái text nên nổ thành text chứ đừng để mtext, và phải nằm bên trong tấm.

Gõ lệnh rồi quét hết các pline.

 

(vl-load-com)
(defun c:gkt (/ minp maxp txt cao pt pt1 pt2 h w get)
  (defun midp (d1 d2) (polar d1 (angle d1 d2) (* 0.5 (distance d1 d2))))
  (defun dxf(id v) (cdr (assoc id (entget v))))
  (defun getkt (lst)
    (defun near (l ham dau) (car (vl-sort l '(lambda (x y) (dau (ham x) (ham y))))))
    (list (near (vl-remove-if-not '(lambda (x) (equal (car x) (apply 'min (mapcar 'car lst)))) lst) cadr >)
 (near (vl-remove-if-not '(lambda (x) (equal (car x) (apply 'max (mapcar 'car lst)))) lst) cadr >) 
 (near (vl-remove-if-not '(lambda (x) (equal (cadr x) (apply 'min (mapcar 'cadr lst)))) lst) car >)
 (near (vl-remove-if-not '(lambda (x) (equal (cadr x) (apply 'max (mapcar 'cadr lst)))) lst) car >)
    )
  )
  
  (setq os (getvar 'osmode)) (setvar 'osmode 0)
  (foreach v (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "LWPOLYLINE"))))))
    (vla-getBoundingBox (vlax-ename->vla-object v) 'minp 'maxp)
    (setq minp (vlax-safearray->list minp)
 maxp (vlax-safearray->list maxp))
    (if (setq txt (ssget "C" minp maxp '((0 . "*TEXT"))))
      (progn
(setq cao (* 2 (cdr (assoc 40 (entget (setq txt (ssname txt 0))))))
     pt (polar (midp minp (list (car maxp) (cadr minp))) (* 0.5 pi) (- cao))
     pt1 (polar (midp maxp (list (car minp) (cadr maxp))) (* 0.5 pi) cao)
     pt2 (polar (midp maxp (list (car maxp) (cadr minp))) 0 cao)
     h  (abs (- (cadr maxp) (cadr minp))) 
     w  (abs (- (car maxp) (car minp)))       
     get (getkt (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget v))))
)
(command "dimlinear" (car get) (cadr get) pt1)
(command "dimlinear" (nth 2 get) (last get) pt2)
(entmake (list '(0 . "TEXT") (cons 10 pt)  (cons 11 pt) (cons 71 0) (cons 40 (* 0.5 cao)) (cons 73 3) (cons 72 1)
      (cons 1 (strcat (dxf 1 txt) "x" (rtos (min h w) 2 0) "x" (rtos (max h w) 2 0)))))
    ))
  )
  (setvar 'osmode os) (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
tuandoosan    4

Dear a,

 

E cảm ơn a đã nhiệt tình giúp đỡ, nhưng e k chạy đk lisp này. khi gõ lệnh thì hiện ra lỗi này ah.

 

136020_loi_cad.jpg

 

a có thể giúp e ktra lại đk k ah? e cảm ơn a nhiều !!!

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
tuandoosan    4

vẫn không đk đâu a ah. e tai về thì đk ctrinh nhu thế này đúng k ah?

 

136020_chuongtrinh_gkt.jpg

 

nhưng khi appload xong thi cad không nhận lệnh.

 

136020_loi_gkt.jpg

 

a ktra lại giúp e vs a. thanks a !!!

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
Doan Van Ha    2.676

Cad LT là phiên bản không cho sử dụng lsp,  bạn nên xài cad thường thôi. Hèn gì ko chạy dc.

Đóng góp thêm tí: tôi hồi trước có sử dụng Cad LT, đụng Lisp là bị lỗi. Nó chỉ hiểu 1 số hàm thôi, còn thì nó không hiểu.

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
Tot77    501

Vì vấn đề giá thành ( cad lt 2015 = 1200$ ; cad 2015 = 4200$) nên nhiều cty vẫn mua lt vì nghĩ nhân viên ko cần dùng lsp hay vba làm gì.

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
tuandoosan    4

vì cty phải mua bản quyền cad nên toàn mua cad LT thui vì thằng này nó rẻ hơn thằng Cad full. chán quá mất thui. Cad LT e vẫn chạy đk các lisp bt mà. bên e vẫn có 1 kho cac lisp. 

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
tuandoosan    4

Vâng! em cam ơn a. bên e dùng ctrinh CADSTA  Max 2011 rùi a ah. làm cho cty nước ngoài nên phần mềm nào cũng phải mua bản quyền. máy tính có đk cài linh tinh đâu. 

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


×