Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] lisp cộng trừ nhân chia text


  • Please log in to reply
30 replies to this topic

#21 hoquangvinh

hoquangvinh

    biết lệnh mirror

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

Đã gửi 08 March 2014 - 04:33 PM

Cái này bổ sung thêm phần ghi kết quả vào 1 text có sẵn .

(defun c:tinh()  (vl-load-com)  (initget 1 "+ - * /")  (setq ptinh (getkword "Chon phep tinh <+ - * />: "))    (cond ((= ptinh "+")  ;;; cong	 (prompt "\nChon text de cong:")	 (setq ss (ssget '((0 . "TEXT")))	       kqua 0)	 (while (and ss (> (sslength ss) 0))	   (setq kqua (+ kqua (atof (cdr (assoc 1 (entget (setq ent (ssname ss 0))))))))	   (ssdel ent ss))	 (princ kqua))		((= ptinh "*")  ;;;nhan	 (prompt "\nChon text de nhan:")	 (setq ss (ssget '((0 . "TEXT")))	       kqua 1)	 (while (and ss (> (sslength ss) 0))	   (setq kqua (* kqua (atof (cdr (assoc 1 (entget (setq ent (ssname ss 0))))))))	   (ssdel ent ss))	 (princ kqua))	((= ptinh "-")  ;;;tru	 (setq sobitru (car (entsel "\nChon so bi tru:"))	       sotru (car (entsel "\nChon so tru:\n"))	       kqua (- (atof (cdr (assoc 1 (entget sobitru))))		     (atof (cdr (assoc 1 (entget sotru))))))	  	 (princ kqua))	((= ptinh "/")  ;;;chia	 (setq sobichia (car (entsel "\nChon so bi chia:"))	       sochia (car (entsel "\nChon so chia:\n"))	       kqua (/ (atof (cdr (assoc 1 (entget sobichia))))		     (atof (cdr (assoc 1 (entget sochia))))))	  	 (princ kqua))	  )    (if (not ssle) (setq ssle 0))  (setq obj (vlax-ename->vla-object (car (entsel "\nChon text de ghi ket qua:")))		ssle1 (getint (strcat "\nSo so le <" (itoa ssle) ">: ")))  (if ssle1 (setq ssle ssle1))  (vla-put-TextString obj (rtos kqua 2 ssle))    (princ)	       )

cái này chắc đã update lại kết quả sửa lisp rồi chứ mình thấy dùng ổn mà

thanks


  • 0

#22 Han Tinh

Han Tinh

    biết vẽ pline

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

Đã gửi 09 March 2014 - 08:45 AM

Lisp sử dụng được với các dim thì sẽ tuyệt hơn. mong mọi người điều chỉnh tícho lisp hoàn thiện hơn. Thanks!


  • 0

#23 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 10 March 2014 - 08:58 AM

Không hiểu bạn cần cộng trừ nhân chia dim để làm gì?


  • 0

#24 ceddtu

ceddtu

    biết vẽ spline

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

Đã gửi 14 October 2014 - 12:48 PM

ah nhân đây cho mình hỏi mình có cái lisp này dùng để trừ text (lệnh ta) nhưng cho kết quả là 1 số có 2 chữ số thập phân, vậy mình muốn sửa về 3 số thì sửa chỗ nào, cảm ơn mọi người nhiều ạ. (nếu đc xin chỉ mình tự sửa để lần sau những cái tương tự ko mắc công đi nhờ nữa ạ :) )

http://www.cadviet.c...xt_cho_text.lsp


  • 0
Đời vắng mẹ hiền không phụ nữ.
Anh hùng thi sĩ hỏi còn đâu !

#25 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 14 October 2014 - 01:11 PM

- bạn up code dạng này ko tải để xem đc, nhưng nhoc đoán mò là, bạn xem trong lsp dòng nào có hàm (rtos (.....) 2 2) thì cứ chuyển số 2 cuối thành 3 là đc =>

(rtos (....) 2 3)


  • 1
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#26 ceddtu

ceddtu

    biết vẽ spline

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

Đã gửi 15 October 2014 - 10:20 AM

;----------------------------------------------------
;--------Nguyen The Anh-Road No2-RECO-TEDI-----------
;--------Standard command for edit section-----------
;----------------------------------------------------
(setq #tyle 0.001)
(setq tle 1)
(setq #height 0.34)
(setq #widthfactor 1)
(setvar "dimzin" 0)
;----------------------------------------------------
(defun c:setup()
        (if (not (and (/= #tyle 0) (/= #tyle nil))) (setq #tyle n1))
    (setq xau (strcat "New Scale (1/<" (rtos (/ 1 #tyle) 2 0) ">): "))
    (setq h1 (getreal xau))
    (if h1 (setq #tyle h1) (setq h1 #tyle))
(if (null #tyle) (setq #tyle (getreal "\Ty le (1/<1000>) :")))
 (if (null #tyle) (setq #tyle 0.001)) 
    (setq tle (/ 1 #tyle))
    (setq tle (/ tle 1000))
(setq #height (entsel "\nText lam mau:"))
    (if (null #height) (princ)
     (progn
      (setq ds (entget (car #height)))
      (setq #height (cdr (assoc 40 ds)))
      (setq #widthfactor (/ (distance (cdr (assoc 10 ds)) (cdr (assoc 11 ds)) ) 2)) 
     ) 
    )
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;------------------------==================
;=====Area for scale================================
;==========================================
(defun c:Ac ( / po ent dt dtc tle1)  
   (Start)
   (setq osmd1 (getvar "osmode"))
   (setvar "osmode" 0)
    (setq po (getpoint "/Chon 1 diem trong:") 
          dtc 0)
    (setvar "osmode" osmd1)
    (while po
       (command"bpoly" po "")
       (setq ent (entlast))
       (command"area" "e" ent)
       (setq dt (getvar "area")
	     dtc (+ dtc dt))
       (command "erase" ent "")
       (setvar "osmode" 0)
       (setq po (getpoint "/Diem trong tiep/<Enter> de ket thuc: "))
       (setvar "osmode" osmd1)       
    )
(setvar "osmode" 0)   
(setq dc (getpoint "/Diem dat Text:"))
(setq dt (rtos (* dtc tle tle) 2 2))
(setq dt1 dt)
(command ".text" dc #height "0" dt1)
(setvar "osmode" osmd1)
    (kthuc)
    (princ)
)
;------------------------------------------
;--------------==========------------------
;-------------Lenght for grow grass -----------
;==========================================
;-----------------------------------------=
(defun c:tca ()
 (start)
 (setvar "osmode" 33)
 (setq tco 0)
 (setq poo (getpoint "\<Start Point>:"))
 (setvar "osmode" 0)
(while poo
  (setq p1 poo)
  (setvar "osmode" 33)
  (setq p2 (getpoint "\<Second Point>:"))
  (setq kca (distance p1 p2))
  (setq tco (+ kca tco))
  (setq poo (getpoint "\<Enter> Stop/<Next Point>:"))
)
;*** End while ***
 (setq tco (* tco tle))
 (setq text1 (rtos tco 2 2))
 (setq dc (getpoint "\<Insert>:"))
 (command ".text" dc #height "0" text1)
 (kthuc)
 (princ)
)
;--------------------------------------
;======================================
;--------------------------------------
(defun laygiatri (  ds1  / gt1  gt) 
(setq 	gt1 (cdr (assoc 1 (entget ds1)))
	gt	(rtos (read gt1) 2 2)
)
)
;------------------------------------------------
(defun laygiatritru (  ds1 ds2  / gt1 gt2 gt) 
(setq 	gt1 (cdr (assoc 1 (entget ds1)))
	gt2  (cdr (assoc 1 (entget ds2)))
	gt	(rtos (- (read gt1 ) (read gt2)) 2 2)
)
)
;-------------------------------------------------
(defun laygiatritong (  ds1 ds2  / gt1 gt2 gt) 
(setq 	gt1 (cdr (assoc 1 (entget ds1)))
	gt2  (cdr (assoc 1 (entget ds2)))
	gt	(rtos (+ (read gt1 ) (read gt2)) 2 2)
)
)
;--------------------------------------------------
(defun layso ( thongbao / gtri a kq)
(setq a (entsel thongbao))
(and
	(/= a  nil)
	(= (type (setq gtri (assoc  1 (entget (car a))))) 'STR)
	(= (type (read gtri)) 'REAL)
)
 (setq kq gtri)
)
;---------------------------------------------------
;---------------------------------------------------
;---------------------------------------------------
;-------Thay Text cho Text--------------------------
;---------------------------------------------------
;---------------------------------------------------
;(defun c:sa ( / ds1 ds3 gt ds dsach)
;(setq
;	ds1 (car (entsel "\n Chi Text gia tri: "))
;	ds3 (car (entsel "\n Chi Text muon thay: " ))
;	ds  (entget ds3)
;	gt  (cons 1 (laygiatri ds1 )) 
;)
;	(entdel ds3)
;		(foreach tam 	ds
;			(if (/= (car tam)	1)	(setq dsach 	(append dsach (list tam)))
;						(setq dsach 	(append dsach (list gt)))
;			)
;		)
;	(entmake dsach)
;(princ)
;)
;------------------------------------------
(defun c:sa ()
 (setvar "Cmdecho" 0)
 (prompt "\n<<   Select Data             >>")
 (setq sstcong (entsel))
        (setq sdk (entget (car sstcong)))
        (if (= (cdr (assoc 0 sdk)) "TEXT")
            (setq tckl (cdr (assoc 1 sdk)))
            (prompt "\n<< ERROR : Nothing Text Selected. >>")
        )
 (prompt "\n<<   Select Text To Copy.  >>")
 (setq tcong (ssget))
 (setq sslen (sslength tcong))
      (while (> sslen 0)
        (setq stc (entget (ssname tcong (setq sslen (1- sslen)))))
        (if (= (cdr (assoc 0 stc)) "TEXT")
            (entmod (subst (cons 1 tckl) (assoc 1 Stc) Stc))
            (prompt "\n<< ERROR : Nothing Text Selected. >>")
        )
      )
  (setvar "Cmdecho" 1)
)
;------------------------------------------
;------------------------------------------
;------------------------------------------
;--------Tru 2 Text va thay Text-----------
;==========================================
;==========================================
;------------------------------------------
(defun c:Ta ( / ds1 ds2 ds3 gt ds dsach)
(setq
	ds1 (car (entsel "\nGia tri bi tru: "))
	ds2 (car (entsel "\nLuong can tru: " ))
	ds3 (car (entsel "\n Thay Text: " ))
	ds  (entget ds3)
	gt  (cons 1 (laygiatritru ds1 ds2))
)
	(entdel ds3)
		(foreach tam 	ds
			(if (/= (car tam)	1)	(setq dsach 	(append dsach (list tam)))
						(setq dsach 	(append dsach (list gt)))
			)
		)
	(entmake dsach)
(princ)
)
;----------------------------------------------------------
;----------------------------------------------------------
;----------------------------------------------------------
;--------------Sum value text---------------------------
;----------------------------------------------------------
;==========================================================
(defun c:ca ( / ds1 ds2 ds3 gt ds dsach)
(setq
	ds1 (car (entsel "\n Gia tri 1: "))
	ds2 (car (entsel "\n Gia tri 2: " ))
	ds3 (car (entsel "\n Thay Text/Gia tri: " ))
	ds  (entget ds3)
	gt  (cons 1 (laygiatritong ds1 ds2))
)
	(entdel ds3)
		(foreach tam 	ds
			(if (/= (car tam)	1)	(setq dsach 	(append dsach (list tam)))
						(setq dsach 	(append dsach (list gt)))
			)
		)
	(entmake dsach)
(princ)
)
;---------------Ham goc----------------------
(defun start ()
 (setq osmd (getvar "osmode"))
 (setq tex (getvar "texteval"))
 (setq cmd (getvar "cmdecho"))
 (setq angb (getvar "angbase"))
 (setq angd (getvar "angdir"))
 (setvar "texteval" 1)
)
(defun kthuc ()
 (setvar "osmode" osmd)
 (setvar "texteval" tex)
 (setvar "cmdecho" cmd)
 (setvar "angbase" angb)
 (setvar "angdir" angd)
 (princ)
)
;---------------------------------------------
;-----Evelation - Edit from "SuaTN.lsp"----
;----------------------------------------------
(defun c:cda ()
   (start)
   (setvar "osmode" 33)
   (setq p111 (getpoint "\nChon diem chuan :"))
   (setq c1 "caodo")
   (while (not (numberp c1))
   (setq c1 (car (entsel "\nChi cho text cao do cua diem chuan:")))
   (if (null c1) (princ)
     (if (/= (assoc 1 (entget c1)) nil)
      (setq c1 (read (cdr (assoc 1 (entget c1)))))
     )
   )
   )
  (setvar "osmode" 33)  
  (setq p211 (getpoint p111 "\nDiem can tinh : "))
   (while p211
    (setq px (* (- (cadr p211) (cadr p111)) tle))  
    (setq tet (+ c1 px))
    (setq tet (rtos tet 2 2))
    (setvar "osmode" 0)
    (setq dc (getpoint p211 "\nDiem chen : "))
    ;(setq dc (mapcar '- dc (list 0.0 #widthfactor)))
    ;(setq dc1 (mapcar '+ dc (list 0.0 (* #widthfactor 2.0)) ))
    (command "text" dc #height 90 tet "" "")
    (setvar "osmode" 33)  
    (setq p211 (getpoint p111 "\nDiem can tinh/<Enter> for End: "))
   );End While
  (setvar "osmode" 0)
 (kthuc)
 (princ)
)
;--------------------------------------------
;-----------Khoang cach le------------------
;--------------------------------------------
(defun c:kca ()
 (start)
 (setvar "osmode" 1)
 (setq p3 (getpoint "\nChon diem thu nhat : ")) 
 (while p3
  (setq p4 (getpoint p3 "\nChon diem thu hai : "))
  (setvar "osmode" 0)
  (setq kca (abs (- (car p3) (car p4))))
  (setq kca2 (abs (* kca tle)))
  (setq text (rtos kca2 2 2)) 
  (setq dc (getpoint "\nDiem chen : "))
 (if (>= kca2 1.0) (princ) 
                   (progn 
                   (if (>= kca 2.23)
                                  (setq height 2)
                                  (setq height (* kca 0.78))  
                   )                
                   (setq ddtext1 (list (+ (car dc) (/ height 2)) (- (cadr dc) 2.0)))
                   (setq ddtext2 (list (+ (car dc) (/ height 2)) (+ (cadr dc) 2.0)))
                   (command "text" dc #height 90 text "" "")
                   );end progn
  );end if
  (if (< kca2 1.0) (princ)
        (progn
        (setq ddtext1 (list (- (car dc) (/ kca 2.1)) (- (cadr dc) 1.0))); ***Tu 1m den 1.5m ***
        (setq ddtext2 (list (+ (car dc) (/ kca 2.1)) (- (cadr dc) 1.0)))
        (if (>= kca 7.5) (setq ddtext1 (list (- (car dc) 3.4) (- (cadr dc) 1.0))))
        (if (>= kca 7.5) (setq ddtext2 (list (+ (car dc) 3.4) (- (cadr dc) 1.0))))
        (command "text" dc #height 0 text "" "")
        )
  );end if
  (setvar "osmode" 1)
  (setq p3 (getpoint "\nChon diem thu nhat/<Enter> for End: ")) 
 );end while
 (setvar "osmode" 0)
  (kthuc)
 (princ)
)
;-------------------------------------
;--------------Nang Text 3D for SDSK---------------
;------------------------------------
(defun c:movet (/ ss ee e l k cd p)
   (command "UNDO" "begin")
   (setq ss (ssget))
   (if ss (progn
      (setq l (sslength ss))
      (setq k 0)
      (repeat l
         (setq e (ssname  ss k))
         (setq k (+ k 1))
         (setq ee (entget e))
         (if (= (cdr (assoc 0 ee) ) "TEXT")
             (progn
                (setq p (cdr (assoc 10 ee) ))
                (setq cd (cdr (assoc 1 ee)))
                (setq cd (atof cd))
                (setq p (list (car p) (cadr p) cd ))
                (setq ee (subst (cons 10 p) (assoc 10 ee) ee))
                (entmod ee)
                (entupd e)
             ) 
         ) 
      )  
   ))
   (command "UNDO" "end")   
)
;-------------------------------------------
;;;;;;;;;;;;;;;;;;;;;;
;;;;Tinh cong don;;;;;
;;;;;;;;;;;;;;;;;;;;;;
(defun c:ss()
 (setvar "CMDECHO" 0)
 (setvar "DIMZIN" 0)
 ;(setq pre (getint "\nSo chu so sau dau phay?"))
 (command "luprec" 2)  
 (setq co (getreal "\nGia tri can cong them:"))
 (SETQ TH (SSGET))
 (SETQ QUANT (SSLENGTH TH))
  (SETQ INDEX 0)
  (WHILE (< INDEX QUANT)
  (IF 
	  (AND(= "TEXT" (CDR (ASSOC 0 (SETQ A (ENTGET (SSNAME TH INDEX)))))))      
     (PROGN
		 (setq s (entget (SSNAME TH INDEX)))
		   (setq otext (assoc 1 s))
		   (setq ot (cdr otext))
		   (setq ot (read (substr ot 1 )))
		   (setq nt (cons 1 (rtos (+ ot co) 2 2)))  
		   (setq s (subst nt otext s))
		   (entmod s)
     )
  	)
  (setq index (+ index 1))
 )
)

 

- bạn up code dạng này ko tải để xem đc, nhưng nhoc đoán mò là, bạn xem trong lsp dòng nào có hàm (rtos (.....) 2 2) thì cứ chuyển số 2 cuối thành 3 là đc =>

(rtos (....) 2 3)

Cảm ơn bạn nhé, lisp như thế này ạ. vì nó nhiều lệnh quá.


  • 0
Đời vắng mẹ hiền không phụ nữ.
Anh hùng thi sĩ hỏi còn đâu !

#27 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 15 October 2014 - 02:00 PM

(defun laygiatritru (  ds1 ds2  / gt1 gt2 gt) 
(setq gt1 (cdr (assoc 1 (entget ds1)))
gt2  (cdr (assoc 1 (entget ds2)))
gt (rtos (- (read gt1 ) (read gt2)) 2 3)
)
)
(defun laygiatritru (  ds1 ds2  / gt1 gt2 gt) 
(setq 	gt1 (cdr (assoc 1 (entget ds1)))
	gt2  (cdr (assoc 1 (entget ds2)))
	gt	(rtos (- (read gt1 ) (read gt2)) 2 3)
)
) 

 

- Nếu bạn chỉ mún phép trừ ra 3 số thập phân thì bạn kím cái hàm này (laygiatritru),  sửa dòng gt (rtos (.......) 2 3)

- số cuối cùng trong hàm (rtos) đó là số quyết định số thập phân mún lấy bao nhiêu, nếu không có để số cuối cùng đó chỉ để mỗi số 2 kia thì mặc định nó sẽ lấy theo units bạn set hiện tại trên bản vẽ là lấy bao nhiêu số thập phân

- cái trên là nhoc đã sữa cho bạn lệnh trừ ra 3 số thập phân rùi


  • 1
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#28 ceddtu

ceddtu

    biết vẽ spline

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

Đã gửi 15 October 2014 - 04:54 PM

(defun laygiatritru (  ds1 ds2  / gt1 gt2 gt) 
(setq gt1 (cdr (assoc 1 (entget ds1)))
gt2  (cdr (assoc 1 (entget ds2)))
gt (rtos (- (read gt1 ) (read gt2)) 2 3)
)
)
(defun laygiatritru (  ds1 ds2  / gt1 gt2 gt) 
(setq 	gt1 (cdr (assoc 1 (entget ds1)))
	gt2  (cdr (assoc 1 (entget ds2)))
	gt	(rtos (- (read gt1 ) (read gt2)) 2 3)
)
) 

 

- Nếu bạn chỉ mún phép trừ ra 3 số thập phân thì bạn kím cái hàm này (laygiatritru),  sửa dòng gt (rtos (.......) 2 3)

- số cuối cùng trong hàm (rtos) đó là số quyết định số thập phân mún lấy bao nhiêu, nếu không có để số cuối cùng đó chỉ để mỗi số 2 kia thì mặc định nó sẽ lấy theo units bạn set hiện tại trên bản vẽ là lấy bao nhiêu số thập phân

- cái trên là nhoc đã sữa cho bạn lệnh trừ ra 3 số thập phân rùi

 một lần nữa cảm ơn bạn rất nhiều.
Ps diễn đàn hình như gõ tiếng việt bị lỗi thì phải, cứ nhảy lui con trỏ .


  • 0
Đời vắng mẹ hiền không phụ nữ.
Anh hùng thi sĩ hỏi còn đâu !

#29 bebicualo

bebicualo

    Chưa sử dụng CAD

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

Đã gửi 18 July 2016 - 09:05 AM

Cái này bổ sung thêm phần ghi kết quả vào 1 text có sẵn .

(defun c:tinh()
(vl-load-com)
(initget 1 "+ - * /")
(setq ptinh (getkword "Chon phep tinh <+ - * />: "))

(cond ((= ptinh "+") ;;; cong
(prompt "\nChon text de cong:")
(setq ss (ssget '((0 . "TEXT")))
kqua 0)
(while (and ss (> (sslength ss) 0))
(setq kqua (+ kqua (atof (cdr (assoc 1 (entget (setq ent (ssname ss 0))))))))
(ssdel ent ss))
(princ kqua))

((= ptinh "*") ;;;nhan
(prompt "\nChon text de nhan:")
(setq ss (ssget '((0 . "TEXT")))
kqua 1)
(while (and ss (> (sslength ss) 0))
(setq kqua (* kqua (atof (cdr (assoc 1 (entget (setq ent (ssname ss 0))))))))
(ssdel ent ss))
(princ kqua))

((= ptinh "-") ;;;tru
(setq sobitru (car (entsel "\nChon so bi tru:"))
sotru (car (entsel "\nChon so tru:\n"))
kqua (- (atof (cdr (assoc 1 (entget sobitru))))
(atof (cdr (assoc 1 (entget sotru))))))
(princ kqua))

((= ptinh "/") ;;;chia
(setq sobichia (car (entsel "\nChon so bi chia:"))
sochia (car (entsel "\nChon so chia:\n"))
kqua (/ (atof (cdr (assoc 1 (entget sobichia))))
(atof (cdr (assoc 1 (entget sochia))))))
(princ kqua))
)
(if (not ssle) (setq ssle 0))
(setq obj (vlax-ename->vla-object (car (entsel "\nChon text de ghi ket qua:")))
ssle1 (getint (strcat "\nSo so le <" (itoa ssle) ">: ")))
(if ssle1 (setq ssle ssle1))
(vla-put-TextString obj (rtos kqua 2 ssle))
(princ)
)

Cái này tốt rồi nhưng bạn làm sao để mỗi lần mình làm nhiều lần nó có thể nhớ được thao tác mình làm trc đó làm mặc định được không? Cứ mỗi lần bấm 1 phép tính là cứ phải chọn lại phép tính " cộng, trừ, nhân, chia" thì hơi bất tiện xíu, thanks


  • 0

#30 vanhuyou

vanhuyou

    Chưa sử dụng CAD

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

Đã gửi 07 August 2016 - 12:03 AM


Bạn thử cái này xem sao.
Đối với phép + và * bạn có thể chọn 1 lúc nhiều số, còn - và / thì chỉ có 2 số thôi.

(defun c:tinh()
  (initget 1 "+ - * /")
  (setq ptinh (getkword "Chon phep tinh : "))
  
  (cond ((= ptinh "+")  ;;; cong
	 (prompt "\nChon text de cong:")
	 (setq ss (ssget '((0 . "TEXT")))
	       tong 0)
	 (while (and ss (> (sslength ss) 0))
	   (setq tong (+ tong (atof (cdr (assoc 1 (entget (setq ent (ssname ss 0))))))))
	   (ssdel ent ss))
	 (princ tong))
	
	((= ptinh "*")  ;;;nhan
	 (prompt "\nChon text de nhan:")
	 (setq ss (ssget '((0 . "TEXT")))
	       tong 1)
	 (while (and ss (> (sslength ss) 0))
	   (setq tong (* tong (atof (cdr (assoc 1 (entget (setq ent (ssname ss 0))))))))
	   (ssdel ent ss))
	 (princ tong))

	((= ptinh "-")  ;;;tru
	 (setq sobitru (car (entsel "\nChon so bi tru:"))
	       sotru (car (entsel "\nChon so tru:\n"))
	       kq (- (atof (cdr (assoc 1 (entget sobitru))))
		     (atof (cdr (assoc 1 (entget sotru))))))	  
	 (princ kq))

	((= ptinh "/")  ;;;chia
	 (setq sobichia (car (entsel "\nChon so bi chia:"))
	       sochia (car (entsel "\nChon so chia:\n"))
	       kq (/ (atof (cdr (assoc 1 (entget sobichia))))
		     (atof (cdr (assoc 1 (entget sochia))))))	  
	 (princ kq))	
  )  
  (princ)	       
)

  • 0

#31 vanhuyou

vanhuyou

    Chưa sử dụng CAD

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

Đã gửi 07 August 2016 - 12:07 AM

Bác có thể giúp em là lúc xuất kết quả ra text có sẵn thì khi chọn text nó sẽ thêm số lượng vào đầu text chứ không phải xóa dòng text đó để thêm số lượng vào,hoặc là xuất ra kết quả bằng thông báo được không. Cám ơn bác nhìu.
  • -1