Đến nội dung


Hình ảnh
* * * - - 8 Bình chọn

Viết lisp theo yêu cầu [phần 2]


  • Chủ đề bị khóa Chủ đề bị khóa
3783 replies to this topic

#221 svba1608

svba1608

    Tưởng Thị Tú Khuyên

  • Moderator
  • PipPipPipPipPipPipPip
  • 601 Bài viết
Điểm đánh giá: 620 (tốt)

Đã gửi 04 October 2009 - 02:18 PM

Cảm ơn anh Tue_NV! Lần này thì em đã sử dụng được lisp trên rồi.
Đây là file bản vẽ em đã cố gắng nói rõ ý mình qua 3 bước: Input, Process và Output, và đã save sang định dạng Cad 2000.
Nhờ anh và mọi người xem giùm!
http://www.cadviet.c...cap_nuock_2.dwg

Chào svba1608
Đã cập nhật theo yêu cầu, bạn check lại nhé.

Rất cảm ơn anh gia_bach!
Anh gia_bach có thể xem giúp em về lisp của anh ở đây không?

Nhân tiện, em nhờ các anh viết thêm giùm em 1 lisp được mô tả trong bảng màu xanh ở file đính kèm phía trên. Với điều kiện là vòng tròn ở dạng wipeout.
Em xin cảm ơn!
  • 0
http://khuyen.space

#222 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 05 October 2009 - 07:13 AM

Cảm ơn anh Tue_NV! Lần này thì em đã sử dụng được lisp trên rồi.
Đây là file bản vẽ em đã cố gắng nói rõ ý mình qua 3 bước: Input, Process và Output, và đã save sang định dạng Cad 2000.
http://www.cadviet.c.../2/dienbien.dwg
....

Svba hãy sử dụng đoạn Code sau :

(defun c:sapxep(/ oldos ans pt nutdau cdnutdau chieudai cao pt2 cdai dkinh pt3 Nutcuoi cdNutcuoi)
(setvar "cmdecho" 0)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq ans "C")
(setq pt (getpoint "\nDiem dat Bang thong ke Text:" ))

(while pt
(if (setq Nutdau (entsel "\n Pick vao Nut dau :"))
(progn
(setq cao (cdr(assoc 40 (entget (car nutdau)) )))
(wtxt (cdr(assoc 1 (entget (car nutdau)) )) pt cao)
(command "MATCHPROP" (car nutdau) (entlast) "")
(entmod (subst (cons 50 0) (assoc 50 (entget(entlast))) (entget(entlast)) ))
)
)

(if (setq cdNutdau (entsel "\n Pick vao cao do Nut dau :"))
(progn
(setq cao (cdr(assoc 40 (entget (car cdnutdau)) )))
(setq pt2 (list (+ (car pt) (* 8 cao)) (cadr pt) (caddr pt)))
(wtxt (cdr(assoc 1 (entget (car cdnutdau)) )) pt2 cao)
(command "MATCHPROP" (car cdnutdau) (entlast) "")
(entmod (subst (cons 50 0) (assoc 50 (entget(entlast))) (entget(entlast)) ))
)
)

(if (setq chieudai (entsel "\n Pick vao chieu dai va duong kinh :"))
(progn
(setq cao (cdr(assoc 40 (entget (car chieudai)) )))
(setq pt2 (list (+ (car pt) (* 20 cao)) (cadr pt) (caddr pt)))
(wtxt (cdr(assoc 1 (entget (car chieudai)) )) pt2 cao)
(command "MATCHPROP" (car chieudai) (entlast) "")
(entmod (subst (cons 50 0) (assoc 50 (entget(entlast))) (entget(entlast)) ))
(setq cdai (substr (cdr(assoc 1 (entget (car chieudai)) )) 2 3))
(entmod (subst (cons 1 cdai) (assoc 1 (entget(entlast))) (entget(entlast)) ))
(setq pt3 (list (+ (car pt) (* 26 cao)) (cadr pt) (caddr pt)))
(setq dkinh (substr (cdr(assoc 1 (entget (car chieudai)) )) 7 9))
(command "copy" (entlast) "" pt2 pt3)
(entmod (subst (cons 1 dkinh) (assoc 1 (entget(entlast))) (entget(entlast)) ))
)
)

(if (setq Nutcuoi (entsel "\n Pick vao Nut cuoi :"))
(progn
(setq cao (cdr(assoc 40 (entget (car nutcuoi)) )))
(setq pt2 (list (+ (car pt) (* 22 cao)) (cadr pt) (caddr pt)))
(wtxt (cdr(assoc 1 (entget (car nutcuoi)) )) pt2 cao)
(command "MATCHPROP" (car nutcuoi) (entlast) "")
(entmod (subst (cons 50 0) (assoc 50 (entget(entlast))) (entget(entlast)) ))
)
)

(if (setq cdNutcuoi (entsel "\n Pick vao cao do Nut cuoi :"))
(progn
(setq cao (cdr(assoc 40 (entget (car cdnutcuoi)) )))
(setq pt2 (list (+ (car pt) (* 34 cao)) (cadr pt) (caddr pt)))
(wtxt (cdr(assoc 1 (entget (car cdnutcuoi)) )) pt2 cao)
(command "MATCHPROP" (car cdnutcuoi) (entlast) "")
(entmod (subst (cons 50 0) (assoc 50 (entget(entlast))) (entget(entlast)) ))
)
)
(initget "C K")
(setq ans (getkword "\n Ban muon thong ke tiep hay khong ?"))
(if (= ans "C")
(setq pt (list (car pt) (- (cadr pt) (* 4 cao)) (caddr pt)))
(setq pt nil)
);if

);while
(setvar "osmode" oldos)
(princ)
)
;
(defun wtxt (txt p h / sty)
(setq sty (getvar "textstyle"))
(entmake (list (cons 0 "TEXT") (cons 7 sty)
(cons 1 txt) (cons 10 p) (cons 11 p)
(cons 72 0) (cons 73 1)
(cons 40 h) (cons 41 1))
)
)

:cheers:
  • 1

#223 hdt4151

hdt4151

    biết vẽ pline

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

Đã gửi 05 October 2009 - 02:46 PM

Mình đang cần 1 lisp để quay viewport, mô tả như sau:

Có 1 file bình đồ, chuyển sang chế độ layout, muốn viewport quay 1 góc mà góc đó được tạo bởi 1 line mình chọn trong layout và trục Ox.

(Nếu làm thủ công thì sẽ phải vẽ 1 đường ngang, rồi đo góc của 1 line trong layout với đường ngang này, sau đó quay viewport 1 góc như vậy để biến đường xiên thành đường ngang bằng lệnh DV tw .... )

Cái này hình như có lệnh nhưng nghe nói chỉ dùng với cad2008 trở lên, còn mình đang xài cad2007

  • 0

#224 phamthanhhungks

phamthanhhungks

    biết vẽ polygon

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

Đã gửi 05 October 2009 - 08:36 PM

Đây là phần tiếp theo của topic Viết lisp theo yêu cầu, mời các bạn tiếp tục thảo luận.

Lâu lắm mới lên lại diễn đàn CAD việt, Chúc diễn đàn ngày càng phát triển.
Thank bác Hoành, bác SSG, bác Tuệ và ... Đã huớng dẫn nhiệt tình và giúp đỡ cho những aem mới vào nghề...
Như là 1 sự giúp đỡ khỏi đầu mới... hjhj

  • 0

#225 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 06 October 2009 - 02:44 PM

..............
cái lệnh ATTI có chức năng đánh số thứ tự các block thuộc tính ATTDEF
1- Ban đầu nó bắt chọn 1 block đại diện cho tất cả các block đó:
"Pick mot block de nhan dang:"
Hình đã gửi
2- Sau đó ta chọn 1 đối tượng trong thuộc tính: Ví dụ: "SO" hoặc " DIEN TICH" hoac khoi lượng "KHOILUONG". Em sẽ trọn "so"
3- Và chọn 1 miền chứa các block cùng thuộc tính
Hình đã gửi
=> kết quả: nó sẽ đánh số thứ tự tăng dần từ trái qua phải hoặc ngươc lại Trên đơn vị là "SO" mà ta đã chọn của các block
Đây là file cad của nó! http://www.cadviet.c...s/2/san_nen.dwg
....................

Chào MANHHUNGXDA
Gửi bạn Lisp có chức năng đánh số thứ tự các block thuộc tính ATTDEF theo yêu cầu. Link download
Nhớ chép file ATTI.dcl vào Support File Search Path.
  • 2

#226 duytrung

duytrung

    biết pan

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

Đã gửi 06 October 2009 - 04:21 PM

Các bạn có Lisp nào mà chỉnh đối tượng xiên đi 1 góc cho trước không. Mình có up lên bản vẽ, mong các bạn giúp đỡ.
http://www.cadviet.c...h_ngay_tren.dwg
  • 0

#227 tnt298

tnt298

    biết pan

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

Đã gửi 06 October 2009 - 10:15 PM

Nhờ các anh trên diễn đàn viết giùm em 1 lisp như sau:
Nội suy các đường đồng mức phụ từ các đường đồng mức chính
Đường đồng mức phụ là các pl giống đường đồng mức chính
Cao độ của đường đồng mức phụ là trung bình cộng của các đường đồng mức chính
Text ghi cao độ của đường đm phụ giống với text ghi cao độ của đường DM chính
File đính kèm: http://www.cadviet.c...2/cadviet_3.dwg
  • 0

#228 MANHHUNGXDA

MANHHUNGXDA

    biết lệnh adcenter

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

Đã gửi 07 October 2009 - 09:47 AM

Chào MANHHUNGXDA
Gửi bạn Lisp có chức năng đánh số thứ tự các block thuộc tính ATTDEF theo yêu cầu. Link download
Nhớ chép file ATTI.dcl vào Support File Search Path.


EM cảm ơn anh gia_bach nhiều, kết quả thật bất ngờ
Nhưng mà không hiểu sao, em chọn cái đối tượng khác VIDU: dientich hoặc khối lượng ...thì lại báo lỗi như sau:
Hình đã gửi
anh chỉnh hộ em với!, Thực tế, em muốn chọn block ở dạng tổng quát, không chỉ chọn cố định là "SO", mà chọn loại tên Block thuộc tính bất kì, nó đều đánh số được anh à!
Cảm ơn anh!
  • 0
Hãy ước cho trọn 1 ước mơ!

#229 tonducduong

tonducduong

    Chưa sử dụng CAD

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

Đã gửi 07 October 2009 - 10:30 AM

Tôi muốn khai triển hình côn và côn lệch ra mặt phẳng. Có ai giup tôi không vậy? Cố gắng giúp tôi một lisp nhé!
  • 0

#230 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 07 October 2009 - 11:12 AM

Tôi muốn khai triển hình côn và côn lệch ra mặt phẳng. Có ai giup tôi không vậy? Cố gắng giúp tôi một lisp nhé!

Có phải lisp Thiep đã viết như thế này không:
http://www.cadviet.c...&...ost&p=71661
  • 0

#231 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 07 October 2009 - 11:54 AM

Chào các bác,
Vừa rồi có tìm thấy 1 cái ứng dụng, của lệnh ATTI
http://www.cadviet.c...es/2/sannen.rar
http://www.cadviet.c...s/2/control.rar (phải apload cả 2 file mới dùng được)
....
đây là file sau khi biên dịch, nhờ các bác sửa dùm để có lệnh ATTI như file gốc
Trân thành cảm ơn!

Chào MANHHUNGXDA, bạn dùng lisp này xem, nó chưa có hộp thoại như trong hình, nhưng vẫn chạy tốt!
http://www.cadviet.c...hangeattrib.lsp
  • 1

#232 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 07 October 2009 - 04:02 PM

EM cảm ơn anh gia_bach nhiều, kết quả thật bất ngờ
Nhưng mà không hiểu sao, em chọn cái đối tượng khác VIDU: dientich hoặc khối lượng ...thì lại báo lỗi như sau:
Hình đã gửi
anh chỉnh hộ em với!, Thực tế, em muốn chọn block ở dạng tổng quát, không chỉ chọn cố định là "SO", mà chọn loại tên Block thuộc tính bất kì, nó đều đánh số được anh à!
Cảm ơn anh!

Đó không phải là lỗi, mà là thông báo đại khái là Code chưa hoàn thiện.
Do bạn chỉ yêu cầu phần đánh số thứ tự nên LISP chỉ chạy khi bạn Click chọn vào Tag = SO, với các Tag thuộc tính khác ("COSBQ" "COSTK" "DTICH" "KLUONG") LISP chưa đáp ứng đuơc.
Thực tế là tui cũng không biết cách tính các thuộc tính này như thế nào. Thuộc tính DTICH thì có thể hiểu đuợc, nhưng KLUONG, COSBQ, COSTK thì pó tay.
  • 0

#233 MANHHUNGXDA

MANHHUNGXDA

    biết lệnh adcenter

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

Đã gửi 07 October 2009 - 04:52 PM

Đó không phải là lỗi, mà là thông báo đại khái là Code chưa hoàn thiện.
Do bạn chỉ yêu cầu phần đánh số thứ tự nên LISP chỉ chạy khi bạn Click chọn vào Tag = SO, với các Tag thuộc tính khác ("COSBQ" "COSTK" "DTICH" "KLUONG") LISP chưa đáp ứng đuơc.
Thực tế là tui cũng không biết cách tính các thuộc tính này như thế nào. Thuộc tính DTICH thì có thể hiểu đuợc, nhưng KLUONG, COSBQ, COSTK thì pó tay.

Đó chỉ là tên của block thuộc tính, tên củađôis tượng ATT thôi
Cái lisp cũ của em nó làm kiểu gì ấy anh nhỉ??
  • 0
Hãy ước cho trọn 1 ước mơ!

#234 hoanghaiyp

hoanghaiyp

    biết lệnh minsert

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

Đã gửi 07 October 2009 - 09:51 PM

Công ty mình đang thiết kế máy tự động, chỉ sử dụng cam tròn lệch tâm. Mình được giao nhiệm vụ thiết kế cam tròn lệnh tâm, công việc chỉ giản đơn là vẽ đường tròn biết chu vi, nghĩa là có chu vi lựa chọn trước.
Chẳng hạn vẽ cam tròn lệnh tâm biết chu vi của cam là 52mm. Để vẽ được đường tròn có chu vi 52 mình tính theo công thức R = chu vi /(2*3.14). Cách này lâu vì số lượng cam tròn lớn, hơn nữa độ chính xác khi tính R không cao.
Mình cần lisp tự động vẽ đường tròn hoặc cung tròn mà chỉ cần chọn vị trí tâm và chu vi đường tròn.
Mong được các anh, và các bạn giúp đỡ, cảm ơn nhiều! :cheers: :cheers: :cheers:
  • 0

#235 tivanteo

tivanteo

    biết vẽ circle

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

Đã gửi 07 October 2009 - 10:05 PM

Công ty mình đang thiết kế máy tự động, chỉ sử dụng cam tròn lệch tâm. Mình được giao nhiệm vụ thiết kế cam tròn lệnh tâm, công việc chỉ giản đơn là vẽ đường tròn biết chu vi, nghĩa là có chu vi lựa chọn trước.
Chẳng hạn vẽ cam tròn lệnh tâm biết chu vi của cam là 52mm. Để vẽ được đường tròn có chu vi 52 mình tính theo công thức R = chu vi /(2*3.14). Cách này lâu vì số lượng cam tròn lớn, hơn nữa độ chính xác khi tính R không cao.
Mình cần lisp tự động vẽ đường tròn hoặc cung tròn mà chỉ cần chọn vị trí tâm và chu vi đường tròn.
Mong được các anh, và các bạn giúp đỡ, cảm ơn nhiều! :cheers: :cheers: :cheers:

thử nhé
(defun c:vc ()
(setq tam (getpoint "\nNhap tam duong trong:")
cv (getreal "\nNhap chu vi duong tron:")
bk (/ cv (* 2 3.14))
)
(command "circle" tam bk )
(princ)
)
  • 1

#236 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 October 2009 - 05:40 AM

Chẳng hạn vẽ cam tròn lệnh tâm biết chu vi của cam là 52mm. Để vẽ được đường tròn có chu vi 52 mình tính theo công thức R = chu vi /(2*3.14). Cách này lâu vì số lượng cam tròn lớn, hơn nữa độ chính xác khi tính R không cao.

Chào bạn 'hoanghaiyp' với cách tính R = chu vi /(2*3.14) thì rõ ràng rằng trong cách tính của bạn sẽ có sai số. Và sai số sẽ càng lớn khi chu vi càng lớn bởi lẽ số là một số vô tỷ.
để tránh sai số và như bạn nói về độ chính xác của R thì theo Tue_NV, bạn nên thay cách tính của bạn
-> trở thành R = chu vi /(2* )

LỊCH SỬ CỦA SỐ

Số pi là gì?
PI là mẫu tự thứ 16 trong bảng chữ cái Hi Lạp, nhưng chữ pi viết thường lại là một hằng số quan trọng trong toán học. Đó là một số siêu việt, xấp xỉ bằng 3,14159, biểu diễn cho tỉ số giữa chu vi và đường kính của một đường tròn.

Một giá trị xấp xỉ của số là 22/7. Khá nhiều giá trị xấp xỉ khác của được dùng đến trong kinh thánh và suốt thời gian dài sau đó. Trong kinh thánh, giá trị này bằng 3. Sau đó, nhà toán học Hi Lạp Acsimét (Archimedes) xác nhận lại một cách chính xác là giá trị nằm trong khoảng 3 10/70 và 3 11/70. Với sự trợ giúp của máy tính, người ta đã tính được số với hơn 200 tỉ chữ số thập phân vào cuối năm 1999 (trong 40 giờ, với bộ nhớ trên 800GB). Tuy nhiên, các kết quả tính toán này không có ứng dụng trong thực tế, vì chỉ với 30 chữ số chính xác của đã đủ cho người ta làm bất cứ công việc tính toán nào.

Tỉ số này là một số vô tỉ, nên số chữ số thập phân sẽ cứ kéo dài mãi. Kí hiệu được sử dụng lần đầu vào năm 1706 bởi nhà toán học Anh William Jones, nhưng nó chỉ trở nên phổ biến sau khi nhà toán học Thụy Sĩ Ơ-le (Leonhard Euler) chấp nhận sử dụng năm 1737. Vào năm 1882, nhà toán học Đức Ferdinand Lindemann chứng minh được rằng là một số siêu việt, nghĩa là nó không là nghiệm của bất cứ đa thức với hệ số hữu tỉ nào. Từ đó, ông chỉ ra rằng không thể giải bài toán viên phương và cầu phương (nghĩa là, dựng hình vuông có diện tích bằng hình tròn cho trước, hay dựng hình lập phương có thể tích bằng hình cầu cho trước, và ngược lại, bằng thước và compa).

* Năm 1609 Ludolph von Ceulen nhờ phương pháp của Archimède, đã tính được con số Pi với 34 số lẻ mà người ta đã khắc số này trên mộ bia của ông.

Cuối thế kỷ thứ 20 số Pi đã tính với độ chính xác tơi con số thứ 200 tỉ (200 000 000 000)

Ngày 11 tháng 9 năm 2000: con số lẻ thứ một triệu tỉ số không (1.000.000.000.000.000)

Cũng mạn phép bạn tivateo -> sửa lại code của bạn 1 tí nhé :
(defun c:vc (/ tam cv bk)
(setq tam (getpoint "\nNhap tam duong trong:")
cv (getreal "\nNhap chu vi duong tron:")
bk (/ cv (* 2 pi))
)
(command "circle" tam bk )
(princ)
)

  • 3

#237 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 08 October 2009 - 11:04 AM

Chào MANHHUNGXDA, bạn dùng lisp này xem, nó chưa có hộp thoại như trong hình, nhưng vẫn chạy tốt!
http://www.cadviet.c...hangeattrib.lsp

Chào MANHHUNGXDA,
Lisp changeattrib.lsp, Thiep đã có hộp thoại.
@ Gia_bach, Vì đỡ mất thời gian tạo hộp thoại, Thiep đã lấy hộp thoại của bác Gia_bach, file ATTI.dcl giữ nguyên, và vì vậy phải lấy 1 số mã điều khiển hộp thoại luôn. Cảm ơn Gia_bach rất nhiều.
;| Lisp thay doi gia tri thuoc tinh cua cac block reference
CHANGE-ATTRIB.LSP V1: 10-2009
---------------------------------------------------------|;

(defun SS-enlst (ss / c L)
(setq c -1)
(repeat (sslength ss)
(setq L (cons (ssname ss (setq c (1+ c))) L))
)
(reverse L)
)
(defun getatt (itm)
(vlax-safearray->list
(vlax-variant-value
(vla-GetAttributes itm)
)
)
)
(defun List->String (Lst Del)
(apply 'strcat
(cons
(car Lst)
(mapcar
'(lambda (l)
(strcat Del l)
)
(cdr Lst)
)
)
)
)
(defun dxf (id en) (cdr (assoc id (entget en))))
;;;-----------------------------------------------------------
(vl-load-com)
(defun c:chatt (/ blSet attLst lstbl bkname enblock)
(setq enblock (car (entsel "\nPick a blockref for get name")))
(while (null enblock)
(princ "\nIncorrect, Please pick again:")
(setq enblock (car (entsel "\nPick a blockref for get name")))
)
(setq lstTag (getatt (vlax-ename->vla-object enblock)))
(setq lstTag (mapcar 'vla-get-TagString lstTag))


;;;-----------------------------
(setq dcl_id (load_dialog "ATTI.dcl"))
(if (not (new_dialog "Atti" dcl_id))
(alert "\nKhong tim duoc file ATTI.dcl !")
)
;;;------- DCL Init ------------
(start_list "attdata" 3)
(mapcar 'add_list lstTag)
(end_list)
;;;------------------------------
(set_tile "attdata" "0")
(setq att_list "0"
order 1
star 1
delta 1
)
(action_tile "okay" "(done_dialog 1)")
(action_tile "cancel" "(done_dialog)")
(action_tile "attdata" "(setq att_list $value)")
(action_tile "startstr" "(setq star (atoi $value))")
(action_tile "increment" "(setq delta (atoi $value))")
(action_tile "order1" "(setq order 1)")
(action_tile "order2" "(setq order 0)")
(setq execute_it (start_dialog))
(unload_dialog dcl_id)
;;;------- Main Program -----------
(if (= execute_it 1)
(progn
(setq bkname (cdr (assoc 8 (entget enblock))))
(princ "<<< Select blocks to change attributes >>>")
(if
(setq
blSet (ssget
(list (cons 0 "INSERT") (cons 8 bkname) (cons 66 1))
)
)
(progn
(cond ((= order 1)
(setq lstbl
(vl-sort (SS-enlst blSet)
'(lambda (x y)
(if (equal
(car (setq
x1 (trans (dxf 10 x) 0 1)
)
)
(car (setq
y1 (trans (dxf 10 y) 0 1)
)
)
)
(< (cadr x1) (cadr y1))
(< (car x1) (car y1))
)
)
)
)
)
((= order 0)
(setq lstbl
(vl-sort (SS-enlst blSet)
'(lambda (x y)
(if (equal
(car (setq
x1 (trans (dxf 10 x) 0 1)
)
)
(car (setq
y1 (trans (dxf 10 y) 0 1)
)
)
)
(> (cadr x1) (cadr y1))
(> (car x1) (car y1))
)
)
)
)
)
)
(setq blSet (mapcar 'vlax-ename->vla-object lstbl))
(setq TAG (nth (atoi att_list) lstTag))
(setq n star)
(foreach itm blSet
(setq attLst (getatt itm))
(foreach att attLst
(if (eq (strcase (vla-get-TagString att)) (strcase Tag))
(progn
(vla-put-textstring att (itoa n))
(setq n (+ n delta))
)
)
)
)
);;END progn
(princ ">>> Nothing blockref selected! <<<")
);end if
)
);end if
(princ "\nTHANK YOU FOR USE LISP CHANGE ATTRIBUTES. THIEP")
(princ)
)

@MANHHUNGXDA,
- Hôm qua thấy MANHHUNGXDA post bài: Lisp CHANGE-ATTRIB.LSP thêm hộp thoại, bây giờ lại không thấy bài post nữa, phải chăng mình có thể xóa bài mình đã post được? lâu nay thiep không biết có thể xóa được!
- Về thuật toán tính khối lượng san nền, trong lisp sannen dùng thuật toán phương pháp khối, có nghĩa là cộng thể tích các khối trụ lại. Thuật toán này, yêu cầu trắc đạc phải đo diện tích san nền với điểm đo theo 1 mạng lưới ô vuông.
Thiep xin đề xuất 1 thuật toán tính khối lượng san nền khác, bằng phương pháp mặt cắt song song, Thuật toán này, yêu cầu trắc đạc đo diện tích san nền với điểm đo theo 1 mạng lưới tự do đủ yêu cầu đo vẽ địa hình của quy phạm đo vẽ, sau đó vẽ các đường bình độ, lập các mắt cắt địa hình song song, tính diện tích mặt cắt, tính thể tích từng cặp mặt cắt song song gần nhất, cộng các thể tích này lại. Đây là kiểu tính thể tích của 1 hình thể 3 D theo kiểu tích phân thể tích.
  • 1

#238 MANHHUNGXDA

MANHHUNGXDA

    biết lệnh adcenter

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

Đã gửi 08 October 2009 - 01:50 PM

Chào MANHHUNGXDA,
- Hôm qua thấy MANHHUNGXDA post bài: Lisp CHANGE-ATTRIB.LSP thêm hộp thoại, bây giờ lại không thấy bài post nữa, phải chăng mình có thể xóa bài mình đã post được? lâu nay thiep không biết có thể xóa được!
- Về thuật toán tính khối lượng san nền, trong lisp sannen dùng thuật toán phương pháp khối, có nghĩa là cộng thể tích các khối trụ lại. Thuật toán này, yêu cầu trắc đạc phải đo diện tích san nền với điểm đo theo 1 mạng lưới ô vuông.
Thiep xin đề xuất 1 thuật toán tính khối lượng san nền khác, bằng phương pháp mặt cắt song song, Thuật toán này, yêu cầu trắc đạc đo diện tích san nền với điểm đo theo 1 mạng lưới tự do đủ yêu cầu đo vẽ địa hình của quy phạm đo vẽ, sau đó vẽ các đường bình độ, lập các mắt cắt địa hình song song, tính diện tích mặt cắt, tính thể tích từng cặp mặt cắt song song gần nhất, cộng các thể tích này lại. Đây là kiểu tính thể tích của 1 hình thể 3 D theo kiểu tích phân thể tích.


Trân thành cảm ơn sự nhiệt tình của anh THIEP và GIA_BACH
Bài toán của em đã được giải một cách mãn nguyện
Trân trọng cảm ơn!
  • 0
Hãy ước cho trọn 1 ước mơ!

#239 funnyzui

funnyzui

    biết vẽ arc

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

Đã gửi 08 October 2009 - 06:06 PM

Chào các bạn!
Mình tuy không phải thành viên mới, nhưng với autolisp thì thật tình mình chỉ biết xài thui mà ko có khả năng đọc-hiểu-sửa. Cách đây vài tháng, mình được ông anh cho cái lisp thống kê thép, thấy khá hay, nhưng qua vài tháng sử dụng có 1 số điểm mình mong muốn được hoàn thiện thêm nên lên đây xin nhờ mấy anh em cao thủ trên diễn đàn chỉnh sửa lại giúp.

- Đây là form lúc đầu: http://www.cadviet.c...orm_luc_dau.jpg

- Đây là form mong muốn: http://www.cadviet.c...m_mong_muon.jpg

- file thống kê thép : http://www.cadviet.c...les/2/chinh.rar

- Đây là file mẫu mà mình làm: http://www.cadviet.c...ew_block_14.dwg

Cách sử dụng lisp:
- Đầu tiên, các bạn phải add 2 folder CHINH, THONGKE vao support của cad. http://www.cadviet.c..._lisp_chinh.jpg
- Apload 3 file lisp ACAD.lsp,CHINH.lsp, THONGKE.lsp
Trước khi thống kê thép, phải tạo layer thongke.
Các lệnh trong lisp:
-BTK : tạo bảng thống kê.
-BTKL: tạo bảng tổng kết thép theo D.
-THEP : tạo từng thanh thép theo mẫu cho sẵn.
-Sua : sửa lại thah thép đã tạo.
-Doi : dời qua trái qua phải hình dạng thanh thép.
....
còn 1 số lệnh nữa mà mình ko xài đc cũng ko biết sao :bigsmile:
Cám ơn tác giả của lisp này :bigsmile:

Theo cá nhân mình thấy lisp này xài cũng hay, và vì mình xài quen rồi nên mong muốn nó đc hoàn thiện hơn để trợ giúp công việc thống kê thép được tốt hơn



link mediafire.com:

http://www.mediafire...orm luc dau.JPG

http://www.mediafire...m mong muon.JPG

file thống kê thép : http://www.mediafire...1uczn/CHINH.rar
  • 0

#240 minhnghi

minhnghi

    biết vẽ arc

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

Đã gửi 08 October 2009 - 09:36 PM

Em có lisp copy thứ tự này thấy dùng khá hay : http://www.cadviet.c..._thu_tu_coo.lsp
Nhưng e có một thắc mắc nhỏ thế này, lisp này là copy theo thứ tự tăng dần với hệ số là +1, khi e vẽ đường đồng mức san nền thì không phải hệ số lúc nào cũng là +1 mà có thể khác đi, vậy các bác giúp em chỉnh lại lisp trên có hệ số mà do ta tự chọn khi copy nhé. Nghĩa là khi đánh lệnh COO thì hiện ra dòng command là lựa chọn hệ số (ví dụ ta có thể nhập vào là -1,-0.5,-0.2, 0.2, 0.5...v.v sau đấy copy là số tự động nhảy khi cộng trừ hệ số đó. Thanks các bác nhiều nhé !!! :bigsmile:
  • 0
- Gà con vẽ CAD -