Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] Lisp đánh ký hiệu khung block att


  • Please log in to reply
16 replies to this topic

#1 dragontalon0802

dragontalon0802

    biết lệnh erase

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

Đã gửi 25 July 2013 - 08:24 AM

Vẽ kiến trúc nhiều khi thêm bớt 1 bản vẽ phải đánh lại số thứ tự 1 phần rất khó quản lý. Ý tưởng mình đưa ra nhằm tiện lợi cho anh em kiến trúc cũng như kết cấu nên mong bác nào bỏ time nghiên cứu. - Thường block khung tên sẽ có block att ở chỗ "tên bản vẽ" và "ký hiệu" và sẽ có các block khung cho các hạng mục khác nhau. - Ý tưởng hoạt động lisp: 1. chọn 1 block khung cần đánh số thứ tự 2. chọn att (thuộc block đã chọn) ghi ký hiệu bản vẽ (ví dụ: CT-03) 3. kích vào block khung tiếp theo (các block khung này phải trùng tên với nhau) thì ở vị trí ký hiệu là bất kỳ cái gì nó cũng chuyển thành dạng tiếp theo của block mẫu (ví dụ KT-05 sẽ được đổi thành CT-04) Thanks các bác đã quan tâm.
  • 0

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 25 July 2013 - 09:00 AM

Thậm chí cũng không có bản vẽ minh họa?


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

dragontalon0802

    biết lệnh erase

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

Đã gửi 25 July 2013 - 10:38 AM

Em up lên photobucket mà mãi ko được bác à. Bác chờ tý em up sau.
Ảnh vẫn ko up được các bác ạ, chịu khó download file ví dụ vậy ạ.
https://www.dropbox....eu cau lisp.dwg
  • 0

#4 sonnv36

sonnv36

    biết lệnh copy

  • Members
  • PipPipPip
  • 119 Bài viết
Điểm đánh giá: -12 (hơi kém)

Đã gửi 25 July 2013 - 03:09 PM

dùng lisp đếm số cũng đc mà :D


  • 0

Online một ngày đàng...học vài sàng khôn :)


#5 dragontalon0802

dragontalon0802

    biết lệnh erase

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

Đã gửi 25 July 2013 - 03:28 PM

Khung tên có nhiều att làm sao mà đếm được bạn @@


  • 0

#6 sonnv36

sonnv36

    biết lệnh copy

  • Members
  • PipPipPip
  • 119 Bài viết
Điểm đánh giá: -12 (hơi kém)

Đã gửi 25 July 2013 - 03:46 PM

ý mình dùng lisp đếm số để đếm  sô bản vẽ hoặc ký hiệu bản vẽ :D


  • 0

Online một ngày đàng...học vài sàng khôn :)


#7 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 26 July 2013 - 02:07 PM

Lisp thay đổi Att tăng dần 1 đơn vị cho các Block_Att được chọn theo Att được chọn đầu tiên.

;; Thay doi att tang dan 1 don vi cho cac block_att duoc chon theo att duoc chon dau tien.
;; Doan Van Ha - CadViet.com - ngay 26/7/2013
(vl-load-com)
(defun C:HA( / ent ss tag lst pre suf int len num #SS->List #String:Split-First VxSetAtts)
 (defun #SS->List (ss / i lst)
  (repeat (setq i (sslength ss))
   (setq lst (cons (ssname ss (setq i (1- i))) lst))))
 (defun #String:Split-First (string symbol / i)
  (if (setq i (vl-string-position (ascii symbol) string))
   (list (substr string 1 (1+ i)) (substr string (+ 2 i)))
   (list string)))
 (defun VxSetAtts (Obj Lst / AttVal)
  (mapcar '(lambda (Att) (if (setq AttVal (cdr (assoc (vla-get-TagString Att) Lst))) (vla-put-TextString Att AttVal))) (vlax-invoke Obj 'GetAttributes))
  (vla-update Obj))
 (if
  (and
   (setq ent (car (nentsel "\nChon Att So hieu cua ban ve dau tien: ")))
   (princ "\nChon cac Block theo thu tu de thay So hieu ban ve...")
   (setq ss (ssget '((0 . "Insert") (66 . 1)))))
  (progn
   (setq tag (cdr (assoc 2 (setq elist (entget ent)))))
   (setq lst (#String:Split-First (cdr (assoc 1 elist)) "-"))
   (setq pre (car lst))
   (setq suf (cadr lst))
   (setq int (atoi suf))
   (setq len (strlen suf))
   (foreach n (#SS->List ss)
(setq num (itoa (setq int (1+ int))))
(repeat (- len (strlen num))
(setq num (strcat "0" num)))
(VxSetAtts (vlax-ename->vla-object n) (list (cons tag (strcat pre num))))))))
 

  • 4

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


#8 dragontalon0802

dragontalon0802

    biết lệnh erase

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

Đã gửi 26 July 2013 - 03:08 PM

Quá chuẩn, thanks bác Hà nhiều. Hy vọng nhiều người thấy hữu ích với lisp này.


  • 0

#9 phongtran86

phongtran86

    biết lệnh offset

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

Đã gửi 20 August 2013 - 10:47 AM

Lisp rat có ích. nhưng cái này sau khi pick att đầu tiên phải chọn từng khung 1 thì ok. nếu quét để chọn block nó sẽ bị đánh số hiệu ngược. Bác có thể chỉnh 1 chút để quét block, đánh thứ tự bản vẽ theo block thứ tự ưu tiên từ trên xuống dưới, trái qua phải dc ko. Thanks bác nhiều


  • 0

#10 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 20 August 2013 - 11:22 AM

Bạn cứ chọn theo thứ tự pick thì nó sẽ xuất theo đúng thứ tự. Sửa lại thì công năng của lisp bị giới hạn.


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


#11 phongtran86

phongtran86

    biết lệnh offset

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

Đã gửi 20 August 2013 - 02:07 PM

:( pick thì ok mà. Nhưng có tầm 5-6 chục bản vẽ. pick cũng ngại. phần pick chọn ấy mà quét tất cả block và nó sẽ đánh từ trên xuong dưới, trái qua phải thì hay bik mấy. Hoắc có 2 options ( theo thứ tự pick/tren xuong trái qua) thì tuyệt vời :D.


  • 0

#12 namgiangduy89

namgiangduy89

    biết vẽ pline

  • Members
  • PipPip
  • 61 Bài viết
Điểm đánh giá: -19 (hơi kém)

Đã gửi 23 November 2015 - 04:18 PM

 

Lisp thay đổi Att tăng dần 1 đơn vị cho các Block_Att được chọn theo Att được chọn đầu tiên.

;; Thay doi att tang dan 1 don vi cho cac block_att duoc chon theo att duoc chon dau tien.
;; Doan Van Ha - CadViet.com - ngay 26/7/2013
(vl-load-com)
(defun C:HA( / ent ss tag lst pre suf int len num #SS->List #String:Split-First VxSetAtts)
 (defun #SS->List (ss / i lst)
  (repeat (setq i (sslength ss))
   (setq lst (cons (ssname ss (setq i (1- i))) lst))))
 (defun #String:Split-First (string symbol / i)
  (if (setq i (vl-string-position (ascii symbol) string))
   (list (substr string 1 (1+ i)) (substr string (+ 2 i)))
   (list string)))
 (defun VxSetAtts (Obj Lst / AttVal)
  (mapcar '(lambda (Att) (if (setq AttVal (cdr (assoc (vla-get-TagString Att) Lst))) (vla-put-TextString Att AttVal))) (vlax-invoke Obj 'GetAttributes))
  (vla-update Obj))
 (if
  (and
   (setq ent (car (nentsel "\nChon Att So hieu cua ban ve dau tien: ")))
   (princ "\nChon cac Block theo thu tu de thay So hieu ban ve...")
   (setq ss (ssget '((0 . "Insert") (66 . 1)))))
  (progn
   (setq tag (cdr (assoc 2 (setq elist (entget ent)))))
   (setq lst (#String:Split-First (cdr (assoc 1 elist)) "-"))
   (setq pre (car lst))
   (setq suf (cadr lst))
   (setq int (atoi suf))
   (setq len (strlen suf))
   (foreach n (#SS->List ss)
(setq num (itoa (setq int (1+ int))))
(repeat (- len (strlen num))
(setq num (strcat "0" num)))
(VxSetAtts (vlax-ename->vla-object n) (list (cons tag (strcat pre num))))))))
 

sao mình làm load nó bị lỗi như vậy là gì ai chỉ dùm với:

APPLOAD ha.lsp successfully loaded.

Command: ; error: syntax error
Command:

Bài viết đã được chỉnh sửa nội dung bởi namgiangduy89: 23 November 2015 - 04:19 PM

  • 0

#13 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 23 November 2015 - 04:55 PM

Tôi vừa load xong, không lỗi gì cả. Bạn down lại xem.


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

namgiangduy89

    biết vẽ pline

  • Members
  • PipPip
  • 61 Bài viết
Điểm đánh giá: -19 (hơi kém)

Đã gửi 24 November 2015 - 08:11 AM

Vẫn báo lỗi như trên anh oi


  • 0

#15 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 24 November 2015 - 08:23 AM

lỗi khi download file lisp khi click vào nút DOWNLOAD.

15454_cadviet_error.png.

 

tạm thời sử dụng Copy & Paste.


  • 0

#16 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 24 November 2015 - 09:52 AM

lỗi khi download file lisp khi click vào nút DOWNLOAD.

 

tạm thời sử dụng Copy & Paste.

Diễn đàn sao í. Hôm qua tôi down ở trên (kích vào nút download) và load thì ok, không hề bị lỗi.


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


#17 victor85

victor85

    biết lệnh stretch

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

Đã gửi 16 December 2015 - 01:49 PM

Vẫn báo lỗi như trên anh oi

Có thể tại bạn chưa pick vào đúng att cần chọn mà chỉ pick vào block nên lỗi thôi bạn ạ.


  • 0