Đến nội dung


Hình ảnh
- - - - -

[Xin] Lisp cộng Dimension


  • Please log in to reply
26 replies to this topic

#1 toana3

toana3

    Chưa sử dụng CAD

  • Members
  • Pip
  • 2 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 29 January 2010 - 02:04 PM

Em làm cái quy hoạch thoát nước .Khi ghi chiều dài cống em ghi bằng Dimension .Nghe có lisp tính tổng chiều dài theo Dimension nhưng tìm hoài mà không thấy .Bác nào có hay viết được chỉ giùm em cái .Cảm ơn Cadviet rất nhiều .
  • 0

#2 dkkx3a

dkkx3a

    biết lệnh trim

  • Members
  • PipPipPip
  • 190 Bài viết
Điểm đánh giá: 57 (tàm tạm)

Đã gửi 08 February 2010 - 01:39 PM

Bạn nói rõ hơn, có phải cộng các số kết quả trong dimension phải không, Các dimension của bạn có ghi chú không?, nói chung là cho anh em xem file cad của bạn thì mới giúp được, ............!
  • 0
TỰ SỰ
Biển vào chiều buồn giữa cô liêu
Sóng vỗ bờ bạc đầu con nước
Khi biển động như lòng ta chợt động
Biển ồn ào nhưng thực rất dịu êm.......

#3 thanhlamct

thanhlamct

    biết lệnh offset

  • Members
  • PipPipPip
  • 176 Bài viết
Điểm đánh giá: 70 (tàm tạm)

Đã gửi 08 February 2010 - 02:48 PM

Mình thường làm thế này: coppy các Dim ra rồi explode thành các text. Rồi dùng Lisp cộng Text có trong diễn đàn cộng lại là OK.
Nếu có lisp cộng cả Dim nữa thì tuyệt quá. Nhờ các cao thủ.
  • 0

#4 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 08 February 2010 - 03:16 PM

Mình thường làm thế này: coppy các Dim ra rồi explode thành các text. Rồi dùng Lisp cộng Text có trong diễn đàn cộng lại là OK.
Nếu có lisp cộng cả Dim nữa thì tuyệt quá. Nhờ các cao thủ.

Đây nè bạn :
Bai viet so 2082 - Viet lisp theo yeu cau
  • 1

#5 thanhlamct

thanhlamct

    biết lệnh offset

  • Members
  • PipPipPip
  • 176 Bài viết
Điểm đánh giá: 70 (tàm tạm)

Đã gửi 08 February 2010 - 04:11 PM

Cảm ơn bác Tue_NV.
Bác có thể nâng cấp thêm một chút là cộng Dim theo Style được không?
Ví dụ như trong bản vẽ em có nhiều Dim style như trong file em gửi kèm. Em chỉ muốn cộng những Dim của từng Style một thôi.
File: http://www.cadviet.c...s/2/congdim.dwg
  • 0

#6 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 08 February 2010 - 04:57 PM

Cảm ơn bác Tue_NV.
Bác có thể nâng cấp thêm một chút là cộng Dim theo Style được không?
Ví dụ như trong bản vẽ em có nhiều Dim style như trong file em gửi kèm. Em chỉ muốn cộng những Dim của từng Style một thôi.
File: http://www.cadviet.c...s/2/congdim.dwg

Bạn thay dòng này trong code :
(setq ss (ssget '((0 . "DIMENSION"))))

Bằng dòng này :
(setq ss (ssget (list (cons 0 "DIMENSION")
(assoc 3 (entget(car(entsel "\n Pick chon DIMENSION mau :"))))
)
)
)

  • 2

#7 bosstuyentn

bosstuyentn

    biết vẽ line

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

Đã gửi 09 February 2010 - 03:30 PM

Em làm cái quy hoạch thoát nước .Khi ghi chiều dài cống em ghi bằng Dimension .Nghe có lisp tính tổng chiều dài theo Dimension nhưng tìm hoài mà không thấy .Bác nào có hay viết được chỉ giùm em cái .Cảm ơn Cadviet rất nhiều .


Lần truớc mình cũng tìm lisp tính tổng chiều dài, ko phải đo từng đoạn rùi cộng lại, kể cả cong hay thẳng. không biết có phải bạn tìm cái này ko.
Tinh Tong line
Cách dùng : sau khi load chỉ cần gõ lệnh " tl " và click vào đối tuợng và enter sẽ thông báo chiều dài của đối tuợng
  • 0
Tiền không phải là tất cả nhưng ko có tiền chả làm được cái gì hết...

WinPower -Thiết bị ngành điện, trạm điện, an ninh, PCCC
Hình đã gửi

#8 tvgtyb08

tvgtyb08

    biết vẽ spline

  • Members
  • PipPip
  • 92 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 23 March 2011 - 01:37 PM

Trước em thấy có lisp Congdim mà giờ không tìm thấy, em chỉ tìm thấy cái này
(defun c:Trudim(/ ss n i S duyet ent sst nt j St duyett entt Skq) (prompt "\n Chon cac Dim lam so bi tru :") (setq ss (ssget '((0 . "DIMENSION")))) (prompt "\n Chon cac Dim lam so tru :") (setq sst (ssget '((0 . "DIMENSION")))) (setq n (sslength ss) i 0 S 0 duyet 0) (setq nt (sslength sst) j 0 St 0 duyett 0) (while (< i n) (setq ent (entget(ssname ss i))) (if (= (cdr(assoc 1 ent)) "") (setq duyet (cdr(assoc 42 ent))) (setq duyet (atof(cdr(assoc 1 ent)))) ) (setq S (+ S duyet)) (setq i (1+ i)) ) (while (< j nt) (setq entt (entget(ssname sst j))) (if (= (cdr(assoc 1 entt)) "") (setq duyett (cdr(assoc 42 entt))) (setq duyett (atof(cdr(assoc 1 entt)))) ) (setq St (+ St duyett)) (setq j (1+ j)) ) (setq Skq (- S St)) (alert (rtos Skq 2 0)) (princ) ) 
Ai có lisp congdim cho em xin với.
Cảm ơn!
  • 0

#9 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 23 March 2011 - 03:11 PM

Trước em thấy có lisp Congdim mà giờ không tìm thấy, em chỉ tìm thấy cái này

(defun c:Trudim(/ ss n i S duyet ent sst nt j St duyett entt Skq) (prompt "\n Chon cac Dim lam so bi tru :") (setq ss (ssget '((0 . "DIMENSION")))) (prompt "\n Chon cac Dim lam so tru :") (setq sst (ssget '((0 . "DIMENSION")))) (setq n (sslength ss) i 0 S 0 duyet 0) (setq nt (sslength sst) j 0 St 0 duyett 0) (while (< i n) (setq ent (entget(ssname ss i))) (if (= (cdr(assoc 1 ent)) "") (setq duyet (cdr(assoc 42 ent))) (setq duyet (atof(cdr(assoc 1 ent)))) ) (setq S (+ S duyet)) (setq i (1+ i)) ) (while (< j nt) (setq entt (entget(ssname sst j))) (if (= (cdr(assoc 1 entt)) "") (setq duyett (cdr(assoc 42 entt))) (setq duyett (atof(cdr(assoc 1 entt)))) ) (setq St (+ St duyett)) (setq j (1+ j)) ) (setq Skq (- S St)) (alert (rtos Skq 2 0)) (princ) ) 
Ai có lisp congdim cho em xin với.
Cảm ơn!

Bạn thay dòng này:
(setq Skq (- S St)) thành (setq Skq (+ S St))
  • 1
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#10 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 23 March 2011 - 04:16 PM

Bạn thử xem
(defun c:congdim(/ S)
(setq S 0)
(foreach x (acet-ss-to-list (ssget '((0 . "DIMENSION"))))
(setq S (+ S (cdr(assoc 42 (entget x)))))
)
(alert (rtos S 2 0)) (princ))

  • 3

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


#11 tvgtyb08

tvgtyb08

    biết vẽ spline

  • Members
  • PipPip
  • 92 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 24 March 2011 - 09:41 AM

Bạn thử xem

(defun c:congdim(/ S)
(setq S 0)
(foreach x (acet-ss-to-list (ssget '((0 . "DIMENSION"))))
(setq S (+ S (cdr(assoc 42 (entget x)))))
)
(alert (rtos S 2 0)) (princ))

Em cảm ơn các anh,
Nếu dùng lisp trudim rồi thay đoạn (setq Skq (- S St)) thành (setq Skq (+ S St)) thì khi bao hết DIM cần cộng lại nó ko ra kết quả mà phải Enter xong chọn tiếp 1 DIM nữa mới tính được.
  • 0

#12 thichhoabinh

thichhoabinh

    biết vẽ circle

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

Đã gửi 24 March 2011 - 09:49 AM

Vì về cơ bản lisp trừ dim nó chọn 2 lần : lần 1 : các dim bị trừ (S), lần 2 : các dim trừ (St). Skq = S bị trừ - S trừ
(setq Skq (- S St))
Nếu thay dấu - thành dấu + thì vẫn phải thực hiện 2 lần chọn như thế, và ra kết quả tổng dim 2 lần chọn :)
  • 0

#13 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 24 March 2011 - 10:07 AM

Vì về cơ bản lisp trừ dim nó chọn 2 lần : lần 1 : các dim bị trừ (S), lần 2 : các dim trừ (St). Skq = S bị trừ - S trừ
(setq Skq (- S St))
Nếu thay dấu - thành dấu + thì vẫn phải thực hiện 2 lần chọn như thế, và ra kết quả tổng dim 2 lần chọn :)

Hề hề!
Tại dạo này mình bận quá ngại viết lại nên sửa nhanh cho bạn như thế. Muốn chuẩn thì dùng lisp của ketxu bên trên là ngon rồi.
  • 0
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#14 tvgtyb08

tvgtyb08

    biết vẽ spline

  • Members
  • PipPip
  • 92 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 27 March 2011 - 02:21 PM

Hề hề!
Tại dạo này mình bận quá ngại viết lại nên sửa nhanh cho bạn như thế. Muốn chuẩn thì dùng lisp của ketxu bên trên là ngon rồi.

Em cảm ơn các anh.
  • 0

#15 anonmyous

anonmyous

    biết vẽ arc

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

Đã gửi 31 March 2011 - 05:01 PM

cái này ý bác là cộng theo giá trị ghi trong DIMENSION hay giá trị thực tế, gặp bản vẽ ma số thì sao
  • 0

#16 hoàngbìnhan

hoàngbìnhan

    biết lệnh move

  • Members
  • PipPipPip
  • 128 Bài viết
Điểm đánh giá: 24 (tàm tạm)

Đã gửi 01 April 2011 - 09:54 AM

Sao em không cộng được nhỉ?
  • 0

#17 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 01 April 2011 - 10:12 AM

cái này ý bác là cộng theo giá trị ghi trong DIMENSION hay giá trị thực tế, gặp bản vẽ ma số thì sao

Mã 42 là giá trị thực tế bạn ạ ^^, còn nếu gặp bản vẽ ma số thì tốt nhất dùng cộng text chứ khỏi cộng dim :)
( có thê kiểm tra mã dxf 1 để làm cơ sở ^^)

Sao em không cộng được nhỉ?

Ừ nhỉ, sao thế bạn nhỉ :rolleyes:
  • 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


#18 w1nDream

w1nDream

    biết lệnh ddedit

  • Members
  • PipPipPipPip
  • 293 Bài viết
Điểm đánh giá: 73 (tàm tạm)

Đã gửi 28 November 2012 - 04:34 PM

Bác Ketxu hãy phát triển thêm phần cho ghi ra text mới hoặc ghi đè text cũ (có thể lấy 2 số sau dấu phẩy), sau đó thì đổi mầu kết quả để dễ kiểm tra, và lúc đấy không cần phần alert nữa
Em nghĩ với các Lisp khác cũng vậy nên có lựa chọn và cách thay đổi kết quả để kiểm soát tốt hơn.TKs
  • 0
__Tâm tựa lưu thủY__
Vi nhân nan

#19 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 28 November 2012 - 05:32 PM

Phần này trên 4r nhiều quá r mà, bạn cứ tìm lisp nào đó có hàm ghi text, sửa text mà dùng thui. ngày xưa mình k biết j về lisp cũng phải lần mò, hồi là ra, chứ gọi là phát triển ngại quá, khì
  • 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


#20 w1nDream

w1nDream

    biết lệnh ddedit

  • Members
  • PipPipPipPip
  • 293 Bài viết
Điểm đánh giá: 73 (tàm tạm)

Đã gửi 29 November 2012 - 10:00 AM

Tks bác đã để ý.Em cũng thử copy các đoạn mã gắn vào nhưng do mù tịt về lisp nên chưa ra được kết quả.
Nếu được bác làm VD cho e 1 cái rồi bôi màu đoạn code và hướng dẫn e 1 tí thì tuyệt.Em cũng hay thích chế các lisp từ lisp có sẵn để phù hợp với công việc của mình nhưng tài năng có hạn nên đôi lúc cũng là ăn may mới được.^^.mong bác và mọi người đừng cười.Hj
  • 0
__Tâm tựa lưu thủY__
Vi nhân nan