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

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

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

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á !

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ú ý, 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.

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ô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.com/upfiles/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.

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

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)

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ư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è.

tski2594.jpg

Hi vọng bác Tuệ sẽ hoàn thành sớm lisp nà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

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è.

tski2594.jpg

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

  • 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

Đã 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)

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

Đã 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ẻ.

  • 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

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.

  • 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

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 ^^

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

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? (Phép trừ - như kết quả chạy Lisp là do nó "ăn theo" của phép cộng) :rolleyes:

 

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ẻ.

Hi.Em cảm ơn bác đã luôn quan tâm đến mọi người trên diễn đàn.Như ban đầu nêu ý tưởng em đã nghĩ chỉ có phép "+" và "*" là có ý nghĩa thực tế nhất và cũng chẳng phải nghĩ lằng nhằng chi nữa.Còn cơ chế làm việc của phép "-" và "/" em nêu như thế này mọi người xem có được không nhé:Lấy hàng(cột) thứ nhất "-", "/" cho hàng (cột) thứ 2, được bao nhiêu lại "-", "/" cho hàng (cột) thứ 3....

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

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.

Hi.Thấy bác Hà khi nào cũng muốn hiểu rõ gốc ngọn vấn đề cả nhỉ,dù là vấn đề nhỏ nhất.Thích tính cách này của bác,tiếc là mình hiểu biết về lisp còn ít quá không tham gia thảo luận cùng bác được.Rứa thì tích cực test các sản phẩm của các bác 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

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 ^^

Tue_NV đã viết bài viết nói về cái lỗi mà bạn tski đã gặp và sửa lại Lisp thành công rồi?

Tue_NV phải dò lỗi chi đây nữa hở Ketxu khi đã nêu ra lỗi và viết Lisp sửa lỗi thành công rồi nhỉ?

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.

Hề hề, hàm acet bạn với mình có biết cấu trúc của nó, code của nó bên trong đâu mà bạn nói là u mê?

Như mình đã nói rồi. Trị minp mà trả về NIL hoặc có thể là List 2D thì nó lỗi với cái bảng mà bạn tski đã post. Nếu vậy, bạn cũng có thể convert List2D sang List3D với Z=0 để chạy thử vậy? Vì máy của mình và Ketxu đều test biến minp ra list3D nên không vấn đề gì. Còn nếu bạn ra List2D thì chuyển sang List3D rồi chạy, để trường hợp List3D hay List2D đều đúng rồi cuối cùng là đưa nó vào "Các Lỗi oái oăm trong Lisp" :rolleyes:

Chúc bạn thành công

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àm acet bạn với mình có biết cấu trúc của nó, code của nó bên trong đâu mà bạn nói là u mê?

Như mình đã nói rồi. Trị minp mà trả về NIL hoặc có thể là List 2D thì nó lỗi với cái bảng mà bạn tski đã post. Nếu vậy, bạn cũng có thể convert List2D sang List3D với Z=0 để chạy thử vậy? Vì máy của mình và Ketxu đều test biến minp ra list3D nên không vấn đề gì. Còn nếu bạn ra List2D thì chuyển sang List3D rồi chạy, để trường hợp List3D hay List2D đều đúng rồi cuối cùng là đưa nó vào "Các Lỗi oái oăm trong Lisp" :rolleyes:

Chúc bạn thành công

Cái tôi muốn nói là tìm ra bản chất, chứ không phải 3D hay 2D. Tôi ít dùng đến lsp của bác nhưng tôi muốn đưa vấn đề ra để các bác cùng nghiên cứu xem tại làm sao nó lại như vậy thôi.

Và liệu có đưa nó vào "Các Lỗi oái oăm trong Lisp" được không khi mà chúng ta thật sự chưa hiểu hết về nó?

Sorry bác vì từ "u mê". Vì từ này là tôi dành cho tôi, bởi vì thậm chí tôi chưa bao giờ biết sử dụng 1 hàm Acet nào bác ạ!

Chúc bác một buổi sáng tốt lành!

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 đã viết bài viết nói về cái lỗi mà bạn tski đã gặp và sửa lại Lisp thành công rồi?

Tue_NV phải dò lỗi chi đây nữa hở Ketxu khi đã nêu ra lỗi và viết Lisp sửa lỗi thành công rồi nhỉ?

 

E nói theo bác DVH, tức là khi có ACET r mà vẫn miss cơ. Mặc dù e chạy vẫn phình phường

 

Và liệu có đưa nó vào "Các Lỗi oái oăm trong Lisp" được không khi mà chúng ta thật sự chưa hiểu hết về nó?

Sorry bác vì từ "u mê". Vì từ này là tôi dành cho tôi, bởi vì thậm chí tôi chưa bao giờ biết sử dụng 1 hàm Acet nào bác ạ!

Chúc bác một buổi sáng tốt lành!

Hôm trước và những hôm trước nữa ketxu vớ 1 lỗi cực kỳ khó chịu khi dùng các lệnh command Pline sau khi đặt setq trước đó trong vòng lặp, chắc hôm nào cũng phải cho vào lỗi oái ăm ^^

Còn các hàm ACET, sắp tới ketxu sẽ post bản ketxu dịch, chắc là cũng được già nửa các hàm ACET, hi vọng có ích cho các bá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

Ngọc Sơn phải (Entmod ii) nữa

File Lisp viết theo ý NgocSon đây :

Kết quả thực hiện phép tính :

Command: CS

Chon hang-cot text thu 1

Select objects: Specify opposite corner: 2 found

Select objects:

Chon hang-cot text thu 2

Select objects: Specify opposite corner: 2 found

Select objects:

So chu so thap phan <2> :

 

Chon phep tinh: [+ - * /] <->+

 

Chon diem ghi ket qua hoac enter de ghi ket qua vao hang-cot text khac

Hàm nhớ mà Tue_NV sửa không ra đúng: hàm chỉ nhớ phép tính <-> nhưng thực tế khi tính toán ra lại là nhớ phép <+> (không nhớ phép tính <->) ???

Cám ơ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

Hàm nhớ mà Tue_NV sửa không ra đúng: hàm chỉ nhớ phép tính <-> nhưng thực tế khi tính toán ra lại là nhớ phép <+> (không nhớ phép tính <->) ???

Cám ơn !

Mạn phép bác Tue_NV, bạn sửa thế này xem sao:

Thay dòng

(setq *ctnc* (cond (*ctnc*) ("+")))

Bởi dòng

(or *ctnc* (setq *ctnc* +))

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

Hi.Trong khi chờ bác Tuệ hoàn thành lisp tính ma trận em lại nêu ý tưởng mới mọi người thử xem nhé.

tski2595.jpg

1.thực hiện lệnh

2.Lựa chọn đối tượng cần copy

3.Chọn gia số

4.Lựa chọn hướng copy (x,y,xy)

5.Chọn khoảng cách giữa các text bằng cách bắt giữa hai điểm hoặc nhập vào.

6.Chọn vùng copy bằng cách chọn pick điểm p1 và p2 như hình.

(Rải theo x,y chắc mọi người dễ hiểu .Rải theo xy thì hướng rải là hường của điểm p1 và p2,hay nên chọn hướng rải theo hướng 2 điểm khi chọn khoảng cách ở bước 5,mọi người thử nghiên cứu thử nha).

Mong các bác có thể biến ý tưởng của em thành hiện thực.Hi,lấy ý tưởng bằng cách kéo thả ô tính của exel

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

@NguyenNgocSon: để xuất text kết quả có màu theo ý của bạn thì bạn tìm dòng này: (DXF 40 SSn) 0 "R"(DXF 7 SSn) (DXF 8 SSn) nil nil)

đổi giá trị nil mình đánh dấu đỏ thành mã màu bạn muốn. Ví dụ bạn muốn là màu 3 thì: (DXF 40 SSn) 0 "R"(DXF 7 SSn) (DXF 8 SSn) 3 nil)

Về code mình viết, mình không muốn đưa thêm lựa chọn tính chính xác đến bao nhiêu số sau dấu phẩy vì thực tế các phép tính chúng ta sử dụng trên bản vẽ chỉ tính đến 2 con số. mình đã từng rất ức chế khi sử dụng lisp của đồng nghiệp viết trong đó mọi phép tính toán đều bị hỏi thêm 1 câu "lấy tròn bao nhiêu số sau dấu phẩy" thừa thãi như vậy. đưa vào chỉ thấy rối và khó sử dụng :)

  • 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

Hi.mới ra xem thử thì nhận thấy cách rải theo hướng 2 điểm pick khi chọn khoảng cách ở bước 5 có vẻ hay hơn các bác ạ.Mong các bac ra tay.

tski2596.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

@NguyenNgocSon: để xuất text kết quả có màu theo ý của bạn thì bạn tìm dòng này: (DXF 40 SSn) 0 "R"(DXF 7 SSn) (DXF 8 SSn) nil nil)

đổi giá trị nil mình đánh dấu đỏ thành mã màu bạn muốn. Ví dụ bạn muốn là màu 3 thì: (DXF 40 SSn) 0 "R"(DXF 7 SSn) (DXF 8 SSn) 3 nil)

Về code mình viết, mình không muốn đưa thêm lựa chọn tính chính xác đến bao nhiêu số sau dấu phẩy vì thực tế chúng ta các phép tính chúng ta sử dụng trên bản vẽ chỉ tính đến 2 con số. mình đã từng rất ức chế khi sử dụng lisp của đồng nghiệp viết trong đó mọi phép tính toán đều bị hỏi thêm 1 câu "lấy tròn bao nhiêu số sau dấu phẩy" thừa thãi như vậy. đưa vào chỉ thấy rối và khó sử dụng :)

Hi.Chào bác.Em thấy lisp bác đưa ra khá hay đó chứ,lisp bác có thanh sổ lựa chọn có thể chọn bằng chuột mà không phải gõ lệnh,rất tiện lợi.Ý em nói là bác nên lấy số sau dấu phẩy theo unit của cad.Hi.bình thường em cũng để trong unit sau phẩy 2 số mà,đề phòng muốn tính thêm chính xác nữa thôi bác ah.Mà như vậy cũng tránh được vấn đề ức chế như bác 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

Ý em nói là bác nên lấy số sau dấu phẩy theo unit của cad.Hi.bình thường em cũng để trong unit sau phẩy 2 số mà,đề phòng muốn tính thêm chính xác nữa thôi bác ah.Mà như vậy cũng tránh được vấn đề ức chế như bác nói đó.

Ý bác Thaistreetz là lấy 2 số sau dấu phẩy thập phân để khỏi phải nhập "Số thập phân sau dấu phẩy" gây ức chế cho bác ấy. Còn bạn muốn số sau dấu phẩy theo Unit thì bạn tìm trong file Lsp, chỗ nào có hàm Rtos bạn bỏ bớt 1 con số 2 trong đó là đượ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

@: Tue_NV, Ketxu, Tski259

Ngồi suốt gần cả ngày, rốt cuộc botay.com, còn phát hiện thêm một nỗi "oái oăm" nữa:

Với file cad đính kèm (lược bỏ từ file gốc của tski259), test với file Lsp tính ma trận của bác Tue_NV (khi còn dùng hàm Acet) thì nó thế này:

1). Test trên ma trận của bản vẽ đính kèm thì Miss.

2). Đổi chế độ canh lề của chúng sang Left rồi test thì OK.

3). Tạo một bản vẽ mới thì cỡ nào cũng OK.

Như vậy, bản vẽ của tski259 có gì đặc biệt chăng?

Các bác test thử xem sao nhé!

http://www.cadviet.com/upfiles/3/ha_test.zip

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

Hi.Trong khi chờ bác Tuệ hoàn thành lisp tính ma trận em lại nêu ý tưởng mới mọi người thử xem nhé.

tski2595.jpg

1.thực hiện lệnh

2.Lựa chọn đối tượng cần copy

3.Chọn gia số

4.Lựa chọn hướng copy (x,y,xy)

5.Chọn khoảng cách giữa các text bằng cách bắt giữa hai điểm hoặc nhập vào.

6.Chọn vùng copy bằng cách chọn pick điểm p1 và p2 như hình.

(Rải theo x,y chắc mọi người dễ hiểu .Rải theo xy thì hướng rải là hường của điểm p1 và p2,hay nên chọn hướng rải theo hướng 2 điểm khi chọn khoảng cách ở bước 5,mọi người thử nghiên cứu thử nha).

Mong các bác có thể biến ý tưởng của em thành hiện thực.Hi,lấy ý tưởng bằng cách kéo thả ô tính của exel

 

 

Hi.mới ra xem thử thì nhận thấy cách rải theo hướng 2 điểm pick khi chọn khoảng cách ở bước 5 có vẻ hay hơn các bác ạ.Mong các bac ra tay.

tski2596.jpg

 

Cái này gọi là yêu cầu tski ạ :blink:

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

Cái này gọi là yêu cầu tski ạ :blink:

Hi.Đúng là yêu cầu.Nhưng cái này hoàn thành cũng có thể thay thế cho lisp copy tăng dần,mà nhanh hơn ở bước chọn với cách copy tịnh tiến theo đường bậc nhất.Vì đang chờ kq của bác Tuệ với lisp tính ma trận nên em mới nêu ý tưởng vậy để mọi người thảo luận.Mà chắc là cũng có nhiều người cần đó bá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

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

×