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.
Đăng nhập để thực hiện theo  
ptd1987

[Yêu Cầu] Nhờ Các Bác Viết Dùm Lisp Này Cho Ae Xd Triển Khai Kết Cấu ^^

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

ptd1987    5

Do phải vẽ kết cầu dầm lặp lại nhiều lần nên rất mệt và dễ nhầm lẫm vì mỗi dầm một chiều dài khác nhau nên nhờ các bác viết dùm 1 lisp như sau

Mô tả: L1 chia 4, làm tròn lên thành bội số 50, vd: 3150/4= 787.5 làm tròn lên thành 800, chia dim 3150 thành 3 dim 800-1550-800

Mô tả: L2 chia 6, làm tròn xuống thành bội số 50, vd: 3150/6= 525 làm tròn xuống thành 500, chia dim 3150 thành 3 dim 500-2150-500

Lệnh: L1 > chọn các L1( dầm nhiều nhịp) >enter> xong

Lệnh: L2 > chọn các L2 ( dầm nhiều nhịp)>enter> xong

 

Ban đầu:

 

d7r8qoufna8tm2f26.gif

 

Kết quả:

 

d7r93vno36o9x6hfi.gif

 

Thanks các bác đã dành chút thời gian đọc bài của em !!

Xin đính kèm file: http://www.cadviet.com/upfiles/5/112169_chia_dim.dwg

 

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
ketxu    2.653

Cái này hình như mình viết rồi, rải thép đai lun, của bạn ít hơn . N thao tác chọn L1 của bạn là chọn cái dim 3150 hả :) Xem lúc nào rảnh ket sử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
pphung183    425

Do phải vẽ kết cầu dầm lặp lại nhiều lần nên rất mệt và dễ nhầm lẫm vì mỗi dầm một chiều dài khác nhau nên nhờ các bác viết dùm 1 lisp như sau

Mô tả: L1 chia 4, làm tròn lên thành bội số 50, vd: 3150/4= 787.5 làm tròn lên thành 800, chia dim 3150 thành 3 dim 800-1550-800

Mô tả: L2 chia 6, làm tròn xuống thành bội số 50, vd: 3150/6= 525 làm tròn xuống thành 500, chia dim 3150 thành 3 dim 500-2150-500

Lệnh: L1 > chọn các L1( dầm nhiều nhịp) >enter> xong

Lệnh: L2 > chọn các L2 ( dầm nhiều nhịp)>enter> xong

 

Ban đầu:

 

d7r8qoufna8tm2f26.gif

 

Kết quả:

 

d7r93vno36o9x6hfi.gif

 

Thanks các bác đã dành chút thời gian đọc bài của em !!

Xin đính kèm file: http://www.cadviet.com/upfiles/5/112169_chia_dim.dwg

Hóng lâu wa roi hả :D  . Chay thử Lisp này xem có trúng ý ko nha :)

http://www.cadviet.com/upfiles/5/127397_lll__chia_dim.rar

  • 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
ptd1987    5

Lisp hoạt động ngon quá, mà do yêu cầu của mình đưa ra chưa dc rõ ràng lắm nên có KQ chưa dc như mong muốn !

Bài toán mình đặt ra mới là trường hợp KQ thứ 2, thiếu trường hợp KQ thứ 1 =]]]

Mô tả: L1 chia 4  có 2 trường hợp:

1) KQ ra có đuôi dạng _50 hoặc _00 thì giữ nguyên không làm tròn gì cả, vd: 4000/4= 1000 (đuôi _00), chia dim L1 thành 3 dim: 1000-2000-1000, tương tự 5000/4 = 1250-2500-1250 (đuôi _50)

2) Các trường hợp khác làm tròn lên thành bội số 50, vd: 3150/4= 787.5 làm tròn lên thành 800, chia dim 3150 thành 3 dim 800-1550-800

Mô tả: L2 chia 6 có 2 trường hợp:

1) KQ ra có đuôi dạng _50 hoặc _00 thì giữ nguyên không làm tròn gì cả, vd: 5100/6= 850 (đuôi 50), chia dim L1 thành 3 dim: 850-3400-850, tương tự 6000/6 = 1000-4000-1000 (đuôi _00)

2) Các trường hợp khác làm tròn xuống thành bội số 50, vd: 3150/6= 525 làm tròn xuống thành 500, chia dim 3150 thành 3 dim 500-2150-500

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
pphung183    425

Lisp hoạt động ngon quá, mà do yêu cầu của mình đưa ra chưa dc rõ ràng lắm nên có KQ chưa dc như mong muốn !

Bài toán mình đặt ra mới là trường hợp KQ thứ 2, thiếu trường hợp KQ thứ 1 =]]]

Mô tả: L1 chia 4  có 2 trường hợp:

1) KQ ra có đuôi dạng _50 hoặc _00 thì giữ nguyên không làm tròn gì cả, vd: 4000/4= 1000 (đuôi _00), chia dim L1 thành 3 dim: 1000-2000-1000, tương tự 5000/4 = 1250-2500-1250 (đuôi _50)

2) Các trường hợp khác làm tròn lên thành bội số 50, vd: 3150/4= 787.5 làm tròn lên thành 800, chia dim 3150 thành 3 dim 800-1550-800

Mô tả: L2 chia 6 có 2 trường hợp:

1) KQ ra có đuôi dạng _50 hoặc _00 thì giữ nguyên không làm tròn gì cả, vd: 5100/6= 850 (đuôi 50), chia dim L1 thành 3 dim: 850-3400-850, tương tự 6000/6 = 1000-4000-1000 (đuôi _00)

2) Các trường hợp khác làm tròn xuống thành bội số 50, vd: 3150/6= 525 làm tròn xuống thành 500, chia dim 3150 thành 3 dim 500-2150-500

Đã update :) . Chơi luôn chia Dim xiên , đứng ....Hạn chế : Chỉ sử dụng cho Dimstyle có dimlfac = 1 (Do làm theo bản vẽ của bạn :D  ). Nên sẽ ko đúng với mọi dimstype :lol:

http://www.cadviet.com/upfiles/5/127397_lll__chia_dim_2.rar

Rảnh rỗi sẽ update tiếp :D

 

Chỉnh sửa theo pphung183
  • Vote tăng 3

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
quocmanh04tt    385

Có lẽ bác pphung183 phức tạp hóa vấn đề, nếu bác entmake từ data của thằng dim cũ thì không phụ thuộc vào DIMLFAC và STYLE (Chỉ thay đổi dxf13 và 14).

Hình như lisp cũ có chơi cả dim xiên rồi mà???

  • 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
pphung183    425

Có lẽ bác pphung183 phức tạp hóa vấn đề, nếu bác entmake từ data của thằng dim cũ thì không phụ thuộc vào DIMLFAC và STYLE (Chỉ thay đổi dxf13 và 14).

Hình như lisp cũ có chơi cả dim xiên rồi mà???

1/ Trong truong hợp này change data không như bạn nghĩ :) . Thử đơn giản :

(defun c:changdata (/ dxf lst pt1 pt2 en)

(defun dxf (code en) (cdr (assoc code (entget en))) )

(setq en (car (entsel)))

(setq lst (vl-remove-if '(lambda (x) (member (car x) '(-1 5 13 14))) (entget en)))

(setq pt1 (dxf 13 en) pt11 (polar pt1 0 100) pt2 (dxf 14 en))

(entmakex (append lst (list (cons 13 pt1) (cons 14 pt11)))) )

thì lúc đó xem Dim mới sẽ chạy đâu ....

2/ Hình như lisp cũ có chơi cả dim xiên rồi mà??? :

Lisp cũ bị lỗi khi điểm p13 ở góc 0 <ang< pi/2, p14 ở góc pi <ang< 3pi/2

  • 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
ndtnv    397

(setq lst(vl-remove-if ''((x)(vl-position (car x) '(-1 330 5 1 2  102 310 300 330 331 340 350 390 410))) (entget en)))

Dùng subst thay cho append cho dxf 13, 14 mới và (rem (dxf 70 lst) 128)

  • 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
pphung183    425

(setq lst(vl-remove-if ''((x)(vl-position (car x) '(-1 330 5 1 2  102 310 300 330 331 340 350 390 410))) (entget en)))

Dùng subst thay cho append cho dxf 13, 14 mới và (rem (dxf 70 lst) 128)

Vâng, tôi biết vấn đề này...phức tạp để nhớ và CAB đã có viết một hàm về Entmake DIMENTION và HATCH.

Bạn tham khảo :

https://www.theswamp.org/index.php?topic=4814.15

Tôi thì theo hướng khác và cũng đã giải quyết việc update này cho mọi loại Dimstyle  :)

  • 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
ptd1987    5

Các bác nhiệt tình quá em xin chân thành cám ơn !

Em mới download về test thử với nhiều k/c bất kì thấy RẤT CHUẨN, ko thấy lỗi gì cả ^^

I love you all ^^

:P :D :lol: :wub:

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
quocmanh04tt    385

Gộp lại thành 1 lệnh (CDK), thêm cái Dialog cho nó mấu...! :D

http://www.cadviet.com/upfiles/5/141736_cdk.rar

141736_cdk.jpg

 

P/s: Có ghi nhớ vị trí của Dialog (tức là mình kéo hộp thoại sang vị trí khác thì lần sau hộp thoại xuất hiện vào vị trí đó).

  • 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
ptd1987    5

Hahaha nhìn hình người đẹp máu thật =]]]

Bác có thể đổi tên dùm em CDK thành LL ko cho nó tiện với em dc ko ạ ^^

À sẵn tiện em kiếm dc cái đánh STT bản vẽ của block ATT này hay quá nhưng chỉ nhập prefix dạng KC01

Bác có thể sửa dùm em nhập thêm suffix, vd: KC01/03 dc không ạ ^^

Em muốn nhập thêm hậu tố /03 để còn quản lý được bản vẽ đó nằm thứ mấy trong tổng bản vẽ

Người ta gọi là được voi đòi Hai Bà Trưng ^^

http://www.cadviet.com/upfiles/5/112169_stt.lsp

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
ketxu    2.653

Gộp lại thành 1 lệnh (CDK), thêm cái Dialog cho nó mấu...! :D

http://www.cadviet.com/upfiles/5/141736_cdk.rar

141736_cdk.jpg

 

P/s: Có ghi nhớ vị trí của Dialog (tức là mình kéo hộp thoại sang vị trí khác thì lần sau hộp thoại xuất hiện vào vị trí đó).

Chẳng có nhẽ báo vi phạm ^^ Tks các bác, ket lại học mót thêm được 1 chút. 

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
quocmanh04tt    385

Hahaha nhìn hình người đẹp máu thật =]]]

Bác có thể đổi tên dùm em CDK thành LL ko cho nó tiện với em dc ko ạ ^^

À sẵn tiện em kiếm dc cái đánh STT bản vẽ của block ATT này hay quá nhưng chỉ nhập prefix dạng KC01

Bác có thể sửa dùm em nhập thêm suffix, vd: KC01/03 dc không ạ ^^

Em muốn nhập thêm hậu tố /03 để còn quản lý được bản vẽ đó nằm thứ mấy trong tổng bản vẽ

Người ta gọi là được voi đòi Hai Bà Trưng ^^

http://www.cadviet.com/upfiles/5/112169_stt.lsp

Sửa lại lệnh (LL): http://www.cadviet.com/upfiles/5/141736_ll.rar

Còn cái lsp kia thì bạn nên sang Tp đó và nhờ bác GB sửa cho.

 

Chẳng có nhẽ báo vi phạm ^^ Tks các bác, ket lại học mót thêm được 1 chút. 

 

Vi phạm chỗ nào hả bác Ket??? Mót được cái gì vậy bác? Kiến thức cơ bản trên 4r mình 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
pphung183    425

Lisp làm theo hướng bác ndtnv (không dùng Active X) + gợi ý của bạn  quocmanh04tt

Post Tham Khảo :

(defun c:l1 (/ dxf mid ss i en lst e lf lm p13 p14 l ang pt lt1 x lg1 ptm13 ptm14 lmg)
(defun dxf (code en) (cdr (assoc code (entget en))) )
(defun mid (p1 p2) (mapcar '(lambda (x y) (* (+ x y) 0.5)) p1 p2) )
(command "undo" "be")
(setq ss (ssget '((0 . "dimension") (-4 . "<or") (70 . 32) (70 . 33) (-4 . "or>")))) 
(setq i (sslength ss)) (while (setq en (ssname ss (setq i (1- i)))) (setq lst (entget en))
(setq e (tblobjname "dimstyle" (dxf 3 en)) lf (dxf 144 e))
(setq lm (vl-remove-if '(lambda (x) (member (car x) (list -1 330 5 410 2))) lst))
(setq p13 (dxf 13 en) p14 (dxf 14 en) l (dxf 42 en) pt (mid p13 p14))
(setq lt1 (/ l 6) lt1 (- lt1 (setq x (* 100 (fix (/ lt1 100)))))
lt1 (/ (+ (cond ((> lt1 50) 100) ((= lt1 0) 0) (50)) x) lf) lg1 (- (/ l lf) (* 2 lt1)))
(setq ang (angle p13 p14) pm13 (polar pt ang (* lg1 0.5)) 
pm14 (polar pt (+ pi ang) (* lg1 0.5)))
(entmod (subst (cons 13 pm13) (assoc 13 lm) lst))
(entmakex (subst (cons 14 pm14) (assoc 14 lm) lm))
(setq lmg (subst (cons 13 pm14) (assoc 13 lm) lm))
(entmakex (subst (cons 14 pm13) (assoc 14 lmg) lmg)) )
(command  "undo" "e") (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

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  

×