Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
khanhmytho

Nhờ viết thêm xuất ra text cho lisp

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

_ Mình xem trên diễn đàn thấy lisp kick đo khoảng cách giữa 2 điểm rất hay mình có down về sử dụng và sửa đôi chút (do mình chỉ cần 2 điểm) lisp dùng quá tốt nhưng mình muốn xuất kết quả đó ra thay vào 1 text thì mình không làm được, anh em nào viết giúp tiếp cho mình phần này mình xin cám ơn nhiều. Lisp bên dưới

;----------------------------------------------------------
(defun c:dl()
(setq po1 (getpoint "\n Pick diem A :"))
(setq po2 (getpoint po1 "\n Pick diem B :"))
(setq S (+ (distance po1 po2) (distance po2 po1)))
(while 
(setq po4 (getpoint po2 "\n Pick diem tiep theo de tinh khoang cach/ Enter de ket thuc :"))
(setq S (+ S (distance po3 po4)) po3 po4)
)
(alert (strcat "Tong S = " (rtos S)))
(princ)
)
;---------------------------------------------------------- 

_ Xin chân thà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

Nhờ các bác cao thủ viết dùm em lisp với  yêu cầu là : khi ta đánh lệnh chèn ( ví dụ chèn block cột điện hay hố ga gì đó ) nó sẽ hỏi chèn vào số thứ tự bao nhiêu ( ví dụ 1 , 8  , 25 , 36 v.v..) , xong  nó hỏi tiếp là chèn với tỷ lệ bao nhiêu ( ví dụ 1/1 hay 0.5 v.v..) . Tại vì em bên đo đạc khào sát nên khi trút số liệu từ máy ra để vẽ bình đồ thì file đó gồm có số thứ tự , cao độ . Mong các cao thủ ra tay nghĩa hiệp dùm em , em cám ơn trước nha . chúc các anh chị ngày đầu tuần vui vẻ .

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 xem trên diễn đàn thấy lisp kick đo khoảng cách giữa 2 điểm rất hay mình có down về sử dụng và sửa đôi chút (do mình chỉ cần 2 điểm) lisp dùng quá tốt nhưng mình muốn xuất kết quả đó ra thay vào 1 text thì mình không làm được, anh em nào viết giúp tiếp cho mình phần này mình xin cám ơn nhiều. Lisp bên dưới

;----------------------------------------------------------
(defun c:dl()
(setq po1 (getpoint "\n Pick diem A :"))
(setq po2 (getpoint po1 "\n Pick diem B :"))
(setq S (+ (distance po1 po2) (distance po2 po1)))
(while 
(setq po4 (getpoint po2 "\n Pick diem tiep theo de tinh khoang cach/ Enter de ket thuc :"))
(setq S (+ S (distance po3 po4)) po3 po4)
)
(alert (strcat "Tong S = " (rtos S)))
(princ)
)
;---------------------------------------------------------- 

_ Xin chân thành cám ơn !!!!

Similar topics from web:

Lisp – Wikipedia tiếng Việt

Chia sẻ Bộ Lisp rất hay: ”Kho báu của Minh” [Lưu Trữ]

Hệ thập lục phân – Wikipedia tiếng Việt

Kinh ngiệm dùng CAD và LISP

Visual Lisp? [Lưu Trữ]

Ứng dụng lisp trong vẽ cad phục vụ dân cầu đường chuyên nghiệp

Phần mềm PKT 1.0 trong khảo sát thiết kế: Giảm thời gian, tránh sai ...

Lisp Cad hỗ trợ trong thiết kế | Lisp Cad ho tro trong thiet ke

Chuyên trang đào tạo kiến thức và phần mềm kỹ thuật hạ tầng đô thị ...

AutoCAD: Tin tức, hình ảnh, video clip về AutoCAD

Ngôn ngữ AutoLISP

[Nhờ viết lisp] Xuất cao độ từ CAD sang Notpad hoặc Excel ...

Làm sao lấy dữ liệu trong cad qua excel?

THIẾT KẾ TRÊN MÁY VI TÍNH

VBA for AutoCAD [Lưu Trữ]

Hề hề hề.

Chủ thớt thử chêm đoạn dưới đây vào dưới dòng code 

(alert (strcat "Tong S = " (rtos S)))

và trên dòng code 

(princ)

xem sao nhé.

 

(setq txt (car (entsel "\n Chọn text muon thay the"))
          elst (entget txt)
          elst (subst (cons 1 (rtos S 2 2) ) (assoc 1 elst) elst)
)
(entmod elst)
(setq txt (car (entsel "\n Chọn text muon thay the"))
          elst (entget txt)
          elst (subst (cons 1 (rtos S 2 2) ) (assoc 1 elst) elst)
)
(entmod elst)

(setq txt (car (entsel "\n Chon text muon thay the")))

         elst (entget txt)

         elst (subst (cons 1 (rtos S 2 2)) (assoc 1 elst) elst)

)

(entmod elst)

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

Chủ thớt thử chêm đoạn dưới đây vào dưới dòng code 

(alert (strcat "Tong S = " (rtos S)))

và trên dòng code 

(princ)

xem sao nhé.

 

(setq txt (car (entsel "\n Chọn text muon thay the"))
          elst (entget txt)
          elst (subst (cons 1 (rtos S 2 2) ) (assoc 1 elst) elst)
)
(entmod elst)
(setq txt (car (entsel "\n Chọn text muon thay the"))
          elst (entget txt)
          elst (subst (cons 1 (rtos S 2 2) ) (assoc 1 elst) elst)
)
(entmod elst)

(setq txt (car (entsel "\n Chon text muon thay the")))

         elst (entget txt)

         elst (subst (cons 1 (rtos S 2 2)) (assoc 1 elst) elst)

)

(entmod elst)

Em đã thử nhưng vẫn không đượ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

Em đã thử nhưng vẫn không được :(

Hề hề hề,

Không được thì nó báo lỗi gì hả bạn???

Có nhẽ lỗi là do cái lisp của bạn đấy. Vì bạn nói lisp dùng chuẩn rồi nên mình chả sửa gì, nhưng thực ra lisp đó có lỗi đấy.

Cái điểm p03 lấy ở đâu mà có được (distance p03 p04) ???

Còn (setq S (+ (distance p01 p02) (distance p02 p01))) để làm chi vậy??? Tại sao phải cộng hai lần distance này???

 

Đoạn code mình đưa ra chỉ là để thay cái kết quả S vào cái text mà bạn muốn thay thôi. Nếu cái lisp của bạn không chạy đúng thì tất nhiên nó sẽ chả cho ra cái kết quả đúng đâu.

 

Bạn hãy rút kinh nghiệm khi dùng lisp.

Chỉnh sửa theo phamthanhbinh

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ề,

Không được thì nó báo lỗi gì hả bạn???

Có nhẽ lỗi là do cái lisp của bạn đấy. Vì bạn nói lisp dùng chuẩn rồi nên mình chả sửa gì, nhưng thực ra lisp đó có lỗi đấy.

Cái điểm p03 lấy ở đâu mà có được (distance p03 p04) ???

Còn (setq S (+ (distance p01 p02) (distance p02 p01))) để làm chi vậy??? Tại sao phải cộng hai lần distance này???

 

Đoạn code mình đưa ra chỉ là để thay cái kết quả S vào cái text mà bạn muốn thay thôi. Nếu cái lisp của bạn không chạy đúng thì tất nhiên nó sẽ chả cho ra cái kết quả đúng đâu.

 

Bạn hãy rút kinh nghiệm khi dùng lisp.

Đoạn code đó là viết cho lisp khi kích 3 điểm đó anh nhưng em chỉ cần 2 điểm thôi, em sửa "lụi" nên nó ra thế mà không sao chỉnh lại tí sẽ ok thôi, còn đoạn code anh gửi cho em thì nó có hiện ra dòng lệnh chọn text muốn thay thế nhưng khi kích vào text thì nó không thay thế được, đoạn code đã chỉnh sửa và thêm vào code của anh như sau : 

(defun c:dl()
(setq po1 (getpoint "\n Pick diem A :"))
(setq po2 (getpoint po1 "\n Pick diem B :"))
(setq S (+ (distance po1 po2)))
(while 
(setq po4 (getpoint po2 "\n Pick diem tiep theo de tinh khoang cach/ Enter de ket thuc :"))
(setq S (+ S (distance po1 po2)))
)
(alert (strcat "Tong S = " (rtos S)))
(setq txt (car (entsel "\n Chon text muon thay the")))
         elst (entget txt)
         elst (subst (cons 1 (rtos S 2 2)) (assoc 1 elst) elst)
)
(entmod elst)
(princ)
)

_ Thật ra thì nó giống như lệnh di của cad nhưng thêm phần thay thế vào text :)). Cám ơn anh đã quan tâ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

Thừa 1  dấu ngoặc đóng ở dòng này:

(setq txt (car (entsel "\n Chon text muon thay the")))

Hề hề hề,

Thank bác DoanVanHa, đúng là mình không kiểm tra lại code trước khi post vì nghĩ nó đơn giản. Song nếu vậy thì load lisp nó sẽ báo lỗi chứ không thể chạy lisp đến tận dòng code đó được.

Hình như chủ thớt không test lisp hay sao ấy, chứ nguyên code cũ của chủ thớt cũng khó mà chạy ra kết quả đúng được bác ạ.

Hề hề hề,...

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ề,

Thank bác DoanVanHa, đúng là mình không kiểm tra lại code trước khi post vì nghĩ nó đơn giản. Song nếu vậy thì load lisp nó sẽ báo lỗi chứ không thể chạy lisp đến tận dòng code đó được.

Hình như chủ thớt không test lisp hay sao ấy, chứ nguyên code cũ của chủ thớt cũng khó mà chạy ra kết quả đúng được bác ạ.

Hề hề hề,...

ỌC em có test mà anh trai, vì em đang cần nên có test thấy không được nên em mới pm nè, chứ không test thì sao em lại pm là không xuất được kết quả :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ạ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  

×