Chuyển đến nội dung
Diễn đàn CADViet
t031285

[Nhờ chỉnh sửa]lisp đánh số thứ tự

Các bài được khuyến nghị

Mình down trên diễn đàn 1lisp đánh số thứ tự rất hay nhưng khi tạo ra số thứ tự nó mặc định lấy text style standard ,về layer thì lấy theo layer hiện hành nhưng trong mục color control không phải là bylayer mà là màu 150.Nay e nhờ các bác sửa giúp lisp sẽ lấy text style text style hiện hành và layer thì sẽ là layer TEXT đã có sẵn trên bản vẽ.

(defun c:thutu(/ H I KC PHUONG PT SOCUOI SODAU TDX TDY)
 (setq h (getreal "\n Co chu: "))
 (setq pt (getpoint "\n Chon vi tri danh so: ")) 
 (setq sodau (getreal "\n So thu tu dau: "))
 (setq socuoi (getreal "\n So thu tu cuoi: "))
 (setq phuong (getstring "\n Phuong <X,Y>: "))
 (setq kc (getreal "\n Khoang cach giua cac so: "))
 (setq i sodau)
 (while (<= i socuoi)
(if (= i sodau)
  (progn
(setq tdy (cadr pt))
(setq tdx (car pt))
(entmake(list(cons 0 "TEXT")(cons 10 (list tdx tdy 0.0))(cons 40 h)(cons 62 150)(cons 1 (rtos i 2 0))))
)
(if (or (= phuong "x")(= phuong "X"))
 (progn
(setq tdx (+ tdx kc))
(entmake(list(cons 0 "TEXT")(cons 10 (list tdx tdy 0.0))(cons 40 h)(cons 62 150)(cons 1 (rtos i 2 0))))
)
 (progn
(setq tdy (- tdy kc))
(entmake(list(cons 0 "TEXT")(cons 10 (list tdx tdy 0.0))(cons 40 h)(cons 62 150)(cons 1 (rtos i 2 0))))
)
 )
  )
  (setq i (1+ i))
)
 )

Chân thành cảm ơn trước.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Bạn xóa hết đoạn này đi :(cons 62 150)

Còn về TEXT STYLE và gán các số thứ tự này thành layer có tên là TEXT nữa.Mong các bác quan tâm giúp đỡ.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Mình không còn CAD ở đây nên nói bo vậy. bạn thêm đoạn này :

(if (not (tblsearch "Layer" "Text"))(command "-layer" "N" "Text" ""))

(setq sty (getvar "Textstyle"))

vào dưới dòng này :

(defun c:thutu(/ H I KC PHUONG PT SOCUOI SODAU TDX TDY)

Rồi thêm vào đằng sau tất cả đoạn

(cons 0 "TEXT")
đoạn này :
(cons 7 sty)(cons 8 "Text")
  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Mình không còn CAD ở đây nên nói bo vậy. bạn thêm đoạn này :

 

vào dưới dòng này :

 

Rồi thêm vào đằng sau tất cả đoạnđoạn này :

Mình đã làm theo như bạn nói nhưng mở cad lên là tại con trỏ chuột hiện dòng Requires numeric valua.command: Xong cad báo lỗi rồi thoát ra luôn.Dưới đây là đoạn lisp mình đã sửa theo như bạn nói:

 
(defun c:thutu(/ H I KC PHUONG PT SOCUOI SODAU TDX TDY)
if (not (tblsearch "Layer" "S. TEXT"))(command "-layer" "N" "S. TEXT" ""))
(setq sty (getvar "Textstyle"))
 (setq h (getreal "\n Co chu: "))
 (setq pt (getpoint "\n Chon vi tri danh so: "))
 (setq sodau (getreal "\n So thu tu dau: "))
 (setq socuoi (getreal "\n So thu tu cuoi: "))
 (setq phuong (getstring "\n Phuong <X,Y>: "))
 (setq kc (getreal "\n Khoang cach giua cac so: "))
 (setq i sodau)
 (while (<= i socuoi)
(if (= i sodau)
  (progn
(setq tdy (cadr pt))
(setq tdx (car pt))
(entmake(list(cons 0 "TEXT")(cons 7 sty)(cons 8 "S. TEXT")(cons 10 (list tdx tdy 0.0))(cons 40 h)(cons 1 (rtos i 2 0))))
)
(if (or (= phuong "x")(= phuong "X"))
 (progn
(setq tdx (+ tdx kc))
(entmake(list(cons 0 "TEXT")(cons 7 sty)(cons 8 "S. TEXT")(cons 10 (list tdx tdy 0.0))(cons 40 h)(cons 1 (rtos i 2 0))))
)
 (progn
(setq tdy (- tdy kc))
(entmake(list(cons 0 "TEXT")(cons 7 sty)(cons 8 "S. TEXT")(cons 10 (list tdx tdy 0.0))(cons 40 h)(cons 1 (rtos i 2 0))))
)
 )
  )
  (setq i (1+ i))
)
 )

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Mình đã làm theo như bạn nói nhưng mở cad lên là tại con trỏ chuột hiện dòng Requires numeric valua.command: Xong cad báo lỗi rồi thoát ra luôn.Dưới đây là đoạn lisp mình đã sửa theo như bạn nói:

(defun c:thutu(/ H I KC PHUONG PT SOCUOI SODAU TDX TDY)
if (not (tblsearch "Layer" "S. TEXT"))(command "-layer" "N" "S. TEXT" ""))
(setq sty (getvar "Textstyle"))
 (setq h (getreal "\n Co chu: "))
 (setq pt (getpoint "\n Chon vi tri danh so: "))
 (setq sodau (getreal "\n So thu tu dau: "))
 (setq socuoi (getreal "\n So thu tu cuoi: "))
 (setq phuong (getstring "\n Phuong <X,Y>: "))
 (setq kc (getreal "\n Khoang cach giua cac so: "))
 (setq i sodau)
 (while (<= i socuoi)
(if (= i sodau)
  (progn
(setq tdy (cadr pt))
(setq tdx (car pt))
(entmake(list(cons 0 "TEXT")(cons 7 sty)(cons 8 "S. TEXT")(cons 10 (list tdx tdy 0.0))(cons 40 h)(cons 1 (rtos i 2 0))))
)
(if (or (= phuong "x")(= phuong "X"))
 (progn
(setq tdx (+ tdx kc))
(entmake(list(cons 0 "TEXT")(cons 7 sty)(cons 8 "S. TEXT")(cons 10 (list tdx tdy 0.0))(cons 40 h)(cons 1 (rtos i 2 0))))
)
 (progn
(setq tdy (- tdy kc))
(entmake(list(cons 0 "TEXT")(cons 7 sty)(cons 8 "S. TEXT")(cons 10 (list tdx tdy 0.0))(cons 40 h)(cons 1 (rtos i 2 0))))
)
 )
  )
  (setq i (1+ i))
)
 )

Trước hàm if phải có dấu (

Bạn bị lỗi này :

(if (not (tblsearch "Layer" "S. TEXT"))(command "-layer" "N" "S. TEXT" ""))

....

  • Vote tăng 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Mình down trên diễn đàn 1lisp đánh số thứ tự rất hay nhưng khi tạo ra số thứ tự nó mặc định lấy text style standard ,về layer thì lấy theo layer hiện hành nhưng trong mục color control không phải là bylayer mà là màu 150.Nay e nhờ các bác sửa giúp lisp sẽ lấy text style text style hiện hành và layer thì sẽ là layer TEXT đã có sẵn trên bản vẽ.

(defun c:thutu(/ H I KC PHUONG PT SOCUOI SODAU TDX TDY)  (setq h (getreal "\n Co chu: "))  (setq pt (getpoint "\n Chon vi tri danh so: "))   (setq sodau (getreal "\n So thu tu dau: "))  (setq socuoi (getreal "\n So thu tu cuoi: "))  (setq phuong (getstring "\n Phuong <X,Y>: "))  (setq kc (getreal "\n Khoang cach giua cac so: "))  (setq i sodau)  (while (<= i socuoi)(if (= i sodau)   (progn(setq tdy (cadr pt))(setq tdx (car pt))(entmake(list(cons 0 "TEXT")(cons 10 (list tdx tdy 0.0))(cons 40 h)(cons 62 150)(cons 1 (rtos i 2 0)))))	(if (or (= phuong "x")(= phuong "X"))  (progn	(setq tdx (+ tdx kc))	(entmake(list(cons 0 "TEXT")(cons 10 (list tdx tdy 0.0))(cons 40 h)(cons 62 150)(cons 1 (rtos i 2 0))))	)  (progn	(setq tdy (- tdy kc))	(entmake(list(cons 0 "TEXT")(cons 10 (list tdx tdy 0.0))(cons 40 h)(cons 62 150)(cons 1 (rtos i 2 0))))	)  )   )   (setq i (1+ i)))  )
Chân thành cảm ơn trước.

 

Các bác cho e hỏi e muốn đánh STT bản vẽ là BD-01 đến BD-09 thì phải sửa như nào ạ! Lisp này hình như chỉ đánh đươc số 1->.... đúng không ạ 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Các bác cho e hỏi e muốn đánh STT bản vẽ là BD-01 đến BD-09 thì phải sửa như nào ạ! Lisp này hình như chỉ đánh đươc số 1->.... đúng không ạ 

Sử dụng lisp CY của tác giả #Doan Van Ha, bình luận #9: 

http://www.cadviet.com/forum/topic/43968-yeu-cau-lisp-copy-tang-so-ma-chu-giua-nguyen/?do=findComment&comment=193311

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay


×