Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] Lisp cộng - trừ - nhân - chia 2 hàng số cho ra hàng thứ 3


  • Please log in to reply
88 replies to this topic

#41 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 08 July 2011 - 10:10 AM

Cộng Trừ Nhân Chia ma trận theo ý của tski259
Vì viết vội nên chưa xuất Text.
..........

Thử với phép cộng thì OK.
Nhưng với phép nhân thi k/quả toàn là zero.

Nguyên nhân do "Phép nhân với số zero" tại dòng :
- ((= ctnc "*") (setq ctnch * shang 0.0))
- (setq ResR '() ResC '() ptui 0.0 i 1 j 0 k 0 Matran '() MatranRes '())

- (setq ResR (append ResR (list ptui)) ptui 0.0)
  • 1

#42 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 08 July 2011 - 10:26 AM

Thử với phép cộng thì OK.
Nhưng với phép nhân thi k/quả toàn là zero.

Nguyên nhân do "Phép nhân với số zero" tại dòng :
- ((= ctnc "*") (setq ctnch * shang 0.0))
- (setq ResR '() ResC '() ptui 0.0 i 1 j 0 k 0 Matran '() MatranRes '())

- (setq ResR (append ResR (list ptui)) ptui 0.0)

Cảm ơn anh gia_bach. Cái này em cũng đã phát hiện ra. Tại em coding nhanh quá :lol:
Tuy nhiên theo cái ảnh mà bạn Tski259 chụp thì em không hiểu tại sao xuất ra kết quả như vậy
Không thể có kết quả như vậy được. Em không hiểu tại sao? Nếu phép nhân thì kết quả cột không thể là NIL được mà kết quả hàng theo hình Tski259 post lại dài dằng dặc như vậy được???

.....
Hình đã gửi
....


  • 0

#43 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 08 July 2011 - 10:40 AM

Chỉ cần bạn ấy post file test là có câu trả lời bác ạ :)
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#44 tski259

tski259

    biết vẽ pline

  • Members
  • PipPip
  • 66 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 08 July 2011 - 11:22 AM

Chỉ cần bạn ấy post file test là có câu trả lời bác ạ :)

Đây mọi người thử coi nhé
http://www.cadviet.c.../guicadviet.zip
  • 0

#45 NguyenNgocSon

NguyenNgocSon

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 368 Bài viết
Điểm đánh giá: 39 (tàm tạm)

Đã gửi 08 July 2011 - 11:40 AM

Ngọc Sơn có thể sửa lại :
Thay các dòng :
(setq ctnc (cond (ctnc) ("+")))
(initget "+ - * /")
(setq ctnc (cond ((getkword (strcat "\nChon phep tinh: [+ - * /] <" ctnc ">"))) (ctnc)))

....
thành :
(setq *ctnc* (cond (*ctnc*) ("+")))
(initget "+ - * /")
(setq ctnc (cond ((getkword (strcat "\nChon phep tinh: [+ - * /] <" *ctnc* ">"))) ))
(if ctnc (setq *ctnc* ctnc) (setq ctnc *ctnc*))

Sơn đã check nhưng chưa được. Chỉ nhớ mặc định phép cộng ?????????
Chắc là nhầm gì đó? Lisp nhớ được phép tính nhưng khi tính thì kết quả nhớ là phép +
  • 0

#46 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 08 July 2011 - 02:18 PM

Bác Tue_NV xem lại ở cái hàm này xem?
(setq box (ACET-GEOM-SS-EXTENTS-FAST ss))
Cái box mà OK là box chứa điểm 2D (file của đa số), cái box mà NO thì chứa điểm 3D (file của bạn ấy gửi).
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#47 NguyenNgocSon

NguyenNgocSon

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 368 Bài viết
Điểm đánh giá: 39 (tàm tạm)

Đã gửi 08 July 2011 - 02:40 PM

mình đã sửa lại để chơi đuợc cả hàng lẫn cột đây. post lâu lắm rồi mới thấy có bạn ý kiến nên chắc cũng ít người có nhu cầu này nhỉ.


(defun c:srt (/ DXF MakeText HANG I LAP LSTKQ PT0 PTI SS1 SS2 SS3 SSN SSN3 TBS1 TBS2 TBS3)
(defun DXF (code en) (cdr (assoc code (entget en))))
(defun entmod-en (code value en / RES)
(setq RES (entget en '("*")))
(entmod (subst (cons code value) (assoc code RES) RES)))
(defun MakeText (point string Height Ang justify Style Layer Color xdata / Lst); Ang: Radial
(setq Lst (list '(0 . "TEXT")
(cons 8 (if Layer Layer (getvar "Clayer")))
(cons 62 (if Color Color 256))
(cons 10 point)
(cons 40 Height)
(cons 1 string)
(if Ang (cons 50 Ang))
(cons 7 (if Style Style (getvar "Textstyle")))
(cons -3 (if xdata (list xdata) nil)))
justify (strcase justify))
(cond ((= justify "C") (setq Lst (append Lst (list (cons 72 1) (cons 11 point)))))
((= justify "R") (setq Lst (append Lst (list (cons 72 2) (cons 11 point)))))
((= justify "M") (setq Lst (append Lst (list (cons 72 4) (cons 11 point)))))
((= justify "TL") (setq Lst (append Lst (list (cons 72 0) (cons 11 point) (cons 73 3)))))
((= justify "TC") (setq Lst (append Lst (list (cons 72 1) (cons 11 point) (cons 73 3)))))
((= justify "TR") (setq Lst (append Lst (list (cons 72 2) (cons 11 point) (cons 73 3)))))
((= justify "ML") (setq Lst (append Lst (list (cons 72 0) (cons 11 point) (cons 73 2)))))
((= justify "MC") (setq Lst (append Lst (list (cons 72 1) (cons 11 point) (cons 73 2)))))
((= justify "MR") (setq Lst (append Lst (list (cons 72 2) (cons 11 point) (cons 73 2)))))
((= justify "BL") (setq Lst (append Lst (list (cons 72 0) (cons 11 point) (cons 73 1)))))
((= justify "BC") (setq Lst (append Lst (list (cons 72 1) (cons 11 point) (cons 73 1)))))
((= justify "BR") (setq Lst (append Lst (list (cons 72 2) (cons 11 point) (cons 73 1))))))
(entmakex Lst));endmaketext
(setq pheptinh (cond (pheptinh) ("Cong")))
(initget "Cong Tru Nhan CHia")
(setq pheptinh (cond ((getkword (strcat "\nchon phep tinh: [Cong/Tru/Nhan/CHia/] <" pheptinh ">: "))) (pheptinh)))
(prompt "\nChon Hang-Cot so thu nhat..")
(if (setq SS1 (ssget '((0 . "TEXT"))))
(progn (prompt "Chon Hang-Cot so thu hai..")
(if (setq SS2 (ssget '((0 . "TEXT"))))
(progn
(Setq TBS1 (ACET-GEOM-SS-EXTENTS-FAST SS1) SS1 (acet-ss-to-list SS1)
TBS2 (ACET-GEOM-SS-EXTENTS-FAST SS2) SS2 (acet-ss-to-list SS2))
(if (> (abs(- (car (car TBS1)) (car (cadr TBS1)))) (abs(- (cadr (car TBS1)) (cadr (cadr TBS1)))))
(setq Hang T
SS1 (vl-sort SS1 '(lambda (e1 e2) (< (cadr (assoc 10 (entget e1))) (cadr (assoc 10 (entget e2)))))))
(setq Hang nil
SS1 (vl-sort SS1 '(lambda (e1 e2) (> (caddr (assoc 10 (entget e1))) (caddr (assoc 10 (entget e2))))))))
(if (> (abs(- (car (car TBS2)) (car (cadr TBS2)))) (abs(- (cadr (car TBS2)) (cadr (cadr TBS2)))))
(setq SS2 (vl-sort SS2 '(lambda (e1 e2) (< (cadr (assoc 10 (entget e1))) (cadr (assoc 10 (entget e2)))))))
(setq SS2 (vl-sort SS2 '(lambda (e1 e2) (> (caddr (assoc 10 (entget e1))) (caddr (assoc 10 (entget e2))))))))
(if (> (length SS1) (length SS2)) (setq lap (length SS1) i 0) (setq lap (length SS2) i 0))
(setq LstKQ '())
(if (setq PT0 (getpoint (strcat "\nchon diem dat " (if Hang "hang" "cot") " ket qua. Enter de ghi va Hang-Cot text khac")))
(progn (vl-cmdf "ucs" "w")
(repeat lap
(setq SSn (nth i SS1))
(maketext
(if (= hang nil)
(setq PTi (list (car PT0) (cadr (DXF 10 SSn))))
(setq PTi (list (car (DXF 10 SSn)) (cadr PT0))))
(cond ((eq pheptinh "Cong") (rtos (+ (atof (DXF 1 SSn)) (atof (DXF 1 (nth i SS2)))) 2 2))
((eq pheptinh "Tru") (rtos (- (atof (DXF 1 SSn)) (atof (DXF 1 (nth i SS2)))) 2 2))
((eq pheptinh "Nhan") (rtos (* (atof (DXF 1 SSn)) (atof (DXF 1 (nth i SS2)))) 2 2))
((eq pheptinh "CHia") (rtos (/ (atof (DXF 1 SSn)) (atof (DXF 1 (nth i SS2)))) 2 2)))
(DXF 40 SSn) 0 "R"(DXF 7 SSn) (DXF 8 SSn) nil nil)
(setq i (1+ i)))
(vl-cmdf "ucs" "p"))
(progn
(prompt "\nChon Hang hoac Cot text de ghi ket qua")
(if (setq SS3 (ssget '((0 . "TEXT"))))
(setq TBS3 (ACET-GEOM-SS-EXTENTS-FAST SS3)
SS3 (acet-ss-to-list SS3))
(EXIT))
(if (> (abs(- (car (car TBS3)) (car (cadr TBS3)))) (abs(- (cadr (car TBS3)) (cadr (cadr TBS3)))))
(setq SS3 (vl-sort SS3 '(lambda (e1 e2) (< (cadr (assoc 10 (entget e1))) (cadr (assoc 10 (entget e2)))))))
(setq SS3 (vl-sort SS3 '(lambda (e1 e2) (> (caddr (assoc 10 (entget e1))) (caddr (assoc 10 (entget e2))))))))
(vl-cmdf "undo" "begin")
(repeat lap
(setq SSn (nth i SS1))
(if (setq SSn3 (nth i SS3))
(entmod-en 1
(cond ((eq pheptinh "Cong") (rtos (+ (atof (DXF 1 SSn)) (atof (DXF 1 (nth i SS2)))) 2 2))
((eq pheptinh "Tru") (rtos (- (atof (DXF 1 SSn)) (atof (DXF 1 (nth i SS2)))) 2 2))
((eq pheptinh "Nhan") (rtos (* (atof (DXF 1 SSn)) (atof (DXF 1 (nth i SS2)))) 2 2))
((eq pheptinh "CHia") (rtos (/ (atof (DXF 1 SSn)) (atof (DXF 1 (nth i SS2)))) 2 2))) SSn3)
(progn
(alert (strcat "tap hop text khong du de ghi ket qua. Thieu "(rtos (- lap i) 2 0)" text"))
(vl-cmdf "undo" "end")
(EXIT)))
(setq i (1+ i)))
(vl-cmdf "undo" "end")));if
);progn
)));if
(princ)
);end

Sơn thử đổi màu kết quả tính thành màu 3 bằng đoạn mã :

(if (assoc 62 ii)
(setq ii (subst (cons 62 3) (assoc 62 ii) ii))
(setq ii (append ii (list (cons 62 3))))
)

Nhưng thử đặt vào lisp thấy không được???
Nên đặt ở chỗ nào ?
Cám ơn các bác !
  • 0

#48 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 08 July 2011 - 03:06 PM

Sơn thử đổi màu kết quả tính thành màu 3 bằng đoạn mã :


(if (assoc 62 ii)
(setq ii (subst (cons 62 3) (assoc 62 ii) ii))
(setq ii (append ii (list (cons 62 3))))
)

Nhưng thử đặt vào lisp thấy không được???
Nên đặt ở chỗ nào ?
Cám ơn các bác !

Ngọc Sơn phải (Entmod ii) nữa
File Lisp viết theo ý NgocSon đây :
http://www.cadviet.c...iles/3/cs_4.lsp

@tski259: Tue_NV đã thử Lisp Cộng ma trận trên file dwg bạn gửi. Vẫn ổn cả. Không có vấn đề gì?
  • 0

#49 tski259

tski259

    biết vẽ pline

  • Members
  • PipPip
  • 66 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 08 July 2011 - 03:34 PM

Ngọc Sơn phải (Entmod ii) nữa
File Lisp viết theo ý NgocSon đây :
http://www.cadviet.c...iles/3/cs_4.lsp

@tski259: Tue_NV đã thử Lisp Cộng ma trận trên file dwg bạn gửi. Vẫn ổn cả. Không có vấn đề gì?

Mình cũng đã thử lại nhiều lần rồi mà không được.Chắc tại xung đột với cái gì đó chăng.Thấy ít người test quá nhỉ,nên mình cũng không biết sao nữa.Nhưng chắc chắn là máy mình không chạy được ah.Với lisp đầu tiên thì vô tư,lisp cộng ma trận là tỏi.Mình dùng cad2007.
  • 0

#50 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 08 July 2011 - 04:02 PM

Mình cũng đã thử lại nhiều lần rồi mà không được.Chắc tại xung đột với cái gì đó chăng.Thấy ít người test quá nhỉ,nên mình cũng không biết sao nữa.Nhưng chắc chắn là máy mình không chạy được ah.Với lisp đầu tiên thì vô tư,lisp cộng ma trận là tỏi.Mình dùng cad2007.

Chú ý, chú ý : Lisp chạy được khi cài phụ trợ Express.
Bạn tski259 chưa cài Express nên chưa sử dụng được Lisp :rolleyes:
Do vậy, Tue_NV viết lại, không sử dụng hàm ACET-GEOM-SS-EXTENTS-FAST. Các bạn chạy thử xem.
Với phép * /, xuất text sẽ viết sau nhé

(defun c:cs(/ ss lis stp oldlu ctnc ctnch shang ResC ResR matran i j k ptui dem)
;Copy right by Tue_NV
(defun dd(e1 e2 / tb1 tb2)
(setq tb1 (textbox e1) tb2 (textbox e2))
(max (abs (- (caadr tb1) (caar tb1)))
(abs (- (caadr tb2) (caar tb2)))
)
)
(defun layminmax( / minpp maxpp LX LY)
(vlax-for x (vla-get-activeselectionset (vla-get-activedocument(vlax-get-acad-object)))
(vla-getboundingbox x 'minpp 'maxpp)
(setq LX (append LX (list (car(safearray-value minpp)))
(list (car(safearray-value maxpp)))))
(setq LY (append LY (list (cadr(safearray-value minpp)))
(list (cadr(safearray-value maxpp)))))
)
(setq minp (list (apply 'min LX) (apply 'min LY) 0.0))
(setq maxp (list (apply 'max LX) (apply 'max LY) 0.0))
)
(defun arrangess(ss / lst)
(setq lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
(setq lst (vl-sort lst '(lambda (x y)
(if (equal (cadr (assoc 10 (entget x)))
(cadr (assoc 10 (entget y)))
(dd (entget x) (entget y)) )
(> (caddr (assoc 10 (entget x)))
(caddr (assoc 10 (entget y)))
)
(< (cadr (assoc 10 (entget x)))
(cadr (assoc 10 (entget y)))
)
)
))
)
lst)
(defun ktrass(ss / i ent ret)
(setq i 0 L (sslength ss))
(while (< i L)
(if (distof (cdr(assoc 1 (entget (ssname ss i)))))
(setq i (1+ i) ret t)
(progn (setq i L ret nil) (alert "Tap ss co chua chu - Khong thuc hien duoc phep tinh"))
)
)
ret
)
(vl-load-com)
(setvar "DIMZIN" 0)
(prompt"\nChon ma tran")
(if (ktrass (setq ss (ssget '((0 . "TEXT")))))
(progn
(layminmax)

(or *stp* (setq *stp* 2))
(setq stp (getint (strcat "\n So chu so thap phan <" (itoa *stp*) "> :")))
(if stp (setq *stp* stp) (setq stp *stp*))
(setq oldlu (getvar "luprec"))
(setvar "luprec" stp)
(setq lis (arrangess ss))

(setq ctnc (cond (ctnc) ("+")))
(initget "+ -")
(setq ctnc (cond ((getkword (strcat "\nChon phep tinh: [+ -] <" ctnc ">"))) (ctnc)))
(cond ((= ctnc "+") (setq ctnch + shang 0.0))
((= ctnc "-") (setq ctnch - shang 0.0))
)

;(setq lis (reverse lis) )
(setq ResR '() ResC '() ptui 0.0 i 1 j 0 k 0 Matran '() )
(while (< j (length lis))
(if (not (equal (cdr(assoc 10 (entget (nth j lis)))) minp (cdr(assoc 40 (entget (nth j lis)))) ))
(setq i (1+ i) j (1+ j))
(setq j (length lis))
)
)
(setq j (/ j i))

(Repeat j
(Repeat i
(setq ptui (ctnch ptui shang (atof (cdr (assoc 1 (entget (nth k lis))))))
matran (append matran (list (atof (cdr (assoc 1 (entget (nth k lis)))))))
k (1+ k))
)
(setq ResC (append ResC (list ptui)) ptui 0.0)
)
(setq k 0 dem 0)
(Repeat i
(Repeat j
(setq ptui (ctnch ptui shang (nth k matran)))
(setq k (+ k i))
)
(setq ResR (append ResR (list ptui)) ptui 0.0)
(setq dem (1+ dem))
(setq k dem)
)
))
(Alert (strcat "\nKet qua hang : " (vl-princ-to-string ResR)
"\n\nKet qua Cot : " (vl-princ-to-string ResC)
)
)
(princ (strcat "\nKet qua hang : " (vl-princ-to-string ResR)
"\n\nKet qua Cot : " (vl-princ-to-string ResC)
)
)
)

  • 1

#51 leejang

leejang

    biết lệnh move

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

Đã gửi 08 July 2011 - 04:48 PM

Chú ý, chú ý : Lisp chạy được khi cài phụ trợ Express.
Bạn tski259 chưa cài Express nên chưa sử dụng được Lisp :rolleyes:
Do vậy, Tue_NV viết lại, không sử dụng hàm ACET-GEOM-SS-EXTENTS-FAST. Các bạn chạy thử xem.
Với phép * /, xuất text sẽ viết sau nhé


(defun c:cs(/ ss lis stp oldlu ctnc ctnch shang ResC ResR matran i j k ptui dem)
;Copy right by Tue_NV
(defun dd(e1 e2 / tb1 tb2)
(setq tb1 (textbox e1) tb2 (textbox e2))
(max (abs (- (caadr tb1) (caar tb1)))
(abs (- (caadr tb2) (caar tb2)))
)
)
(defun layminmax( / minpp maxpp LX LY)
(vlax-for x (vla-get-activeselectionset (vla-get-activedocument(vlax-get-acad-object)))
(vla-getboundingbox x 'minpp 'maxpp)
(setq LX (append LX (list (car(safearray-value minpp)))
(list (car(safearray-value maxpp)))))
(setq LY (append LY (list (cadr(safearray-value minpp)))
(list (cadr(safearray-value maxpp)))))
)
(setq minp (list (apply 'min LX) (apply 'min LY) 0.0))
(setq maxp (list (apply 'max LX) (apply 'max LY) 0.0))
)
(defun arrangess(ss / lst)
(setq lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
(setq lst (vl-sort lst '(lambda (x y)
(if (equal (cadr (assoc 10 (entget x)))
(cadr (assoc 10 (entget y)))
(dd (entget x) (entget y)) )
(> (caddr (assoc 10 (entget x)))
(caddr (assoc 10 (entget y)))
)
(< (cadr (assoc 10 (entget x)))
(cadr (assoc 10 (entget y)))
)
)
))
)
lst)
(defun ktrass(ss / i ent ret)
(setq i 0 L (sslength ss))
(while (< i L)
(if (distof (cdr(assoc 1 (entget (ssname ss i)))))
(setq i (1+ i) ret t)
(progn (setq i L ret nil) (alert "Tap ss co chua chu - Khong thuc hien duoc phep tinh"))
)
)
ret
)
(vl-load-com)
(setvar "DIMZIN" 0)
(prompt"\nChon ma tran")
(if (ktrass (setq ss (ssget '((0 . "TEXT")))))
(progn
(layminmax)

(or *stp* (setq *stp* 2))
(setq stp (getint (strcat "\n So chu so thap phan <" (itoa *stp*) "> :")))
(if stp (setq *stp* stp) (setq stp *stp*))
(setq oldlu (getvar "luprec"))
(setvar "luprec" stp)
(setq lis (arrangess ss))

(setq ctnc (cond (ctnc) ("+")))
(initget "+ -")
(setq ctnc (cond ((getkword (strcat "\nChon phep tinh: [+ -] <" ctnc ">"))) (ctnc)))
(cond ((= ctnc "+") (setq ctnch + shang 0.0))
((= ctnc "-") (setq ctnch - shang 0.0))
)

;(setq lis (reverse lis) )
(setq ResR '() ResC '() ptui 0.0 i 1 j 0 k 0 Matran '() )
(while (< j (length lis))
(if (not (equal (cdr(assoc 10 (entget (nth j lis)))) minp (cdr(assoc 40 (entget (nth j lis)))) ))
(setq i (1+ i) j (1+ j))
(setq j (length lis))
)
)
(setq j (/ j i))

(Repeat j
(Repeat i
(setq ptui (ctnch ptui shang (atof (cdr (assoc 1 (entget (nth k lis))))))
matran (append matran (list (atof (cdr (assoc 1 (entget (nth k lis)))))))
k (1+ k))
)
(setq ResC (append ResC (list ptui)) ptui 0.0)
)
(setq k 0 dem 0)
(Repeat i
(Repeat j
(setq ptui (ctnch ptui shang (nth k matran)))
(setq k (+ k i))
)
(setq ResR (append ResR (list ptui)) ptui 0.0)
(setq dem (1+ dem))
(setq k dem)
)
))
(Alert (strcat "\nKet qua hang : " (vl-princ-to-string ResR)
"\n\nKet qua Cot : " (vl-princ-to-string ResC)
)
)
(princ (strcat "\nKet qua hang : " (vl-princ-to-string ResR)
"\n\nKet qua Cot : " (vl-princ-to-string ResC)
)
)
)


Em chạy thử trên CAD 2012 thì chạy ok. Nhưng đúng là nó chưa ghi kết quả được. Chủ để này hay, khi nào có time bác TUỆ hoàn thiện nốt cho anh em thì tốt quá !
  • 0

#52 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 08 July 2011 - 04:57 PM

Chú ý, chú ý : Lisp chạy được khi cài phụ trợ Express.
Bạn tski259 chưa cài Express nên chưa sử dụng được Lisp :rolleyes:
Do vậy, Tue_NV viết lại, không sử dụng hàm ACET-GEOM-SS-EXTENTS-FAST. Các bạn chạy thử xem.

Tôi đã chạy thử cái bác thay Acet, tất nhiên chạy được với bản vẽ của tski259. Nhưng bác nói không chạy được do chưa cài Express thì e không đúng bác à! Vì máy tôi đã cài Express, chạy được với cả 2 file lsp trước và sau khi thay Acet với bản vẽ của mình, nhưng không chạy được với bản vẽ của tski259 khi chưa thay Acet. Nghĩa là bản vẽ của tski259 cho kết quả từ hàm Acet rất khác so với các bản vẽ khác. Như vậy, vấn đề là thằng ss chứ không phải Acet hay không Acet bác ạ. Bác xem lại giùm coi.
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#53 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 08 July 2011 - 05:12 PM

Tôi đã chạy thử cái bác thay Acet, tất nhiên chạy được với bản vẽ của tski259. Nhưng bác nói không chạy được do chưa cài Express thì e không đúng bác à! Vì máy tôi đã cài Express, chạy được với cả 2 file lsp trước và sau khi thay Acet với bản vẽ của mình, nhưng không chạy được với bản vẽ của tski259 khi chưa thay Acet. Nghĩa là bản vẽ của tski259 cho kết quả từ hàm Acet rất khác so với các bản vẽ khác. Như vậy, vấn đề là thằng ss chứ không phải Acet hay không Acet bác ạ. Bác xem lại giùm coi.

Cái này Tue_NV đã xem xét rất kỹ rồi. Khi máy có cài Express thì chạy trên file CAD của Tski259 thì vẫn ổn, bình thường, không có vấn đề gì. Vì Lisp lấy trị minp làm trị so sánh, trường hợp không cài Express, khi mình cho trị minp = NIL thì lập tức cái kết quả hàng dài dằng dặc như hình mà tski259 đã post và cột thì trả về NIL đúng như ý tưởng lập trình mà Tue_NV đã viết.
Để minh chứng, bạn DoanVanHa hãy chạy thử với code này; nó sẽ ra đúng ngay cái hình mà tski259 đã post
http://www.cadviet.c...iles/3/cs_9.lsp
Hề hề, hãy cứ đợi bạn tski259 lên tiếng xem bạn ấy có cài Express không? Nếu không, cho Tue_NV hề hề xin lỗi.
  • 0

#54 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 08 July 2011 - 05:17 PM

Cái này Tue_NV đã xem xét rất kỹ rồi. Khi máy có cài Express thì chạy trên file CAD của Tski259 thì vẫn ổn, bình thường, không có vấn đề gì. Vì Lisp lấy trị minp làm trị so sánh, trường hợp không cài Express, khi mình cho trị minp = NIL thì lập tức cái kết quả hàng dài dằng dặc như hình mà tski259 đã post và cột thì trả về NIL đúng như ý tưởng lập trình mà Tue_NV đã viết.

Hề hề, hãy cứ đợi bạn tski259 lên tiếng xem bạn ấy có cài Express không? Nếu không, cho Tue_NV hề hề xin lỗi.

Nhưng tôi cũng có cài Express mà sao dùng bản vẽ bạn ấy gửi thì ra kết quả như bạn ấy post. Còn bản vẽ của tôi thì OK. Chuyện này lạ à nghen!
(Khi chưa thay Acet)
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#55 tski259

tski259

    biết vẽ pline

  • Members
  • PipPip
  • 66 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 08 July 2011 - 05:40 PM

Nhưng tôi cũng có cài Express mà sao dùng bản vẽ bạn ấy gửi thì ra kết quả như bạn ấy post. Còn bản vẽ của tôi thì OK. Chuyện này lạ à nghen!
(Khi chưa thay Acet)

Hi.Sự thực là mình có cài Express mà.Muốn sử dụng lisp thì phải cài chứ.Cụ thể là lisp ban đầu mình chạy được nhưng cái ma trận thì đành chịu thua.
Hi.mà cái cập nhật chạy được rồi nè.
Hình đã gửi
Hi vọng bác Tuệ sẽ hoàn thành sớm lisp này.
  • 0

#56 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 08 July 2011 - 05:55 PM

Hi.Sự thực là mình có cài Express mà.Muốn sử dụng lisp thì phải cài chứ.Cụ thể là lisp ban đầu mình chạy được nhưng cái ma trận thì đành chịu thua.
Hi.mà cái cập nhật chạy được rồi nè.
Hình đã gửi
Hi vọng bác Tuệ sẽ hoàn thành sớm lisp này.

Cũng chẳng hiểu nổi tại sao nữa??
Nhưng không sao. có cái chạy được là rất tốt rồi.
Nhưng không thấy bầu chọn chi trơn? :lol:

P/S: Sẽ có gắng sớm hoàn thiện Lisp để các bạn sử dụng
  • 2

#57 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 08 July 2011 - 08:26 PM

Đã test và thấy bản vẽ của tski vẫn ra kết quả bình thường. Các text bạn ấy post đều có Xdata, không biết có ảnh hưởng gì không ^^

P/S bác Tuệ : bác kiểm tra lại kết quả phép trừ với. Em chưa hiểu bác tính - theo cơ chế nào ? Ví dụ 1 cột 1 3 5 7, nếu trừ lần lượt 1-3-5-7 = -14, hay bác lấy -1 + -3 + -5 + -7 = -16 (như kết quả chạy lisp)
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#58 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 08 July 2011 - 08:46 PM

Đã test và thấy bản vẽ của tski vẫn ra kết quả bình thường. Các text bạn ấy post đều có Xdata, không biết có ảnh hưởng gì không ^^

P/S bác Tuệ : bác kiểm tra lại kết quả phép trừ với. Em chưa hiểu bác tính - theo cơ chế nào ? Ví dụ 1 cột 1 3 5 7, nếu trừ lần lượt 1-3-5-7 = -14, hay bác lấy -1 + -3 + -5 + -7 = -16 (như kết quả chạy lisp)

Code trên, Tue_NV viết hồi sáng sớm nay, coding rất nhanh, chủ yếu ra được phép cộng các cột số và hàng số được với nhau. Nếu ra được phép cộng thì sẽ ra được phép nhân. Phép trừ và phép chia thì cũng chưa nghĩ tới sẽ hoạt động theo cơ chế nào nữa? Cũng chưa biết lấy như thế nào là tiện và hợp lý nữa? Các bạn sử dụng Lisp góp ý cho vậy. Như thế nào mới là tiện nhất và thuận lợi nhất?

Cá nhân Tue_NV vì lỡ đam mê Lisp rồi, nên viết cái Lisp này thấy rất thích thú vì có thể biến những ý tưởng trong đầu thành hiện thực và bắt máy tính làm việc cho mình nhưng bản thân thì nói thật lòng chắc cũng chẳng bao giờ sử dụng Lisp này. Tue_NV hay sử dụng Table vì nó có thể hỗ trợ phép tính rất tốt vậy. Vài dòng tâm sự và chia sẻ.
  • 1

#59 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 08 July 2011 - 09:18 PM

Gởi bác Tue_NV và Ketxu!
Như thế là có người test được có người test sai. Có lẽ chúng ta chưa biết vì sao thôi. Nào, bác Tue, Ket, và nhiều bác nữa hãy tìm hiểu tại sao chứ? Tôi u mê các hàm Acet nhưng tôi trộm nghĩ có lẽ tại thằng này, bởi lẽ "box" trong 2 trường hợp là khác nhau: list 2D và list 3D.
Như vậy, các text của bạn ấy có gì gì đó chứ? Ngày mai, tôi sẽ cố gắng bỏ cả ngày để ngâm cứu nó xem sao, và rất mong các bác ngâm cứu cùng!
P/S: tôi đã vote bác.
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#60 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 08 July 2011 - 09:27 PM

Cá nhân em thì ngay khi đọc yêu cầu về ma trận đã nghĩ tới safearray rồi ^^ Với các vòng lặp nhiều thế này, chắc chỉ bác Tuệ dò lỗi là nhanh nhất thôi ^^
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC