Đến nội dung


Hình ảnh
- - - - -

Nhờ Các Bác Chỉnh Sửa Lại Lisp Cộng Tổng Text Cho Trường Hợp Của Em


  • Please log in to reply
9 replies to this topic

#1 pirates0511

pirates0511

    biết pan

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

Đã gửi 21 July 2016 - 11:01 AM

Đây là Code mình lấy của 1 bạn trên diễn đàn về lisp cộng tổng text 

;;;-----------------------------------------
(defun CheckObj(e MyType) (equal (cdr (assoc 0 (entget e))) MyType))
;;;-----------------------------------------
(defun FilObj(ss1 MyType / ss2 i e)
(setq ss2 (ssadd) i 0)
(repeat (sslength ss1)
(setq e (ssname ss1 i) i (1+ i))
(if (CheckObj e MyType) (ssadd e ss2) )
)
(eval ss2)
)
;;;-----------------------------------------
(defun SelData( / OK)
(setq OK nil)
(while (not OK)
(prompt "\tChon cac text can tinh:")
(setq ss (FilObj (ssget) "TEXT"))
(if (> (sslength ss) 0) (setq OK T) (princ "\nDoi tuong chon khong phai text"))
)
)
;;;-----------------------------------------
(defun WriteRes(kq / OK e data)
(setq OK nil)
(while (not OK)
(setq e (car (entsel "\tChon text ghi ket qua:")))
(if (CheckObj e "TEXT") (setq OK T) (princ "\nDoi tuong chon khong phai text"))
)
(entmod (subst (cons 1 (rtos kq)) (assoc 1 (setq data (entget e))) data))
(princ)
)
;;;-----------------------------------------
(defun C:MUL( / i m e ss)
(SelData) (setq i 0 m 1.0)
(repeat (sslength ss) (setq e (ssname ss i) i (1+ i) m (* m (atof (cdr (assoc 1 (entget e)))))))
(WriteRes m)
)
;;;-----------------------------------------
(defun C:SUM( / i s e ss)
(SelData) (setq i 0 s 0.0)
(repeat (sslength ss) (setq e (ssname ss i) i (1+ i) s (+ s (atof (cdr (assoc 1 (entget e)))))))
(WriteRes s)
)
;;;-----------------------------------------

Mình chuyên thiết kế về cấp nước, khi ghi chú trên đường ống thường ghi là :"D160PVC - L50m". chữ "D160 PVC" có thể thay đổi theo từng loại đường ống, nhưng cụm chữ "L50m thì không thay đổi, chỉ thay đổi chiều dài (50 hoặc 60). Nếu theo lisp trên nó sẽ không cộng được với dãy chữ và số của em. Giờ em muốn các bác sửa lại cho em là: nó chỉ cộng cái "L50m'' thôi, còn trước đó có cái gì thì nó không đụng đến, nghĩa là D160PVC - L50m + D90 HDPE - L60M = 110m ( 50+60=110)

 Em xin cám ơn các bác trước


  • -1

#2 pirates0511

pirates0511

    biết pan

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

Đã gửi 25 July 2016 - 07:53 AM

không có bác nào giúp em cái à. buồn thế  :(


  • 0

#3 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 25 July 2016 - 09:50 AM

Bác giúp em cái này này! Lưu ý:

1/ Trong chữ phải có cụm "- L" (giữa - và L có dấu cách.

2/ Lsp không biết đổi đơn vị, cho nên các cụm từ muốn tính phải có cùng đơn vị (hoặc đều là m, dm, cm, mm)

 

(defun CheckObj(e MyType) (equal (cdr (assoc 0 (entget e))) MyType))
;;;-----------------------------------------
(defun FilObj (ss1 MyType / ss2 i e)
(setq ss2 (ssadd)
i 0
)
(repeat (sslength ss1)
(setq e (ssname ss1 i)
i (1+ i)
)
(if (CheckObj e MyType)
(ssadd e ss2)
)
)
(eval ss2)
)
;;;-----------------------------------------
(defun SelData (/ OK)
(setq OK nil)
(while (not OK)
(prompt "\tChon cac text can tinh:")
(setq ss (FilObj (ssget) "TEXT"))
(if (> (sslength ss) 0)
(setq OK T)
(princ "\nDoi tuong chon khong phai text")
)
)
)
;;;-----------------------------------------
(defun WriteRes (kq / OK e data)
(setq OK nil)
(while (not OK)
(setq e (car (entsel "\tChon text ghi ket qua:")))
(if (CheckObj e "TEXT")
(setq OK T)
(princ "\nDoi tuong chon khong phai text")
)
)
(entmod (subst (cons 1 kq) (assoc 1 (setq data (entget e)))  data))
(princ)
)
 
(defun getchar(s)
(vl-list->string (vl-remove-if '(lambda(x) (<= 48 x 57)) (vl-string->list s)))
)
;;;-----------------------------------------
(defun C:MUL (/ i m e ss vt chu dv)
(SelData)
(setq i 0
m 1.0
)
(repeat (sslength ss)
(setq e (ssname ss i)
i (1+ i))
(if (setq vt (vl-string-search "- L" (setq chu (cdr (assoc 1 (entget e))))))
(setq m (* m (atof (substr chu (+ 4 vt)))))
)
(setq dv (getchar (substr chu (+ 4 vt))))
)
(WriteRes (strcat (rtos m) dv))
)
;;;-----------------------------------------
(defun C:SUM (/ i s e ss chu vt dv)
(SelData)
(setq i 0
s 0.0
)
(repeat (sslength ss)
(setq e (ssname ss i)
i (1+ i))
(if (setq vt (vl-string-search "- L" (setq chu (cdr (assoc 1 (entget e))))))
(setq s (+ s (atof (substr chu (+ 4 vt)))))
)
(setq dv (getchar (substr chu (+ 4 vt))))
)
(WriteRes (strcat (rtos s) dv))
)

  • 1

#4 pirates0511

pirates0511

    biết pan

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

Đã gửi 25 July 2016 - 03:51 PM

Cám ơn bác nhiều nhé. Nhưng sao em làm mà nó lại không cộng nhỉ. Bác xem lại hộ em cái

Command: SUM
Chon cac text can tinh:
Select objects: 1 found
Select objects: 1 found, 2 total
Select objects:  ; error: bad argument type: numberp: nil

  • -1

#5 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 25 July 2016 - 04:11 PM

Bạn đưa file lên mới biết tại sao không cộng được.


  • 1

#6 pirates0511

pirates0511

    biết pan

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

Đã gửi 26 July 2016 - 09:02 AM

<img src="http://i.imgur.com/5dwexmM.jpg"/>

em ko up file cad cho bác xem được (chắc do mạng, bác chịu khó xem hình). em cộng 2 text "D75 HDPE - L56M và D75 HDPE - L63M", nhưng nó ko cộng được. bác ngó lại cho em phát nhé


  • 0

#7 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 26 July 2016 - 09:21 AM

Bạn ko đưa file thì làm sao mà ngó được!!

File của tôi thì cộng tốt.

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


  • 1

#8 pirates0511

pirates0511

    biết pan

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

Đã gửi 26 July 2016 - 03:58 PM

bác cho em cái mail. em gửi qua đó cho. em ko up lên diễn đàn được (ko biết tại sao)


  • 0

#9 nobitalx

nobitalx

    biết pan

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

Đã gửi 26 July 2016 - 05:18 PM

e đang dùng pdfFactory Pro 5.12 để xuất file cad ra pdf nhưng lại bị lỗi font , khi mới view thì thấy ok nhưng khi in ra file pdf thì bị lỗi font. một số bị lỗi 1 số thì không, đã thử mọi cách cài thêm font hay gỡ ra cài lại mà vẫn không được mọi người giúp e với.


  • 1

#10 pirates0511

pirates0511

    biết pan

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

Đã gửi 27 July 2016 - 07:43 AM

em gửi mail cho bác rồi nhé. mở file cad xem hộ em phát 

Tot77
  • 0