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

[Đã xong] Nhờ giúp Lisp tính diện tích và lập bảng

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

Chào các bác

Em thấy Lisp của bác Thái rất là tuyệt vời, nó giúp rất hữu ích cho anh em khi thống kê diện tích

Em có một trường hợp như sau rất mong được các bác giúp đỡ

em có rất nhiều thửa đất, có một đường Plyline cắt ngang qua một số thửa đất như hình vẽ

vd.jpg

rất mong được các bác giúp đỡ em làm sao có thể đánh được :

- ĐÁNH SỐ THỬA

- TÍNH DIỆN TÍCH TRONG VÀO NGOÀI ĐƯỜNG GIỚI HẠN

- XUẤT SANG EXCELL bảng thống kê

Rất mong được các bác trên diện đàn có thể phát triển từ Lisp của bác Thái và bác Thái có thể giúp cho trong khâu giải bài toán này để anh em trắc địa bọn em đỡ vất vả, món Lisp này em chẳng biết gì

 

Cho em được cảm ơn các bác trước vậy

 

Đây là file em gửi kèm

 

http://www.cadviet.com/upfiles/3/vd_10.rar

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á hay, nhưng bác Thái nên để tiếng việt không dấu sẽ tốt hơn, vì có phải ai cũng dùng hệ Font VN đâu. Nữa là : đơn vị bác ghi là m2, nhưng sao kết quả vẫn là mm2 hì hì.

Có đôi lời nhận xét. dù gì thì có được lisp này của bác, cũng nhàn nhã hơn rất nhiều rồi. Thanks!!!!

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 bác Thái em có 1 góp ý nho nhỏ, giả sử em pick 2 lần của 1 thửa thì nó ghi giá trị lần 1 và giá trị lần 2 thì báo đã tính rồi.

  • 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

Cuối năm mai lo chuyện cơm-áo-gạo-tiền, cũng muốn sửa giúp anh em lắm nhưng mình bận quá không còn thời gian cho lisp. mọi người ai có thể sửa được lisp này thì sửa giúp mình với. thanks

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á mơn Thaistreetz và Bác giabach nhiều, vì mình là dân trác địa nên tỷ lẽ bạn vẽ của mình là 1/500 tương đưong với tỷ lệ thực của bản vẽ là 1/1, nếu mình vẽ ở tỷ lệ 1/200 tương dương với tỷ lệ thực của bản vẽ là 2/5. Sau đây là file mẫu của mình theo 4 tỷ lệ khác nhau nhưng cùng kích thước hình học.http://www.cadviet.com/upfiles/2/mau_6_1.dwg

Có gì mình nói không phải mong bạn thứ lỗi.

mình là dân trác địa nên tỷ lẽ bạn vẽ của mình là 1/500 tương đưong với tỷ lệ thực của bản vẽ là 1/1, nếu mình vẽ ở tỷ lệ 1/200 tương dương với tỷ lệ thực của bản vẽ là 2/5
.

Bạn là dân trắc địa mà giải thích tỷ lệ như này là không ổn. Đến mình là dân trắc địa cũng chả hiểu nỗi nữa là bác Thaistreetz. Bạn giải thích lại cho ổn để mọi người hiểu nha.

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 bạn thaistreetz, chương trình bạn rất hay như có 1 điều là tính diện tích của hình elip thì ko được. Cám ơn bạn.

 

thực ra vẫn tính được diện tích với các hình là elíp, hay các đường spline kín.

bạn gõ lệnh BO, trong hộp thoại hiện ra, mục object type , bạn chọn là REGION -> 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

Sao mình tải hoài không được vậy ta, bạn nào có link cuối không cho mình với

cám ơn thaistreetz nhiều nhé

bạn có thể copy trực tiếp code ở các bài trên, rồi paste vào trong file text(vis duj laf abc.txt), sau đó đổi tên là xong(thành abc.lsp chẳng hạ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

http://www.cadviet.com/upfiles/3/50556_r.lsp

đây là lisp của bác Thaittreetz: tính diện tích và lập bảng nhưng cách chọn khu vực tính diện tích là nhấp vào bên trong miền kín. Nhờ các bác cao thủ giúp em thêm 1 chức năng mình có thể chọn khu vực tính diện tích bằng cách nhấp vào đối tượng như polyline chẳng hạn và vẫn xuất diện tích ra bảng.

Cảm ơn nhiều

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

http://www.cadviet.c...s/3/50556_r.lsp

đây là lisp của bác Thaittreetz: tính diện tích và lập bảng nhưng cách chọn khu vực tính diện tích là nhấp vào bên trong miền kín. Nhờ các bác cao thủ giúp em thêm 1 chức năng mình có thể chọn khu vực tính diện tích bằng cách nhấp vào đối tượng như polyline chẳng hạn và vẫn xuất diện tích ra bảng.

Cảm ơn nhiều

Hề hề hề,

Mình giúp bạn lần này đưa vấn đề bạn hỏi về cùng topic gốc. Lần sau bạn nên rút kinh nghiệm để diễ đàn đỡ rối rắm.

Bạn dùng thử cái này xem đã ưng ý chưa nhé.


(defun c:ddt(/ lacol ladin laos tl h tl1 cao1 k tdt ss pt p1 p2 p3 p4 p5 p6 p7 p8 
                       pa pt1 pt2 e ep p9 p10 p11 p12 p13 et dtcon )
 (setvar "cmdecho" 0)
 (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 0) " >: ")))
 (if tl1 (setq tl tl1))
 (if caot1 (setq h caot1))
 (command "undo" "be")
 (setq  k 0 
tdt 0)
 (setq ss (ssadd))

(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 "Bang thong ke dien tich"
"text" "m" P7 h 0 "STT"
"text" "m" P8 h 0 "Dien tich (mm2)"
);command
(setq PA  (getstring "\n Ban chon phuong an chon doi tuong < 1 or 2 > : "))
(if (= pa "1")
   (setq pt1 (getpoint "\n Chon mien tinh dien tich : "))
   (setq ep (car (setq e (entsel "\n Chon doi tuong la polyline kin")))
             pt2 (cadr e)  )
)
 (while (or (/= pt1 nil) (/= ep nil) )
(setq k (+ 1 k))
                 (if pt1
(command "TEXT" "m" pt1 (* 1 h) 0 (rtos k 2 0))
                 )
                 (if ep
                 (command "TEXT" "m" pt2 (* 1 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
                 (if  pt1
                     (progn
       (command "CECOLOR" 4 "-boundary" pt1 "" )
       (setvar "CECOLOR" lacol)
       (setq et (entlast))
       (ssadd et ss)
       (command "area" "e" "last")
                     )
                 )
                 (if ep
                     (command "area" "o" ep)
                 ) 
;;;;;;(setq et (entlast))
;;;;;;(ssadd et ss)
(setq dtcon (* (getvar "AREA") tl tl))
(setq tdt (+ dtcon tdt))
(command "erase" ss "")

(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 dtcon 2 2))
                 (if pt1
    (setq pt1 (getpoint "\n chon mien tinh dien tich tiep theo hoac enter de ket thuc lenh..."))
                 )
                 (if ep
                     (setq ep (car (setq e (entsel "\n Chon polyline tiep theo hoạc enter de ket thuc lenh ..."))) pt2 (cadr e)  )
                 )
);while
(setq ss nil)
(setvar "DIMZIN" ladin)
(command  "pline" P3 P9 P11 P5 "C"
"pline" P10 P4 ""
"text" "m" P12 h 0 "Tong"
"text" "m" P13 h 0 (rtos tdt 2 2)
);command
(command "undo" "e")
(setvar "OSMODE" laos)
(setvar "cmdecho" 1)
(princ)
)

Chúc bạn vui......

  • Vote tăng 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

Hề hề hề,

Mình giúp bạn lần này đưa vấn đề bạn hỏi về cùng topic gốc. Lần sau bạn nên rút kinh nghiệm để diễ đàn đỡ rối rắm.

Bạn dùng thử cái này xem đã ưng ý chưa nhé.


(defun c:ddt(/ lacol ladin laos tl h tl1 cao1 k tdt ss pt p1 p2 p3 p4 p5 p6 p7 p8
                       pa pt1 pt2 e ep p9 p10 p11 p12 p13 et dtcon )
 (setvar "cmdecho" 0)
 (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 0) " >: ")))
 (if tl1 (setq tl tl1))
 (if caot1 (setq h caot1))
 (command "undo" "be")
 (setq  k 0
tdt 0)
 (setq ss (ssadd))

(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 "Bang thong ke dien tich"
"text" "m" P7 h 0 "STT"
"text" "m" P8 h 0 "Dien tich (mm2)"
);command
(setq PA  (getstring "\n Ban chon phuong an chon doi tuong < 1 or 2 > : "))
(if (= pa "1")
   (setq pt1 (getpoint "\n Chon mien tinh dien tich : "))
   (setq ep (car (setq e (entsel "\n Chon doi tuong la polyline kin")))
             pt2 (cadr e)  )
)
 (while (or (/= pt1 nil) (/= ep nil) )
(setq k (+ 1 k))
                 (if pt1
(command "TEXT" "m" pt1 (* 1 h) 0 (rtos k 2 0))
                 )
                 (if ep
                 (command "TEXT" "m" pt2 (* 1 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
                 (if  pt1
                     (progn
       (command "CECOLOR" 4 "-boundary" pt1 "" )
       (setvar "CECOLOR" lacol)
       (setq et (entlast))
       (ssadd et ss)
       (command "area" "e" "last")
                     )
                 )
                 (if ep
                     (command "area" "o" ep)
                 )
;;;;;;(setq et (entlast))
;;;;;;(ssadd et ss)
(setq dtcon (* (getvar "AREA") tl tl))
(setq tdt (+ dtcon tdt))
(command "erase" ss "")

(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 dtcon 2 2))
                 (if pt1
	(setq pt1 (getpoint "\n chon mien tinh dien tich tiep theo hoac enter de ket thuc lenh..."))
                 )
                 (if ep
                     (setq ep (car (setq e (entsel "\n Chon polyline tiep theo hoạc enter de ket thuc lenh ..."))) pt2 (cadr e)  )
                 )
);while
(setq ss nil)
(setvar "DIMZIN" ladin)
(command  "pline" P3 P9 P11 P5 "C"
"pline" P10 P4 ""
"text" "m" P12 h 0 "Tong"
"text" "m" P13 h 0 (rtos tdt 2 2)
);command
(command "undo" "e")
(setvar "OSMODE" laos)
(setvar "cmdecho" 1)
(princ)
)

Chúc bạn vui......

E nhờ các A chỉnh sưả code sao cho sau dâú phẩy chỉ lấy một chữ số thô i ah!Mong các anh giúp choỡơ

  • 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

E nhờ các A chỉnh sưả code sao cho sau dâú phẩy chỉ lấy một chữ số thô i ah!Mong các anh giúp choỡơ

Hề hề hề,

Bạn tự chỉnh sửa lấy nhé.

Thay (rtos dtcon 2 2) bằng (rtos dtcon 2 1)

Thay (rtos tdt 2 2) bằng (rtos tdt 2 1)

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

Bạn tự chỉnh sửa lấy nhé.

Thay (rtos dtcon 2 2) bằng (rtos dtcon 2 1)

Thay (rtos tdt 2 2) bằng (rtos tdt 2 1)

Hề hề hề

 

Anh phamthanhbinh ơ i! A có thể giúp e chỉnh sửa luô n khô ng A!

E không biết về lập trình A ah!

Mong được A giúp đỡ !

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ình giúp bạn lần này đưa vấn đề bạn hỏi về cùng topic gốc. Lần sau bạn nên rút kinh nghiệm để diễ đàn đỡ rối rắm.

Bạn dùng thử cái này xem đã ưng ý chưa nhé.


(defun c:ddt(/ lacol ladin laos tl h tl1 cao1 k tdt ss pt p1 p2 p3 p4 p5 p6 p7 p8
                       pa pt1 pt2 e ep p9 p10 p11 p12 p13 et dtcon )
 (setvar "cmdecho" 0)
 (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 0) " >: ")))
 (if tl1 (setq tl tl1))
 (if caot1 (setq h caot1))
 (command "undo" "be")
 (setq  k 0
tdt 0)
 (setq ss (ssadd))

(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 "Bang thong ke dien tich"
"text" "m" P7 h 0 "STT"
"text" "m" P8 h 0 "Dien tich (mm2)"
);command
(setq PA  (getstring "\n Ban chon phuong an chon doi tuong < 1 or 2 > : "))
(if (= pa "1")
   (setq pt1 (getpoint "\n Chon mien tinh dien tich : "))
   (setq ep (car (setq e (entsel "\n Chon doi tuong la polyline kin")))
             pt2 (cadr e)  )
)
 (while (or (/= pt1 nil) (/= ep nil) )
(setq k (+ 1 k))
                 (if pt1
(command "TEXT" "m" pt1 (* 1 h) 0 (rtos k 2 0))
                 )
                 (if ep
                 (command "TEXT" "m" pt2 (* 1 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
                 (if  pt1
                     (progn
       (command "CECOLOR" 4 "-boundary" pt1 "" )
       (setvar "CECOLOR" lacol)
       (setq et (entlast))
       (ssadd et ss)
       (command "area" "e" "last")
                     )
                 )
                 (if ep
                     (command "area" "o" ep)
                 )
;;;;;;(setq et (entlast))
;;;;;;(ssadd et ss)
(setq dtcon (* (getvar "AREA") tl tl))
(setq tdt (+ dtcon tdt))
(command "erase" ss "")

(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 dtcon 2 2))
                 (if pt1
	(setq pt1 (getpoint "\n chon mien tinh dien tich tiep theo hoac enter de ket thuc lenh..."))
                 )
                 (if ep
                     (setq ep (car (setq e (entsel "\n Chon polyline tiep theo hoạc enter de ket thuc lenh ..."))) pt2 (cadr e)  )
                 )
);while
(setq ss nil)
(setvar "DIMZIN" ladin)
(command  "pline" P3 P9 P11 P5 "C"
"pline" P10 P4 ""
"text" "m" P12 h 0 "Tong"
"text" "m" P13 h 0 (rtos tdt 2 2)
);command
(command "undo" "e")
(setvar "OSMODE" laos)
(setvar "cmdecho" 1)
(princ)
)

Chúc bạn vui......

 

cám ơn bác Phạm Thanh Bình nhiều lắm, líp sử dụng rất tốt

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

 

Anh phamthanhbinh ơ i! A có thể giúp e chỉnh sửa luô n khô ng A!

E không biết về lập trình A ah!

Mong được A giúp đỡ !

Hề hề hề,

Không phải là không được nhưng mình không làm vì nếu ngay cả cái việc đọc và chép code này mà bạn cũng không muốn làm thì không nên dùng lisp nữa đâu. Bởi vì lisp trên diễn đàn này chỉ sử dụng cho những mục tiêu nhất định mà chủ thớt đã đặt ra. Vì vậy nếu bạn không muốn hiểu về nó thì đừng nên dùng vì có ngày mang vạ đấy. Còn nếu muốn dùng thì phải hiểu chút chút về nó.

Mình đã chỉ cho bạn chỗ cần sửa và cách sửa mà bạn cũng không muốn đụng tay đụng chân vào để làm và hiểu thì ..... hãy chờ đó, may ra có bác nào đủ nhiệt tình hơn sẽ giúp bạn 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

Hề hề hề,

Không phải là không được nhưng mình không làm vì nếu ngay cả cái việc đọc và chép code này mà bạn cũng không muốn làm thì không nên dùng lisp nữa đâu. Bởi vì lisp trên diễn đàn này chỉ sử dụng cho những mục tiêu nhất định mà chủ thớt đã đặt ra. Vì vậy nếu bạn không muốn hiểu về nó thì đừng nên dùng vì có ngày mang vạ đấy. Còn nếu muốn dùng thì phải hiểu chút chút về nó.

Mình đã chỉ cho bạn chỗ cần sửa và cách sửa mà bạn cũng không muốn đụng tay đụng chân vào để làm và hiểu thì ..... hãy chờ đó, may ra có bác nào đủ nhiệt tình hơn sẽ giúp bạn nhé.

Cảm ơn A PhamthanhBinh đã có lời động viên!Thật sự e mới biết cad, tìm tòi Lisp hay để thao tác cho nhanh!

Còn vấn đề về Cod thật sự e không biết tiếp cận như thế nào!

Chúc A và mọi người sức khỏe

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 phải là không được nhưng mình không làm vì nếu ngay cả cái việc đọc và chép code này mà bạn cũng không muốn làm thì không nên dùng lisp nữa đâu. Bởi vì lisp trên diễn đàn này chỉ sử dụng cho những mục tiêu nhất định mà chủ thớt đã đặt ra. Vì vậy nếu bạn không muốn hiểu về nó thì đừng nên dùng vì có ngày mang vạ đấy. Còn nếu muốn dùng thì phải hiểu chút chút về nó.

Mình đã chỉ cho bạn chỗ cần sửa và cách sửa mà bạn cũng không muốn đụng tay đụng chân vào để làm và hiểu thì ..... hãy chờ đó, may ra có bác nào đủ nhiệt tình hơn sẽ giúp bạn nhé.

Cảm ơn PhamThanBinh Ctrl + F, + H, +G bản thân word cũng có, hãy tận dụng hết sử dụng có thể bạnBienxanh_19 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

Hề hề hề,

Mình giúp bạn lần này đưa vấn đề bạn hỏi về cùng topic gốc. Lần sau bạn nên rút kinh nghiệm để diễ đàn đỡ rối rắm.

Bạn dùng thử cái này xem đã ưng ý chưa nhé.


(defun c:ddt(/ lacol ladin laos tl h tl1 cao1 k tdt ss pt p1 p2 p3 p4 p5 p6 p7 p8
                       pa pt1 pt2 e ep p9 p10 p11 p12 p13 et dtcon )
 (setvar "cmdecho" 0)
 (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 0) " >: ")))
 (if tl1 (setq tl tl1))
 (if caot1 (setq h caot1))
 (command "undo" "be")
 (setq  k 0
tdt 0)
 (setq ss (ssadd))

(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 "Bang thong ke dien tich"
"text" "m" P7 h 0 "STT"
"text" "m" P8 h 0 "Dien tich (mm2)"
);command
(setq PA  (getstring "\n Ban chon phuong an chon doi tuong < 1 or 2 > : "))
(if (= pa "1")
   (setq pt1 (getpoint "\n Chon mien tinh dien tich : "))
   (setq ep (car (setq e (entsel "\n Chon doi tuong la polyline kin")))
             pt2 (cadr e)  )
)
 (while (or (/= pt1 nil) (/= ep nil) )
(setq k (+ 1 k))
                 (if pt1
(command "TEXT" "m" pt1 (* 1 h) 0 (rtos k 2 0))
                 )
                 (if ep
                 (command "TEXT" "m" pt2 (* 1 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
                 (if  pt1
                     (progn
       (command "CECOLOR" 4 "-boundary" pt1 "" )
       (setvar "CECOLOR" lacol)
       (setq et (entlast))
       (ssadd et ss)
       (command "area" "e" "last")
                     )
                 )
                 (if ep
                     (command "area" "o" ep)
                 )
;;;;;;(setq et (entlast))
;;;;;;(ssadd et ss)
(setq dtcon (* (getvar "AREA") tl tl))
(setq tdt (+ dtcon tdt))
(command "erase" ss "")

(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 dtcon 2 2))
                 (if pt1
(setq pt1 (getpoint "\n chon mien tinh dien tich tiep theo hoac enter de ket thuc lenh..."))
                 )
                 (if ep
                     (setq ep (car (setq e (entsel "\n Chon polyline tiep theo hoạc enter de ket thuc lenh ..."))) pt2 (cadr e)  )
                 )
);while
(setq ss nil)
(setvar "DIMZIN" ladin)
(command  "pline" P3 P9 P11 P5 "C"
"pline" P10 P4 ""
"text" "m" P12 h 0 "Tong"
"text" "m" P13 h 0 (rtos tdt 2 2)
);command
(command "undo" "e")
(setvar "OSMODE" laos)
(setvar "cmdecho" 1)
(princ)
)

Chúc bạn vui......

 

Mình lại làm phiền bạn nhé, nhờ bạn giúp mình sửa như sau:

 

 

1. Nhập tên lệnh: AAA

2. Nhập tỷ lệ bản vẽ <1000, 100, 10, 1>: 1000 (sẽ gợi nhớ số này cho lần thực hiện tiếp)

3. Nhập đơn vị xuất <m, dm, cm, mm>: m (tương ứng với 1000 ở trên) (sẽ gợi nhớ số này cho lần thực hiện tiếp)

4. Nhập trọng lượng riêng <2500>: 2500 (sẽ gợi nhớ số này cho lần thực hiện tiếp)

5. Pick vị trí đặt bảng <đỉnh mép trái>:

6. Chọn kiểu <1: Pick miền, 2: Pick đường bao>:

7. Chọn vùng tính toán:

 

Kết quả sẽ cho ra như sau:

17200_gui_caviet_2.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
Mình lại làm phiền bạn nhé, nhờ bạn giúp mình sửa như sau: 1. Nhập tên lệnh: AAA 2. Nhập tỷ lệ bản vẽ <1000, 100, 10, 1>: 1000 (sẽ gợi nhớ số này cho lần thực hiện tiếp) 3. Nhập đơn vị xuất <m, dm, cm, mm>: m (tương ứng với 1000 ở trên) (sẽ gợi nhớ số này cho lần thực hiện tiếp) 4. Nhập trọng lượng riêng <2500>: 2500 (sẽ gợi nhớ số này cho lần thực hiện tiếp) 5. Pick vị trí đặt bảng <đỉnh mép trái>: 6. Chọn kiểu <1: Pick miền, 2: Pick đường bao>: 7. Chọn vùng tính toán: Kết quả sẽ cho ra như sau:

Hề hề hề,

Bạn có muốn tự tay mình chỉnh sửa cái lisp cũ thành cái bạn cần hay không??? Nều bạn muốn mình sẽ giúp bạn làm thử coi sao.

Bạn hãy gửi bản vẽ có cái bảng thống kê tổng hợp của bạn lên để mình có thể check.

Tại sao cột ghi chú và cột tên vùng lại có nội dung giống nhau??? Vậy có phải là thừa không???

Nội dung text bắt buộc phải là tiếng việt có dấu ư?? Cái này mình chưa rành vì lisp không hiểu tiếng Việt.

  • 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

×