Đến nội dung


Hình ảnh

đếm block tuy chọn


  • Please log in to reply
22 replies to this topic

#1 thienha.haui

thienha.haui

    biết vẽ line

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

Đã gửi 08 April 2014 - 02:08 PM

chào các bạn.mình đã tìm hiểu trên diễn đàn về lisp đếm block nhưng chưa có lisp nào như ý mong các bạn giúp đỡ.

mình muốn có 1 lisp như sau.

- gõ lệnh

-chọn block muốn đếm

-chọn vùng cần đếm

-chọn vị trí đặt text

 

Mong các bạn giúp đỡ/


  • 0

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 08 April 2014 - 02:12 PM

Dùng lệnh BCOUNT đi bạn!


  • 1

* 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.


#3 thienha.haui

thienha.haui

    biết vẽ line

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

Đã gửi 08 April 2014 - 02:27 PM

lệnh đó đếm tất cả block anh ạ .bởi vì bản vẽ rất nhiều block nên khi dùng lệnh đó tìm tới block mình cần rất mất thời gian.

nên e muốn có lisp chỉ chọn block mình cần đếm thôi ạ thôi ạ.


  • 0

#4 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 08 April 2014 - 02:34 PM

Thế thì QSELECT ?


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


#5 thienha.haui

thienha.haui

    biết vẽ line

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

Đã gửi 08 April 2014 - 02:58 PM

ko hay bằng lisp.mong các cao thủ giúp đỡ


  • 0

#6 vutung1982

vutung1982

    Chưa sử dụng CAD

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

Đã gửi 08 April 2014 - 02:59 PM

Có bác nào biết lỗi của bản cad này không, xin biện pháp khắc phục.

Thanks!!

 


  • 0

#7 vutung1982

vutung1982

    Chưa sử dụng CAD

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

Đã gửi 08 April 2014 - 03:01 PM

http://www.cadviet.c...ssd_2014404.dwg


  • 0

#8 thienha.haui

thienha.haui

    biết vẽ line

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

Đã gửi 14 April 2014 - 03:53 PM

ko ai giúp dc à.diễn đàn lớn thế mà


  • 0

#9 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 14 April 2014 - 04:25 PM

Từ từ!! Bình tĩnh!! không phải ai cũng rảnh ngồi chực để viết lisp đâu bạn?


  • 1

#10 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 14 April 2014 - 06:55 PM

Của bạn đây.

 

(defun c:test(/ ten soluong diem)
  (setq ten (cdr (assoc 2 (entget (car (entsel "\nChon Block:")))))
soluong (sslength (ssget (list '(0 . "INSERT") (cons 2 ten))))
diem (getpoint "\nDiem dat text:"))
  (entmakex (list (cons 0  "TEXT") (cons 10 diem) (cons 11 diem)
 (cons 40 1) (cons 1 (itoa soluong))))
  (princ)  
)

(defun c:test()
  (defun dxf (id v) (cdr (assoc id (entget v))))
  (setq ten (dxf 2 (car (entsel "\nChon Block:")))
soluong (length (vl-remove nil (mapcar '(lambda(x) (if (= ten (dxf 2 x)) x nil))
      (acet-ss-to-list (ssget '((0 . "INSERT")))))))
diem (getpoint "\nDiem dat text:"))
  (entmakex (list (cons 0  "TEXT") (cons 10 diem) (cons 11 diem)
 (cons 40 1) (cons 1 (itoa soluong))))
  (princ)  
)

  • 1

#11 anh.tuan

anh.tuan

    biết lệnh extend

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

Đã gửi 14 April 2014 - 10:06 PM

cái này không nhận ra anonymous block bạn ạ.


  • 0

#12 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 14 April 2014 - 10:48 PM

Chủ thớt chỉ yêu cầu tìm block có tên thôi.


  • 1

#13 thienha.haui

thienha.haui

    biết vẽ line

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

Đã gửi 15 April 2014 - 10:41 AM

-chưa được anh ạ.a sửa cho e là có thể chọn nhiều block trong cùng 1 lần đếm nhé.bởi vì lisp này cho chọn có 1 block 1 lần.

-trong phần chọn block ấy.khi mình kích vào block thì ta chưa biết rằng đã kích chọn được block hay chưa.nên e muốn a sửa là :nếu đã chọn được rồi thì trong dòng comment nó hiển thị là:1 block(3block) đã được chọn chẳng hạn.

-Cái nữa là chiều cao text quá nhỏ nếu bản vẽ lớn.nên trước phần vị trí đặt text a sửa giúp e là chọn text mẫu nữa ạ

 

mong a giúp đỡ


  • 0

#14 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 15 April 2014 - 02:30 PM

Thử cái này, text mẫu chỉ hỏi 1 lần thôi, lần sau không hỏi nữa.

(defun c:test(/ lten lsoluong ss diem diem1 n cao)
  (defun dxf(id v) (cdr (assoc id (entget v))))
  
  (princ "\nChon Block:")
  (setq lten nil)  
  (mapcar '(lambda(x) (if (not (member (setq tm (dxf 2 x)) lten)) (setq lten (cons  tm lten))))
 (acet-ss-to-list (ssget (list '(0 . "INSERT")))))
 
  (princ "\nTrong cac doi tuong:")
  (setq ss (acet-ss-to-list (ssget (list '(0 . "INSERT"))))
lsoluong (mapcar '(lambda(y) (length (vl-remove nil (mapcar '(lambda(x) (if (= y (dxf 2 x)) x nil)) ss)))) lten))
 
  (if (not textmau) (setq textmau (car (entsel "Chon Text mau:"))))
 
  (setq diem (getpoint "\nDiem dat text so luong:")
n -1
cao (dxf 40 textmau))
  (foreach v lten
    (entmakex (list (cons 0  "TEXT") (cons 10 (setq diem1 (polar diem (* -0.5 pi) (* 2 cao (setq n (1+ n))))))
   (cons 11 diem1) (cons 40 cao) (cons 7 (dxf 7 textmau)) (cons 71 (dxf 71 textmau)) (cons 72 (dxf 72 textmau))
   (cons 1 (strcat (nth n lten) " : " (itoa (nth n lsoluong))))))
  )
  (princ)  
)
 

@anh tuan : bạn có file nào có anonymous block cần đếm thì đưa lên tôi test cho.


  • 1

#15 anh.tuan

anh.tuan

    biết lệnh extend

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

Đã gửi 15 April 2014 - 08:43 PM

không biết có phải là anonymous không, nhưng những block có thể cho mình xoay tròn các mặt ấy, ví dụ block cái ghế, mình có thể "xoay" để thấy mặt trước, sau, trên, dưới, trái, phải..... thì lisp này không nhận ra.


  • 0

#16 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 15 April 2014 - 10:19 PM

Cái này sửa lại có thể đếm được dynamic block.

 

http://www.cadviet.c...168_tmp1_52.lsp


  • 0

#17 thienha.haui

thienha.haui

    biết vẽ line

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

Đã gửi 14 October 2014 - 06:24 PM

a Tot77 ơi post lại link giúp e nhé.link hỏng rồi không down được


  • 0

#18 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 14 October 2014 - 09:05 PM

Có phải cái này không?

(defun c:test(/ lten lsoluong ss diem diem1 n cao)
  (defun dxf(id v) (cdr (assoc id (entget v))))
  
  (princ "\nChon Block:")
  (setq lten nil)  
  (mapcar '(lambda(x) (if (not (member (setq tm (vla-get-Effectivename (vlax-ename->vla-object x))) lten))
      (setq lten (cons tm lten))))
 (acet-ss-to-list (ssget (list '(0 . "INSERT")))))
 
  (princ "\nTrong cac doi tuong:")
  (setq ss (acet-ss-to-list (ssget (list '(0 . "INSERT"))))
lsoluong (mapcar '(lambda(y)
  (length (vl-remove nil (mapcar '(lambda(x)
(if (= y (vla-get-Effectivename (vlax-ename->vla-object x))) x nil)) ss)))) lten))
 
  (if (not textmau) (setq textmau (car (entsel "Chon Text mau:"))))
 
  (setq diem (getpoint "\nDiem dat text so luong:")
n -1
cao (dxf 40 textmau))
  (foreach v lten
    (entmakex (list (cons 0  "TEXT") (cons 10 (setq diem1 (polar diem (* -0.5 pi) (* 2 cao (setq n (1+ n))))))
   (cons 11 diem1) (cons 40 cao) (cons 7 (dxf 7 textmau)) (cons 71 (dxf 71 textmau)) (cons 72 (dxf 72 textmau))
   (cons 1 (strcat (nth n lten) " : " (itoa (nth n lsoluong))))))
  )
  (princ)  
)

  • 0

#19 anh.tuan

anh.tuan

    biết lệnh extend

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

Đã gửi 15 October 2014 - 08:16 AM

mình gặp lỗi này là sao vậy các bạn:

 

Command: test

Chon Block:
Select objects: 1 found

Select objects: 1 found, 2 total

Select objects:
Trong cac doi tuong:
Select objects: 0 found

Select objects:
Diem dat text so luong:; error: bad argument type: numberp: nil

Command:


  • 0

#20 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 15 October 2014 - 08:50 AM

mình gặp lỗi này là sao vậy các bạn:

 

Command: test

Chon Block:
Select objects: 1 found

Select objects: 1 found, 2 total

Select objects:
Trong cac doi tuong:
Select objects: 0 found

Select objects:
Diem dat text so luong:; error: bad argument type: numberp: nil

Command:

Bạn up file của bạn để test.


  • 0