Đến nội dung


Hình ảnh
- - - - -

[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 ^^


  • Please log in to reply
16 replies to this topic

#1 ptd1987

ptd1987

    biết vẽ ellipse

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

Đã gửi 03 April 2016 - 04:11 AM

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

 


  • 0

#2 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 03 April 2016 - 08:53 AM

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 


  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3 ptd1987

ptd1987

    biết vẽ ellipse

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

Đã gửi 13 April 2016 - 06:36 PM

:wub: Hóng ketxu =]] .Chọn nhiều L1 cùng lúc vì dầm liên tục nhiều nhịp mà, mỗi lần chọn 1 cái cũng hơi bất tiện <_<


  • -1

#4 pphung183

pphung183

    biết dimstyle

  • Members
  • PipPipPipPipPip
  • 384 Bài viết
Điểm đánh giá: 425 (tốt)

Đã gửi 14 April 2016 - 01:13 PM

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.c...l__chia_dim.rar


  • 2

#5 ptd1987

ptd1987

    biết vẽ ellipse

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

Đã gửi 14 April 2016 - 10:18 PM

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


  • 0

#6 pphung183

pphung183

    biết dimstyle

  • Members
  • PipPipPipPipPip
  • 384 Bài viết
Điểm đánh giá: 425 (tốt)

Đã gửi 15 April 2016 - 10:18 AM

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.c..._chia_dim_2.rar

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

 


Bài viết đã được chỉnh sửa nội dung bởi pphung183: 15 April 2016 - 10:44 AM

  • 3

#7 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

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

Đã gửi 15 April 2016 - 03:37 PM

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

#8 pphung183

pphung183

    biết dimstyle

  • Members
  • PipPipPipPipPip
  • 384 Bài viết
Điểm đánh giá: 425 (tốt)

Đã gửi 15 April 2016 - 07:17 PM

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


  • 1

#9 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 15 April 2016 - 08:58 PM

(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)


  • 1

#10 pphung183

pphung183

    biết dimstyle

  • Members
  • PipPipPipPipPip
  • 384 Bài viết
Điểm đánh giá: 425 (tốt)

Đã gửi 15 April 2016 - 09:14 PM

(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...p?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  :)


  • 1

#11 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

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

Đã gửi 15 April 2016 - 09:41 PM

Em làm gần giống bác ndtnv.

Bác thử test của em cái! Xem còn lỗi không! (lệnh L1, L2):

http://www.cadviet.c...1736_l1l2_1.rar


  • 1

#12 ptd1987

ptd1987

    biết vẽ ellipse

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

Đã gửi 16 April 2016 - 08:04 AM

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:


  • 0

#13 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

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

Đã gửi 16 April 2016 - 09:05 AM

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

http://www.cadviet.c.../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í đó).


  • 1

#14 ptd1987

ptd1987

    biết vẽ ellipse

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

Đã gửi 16 April 2016 - 09:56 AM

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.c.../112169_stt.lsp


  • 0

#15 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 16 April 2016 - 11:02 AM

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

http://www.cadviet.c.../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. 


  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#16 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

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

Đã gửi 16 April 2016 - 05:51 PM

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.c.../112169_stt.lsp

Sửa lại lệnh (LL): http://www.cadviet.c...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à!


  • 0

#17 pphung183

pphung183

    biết dimstyle

  • Members
  • PipPipPipPipPip
  • 384 Bài viết
Điểm đánh giá: 425 (tốt)

Đã gửi 17 April 2016 - 02:25 PM

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))


  • 2