Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] lisp đếm dimension


  • Please log in to reply
13 replies to this topic

#1 theducw87

theducw87

    biết vẽ circle

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

Đã gửi 11 May 2011 - 10:19 AM

mình cần một lisp dùng để thống kê dimension có tác dụng như lệnh bcount dùng để thống kê block. ví dụ mình muốn thông kê các đuờng dim150 theo chiều dài khác nhau thì sau khi dùng lisp se có bảng thống kê hiện ra như sau : Dim150 D1180.......5
Dim150 D600 .......7
ai biết có lisp nào có tác dụng như thế hoặc tuơng tự như thế chỉ cho mình với. Xin cảm ơn
  • 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 11 May 2011 - 11:49 AM

Mình chưa biết có cái lisp nào như thế, nên đành chọc ngoáy cái lisp cũ của bác gia_bach để post lại cho bạn vậy :

(defun c:tkd (/ lst msp pt ss str txtsiz lstDSTyle DSTyle)
(vl-load-com)
(setq lstDStyle (table "dimstyle")
pt (getpoint "\nDiem dat:" )
txtsiz (* (getvar "dimtxt")(getvar "dimscale")))
(foreach DStyle lstDStyle
(if (setq ss (ssget "X" (list (cons 0 "DIMENSION")(cons 3 DStyle))))
(progn
(foreach e (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
(if (= (cdr(assoc 1 (entget e))) "")
(setq str (cdr(assoc 42 (entget e))))
(setq str (atof(cdr(assoc 1 (entget e)))))
)
(setq str (strcat "D" (rtos str 2 0)))
(if (not (assoc str lst))
(setq lst (cons (cons str 1) lst))
(setq lst (subst (cons str (1+ (cdr (assoc str lst))))
(assoc str lst) lst))) )
(setq lst (vl-sort lst '(lambda (x y) (< (car x) (car y))))
msp (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
(vla-addtext msp DStyle (vlax-3d-point (polar pt 180 (* 8 txtsiz))) txtsiz )
(foreach e lst
(vla-addtext msp (car e) (vlax-3d-point pt) txtsiz )
(vla-addtext msp (cdr e) (vlax-3d-point (polar pt 0 (* 8 txtsiz))) txtsiz )
(setq pt (polar pt (/ pi -2) (* 1.5 txtsiz))) ))
;(princ (strcat "\nKhong co Text trong DimsTyle :" DStyle))
)
(setq pt (polar pt (/ pi -2) (* 10 txtsiz)))
)
(princ))


(defun table (s / d r)
(while (setq d (tblnext s (null d)))
(setq r (cons (cdr (assoc 2 d)) r))
)
)

  • 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 thanhhung12003

thanhhung12003

    biết pan

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

Đã gửi 16 June 2012 - 02:12 PM

hi All.
lisp chạy rất tốt, nhưng KETXU có thể viết lại là thống kê các Dim được chọn có được không? cái này thống kê cả bản vẽ nên nhiều lúc nhiều quá!
Thanks!
  • 0

#4 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 16 June 2012 - 02:23 PM

hi All.
lisp chạy rất tốt, nhưng KETXU có thể viết lại là thống kê các Dim được chọn có được không? cái này thống kê cả bản vẽ nên nhiều lúc nhiều quá!
Thanks!

Hề hề hề,
bạn bỏ tham số "x" trong hàm (setq ss (ssget "X" (list (cons 0 "DIMENSION")(cons 3 DStyle))) đi là Ok
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#5 EDIT

EDIT

    biết vẽ line

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

Đã gửi 15 November 2012 - 11:24 AM

A ơi! Cái này rất hay nhưng tiếc quá e k dùng đc. e bỏ "X" rồi nhưng nó như thế này:

Command: TKd
Diem dat:
Select objects: Specify opposite corner: 0 found
Select objects: Specify opposite corner: 0 found, 0 total
Select objects: Specify opposite corner: 100 found, 100 total
Select objects:
Select objects: *Cancel*
; error: Function cancelled
Command:
Có Dim nó tìm đc, có dim k tìm đc. Nói chung là chọn các dim k đc như ý. A có thể xem lại giúp e đc k?
  • 0

#6 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 15 November 2012 - 12:40 PM

Lạ vậy. Bạn post file kèm theo khoanh vùng cái dim mà bạn k chọn đc mọi người xem sao
  • 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


#7 EDIT

EDIT

    biết vẽ line

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

Đã gửi 16 November 2012 - 11:43 AM

Đây ah! A Ketxu xem hộ em nhé. e đã thử nhiều cách r nhưng bó tay.
http://www.cadviet.c...6_aaaaaaaaa.dwg
  • 0

#8 EDIT

EDIT

    biết vẽ line

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

Đã gửi 20 November 2012 - 08:09 AM

Ủa! Mãi chả thấy ai trả lời cả. Anh ketxu đi đâu r? Có giúp đc e k?
  • 0

#9 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 20 November 2012 - 09:09 AM

À, mình đây. Chắc là mình không giúp gì cho bạn được rồi. K phải lisp nó không làm đúng mà là nó làm rất đúng, chẳng qua bạn không biết hoặc không đọc yêu cầu chủ topic đó thôi. Lisp trên mình viết để liệt kê toàn bộ dim trên bản vẽ theo Dimstyle

QUá trình làm cửa lisp là duyệt qua từng Dimstyle và tự động tìm các dim có style tương ứng trên toàn bản vẽ để liệt kê.

Nếu bạn bỏ chữ "x" đi, có nghĩa là bạn phải tự quét chọn từng dim ứng với từng dimstyle.
(ví dụ file của bạn có 2 dimstyle là 1,2, thì nếu bỏ chữ x đi, bạn sẽ phải chọn thủ công 2 lần, lần 1 thì chỉ chọn được những thằng dim ở dimstyle 1, lần 2 thì mới chọn được những thằng ở Dimstyle 2...)

Cái đám dim của bạn nằm ở cuối danh sách thì quét mệt nghỉ mới tới lượt.
Bạn hiểu ý k ^^?
  • 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


#10 EDIT

EDIT

    biết vẽ line

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

Đã gửi 20 November 2012 - 01:45 PM

Vâng! Vậy thì a có thể sửa lại cho e thế này đc k? Vì e k biết về lập trình Alisp. Có tác dụng đếm dim trong vùng lựa chọn bất kì k phân biệt dim style mà đếm dim rồi thống kê theo giá trị của dim đó.Thao tác và bảng thống kê tương tự như cách trên. E cám ơn a Ketxu và mọi người rất nhiều vì sự nhiệt tình giúp đỡ của các anh.
  • 0

#11 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 20 November 2012 - 04:08 PM

Vâng! Vậy thì a có thể sửa lại cho e thế này đc k? Vì e k biết về lập trình Alisp. Có tác dụng đếm dim trong vùng lựa chọn bất kì k phân biệt dim style mà đếm dim rồi thống kê theo giá trị của dim đó.Thao tác và bảng thống kê tương tự như cách trên. E cám ơn a Ketxu và mọi người rất nhiều vì sự nhiệt tình giúp đỡ của các anh.

Hề hề hề,
Thử bỏ cái (cons 3 Dstyle) đi coi nó được cái gì hè???
Như vậy nó sẽ cho chọn tất cả những cái chi là dimensions theo đúng nghĩa của nó. Còn những chú mà bạn edit rồi thì chưa chắc nghen. Hãy thử rồi báo kết quả.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#12 EDIT

EDIT

    biết vẽ line

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

Đã gửi 21 November 2012 - 08:23 AM

Thank a Bình nhiều! lisp làm vc theo ý e rồi, đếm tất cả các dim theo mình lựa chọn và thống kê theo giá trị. Chỉ có 1 điều là nó thể hiện Dimstyle k đúng. Khi e chọn vùng đếm có nhiếu Dimstyle thì nó đếm tất các dim nhưng lại chỉ hiện lên 1 kiểu dimstyle. Thứ 2 là khi đếm nó tự động làm tròn giá trị Dim. A có thể sửa lại thành như thế này k ah: Đếm tất cả các dim trong vùng lựa chọn( kể cả những dim đã edit), và thống kê theo giá trị của nó chứ k làm tròn, nếu có nhiều kiểu dimstyle thì hiện đúng kiểu dimstyle. Nếu lisp làm vc như vậy thì quá tuyệt vời. Mong các anh sơm giúp đỡ.
  • 0

#13 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5448 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 21 November 2012 - 08:53 AM

Yêu cầu của ban na ná 1 lisp mà tôi đã viết. Bạn thử dùng cái này rồi cho ý kiến nên bổ sung gì nhé!
http://www.cadviet.c...=0
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#14 EDIT

EDIT

    biết vẽ line

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

Đã gửi 22 November 2012 - 05:50 PM

e xem cái của a Doan Van Ha từ trc rồi. Cũng hay nhưng có 1 vấn đề là e để dimension style manager làm tròn số thập phân thì lisp lại k đưa ra kết quả hiển thị trên dim mà đếm theo giá trị khi chưa làm tròn -> cái này k theo ý em. E muốn nó để nguyên giá trị của dim đã đo đc ( kể cả dim đã edit), và đếm theo giá trị đó mà thôi.
  • 0