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

[Yêu cầu] lisp tính diện tích hình chữ nhật bằng cách đo 2 cạnh

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

Chào cả nhà. Em đã đọc khá nhiều bài trên diễn đàn về lisp tính diện tích nhưng chưa thấy có cái nào giải quyết đc vấn đề của e cả. Em muốn nhờ các bác viết giúp 1 cái lisp tính diện tích như sau:

- Tính diện tích hình chữ nhật bằng cách kéo 2 chiều dài 2 cạnh của nó (kéo như vẽ line)

- Diện tích tính ra được chèn vào 1 ô của 1 bảng excel có sẵn (ô nào tùy mình chọn)

- Sau khi tính xong hình 1 sẽ tiếp tục tính các hình tiếp theo cho đến khi esc hoặc enter để kết thúc.

- Kết quả tính sau được lưu vào cùng cột và ô ngay dưới kết quả trước (tất cả kết quả lưu vào 1 cột, vị trí đầu tiên của cột đó do mình chọn)

 

Em diễn đạt có khi hơi khó hiểu mong các bác giúp đỡ.

Chúc cả nhà 1 ngày tốt lành :rolleyes:

  • Vote tăng 2
  • Vote giảm 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

E lại chào cả nhà lần nữa :(

Hình như chủ đề này có nhiều quá ko ai để ý hay sao vậy.

Mong các bác cho góp ý nếu đã có bài như mong muốn của e post trên diễn đàn.

  • Vote tăng 2
  • Vote giảm 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 vào Ô excel xong lại ô nào tùy chọn thì khoai quá :) Rút thôi :rolleyes:

Mạn phép chủ topic, gặp bác Ket nên hỏi cái này cái:

Mấy hôm rày bàn nhiều về menu, trong đó có phần tiếng Việt, vậy bác bổ sung thêm convert file cui từ TCVN3-ABC sang Unicode (không phải Hexa) luôn được không? Có cái này tôi sẽ cố gắng nghiên cứu cách tạo menu "đẹp" hơn chút xíu để giúp mọi người đang nóng chủ đề 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

Chèn vào Ô excel xong lại ô nào tùy chọn thì khoai quá :) Rút thôi :rolleyes:

không phải bác a. ý em là kết quả lần đầu lưu vào vị trị đặt chuột trong bảng excel. còn kq sau thì cứ xuống dòng thôi mà.

Em không hiểu lắm về tư duy lập trình nên ko biết khó dễ thế nào. nếu ô bất kỳ khó thì có thể chèn vào ô đầu tiên (A1) cũng đc bác a

  • Vote tăng 2
  • Vote giảm 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

Mạn phép chủ topic, gặp bác Ket nên hỏi cái này cái:

Mấy hôm rày bàn nhiều về menu, trong đó có phần tiếng Việt, vậy bác bổ sung thêm convert file cui từ TCVN3-ABC sang Unicode (không phải Hexa) luôn được không? Có cái này tôi sẽ cố gắng nghiên cứu cách tạo menu "đẹp" hơn chút xíu để giúp mọi người đang nóng chủ đề này.

Ket chưa nghiên cứu file Cui trông nó như thế nào, nhưng nhớ là bác DVH có cái convert TCVN->Unicode rồi mà nhỉ, có bị vấp gì chỗ thay file lisp bừng file CUI không ạ ?

 

@Tina : sở dĩ mình nói khó bởi vì khi chuyển quyền cho Excel để bạn click, thật khó để CAD biết bạn đã chọn cái ô nào, vì cái bạn đang làm việc với là Lisp của CAD. Còn với các kỹ thuật cao hơn thì với mình thật khó khăn ^^ Phải chăng bạn quá 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

Ket chưa nghiên cứu file Cui trông nó như thế nào, nhưng nhớ là bác DVH có cái convert TCVN->Unicode rồi mà nhỉ, có bị vấp gì chỗ thay file lisp bừng file CUI không ạ ?

 

@Tina : sở dĩ mình nói khó bởi vì khi chuyển quyền cho Excel để bạn click, thật khó để CAD biết bạn đã chọn cái ô nào, vì cái bạn đang làm việc với là Lisp của CAD. Còn với các kỹ thuật cao hơn thì với mình thật khó khăn ^^ Phải chăng bạn quá lười ?

Theo mình thì cứ xuất ra txt kiểu xuống hàng. Sau đó thì làm thủ công copy qua Excel cho nó pẻ. :lol:

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

Ket chưa nghiên cứu file Cui trông nó như thế nào, nhưng nhớ là bác DVH có cái convert TCVN->Unicode rồi mà nhỉ, có bị vấp gì chỗ thay file lisp bừng file CUI không ạ ?

File CUI không phải là file ANSI nên thằng LSP nó lơ đẹp. DVH chỉ có chuyển dòng từ TCVN3 sang Unicode thôi, không chuyển cả file được. Trong cái của bác có 2 dạng đuôi là LSP và DCL, nếu thêm CUI mà không trở ngại thì OK.

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

Theo mình thì cứ xuất ra txt kiểu xuống hàng. Sau đó thì làm thủ công copy qua Excel cho nó pẻ. :lol:

 

Hoặc là xuất qua bản Excel mới rồi copy sang ^^

Yêu cầu của bạn chủ topic có thể làm được nếu bạn ấy cung cấp Hàng + cột (địa chỉ ô Excel) ngay trong thao tác đầu tiên ở Lisp

 

File CUI không phải là file ANSI nên thằng LSP nó lơ đẹp. DVH chỉ có chuyển dòng từ TCVN3 sang Unicode thôi, không chuyển cả file được. Trong cái của bác có 2 dạng đuôi là LSP và DCL, nếu thêm CUI mà không trở ngại thì OK.

 

Ok, tối về Ket test. Cái đó thì không vấn đề gì, chỉ là thêm bộ lọc thôi ^^

 

À quên mất, Tool kia chỉ có tác dụng convert TCVN/Unicode <-> Hex Unicode. Nếu bác convert TCVN <-> Unicode thì có thể tạm thời dùng Unikey ^^

  • 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

À quên mất, Tool kia chỉ có tác dụng convert TCVN/Unicode <-> Hex Unicode. Nếu bác convert TCVN <-> Unicode thì có thể tạm thời dùng Unikey ^^

Ờ nhỉ! DVH ngu đột xuất rồ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

@Tina : sở dĩ mình nói khó bởi vì khi chuyển quyền cho Excel để bạn click, thật khó để CAD biết bạn đã chọn cái ô nào, vì cái bạn đang làm việc với là Lisp của CAD. Còn với các kỹ thuật cao hơn thì với mình thật khó khăn ^^ Phải chăng bạn quá lười ?

Thưa bác e nghĩ dùng lisp để tăng tốc độ làm việc chứ ko có j là lười đâu bác a. cái hình cn mà em nói đó là mặt bằng các phòng đấy a. em cần tính diện tích để tính toán thông gió và điều hòa cho nó. giả sử có 50 phòng, bác ngồi đo dài, rộng từng phòng rùi nhập qua excel để tính ra diện tích thì có lẽ hơi lâu. nếu có lisp thì chỉ cần thao tác trong cad mà cũng rất nhanh.

em cũng đã nói nếu chọn ô bất kỳ khó thì có thể chọn ô đầu tiên là A1 trong excel rùi mà bác và ô tiếp theo là A2, A3..., nếu cần địa chỉ cụ thể thì là cột A từ A1 đến A69 là đủ bác a. vì e chưa làm quá 50 phòng bao giờ.

Mong các bác giúp đỡ.

  • Vote tăng 2
  • Vote giảm 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ào cả nhà. Em đã đọc khá nhiều bài trên diễn đàn về lisp tính diện tích nhưng chưa thấy có cái nào giải quyết đc vấn đề của e cả. Em muốn nhờ các bác viết giúp 1 cái lisp tính diện tích như sau:

- Tính diện tích hình chữ nhật bằng cách kéo 2 chiều dài 2 cạnh của nó (kéo như vẽ line)

- Diện tích tính ra được chèn vào 1 ô của 1 bảng excel có sẵn (ô nào tùy mình chọn)

- Sau khi tính xong hình 1 sẽ tiếp tục tính các hình tiếp theo cho đến khi esc hoặc enter để kết thúc.

- Kết quả tính sau được lưu vào cùng cột và ô ngay dưới kết quả trước (tất cả kết quả lưu vào 1 cột, vị trí đầu tiên của cột đó do mình chọn)

 

Em diễn đạt có khi hơi khó hiểu mong các bác giúp đỡ.

Chúc cả nhà 1 ngày tốt lành :rolleyes:

 

 

Thưa bác e nghĩ dùng lisp để tăng tốc độ làm việc chứ ko có j là lười đâu bác a.cái hình cn mà em nói đó là mặt bằng các phòng đấy a. em cần tính diện tích để tính toán thông gió và điều hòa cho nó. giả sử có 50 phòng, bác ngồi đo dài, rộng từng phòng rùi nhập qua excel để tính ra diện tích thì có lẽ hơi lâu. nếu có lisp thì chỉ cần thao tác trong cad mà cũng rất nhanh.

em cũng đã nói nếu chọn ô bất kỳ khó thì có thể chọn ô đầu tiên là A1 trong excel rùi mà bác và ô tiếp theo là A2, A3..., nếu cần địa chỉ cụ thể thì là cột A từ A1 đến A69 là đủ bác a. vì e chưa làm quá 50 phòng bao giờ.

Mong các bác giúp đỡ.

 

Đỏ : Bạn Đã nói ở chỗ nào mà Ket tìm hổng thấy :)

Xanh : bạn minh họa bằng hình vẽ, vì nào ai biết kéo là kéo như thế nào, bạn chọn dài, rộng, xong máy tự kéo, tự tính, hay bạn kẻ 2 cái dài, rộng....?

Tím : Bạn dùng các lisp thống kê diện tích để xuất text ra CAD, copy 1 phát vào EXcel, hoặc thậm chí là tự làm 1 cái bảng trong CAD với các field, hoàn toàn có thể làm trong CAD :)

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 Đã nói ở chỗ nào mà Ket tìm hổng thấy :)

Xanh : bạn minh họa bằng hình vẽ, vì nào ai biết kéo là kéo như thế nào, bạn chọn dài, rộng, xong máy tự kéo, tự tính, hay bạn kẻ 2 cái dài, rộng....?

Tím : Bạn dùng các lisp thống kê diện tích để xuất text ra CAD, copy 1 phát vào EXcel, hoặc thậm chí là tự làm 1 cái bảng trong CAD với các field, hoàn toàn có thể làm trong CAD :)

Đỏ: "không phải bác a. ý em là kết quả lần đầu lưu vào vị trị đặt chuột trong bảng excel. còn kq sau thì cứ xuống dòng thôi mà.

Em không hiểu lắm về tư duy lập trình nên ko biết khó dễ thế nào. nếu ô bất kỳ khó thì có thể chèn vào ô đầu tiên (A1) cũng đc bác a"

Xanh: Kéo như vẽ line như em hiểu đơn giản thì khi gõ lệnh, cad báo "cạnh a" MÌNH pick vào điểm đầu và điểm cuối của cạnh thứ 1, tương tự với cạnh thứ 2.

Tím: em không tìm được lisp thống kê diện tích nào trên diễn đàn dựa theo cách 'kéo' 2 cạnh như em muốn. nếu dùng lisp pick để tính thì rất khó vì bên trong còn ký hiệu cửa, các vật dụng bàn, gế, bồn cầu,... thậm chí là cánh cửa. nếu bác thấy có lisp nào tính diện như ý em trình bày thì cho em xin cái link a.

ảnh em minh họa như vẽ line http://www.cadviet.com/upfiles/3/11_3.jpg

Em cám ơn bác đã quan tâm

  • Vote tăng 1
  • Vote giảm 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ào cả nhà. Em đã đọc khá nhiều bài trên diễn đàn về lisp tính diện tích nhưng chưa thấy có cái nào giải quyết đc vấn đề của e cả. Em muốn nhờ các bác viết giúp 1 cái lisp tính diện tích như sau:

- Tính diện tích hình chữ nhật bằng cách kéo 2 chiều dài 2 cạnh của nó (kéo như vẽ line)

- Diện tích tính ra được chèn vào 1 ô của 1 bảng excel có sẵn (ô nào tùy mình chọn)

- Sau khi tính xong hình 1 sẽ tiếp tục tính các hình tiếp theo cho đến khi esc hoặc enter để kết thúc.

- Kết quả tính sau được lưu vào cùng cột và ô ngay dưới kết quả trước (tất cả kết quả lưu vào 1 cột, vị trí đầu tiên của cột đó do mình chọn)

 

Em diễn đạt có khi hơi khó hiểu mong các bác giúp đỡ.

Chúc cả nhà 1 ngày tốt lành :rolleyes:

Bạn có thể sử dụng lệnh DATAEXTRACTION để xuất dữ liệu. Bạn chịu khó tìm kiếm lệnh này trên diễn đàn, đọc, hiểu nó 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

nếu ô bất kỳ khó thì có thể chèn vào ô đầu tiên (A1) cũng đc bác a

Cad có thể xuất số liệu ra ở một Cell bất kỳ, miễn là cell đó được chỉ định trước, VD: hàng 2 cột 3. Khi đó chỉ cần thêm các ký tự "\t" (nếu ghi ra file txt), "," (nếu ghi ra file csv) và "\n" (cả file txt và csv) là được. Do bạn nói không rõ thôi, chứ bác Ket thì dư sức qua cầu mấy chuyện 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

Bạn có thể sử dụng lệnh DATAEXTRACTION để xuất dữ liệu. Bạn chịu khó tìm kiếm lệnh này trên diễn đàn, đọc, hiểu nó nhé

vâng e cám ơn bác đã chỉ. em sẽ tìm và đọc ngay. chúc bác 1 ngày tốt lành

  • Vote tăng 1
  • Vote giảm 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

Bạn có thể sử dụng lệnh DATAEXTRACTION để xuất dữ liệu. Bạn chịu khó tìm kiếm lệnh này trên diễn đàn, đọc, hiểu nó nhé

Sao cad2007 tìm không thấy lệnh này hả 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

Cad có thể xuất số liệu ra ở một Cell bất kỳ, miễn là cell đó được chỉ định trước, VD: hàng 2 cột 3. Khi đó chỉ cần thêm các ký tự "\t" (nếu ghi ra file txt), "," (nếu ghi ra file csv) và "\n" (cả file txt và csv) là được. Do bạn nói không rõ thôi, chứ bác Ket thì dư sức qua cầu mấy chuyện này.

vâng e cũng biết các bác có thừa khả năng làm a. em cũng nói là em không hiểu rõ lắm về lập trình. em nghĩ khi gõ lệnh sẽ có chỗ thông báo "chọn ô xuất kết quả" và mình chỉ cần pick 1 ô bất kỳ là xong. còn ô A1 là cột A hàng thứ 1 mà bác :(.

Em diễn đạt không theo tư duy lập trình mong các bác hiểu cho.

Em cám ơn mọi ng.

@DVH cad 2008 có lệnh này bác a.

  • Vote giảm 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

Cad có thể xuất số liệu ra ở một Cell bất kỳ, miễn là cell đó được chỉ định trước, VD: hàng 2 cột 3. Khi đó chỉ cần thêm các ký tự "\t" (nếu ghi ra file txt), "," (nếu ghi ra file csv) và "\n" (cả file txt và csv) là được. Do bạn nói không rõ thôi, chứ bác Ket thì dư sức qua cầu mấy chuyện này.

 

Ket có nói rồi nè ^^ Nhưng mà cái phần ghi file ketxu cũng dốt đặc, chỉ chém ra cái cớ thế thôi :(

 

 

Hoặc là xuất qua bản Excel mới rồi copy sang ^^

Yêu cầu của bạn chủ topic có thể làm được nếu bạn ấy cung cấp Hàng + cột (địa chỉ ô Excel) ngay trong thao tác đầu tiên ở 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

Bạn có thể sử dụng lệnh DATAEXTRACTION để xuất dữ liệu. Bạn chịu khó tìm kiếm lệnh này trên diễn đàn, đọc, hiểu nó nhé

Tình hình thế này các bác a. E đã tìm hiểu về lệnh DATAEXTRACTION.

e cũng tìm đc 1 cái lisp có thể đáp ứng nhu cầu của e do bác thaistreet viết.

 

http://www.cadviet.com/forum/index.php?showtopic=12432

 

có điều e muốn nhờ các bác sửa giúp e cái phần tính diện tích, thay vì pick điểm nó cho phép đo 2 cạnh như dùng lệnh DLI ấy.

Em cảm ơn 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

Tình hình thế này các bác a. E đã tìm hiểu về lệnh DATAEXTRACTION.

e cũng tìm đc 1 cái lisp có thể đáp ứng nhu cầu của e do bác thaistreet viết.

 

http://www.cadviet.com/forum/index.php?showtopic=12432

 

có điều e muốn nhờ các bác sửa giúp e cái phần tính diện tích, thay vì pick điểm nó cho phép đo 2 cạnh như dùng lệnh DLI ấy.

Em cảm ơn các bác.

Cái lisp nào trong đống lisp ấ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âu chăm chỉ mình cũng không dám nhận. Coding vội, còn nhiều thứ tiểu tiết bạn cứ nói mình thêm sau, giờ mần việc khác ^^

(defun c:bdt(/ ptt1 ptt2 ptt3)
(setvar "cmdecho" 0)
(command "undo" "begin")
(setq lacol (getvar "CEColor"))
(setq ladin (getvar "dimzin"))
(setq laos (getvar "osmode"))  
(if (not tl) (setq tl 1))
(if (not h) (setq h 1))
(setq tl1 (getreal (strcat "\nty le ban ve < 1/" (rtos tl 2 0) " >: 1/"))
   caot1 (getreal (strcat "\nCao text < " (rtos h 2 2) " >: ")))
(if tl1 (setq tl tl1))
(if caot1 (setq h caot1))
(setq k 0 tdt 0)

(setvar "dimzin" 0)
(setvar "OSMODE" 0)
(setq PT (getpoint "\nChon diem xuat bang thong ke dien tich (mep trai):"))
(setq     P1 (list (+ (car PT)(* 6 h)) (cadr PT))
   P2 (list (+ (car PT)(* 22 h)) (cadr PT))
   P3 (list (car PT) (- (cadr PT)(* 3 h)))
   P4 (list (car P1) (cadr P3))
   P5 (list (car P2) (cadr P3))
   P6 (list (+ (car PT)(* 11 h)) (+ (cadr PT)(* 2 h)))
   P7 (list (+ (car PT)(* 3 h)) (- (cadr PT)(* 1.5 h)))
   P8 (list (+ (car PT)(* 14 h)) (- (cadr PT)(* 1.5 h)))
);setq
(command "pline" PT P2 P5 P3 "C"
       "pline" P1 P4 ""
       "text" "m" P6 (* 1.2 h) 0 "%%UB¶ng thèng kª diÖn tÝch"
       "text" "m" P7 h 0 "STT"
       "text" "m" P8 h 0 "DiÖn tÝch (m2)"
);command
(if (setq ptt1 (getpoint "\n Diem thu nhat canh 1 : "))(setq ptt2 (getpoint ptt1 "\n Diem thu 2 canh 1")))
(if ptt2  (setq ptt3 (getpoint ptt2 "\n Diem thu 2 canh 2 :")))

(while (and (/= ptt1 nil)(/= ptt2 nil)(/= ptt3 nil))
(setq k (+ 1 k))
(command "TEXT" "m" pt1 (* 3 h) 0 (rtos k 2 0))
(setq PT (list (car P3) (cadr P3))
   P1 (list (+ (car PT)(* 6 h)) (cadr PT))
   P2 (list (+ (car PT)(* 22 h)) (cadr PT))
   P3 (list (car PT) (- (cadr PT)(* 3 h)))
   P4 (list (car P1) (cadr P3))
   P5 (list (car P2) (cadr P3))
   P7 (list (+ (car PT)(* 3 h)) (- (cadr PT)(* 1.5 h)))
   P8 (list (+ (car PT)(* 14 h)) (- (cadr PT)(* 1.5 h)))
   P9 (list (car PT) (- (cadr P3)(* 3 h)))
   P10 (list (car P1) (cadr P9))
   P11 (list (car P2) (cadr P9))
   P12 (list (car P7) (- (cadr P3)(* 1.5 h)))
   P13 (list (car P8) (cadr P12))
   );setq
(command "cecolor"4 ".rectang" ptt1 ptt3);; boundary	
(command "area" "O" "L")
(setq dt (* (getvar "area") tl tl) tdt (+ tdt dt)) 
(setvar "CEColor" lacol)
(command "pline" PT P2 P5 P3 "C"
 "pline" P1 P4 ""
 "text" "m" P7 h 0 (rtos k 2 0)
 "text" "m" P8 h 0 (rtos dt 2 2))
(if (setq ptt1 (getpoint "\n Diem thu nhat canh 1 : "))(setq ptt2 (getpoint ptt1 "\n Diem thu 2 canh 1")))
(if ptt2  (setq ptt3 (getpoint ptt2 "\n Diem thu 2 canh 2 :")))
);while

(setvar "DIMZIN" ladin)
(command     "pline" P3 P9 P11 P5 "C"
       "pline" P10 P4 ""
       "text" "m" P12 h 0 "Tæng"
       "text" "m" P13 h 0 (rtos tdt 2 2)
);command
(setvar "OSMODE" laos)
(command "undo" "end")
(setvar "cmdecho" 1)
)

  • 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ạ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


×