Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
thinhquoc

Nhờ lisp tính toán các phép tính giá trị text có phần chữ và phần số

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

thinhquoc    0

Em nhờ các cao thủ viết giúp em lisp tính toán với text như này: em có 1 loạt text dạng TD1 , P1, TC1. . . ( Em là dân giao thông mà ), nay muốn các bác viết lisp dạng cộng trừ nhân chia sao cho phần chữ TD, P, TC giữ nguyên còn phần số thì thực hiện phép tính. (Ps: em đã tìm trên diễn đàn rồi nhưng không thấy lisp nào như vậy)

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
hochoaivandot    108

(defun LM:EditBox ( string / id )
(and
(< 0 (setq id (load_dialog "ACAD")))
(new_dialog "acad_txtedit" id)
(set_tile "text_edit" string)
(action_tile "text_edit" "(setq string $value)")
(if (zerop (start_dialog)) (setq string nil))
)
(if (< 0 id) (unload_dialog id))
string
)
(defun LM:ParseNumbers ( s )
(
(lambda ( l )
(read
(strcat "("
(vl-list->string
(mapcar
(function
(lambda ( a b c )
(if
(or
(< 47 b 58)
(and (= 45 b) (< 47 c 58) (not (< 47 a 58)))
(and (= 46 b) (< 47 a 58) (< 47 c 58))
)
b 32
)
)
)
(cons nil l) l (append (cdr l) (list nil))
)
)
")"
)
)
)
(vl-string->list s)
)
)
(defun c:ttt (/ ss congthu e el dfx1 chudau chu dxf1Num newdxf1 i)
(setvar "cmdecho" 0)
(command "undo" "BE")
(if (not cal) (arxload "geomcal"))
(setq congthu (LM:EditBox "Nhap cong thuc voi x la phan so Vdu (x+10)*2"))
(setq ss (ssget (list (cons 0 "*TEXT") (cons 1 "P#*,p#*,td#*,TD#*,Td#*,tD#*,TC#*,tc#*,Tc#*,tC#*"))))
(repeat (setq i (sslength ss))
(setq
e (ssname ss (setq i (1- i)))
el (entget e)
dxf1 (cdr (assoc 1 el))
chudau (substr dxf1 1 1)
chu (if (or (= chudau "P") (= chudau "p")) chudau (substr dxf1 1 2))
dxf1Num (itoa (car (LM:ParseNumbers dxf1)))
newdxf1 (vl-string-subst dxf1Num "x" congthu)
newdxf1 (strcat chu (itoa (C:cal newdxf1)))
el (subst (cons 1 newdxf1) (assoc 1 el) el)
)
(entmod el)
)
(command "undo" "E")
(setvar "cmdecho" 1)
(princ "Viet boi DuongBaDiep - cadonline.duyxuyen.vn")
(princ)
)

 

 

- Tên lệnh : TTT

- Nhập công thức với x là phần số lấy từ text để tính toán

Ví dụ: Công thức là (x+10)*2 thì chọn P2 kết quả thành P24

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
thinhquoc    0

thank bác rất nhiều. lisp của bác cơ bản đã giúp được choi công việc của e: Tuy nhiên bác có thể sửa một chút xíu nữa cho e được không: Em là dân giao thông, lâu lâu phải sửa tên cọc, lý trình. lisp của bác đã giải quyết được tên cọc trên trắc dọc. Phiền bác sửa sao cho lisp sử dụng được đối với phần chữ như cọc:TD2; cọc:P2; cọc TC2; và các cọc lẻ Cọc:2 chẳng hạn. (Nếu được bác viết lisp sử dụng mà phần chữ nội dung gì cũng áp dụng được thì càng tốt)

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
hochoaivandot    108

Do yêu cầu ban đầu của bạn là sửa cho cọc TD, P va TC nên mói viết vậy

Tôi đã sửa lại để phần chữ bất kỳ đây (Mọi text kết thúc bằng số là OK).

Bạn lưu ý, khi yêu cầu lisp bạn nên gởi file bản vẽ lên để mọi người viết và test nhé

 

(defun LM:EditBox ( string / id )
(and
(< 0 (setq id (load_dialog "ACAD")))
(new_dialog "acad_txtedit" id)
(set_tile "text_edit" string)
(action_tile "text_edit" "(setq string $value)")
(if (zerop (start_dialog)) (setq string nil))
)
(if (< 0 id) (unload_dialog id))
string
)
(defun LM:ParseNumbers ( s )
(
(lambda ( l )
(read
(strcat "("
(vl-list->string
(mapcar
(function
(lambda ( a b c )
(if
(or
(< 47 b 58)
(and (= 45 b) (< 47 c 58) (not (< 47 a 58)))
(and (= 46 b) (< 47 a 58) (< 47 c 58))
)
b 32
)
)
)
(cons nil l) l (append (cdr l) (list nil))
)
)
")"
)
)
)
(vl-string->list s)
)
)
(defun LM:ParseLetter (s)
(setq lst (vl-string->list s))
(vl-list->string (vl-remove-if '(lambda (x) (member x (list 48 49 50 51 52 53 54 55 56 57 58))) lst))
)
(defun c:ttt (/ ss congthu e el dfx1 newdxf1 i)
(setvar "cmdecho" 0)
(command "undo" "BE")
(if (not cal) (arxload "geomcal"))
(setq congthu (LM:EditBox "Nhap cong thuc voi x la phan so Vdu (x+10)*2"))
(setq ss (ssget (list (cons 0 "*TEXT") (cons 1 "*#"))))
(repeat (setq i (sslength ss))
(setq
e (ssname ss (setq i (1- i)))
el (entget e)
dxf1 (cdr (assoc 1 el))
newdxf1 (vl-string-subst (itoa (car (LM:ParseNumbers dxf1))) "x" congthu)
newdxf1 (strcat (LM:ParseLetter dxf1) (itoa (C:cal newdxf1)))
el (subst (cons 1 newdxf1) (assoc 1 el) el)
)
(entmod el)
)
(command "undo" "E")
(setvar "cmdecho" 1)
(princ "Viet boi DuongBaDiep - cadonline.duyxuyen.vn")
(princ)
)
  • 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
vanhiep1611    0

Xin chào bạn 

hochoaivandot

Hiện công việc của tôi đang cần các ứng dụng như trong lisp của bạn (link dưới)

http://cadonline.duyxuyen.vn/modules.php?name=chiaseungdung&go=ViewApplication&lid=17

Bạn có thể chia sẻ được không ?

Nếu được bạn có thể share lên đây cho tôi và anh em cadviet

Cám ơn bạ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
hochoaivandot    108

Xin chào bạn 

hochoaivandot

Hiện công việc của tôi đang cần các ứng dụng như trong lisp của bạn (link dưới)

http://cadonline.duyxuyen.vn/modules.php?name=chiaseungdung&go=ViewApplication&lid=17

Bạn có thể chia sẻ được không ?

Nếu được bạn có thể share lên đây cho tôi và anh em cadviet

Cám ơn bạn trước

 

Đăng ký thành viên website www.cadonline.duyxuyen.vn. Sau đó đăng nhập. Vào lại Mục giới thiệu ứng dụng (Ngay tại Link bạn ghi trên)

Rồi download về dùng. 

Lisp trên mình sưu tầm nhưng không nhớ tác giả và Link gốc.

Muốn trao đổi những nội dung liên quan trên trang cá nhân của mình, bạn hãy liên hệ qua email. Đừng thảo luận trên cadviet.com người khác đọc không hiểu.

Cảm ơn bạn

  • 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
Tue_NV    3.841

.........

Hiện công việc của tôi đang cần các ứng dụng như trong lisp của bạn (link dưới)

http://cadonline.duyxuyen.vn/modules.php?name=chiaseungdung&go=ViewApplication&lid=17

Bạn có thể chia sẻ được không ?

Nếu được bạn có thể share lên đây cho tôi và anh em cadviet

Cám ơn bạn trước

 

Bạn có thể  sử dụng Chương trình tính toán Cộng trừ Nhân Chia giá trị của Block Attribute; Text với 1 số hoặc 1 biểu thức

 của mình đã viết ở đây :

Bài viết số :1354 

http://www.cadviet.com/forum/topic/13203-viet-lisp-theo-yeu-cau-phan-2/page-68

  • 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

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


×