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

[yêu cầu] lisp chèn block phong thủy

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

mình viết yêu câù này lên mong các bạn giúp đỡ.

mình muốn viết một cái lisp tính tổng của một số và hiêụ số đó ra một số và cái số tìm được là tên của block mình muốn chèn vào bản cad

các bước để nhập như sau:

Bước 1: vào năm sinh của chủ nhà : vd 1987

Bước 2: vào giơí tính: Nam(1)/Nữ(2)... là nam gõ 1,là nữ gõ 2

sau đó tính tổng

1979=1+9+8+7=25 vì 25 >10 ta lại có 2+5=7=A

nếu chủ nhà là Nam ta lấy 11 trừ A được 1 số ,số đó là block cần chèn vào bản cad: 11-7=4 ,block cần chèn vào bản cad là block số 4

nếu chủ nhà là Nư ta lấy 4 cộng A được 1 số ,số đó là block cần chèn vào bản cad: 4+7=11>10 vâỵ ta có 1+1=2 ,block cần chèn vào bản cad là block số 2

 

Tất cả có 9 quái số được đặt tên từ 1 đến 9 mình đã tạo sẵn rôì.

Mong các bạn giúp đỡ mình vơí.Hy vọng mình sẽ có các bạn chung tay để công hiến cho anh em diễn đàn phần mềm xem phong thuỷ khoa học.

có gì liên lạc vơí mình nhé Thiện: 0989807986 Email: hoangthanthien79@gmail.com

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 xin gửi kèm file bao gồm 9 block,mình đã đánh số block từ 1 đến 9, cac bạn giup mình làm sao khi nhập năm sinh vào thi hàm tinh ra quái số mấy thì chèn đúng block số đó vào bản vẽ cad bất kỳ.

vd: khi cộng trừ xong ra quái số kết quả là 4 thì bạn cho nó chèn block số 4 vào bản vẽ cho minh .

 

Rất mong cac bạn giúp đỡ.http://www.cadviet.com/upfiles/3/81893_chin_quai_so_phong_thuy.dwg

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

nhoc ko rành lsp nhưng thấy lạ, xem phog thủy và bói bằng cad ?? :D, về thuật toán thì nhoc nghĩ lsp có thể làm đc nhưng vậy khi dùng lsp phải có file này á, và phải chèn đúng block hình như thiếu cơ sở để xác định chăng ?, cái này hơi khó :D

Ps: hình trong file bạn đẹp thật ^^

104473_boiiiiiiiiiiiii.jpg

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

nhoc ko rành lsp nhưng thấy lạ, xem phog thủy và bói bằng cad ?? :D, về thuật toán thì nhoc nghĩ lsp có thể làm đc nhưng vậy khi dùng lsp phải có file này á, và phải chèn đúng block hình như thiếu cơ sở để xác định chăng ?, cái này hơi khó :D

Ps: hình trong file bạn đẹp thật ^^

 

Nhóc có hứng thú thì thử xem. Ứng dụng hàm duy:tonglist dưới đây để lấy tổng của chuổi. Cú pháp (duy:tonglist chuoi) ví dụ (duy:tonglist "12345") sẽ ra 15

 

 

(defun duy:tonglist (listdoc / listdoc skq vtd)
(setq skq 0)
(setq vtd 1)
(repeat (fix (strlen listdoc))
(setq skq (+ skq (atof (substr listdoc vtd 1))))
(setq vtd (+ 1 vtd))
)
skq)

  • 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

nhoc chỉ spam cho vui vì thấy lạ thui anh Duy :D, viết thì nhoc viết chưa nổi đâu, nhưng cũng mót của anh Duy về để dành, khi nào anh Ket dạy tới nhoc moc ra nghiên cứu học hỏi hihi, thanks anh !

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 xin gửi kèm file bao gồm 9 block,mình đã đánh số block từ 1 đến 9, cac bạn giup mình làm sao khi nhập năm sinh vào thi hàm tinh ra quái số mấy thì chèn đúng block số đó vào bản vẽ cad bất kỳ.

vd: khi cộng trừ xong ra quái số kết quả là 4 thì bạn cho nó chèn block số 4 vào bản vẽ cho minh .

 

Rất mong cac bạn giúp đỡ.http://www.cadviet.c..._phong_thuy.dwg

Hề hề hề,

Có phải cái này không hè???


(defun c:pht (/ bln a b c d tg gt  t1 t2 t3)
(setq year (getint "\n Hay nhap nam sinh du 4 chu so: ")
         GT (getint "\n Hay nhap gioi tinh chu nha <1=Nam; 2=nu>: "))
(setq a (atoi (substr (itoa year) 1 1))
         b (atoi (substr (itoa year) 2 1))
         c (atoi (substr (itoa year) 3 1))
         d (atoi (substr (itoa year) 4 1))
         Tg (+ a b c d)  )
;;;;;;;;;;;;;;;;;;;
(defun ssu (a / a1 a2 t1)
(if (>  a 9)
   (progn 
          (setq t1 (itoa a)
                    a1 (atoi (substr t1 1 1))
                    a2 (atoi (substr t1 2 1))
                    t2 (+ a1 a2)  )
          (if (> t2 9)
              (ssu t2) )
   )
)
t2
)
;;;;;;;;;;;;;;;;;;
(setq tong (ssu tg))
(if (= gt 1)
   (setq bln (itoa (- 11 t2)))
   (progn
        (setq t3 (+ 4 t2))
        (if (> t3 9)
            (setq t3 (ssu t3))
        )
        (setq bln (itoa t3))
   )
)
(alert (strcat "\n Ten block can chen la " bln))
(command "insert" bln (getpoint "\n Nhap diem chen block") 1 1 0)
)

Chúc bạn vui như cái hình avatar của 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

hihi lsp anh Binh viết hay quá, nhưng hình như nhầm 1 chỗ thì phải ^^, nhoc nhập 1990 thì cuối cùng nó kiu là block 10 ^^ ko có

nhoc mò mẫn thử đọc ko hỉu lsp vì cao quá ^^ nhưng sữa đại như vầy thì đc :D

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=68603&pid=224775&st=0entry224775

(defun c:pht (/ bln a b c d tg gt  t1 t2 t3)
(setq year (getint "\n Hay nhap nam sinh du 4 chu so: ")
     	GT (getint "\n Hay nhap gioi tinh chu nha <1=Nam; 2=nu>: "))
(setq a (atoi (substr (itoa year) 1 1))
     	b (atoi (substr (itoa year) 2 1))
     	c (atoi (substr (itoa year) 3 1))
     	d (atoi (substr (itoa year) 4 1))
     	Tg (+ a b c d)  )
;;;;;;;;;;;;;;;;;;;
(defun ssu (a / a1 a2 t1)
(if (>  a 9);sua 9 thanh 10
(progn
      	(setq t1 (itoa a)
                	a1 (atoi (substr t1 1 1))
                	a2 (atoi (substr t1 2 1))
                	t2 (+ a1 a2)  )
      	(if (> t2 9); sua 9 thanh 10
          	(ssu t2) )
)
)
t2
)
;;;;;;;;;;;;;;;;;;
(setq tong (ssu tg))
(if (= gt 1)
(setq bln (itoa (- 11 t2)))
(progn
    	(setq t3 (+ 4 t2))
    	(if (> t3 9)
        	(setq t3 (ssu t3))
    	)
    	(setq bln (itoa t3))
)
)
(alert (strcat "\n Ten block can chen la " bln))
(command "insert" bln (getpoint "\n Nhap diem chen block") 1 1 0)
)

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 @thienchip86 cho mình hỏi, cái này xem sao nhỉ ^^, vd mình là nam block số 2, vậy nhà mình ở hướng Bắc là mình bị tuyệt mạng hả bạn :o :mellow: T_T, ghê quá 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

Nhân tiện ghé qua giao bài riêng cho nhoclangbat luôn, các bác châm trước cho ket vì ket đang bí đề với học viên tốt quá ^^

- Áp dụng hàm này giúp bạn thienchip86, hàm trả về tên block, đối số đã ghi


;ns : nam sinh, string hoac so (~Int)
;gt : gioi tinh, string hoac so (~Int)
;(batquai 1987 1), (batquai "1987" "2") => tra ve ten Block
(defun batquai(ns gt / tst)
 (defun tst(str / kq)(vl-load-com)
  (while  (> (setq kq (apply '+ (mapcar '(lambda(x)(atoi (chr x))) (vl-string->list str)))) 9)    
(setq str (itoa kq))
  ) kq
 )
 (itoa (tst (itoa (abs (+ (tst (vl-princ-to-string ns)) (if (= (vl-princ-to-string gt) "1") -11 4))))))
)

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

Hề hề hề,

Có phải cái này không hè???


(defun c:pht (/ bln a b c d tg gt  t1 t2 t3)
(setq year (getint "\n Hay nhap nam sinh du 4 chu so: ")
         GT (getint "\n Hay nhap gioi tinh chu nha <1=Nam; 2=nu>: "))
(setq a (atoi (substr (itoa year) 1 1))
         b (atoi (substr (itoa year) 2 1))
         c (atoi (substr (itoa year) 3 1))
         d (atoi (substr (itoa year) 4 1))
         Tg (+ a b c d)  )
;;;;;;;;;;;;;;;;;;;
(defun ssu (a / a1 a2 t1)
(if (>  a 9)
   (progn
      	(setq t1 (itoa a)
                	a1 (atoi (substr t1 1 1))
                	a2 (atoi (substr t1 2 1))
                	t2 (+ a1 a2)  )
      	(if (> t2 9)
          	(ssu t2) )
   )
)
t2
)
;;;;;;;;;;;;;;;;;;
(setq tong (ssu tg))
(if (= gt 1)
   (setq bln (itoa (- 11 t2)))
   (progn
    	(setq t3 (+ 4 t2))
    	(if (> t3 9)
        	(setq t3 (ssu t3))
    	)
    	(setq bln (itoa t3))
   )
)
(alert (strcat "\n Ten block can chen la " bln))
(command "insert" bln (getpoint "\n Nhap diem chen block") 1 1 0)
)

Chúc bạn vui như cái hình avatar của bạn.

 

 

 

Cảm ơn các bạn nhiều.đây chính là cái mà minh đang muốn,nhưng chỉ có điều bạn sửa lại một chút giúp minh

đúng như bạn Nhoclangbat nói nếu la Nam 1990=1+9+1+0=19=1+9=10 khi đó quái số sẽ là 11-10=1 (quái số là 1 nên chèn block số 1)

ở đây là nam nên ta lấy 11-10 còn nếu là nữ ta lấy 4+10=14=1+4=5 (quái số là 5 chèn block số 5)

 

và khi nó hỏi tên block cần chèn là 1.thì mình phải khai báo đường dẫn như thế nào để nó lôi ra đung block của mình.mình có đính kèm chín quái số đã block và đặt tên từ 1 đến 9 rồi bạn giup minh với..hihi háo hức quá ắp oke rùi bạn ơ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

??? anh Ket ơi, nhoc ko hỉu để, nhìn cái lsp anh đưa (>"<), nó biết nhóc, nhưng nhoc ko biết nó :D. Để nhoc mò mẫn tí khi nào có nhoc pm inbox hen ^^, còn ko đc chắc lại phải đi lang bạt xin xỏ tâm pháp của các huynh có nội công thâm hậu chỉ giáo ^^ kaka

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 có yêu cầu Nhoc phải hiểu code trong hàm con mình viết như thế nào đâu :o Chỉ cần nhoc SỬ DỤNG lại nó như đã ví dụ thôi mà. Về cơ bản tất cả mọi hàm đi mót về thì đều như thế, mình cũng thế, ai cũng thế, trước hết học cách dùng nó đã. Muốn hiểu sâu hơn thì mới đọc code bên trong

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 @thienchip86 cho mình hỏi, cái này xem sao nhỉ ^^, vd mình là nam block số 2, vậy nhà mình ở hướng Bắc là mình bị tuyệt mạng hả bạn :o :mellow: T_T, ghê quá vậy

 

 

hihi bạn đừng lo,hướng nhà phụ thuộc vào tuổi chủ nhà,nếu nhà đó của bố bạn thi ko sao,còn nếu là của bạn thì bạn có cách khắc chế mà,vd như xoay bếp về hướng Sinh Khí, bàn thờ về hướng Phục vị, vệ sinh chấn vào những khu vực ,như Hại Họa,ngũ quỷ ,ngoài cửa đặt gương bát quái...có rất nhiều cách mà bạn..hehe

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

Chèn block thì :

- Có sẵn trong bản vẽ, cho tên Block vào code : "1", "2", "3"...

- Có sẵn ở bên ngoài, cho tên đường dẫn + tên file block

(strcat duongdan "\\1.dwg")

Ví dụ (strcat "C:\\Dulieu" "\\2.dwg")

- Chưa có ở đâu thì dùng code tự vẽ lên hình block này (dùng cho nhiều máy khác nhau)

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

nhoc xin mạn phép pst bài ở đây lun hen ^^, anh Ket xem có phải vậy ko anh

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=68603&pid=224799&st=0entry224799
;ns : nam sinh, string hoac so (~Int)
;gt : gioi tinh, string hoac so (~Int)
;(batquai 1987 1), (batquai "1987" "2") => tra ve ten Block
(defun c:pht (/ ns gt)
(setq ns (getint "\nNhap nam sinh of you:"))
(setq gt (getint "\nChon gioi tinh 1 la boy 2 la girl:"))
(princ "\n")
(princ "quai so cua ban la: ")
(princ (batquai ns gt))
(princ)
)
(defun batquai(ns gt / tst)
 (defun tst(str / kq)(vl-load-com)
  (while  (> (setq kq (apply '+ (mapcar '(lambda(x)(atoi (chr x))) (vl-string->list str)))) 9)   
(setq str (itoa kq))
  ) kq
 )
 (itoa (tst (itoa (abs (+ (tst (vl-princ-to-string ns)) (if (= (vl-princ-to-string gt) "1") -11 4))))))
)

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

Thưa các bạn diễn đàn yêu quý mình có nhiều ý tưởng để làm thành những lisp phục vụ cho ngành xây dựng quá nhưng chỉ có điều mình không có kiến thức về lập trình nên ko biết phải viết làm sao.minh mạo muội thỉnh thoảng đưa một vài để tài lên để các bạn cùng nghiên cứu giúp mình nhé có được không?rất mong các bạn chung tay giúp đỡ.sau mỗi thành quar mình hứa sẽ tuyển tập lại và làm mottj cái hướng dẫn để các bạn áp dụng nó vào thực tế,mong se giúp ích cho cộng đồng diễn đàn.

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

nhoc xin đóng góp cách thổ rân thế này ^^, 9 cái đó bạn dùng lệnh writeblock write từng cái cái lưu trong đường dẫn

(C:\program files\autodesk\autocad autocad2xxx\support\).cách này nếu bạn chỉ dùng 1 máy, mà mở bất kỳ bản vẽ nào bạn dùng lsp để gọi nó cũng ra, ko phải mở đúng bản vẽ bạn đã vẽ sẵn 9 cái block đó mới xài đc.

Còn nếu đi máy khác thì chắc như bạn autocadlisp nói phải vẽ nó trong lsp lun, mà vẽ cái này trong lsp cũng mệt mỏi ah ^^. mạn phép anh Bình sữa dùm bạn ấy chỗ nhầm xíu trong lsp của anh

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=68603&pid=224775&st=0entry224775

(defun c:pht (/ bln a b c d tg gt  t1 t2 t3)
(setq year (getint "\n Hay nhap nam sinh du 4 chu so: ")
     	GT (getint "\n Hay nhap gioi tinh chu nha <1=Nam; 2=nu>: "))
(setq a (atoi (substr (itoa year) 1 1))
     	b (atoi (substr (itoa year) 2 1))
     	c (atoi (substr (itoa year) 3 1))
     	d (atoi (substr (itoa year) 4 1))
     	Tg (+ a b c d)  )
;;;;;;;;;;;;;;;;;;;
(defun ssu (a / a1 a2 t1)
(if (>  a 9);
(progn
      	(setq t1 (itoa a)
                	a1 (atoi (substr t1 1 1))
                	a2 (atoi (substr t1 2 1))
                	t2 (+ a1 a2)  )
      	(if (> t2 9);
          	(ssu t2) )
)
)
t2
)
;;;;;;;;;;;;;;;;;;
(setq tong (ssu tg))
(if (= gt 1)
(progn
(setq t3 (- 11 t2))
(if (> t3 9)
(setq t3 (ssu t3))
)
(setq bln (itoa t3))
)
(progn
    	(setq t3 (+ 4 t2))
    	(if (> t3 9)
        	(setq t3 (ssu t3))
    	)
    	(setq bln (itoa t3))
)
)
(alert (strcat "\n Ten block can chen la " bln))
(command "insert" bln (getpoint "\n Nhap diem chen block") 1 1 0)
)

Ps: đã sữa lại như anh Bình chỉ ^^

  • 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

nhoc xin đóng góp cách thổ rân thế này ^^, 9 cái đó bạn dùng lệnh writeblock write từng cái cái lưu trong đường dẫn

(C:\program files\autodesk\autocad autocad2xxx\support\).cách này nếu bạn chỉ dùng 1 máy, mà mở bất kỳ bản vẽ nào bạn dùng lsp để gọi nó cũng ra, ko phải mở đúng bản vẽ bạn đã vẽ sẵn 9 cái block đó mới xài đc.

Còn nếu đi máy khác thì chắc như bạn autocadlisp nói phải vẽ nó trong lsp lun, mà vẽ cái này trong lsp cũng mệt mỏi ah ^^. mạn phép anh Bình sữa dùm bạn ấy chỗ nhầm xíu trong lsp của anh

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=68603&pid=224775&st=0entry224775

(defun c:pht (/ bln a b c d tg gt  t1 t2 t3)
(setq year (getint "\n Hay nhap nam sinh du 4 chu so: ")
     	GT (getint "\n Hay nhap gioi tinh chu nha <1=Nam; 2=nu>: "))
(setq a (atoi (substr (itoa year) 1 1))
     	b (atoi (substr (itoa year) 2 1))
     	c (atoi (substr (itoa year) 3 1))
     	d (atoi (substr (itoa year) 4 1))
     	Tg (+ a b c d)  )
;;;;;;;;;;;;;;;;;;;
(defun ssu (a / a1 a2 t1)
(if (>  a 10);sua 9 thanh 10
(progn
  		(setq t1 (itoa a)
            		a1 (atoi (substr t1 1 1))
            		a2 (atoi (substr t1 2 1))
            		t2 (+ a1 a2)  )
  		(if (> t2 10); sua 9 thanh 10
      		(ssu t2) )
)
)
t2
)
;;;;;;;;;;;;;;;;;;
(setq tong (ssu tg))
(if (= gt 1)
(setq bln (itoa (- 11 t2)))
(progn
		(setq t3 (+ 4 t2))
		(if (> t3 9)
    		(setq t3 (ssu t3))
		)
		(setq bln (itoa t3))
)
)
(alert (strcat "\n Ten block can chen la " bln))
(command "insert" bln (getpoint "\n Nhap diem chen block") 1 1 0)
)

 

Mình cảm ơn bạn!về vấn đề copy cái block ấy mình se tao một flie setup trong đó sẽ gồm cả block và lisp tự động chạy khi khởi động cad để khi mang sang máy khác chỉ cần bung nó ra là oke nhỉ?hihi

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

@Nhoclangbat : yêu cầu có 2 phần cơ bản, tính và chèn. TÍnh mình đã làm rồi, còn chèn nhoc k làm đi view lại cái tính lên chi, đâu tính là làm :)

 

@OP : chúc thành công và sớm chia sẻ ^^

  • 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

Chèn block thì :

- Có sẵn trong bản vẽ, cho tên Block vào code : "1", "2", "3"...

- Có sẵn ở bên ngoài, cho tên đường dẫn + tên file block

(strcat duongdan "\\1.dwg")

Ví dụ (strcat "C:\\Dulieu" "\\2.dwg")

- Chưa có ở đâu thì dùng code tự vẽ lên hình block này (dùng cho nhiều máy khác nhau)

 

Mình cũng nghĩ đến việc tự vẽ vòng tròn bát quái cho nhiều máy khác,nhưng nó không đơn giản vì 9 quái số lại bị thay đổ theo độ tuổi,nam và nữ,bởi trong vòng tròn bát quái thì vòng tròng ngoài cùng và vòng tròn trong cung lại là biến thay ddooir còn bốn vòng tròn ở giữa thì cố định,nên dung block là dơn giản nhất.đành phải nửa công nghiệp nửa nông rân vậy..hiihihi

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

em sữa rùi nè hihi

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=68603&pid=224799&st=0entry224799
;ns : nam sinh, string hoac so (~Int)
;gt : gioi tinh, string hoac so (~Int)
;(batquai 1987 1), (batquai "1987" "2") => tra ve ten Block
(defun c:pht (/ ns gt)
(setq ns (getint "\nNhap nam sinh of you:"))
(setq gt (getint "\nChon gioi tinh 1 la boy 2 la girl:"))
(setq ketqua (batquai ns gt))
(alert (strcat "\n Ten block can chen la " ketqua))
(command "insert" ketqua (getpoint "\n Nhap diem chen block") 1 1 0)
)
(defun batquai(ns gt / tst)
 (defun tst(str / kq)(vl-load-com)
  (while  (> (setq kq (apply '+ (mapcar '(lambda(x)(atoi (chr x))) (vl-string->list str)))) 9)  
(setq str (itoa kq))
  ) kq
 )
 (itoa (tst (itoa (abs (+ (tst (vl-princ-to-string ns)) (if (= (vl-princ-to-string gt) "1") -11 4))))))
)

 

nhoc sữa hoàn thiện khử hàm batquai trước khi đi xách chân máy ^^

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=68603&pid=224799&st=0entry224799
;ns : nam sinh, string hoac so (~Int)
;gt : gioi tinh, string hoac so (~Int)
;(batquai 1987 1), (batquai "1987" "2") => tra ve ten Block
(defun c:pht (/ ns gt batquai)
(setq ns (getint "\nNhap nam sinh of you:"))
(setq gt (getint "\nChon gioi tinh 1 la boy 2 la girl:"))
(defun batquai(ns gt / tst)
 (defun tst(str / kq)(vl-load-com)
  (while  (> (setq kq (apply '+ (mapcar '(lambda(x)(atoi (chr x))) (vl-string->list str)))) 9)   
(setq str (itoa kq))
  ) kq
 )
 (itoa (tst (itoa (abs (+ (tst (vl-princ-to-string ns)) (if (= (vl-princ-to-string gt) "1") -11 4))))))
)
(setq ketqua (batquai ns gt))
(alert (strcat "\n Ten block can chen la " ketqua))
(command "insert" ketqua (getpoint "\n Nhap diem chen block") 1 1 0)
)


  • 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 cảm ơn bạn!về vấn đề copy cái block ấy mình se tao một flie setup trong đó sẽ gồm cả block và lisp tự động chạy khi khởi động cad để khi mang sang máy khác chỉ cần bung nó ra là oke nhỉ?hihi

Hề hề hề.

Sorry chủ thớt và bạn nhóc hè. Lỗi tại mình không check kỹ, cú nghĩ lá 11 trừ thì nó phải nhỏ hơn 10 nên không đặt điều kiện cho nam. Các bạn có thể tự sửa chút xíu như sau:

Thay dòng code:

(setq bln (itoa (- 11 t2)))

Thành đoạn code sau:

(progn

(setq t3 (- 11 t2))

(if (> t3 9)

(setq t3 (ssu t3))

)

(setq bln (itoa t3))

)

 

Chúc các bạn vui.

@ Nhóc: bạn phát hiện ra lỗi nhưng không đọc kỹ code nên không hiểu. Việc bạn sửa như vầy là chưa đúng với yêu cầu đâu vì sẽ xảy ra lỗi khác. Biến t2 và t3 phải luôn có giá trị <= 9 mới dùng được. Với năm sinh là 1990 thì quái số chỉ là: 1+9+9+0=19=> 1+9=10=>1+0=1 Do vậy khi là nam 11-1=10 chình là cái lỗi của minh. Thêm tiếp tục hàm ssu thì 1+0=1 là quái số củ block cần tìm.

Hề hề hề.

  • 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

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

×