Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
hnfunny

Nhờ Sửa Lips Cộng Dim

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

Em tìm được lips cộng dim thành tổng diễn giải để làm hồ sơ ấy ạ. Nhưng có một vấn đề là lips này k lấy được dim sau khi đã làm tròn. Mong tìm được cao nhân sửa giúp em. Em xin cảm ơn và tạ lễ

 

 

 

 
 
(defun c:ccd(/ gtt dt sdt ent id str)
 
  (setq dt (ssget '((0 . "DIMENSION")))
 
sdt (sslength dt)
 
id 0
 
gtt 0
 
str "="
 
)
 
  (repeat sdt
 
(setq
 
   ent (ssname dt id)
 
      id (1+ id)
 
   gtt (+ gtt (gt1 ent) )
 
str (strcat str  (Rtos (gt1 ent) 2 2)  "+")
 
   )
 
)
 
(Lisped (substr str 1 (1- (strlen str))))
 
  (princ gtt)
 
  (princ)
 
  )
 
;;;;;;;;;;;;;;;;;;;;;;;;;;
 
(defun gt1(ent / so)
 
(if (wcmatch(cdr(assoc 1 (entget ent)))"")
 
   (setq so (cdr(assoc 42 (entget ent))))
 
   (setq so (atof(cdr(assoc 1 (entget ent)))))
 
   )
 
)
 
 
 

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

Thay (Rtos (gt1 ent) 2 2) thành (Rtos (gt1 ent) 2 0)

 

- Các bác thâm niên thì cho em hỏi xíu: Cái Hàm ( LISPED  .....)   thì em tìm nó ở đâu thế. Trong thư viện Help chẳng thấy đâu, cứ ngờ 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

Thay (Rtos (gt1 ent) 2 2) thành (Rtos (gt1 ent) 2 0)

 

- Các bác thâm niên thì cho em hỏi xíu: Cái Hàm ( LISPED  .....)   thì em tìm nó ở đâu thế. Trong thư viện Help chẳng thấy đâu, cứ ngờ ngợ  ;)  ;)

acad.dcl 

 

// LispEd.dcl

//
//
// Prototype layout for single-line MText editor.
 
MTEXTED sysvar: 
 ":LispEd" --->single line lisp :D
+ "" ------------> full editor
  • 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

 

acad.dcl 

 

// LispEd.dcl

//
//
// Prototype layout for single-line MText editor.
 
MTEXTED sysvar: 
 ":LispEd" --->single line lisp :D
+ "" ------------> full editor

 

 

Hỏi thêm bác câu nữa. Em biết câu lệnh (LISPED ) xài kiểu gì. ---> Xem  ví dụ của các câu lệnh / hộp thoại này như thế nào?  < Thực chất thì nó là 1 dạng hộp thoại do người dùng lập ra mà>  .   :)

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ỏi thêm bác câu nữa. Em biết câu lệnh (LISPED ) xài kiểu gì. ---> Xem  ví dụ của các câu lệnh / hộp thoại này như thế nào?  < Thực chất thì nó là 1 dạng hộp thoại do người dùng lập ra mà>  .   :)

findfile acad.dcl Xong rôì tìm hàm hộp thoại trên trong file acad.dcl đó.

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

findfile acad.dcl Xong rôì tìm hàm hộp thoại trên trong file acad.dcl đó.

 Nãy a nói cái là em mò ra được là nó ở đâu rồi.

Ý em là ngoài hàm (LISPED ) ra thì còn nhiều hàm khác. 

Đọc thì em cũng hiểu là Acad.dcl là 1 file tạo ra các giao diện hộp thoại trong cad. Vấn đề là tự dưng lisp trên sử dụng hàm (Lisped...) làm em hơi ngờ ngợ, biết đâu có những hàm tương tự mà chức năng lại hay để mình xài thì sao.  :D  :D Thấy xài code đấy cũng hay hay. : )

Chứ còn em nghĩ lisp trên ko cần xài như thế, cứ princ ra 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

Thay (Rtos (gt1 ent) 2 2) thành (Rtos (gt1 ent) 2 0)

 

- Các bác thâm niên thì cho em hỏi xíu: Cái Hàm ( LISPED  .....)   thì em tìm nó ở đâu thế. Trong thư viện Help chẳng thấy đâu, cứ ngờ ngợ  ;)  ;)

Không được đâu bác. Dim đã làm tròn vẫn ra kết quả dim chính xác . Không lấy được kết quả sau khi đã làm tròn. xem lại hộ em vớ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

Không được đâu bác. Dim đã làm tròn vẫn ra kết quả dim chính xác . Không lấy được kết quả sau khi đã làm tròn. xem lại hộ em với

 

Tôi tưởng bạn cần lấy mỗi dòng dim làm tròn, chứ thấy có yêu cầu lấy tổng ra làm tròn đâu !.

Thay thêm dòng:  (+ gtt (gt1 ent) )     thành  (+ gtt (atof (rtos (gt1 ent) 2 0)))

Mà đầu topic bạn bảo hậu tạ..... Thế định hậu tạ tôi cái gì nhể.  ;)  ;)  ;)  

  • 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

Tôi tưởng bạn cần lấy mỗi dòng dim làm tròn, chứ thấy có yêu cầu lấy tổng ra làm tròn đâu !.

Thay thêm dòng:  (+ gtt (gt1 ent) )     thành  (+ gtt (atof (rtos (gt1 ent) 2 0)))

Mà đầu topic bạn bảo hậu tạ..... Thế định hậu tạ tôi cái gì nhể.  ;)  ;)  ;)  

Em nói là làm. bác muốn em hậu tạ gì bữa nhậu hay card đt :D

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 tưởng bạn cần lấy mỗi dòng dim làm tròn, chứ thấy có yêu cầu lấy tổng ra làm tròn đâu !.

Thay thêm dòng:  (+ gtt (gt1 ent) )     thành  (+ gtt (atof (rtos (gt1 ent) 2 0)))

Mà đầu topic bạn bảo hậu tạ..... Thế định hậu tạ tôi cái gì nhể.  ;)  ;)  ;)  

Vẫn không được bác ơi . Ví dụ 2598 để round off 10 thì ccd nó vẫn lấy giá trị thực là 2600 chứ k lấy được 2598167b99.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

Vẫn không được bác ơi . Ví dụ 2598 để round off 10 thì ccd nó vẫn lấy giá trị thực là 2600 chứ k lấy được 2598

 

Hình như đang có sự nhầm lẫn: Phải là ccd nó lấy giá trị 2598 chứ không phải là 2600 !!!

- Trả lời bạn thế này:

+  Lisp trên ko viết cho bất kì Dimention nào lấy tròn Round, nó lấy theo chiều dài thực của Dimetion đã làm tròn 1 đơn vị. Nếu muốn dùng cho trường hợp làm trong Round=10 thì phải viết lách thành 1 cái lisp mới.

+  Cám ơn tui ko cần phải Card thẻ gì đâu... Chỉ cần bạn ra ngoài đường, gặp em bé  / cụ già nào đói rét quá, thì cho họ 50k hay 100k là được. Ah, thêm cả nút Thanks nữa :v

  • 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

Hình như đang có sự nhầm lẫn: Phải là ccd nó lấy giá trị 2598 chứ không phải là 2600 !!!

- Trả lời bạn thế này:

+  Lisp trên ko viết cho bất kì Dimention nào lấy tròn Round, nó lấy theo chiều dài thực của Dimetion đã làm tròn 1 đơn vị. Nếu muốn dùng cho trường hợp làm trong Round=10 thì phải viết lách thành 1 cái lisp mới.

+  Cám ơn tui ko cần phải Card thẻ gì đâu... Chỉ cần bạn ra ngoài đường, gặp em bé  / cụ già nào đói rét quá, thì cho họ 50k hay 100k là được. Ah, thêm cả nút Thanks nữa :v

Thế em lại đang cần cái lấy làm tròn theo round off cơ. Chứ nếu lấy 2598 thì lips ban đầu vẫn giải quyết được rồi. hầy. Dù sao cũng cám ơ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

Sửa 1 chút cho bạn để xài với Round=10

 

Thay đoạn 

 

gtt (+ gtt (gt1 ent) )

str (strcat str  (Rtos (gt1 ent) 2 2)  "+")
 
Bằng: 
 
gtt (+ gtt (* (atof (rtos (/ (gt1 ent) 10) 2 0)) 10))
str (strcat str (rtos (* (atof (Rtos (/ (gt1 ent) 10) 2 0)) 10) 2 0)  "+")

 

  • 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

Sửa 1 chút cho bạn để xài với Round=10

Được rồi, tuyệt quá cám ơn bacs.Tương tự với 100 , 200 chỉ cần thay vào vị trí số 10 là đc hả 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

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

Đăng nhập để thực hiện theo  

×