Thư viện xây dựng: Tiêu chuẩn xây dựng- Văn bản- File mẫu- Sơ đồ- Quy trình- Phần mềm xây dựng

Tiêu đề: Lisp tính diện tích hình kín và thay thế text có sẵn trên màn hình. [In trang]

Tác giả: minmhhieuthanh    Thời gian: 22/7/2014 11:51
Tiêu đề: Lisp tính diện tích hình kín và thay thế text có sẵn trên màn hình.
Nếu bạn dùng các phần mềm thiết kế đường như nova chẳng hạn, sẽ phân vân công thức mình lập để tính diện tích có đúng không? mình thì thường lập xong rồi chạy và dùng lisp này để kiểm tra lại.Lệnh SS5 _8 o6 I' U# k* p# D
Do trang mình ko cho up file có đuôi Lsp nên mình dán tạm bên dưới, mọi người copy rồi dán vào notepad lưu lại dùng đỡ nha & ?! V4 \, y" ~, e* W* i& T/ B

3 ^5 _/ `  l- R. S9 T(defun c:ss() ; % g' Y' b$ ?' X/ `% A) {2 ~
(setvar "cmdecho" 0)$ a8 O9 S4 T/ J6 I
(setvar "DIMZIN" 0)
$ W& A; z2 d1 |0 X(if (= Ty_le nil)8 i6 w3 Z  X5 G9 t( E  I
(progn3 o* }: n3 v: }* N0 ]+ x( \
(setq Ty_le (getreal "\Nnhap ti le <1000>:"))
- b; l; r" s: x: k+ o(if (= Ty_le nil)(setq Ty_le 1000.00))
& a5 T0 w: z2 w3 G2 Q. ~)  s5 w5 X! R) [  n, F' j# |2 J" ?
(progn& e, ?8 U3 _$ l7 y
(setq khaibaoTy_le (getstring (strcat "\nti le = " (rtos Ty_le 2 0) " CO MUON THAY DOI KHONG <K>,C:")))8 h) M" ^; q5 b* j
(if (= (strlen khaibaoTy_le) 0) (setq khaibaoTy_le "K"))0 S4 f* N3 V! J3 v  I: F- m
(if (or (= khaibaoTy_le "k") (= khaibaoTy_le "K")): g+ L8 f/ C# J3 F5 Z1 H
(progn* j& v' |9 N' Z! u
(princ (strcat "\nti le = " (rtos Ty_le 2 0)))! U- A+ u  F+ s1 K) a  H* m
)
! s2 M& o) g- v5 i! ]4 J(if (or (= khaibaoTy_le "c") (= khaibaoTy_le "C"))8 I1 e5 A' r9 `7 i( o! K) N& Q
(progn; s% Q, C( W" k' f1 @
(setq Ty_le (getreal "\nnhap ti le <1000>:"))
1 A/ u( r  c7 ?+ k2 C7 e(if (= Ty_le nil)(setq Ty_le 1000.00)), b) @2 \2 V/ c& }) ]% h: D8 [& K
)
  i8 T* ~  Y& m; }- G) 8 K9 B4 o% d: L% P3 e8 c( @' a+ p: A2 L3 ]
)
& U' N; R( b; W2 F4 R/ r)2 I0 Q! E, y2 @+ [( @, b- g6 t
)0 n  }" S5 ]. @- e- T" e. y2 n8 O
(if (= So_Le nil)
0 W& M0 V$ S- h( \' |(progn0 i9 h" f5 U' v$ P7 @
(setq So_Le (getint "\nnhap so le dien tich <2>:"))
( `: p6 a& M  p# _, s  `(if (= So_Le nil)(setq So_Le 2))) \* K5 O3 p4 @1 G( ?6 a4 H' S
)5 W5 J) h4 O( f  @) \3 b/ L
(progn
( g1 _6 J4 L4 U4 J) }0 U(setq khaibaoSo_Le (getstring (strcat "\nso le dien tich = " (rtos So_Le 2 0) " co muon thay doi khong <K>,C:")))
- ~" Y( _' [# u  ~1 _3 V2 @(if (= (strlen khaibaoSo_Le) 0) (setq khaibaoSo_Le "K"))
- o. a' T/ `; }(if (or (= khaibaoSo_Le "k") (= khaibaoSo_Le "K"))7 C# m: m6 J  V9 e; ^1 a( P
(progn  t. X! v, N2 ^4 X& p
(princ (strcat "\nso le dien tich = " (rtos So_Le 2 0)))
( Q  X8 ?) o- R+ N)% I! Y5 P& U4 E3 _" h' E9 y
(if (or (= khaibaoSo_Le "c") (= khaibaoSo_Le "C"))6 E( j  X! h( X. j3 [' D! h
(progn3 `. P7 `' I( a* e
(setq So_Le (getint "\nnhap so le dien tich <2>:"))
4 @+ Z( ^1 ?+ N(if (= So_Le nil)(setq So_Le 2))
0 `  R# Z' F& F. O8 p)
& \  I! _% m: l5 Z)
$ u* W5 }) ^  b9 y( `)
5 R) N( [, E# }4 x+ C# C)
2 R* K; {8 u* q, Q)
( R. @- ?, \5 k, E  ~( R5 \(setq He_so (/ 1000 Ty_le))- N6 V3 @+ {. h" _4 {( k% T
(setq He_so2 (* He_so He_so)) " V" W: n) n) Q/ g2 P0 @0 t
(setq dtl 0)- @1 Q7 z% u* k
(setq ss (ssadd)): T( z- r" u; T6 u# u$ U: O
(setq oslast (getvar "OSMODE"))2 w& S/ G# B3 k+ c% {
(command "osnap" "")
: Q: R& S+ C( h) [$ G& J" i(print)
# E' n# L$ c0 Q$ N(print)
: E  K2 |( h$ s& z(setq pt1 (getpoint "\nChon Vung Kin Tinh Dien Tich : "))8 H7 B2 f5 U( ?; X- \, e1 {
(while (/= pt1 nil)
. Q# ^1 {7 g8 H6 p(command "-boundary" pt1 "")9 Q" S* v' A; E# P9 {& _
(setq et (entlast))
8 V1 N/ i' I' _* I9 N9 e" c(ssadd et ss)
% J4 |  ^. O/ |% z5 n(command "area" "e" "last")7 n3 E/ a* @& L
(setq vsize ( /(getvar "VIEWSIZE") 50 ))
$ u9 S6 C6 ^, w(command "hatch" "ANSI31" vsize "0" "last" "")
* o) w2 H) }7 u3 R: _* _) s6 m(setq et (entlast))
2 t9 m3 m" Q0 Q: W8 q! W(ssadd et ss)5 s% P" G5 y6 H; z. W/ N
(setq dtcon (getvar "AREA"))) T7 i8 q. Q/ Y8 e
(setq dtl (+ dtcon dtl))% ^2 F3 O; h1 v7 P" |
(print)
. g3 \0 C& p6 N+ Z(print)
! \% c. `" G" x2 O) T% b; j(setq pt1 (getpoint "\nChon Vung Kin Tinh Dien Tich : "))
9 x; A* {/ E/ \# U)
# }2 C$ U0 r  i! ?0 S( S+ D: }(command "setvar" "OSMODE" oslast)5 f5 N3 @" u) {2 f2 F
(command "erase" ss "")
# a: E5 u, D5 v9 u( k. F(setq ss nil)8 B' k6 T# m9 `3 W* x
(command "redraw")3 M5 Y  I8 y, ~
(setq dtl (/ (/ dtl He_so2) 1))
- Z$ L3 u9 m* P* I2 b* L' \9 l(setq en (car (entsel "Thay cho so : ")))$ `% q! ^" P! q4 ~
(while (= en nil)! [3 U7 u; Q$ f0 X# u3 M
(setq en (car (entsel "Thay cho so : ")))3 U8 @) M/ l( j* V: h. B" G
)& F; ]. t' h& M: k% q1 s( m
(setq elst (entget en))
+ P+ v$ C. y7 o) H(setq elstold (assoc 1 elst)) 5 Y( b6 x5 }! X9 p* F6 L
(setq elstnew (cons 1 (rtos dtl 2 So_Le)))
! T2 T4 D% s0 s/ M+ Z/ X' A$ ~5 O# M, j(setq elst (subst elstnew elstold elst))
3 H: s7 b8 S% _: E; B6 \8 T(entmod elst)
( f/ `, |+ V/ c2 L! h  [3 H(setq elst nil)
0 H- J3 K* h: y4 r. R' R(setq dtl nil)
7 ~4 y: }  O0 g6 f(command "_change" en "" "p" "c" "1" "")
; H3 x1 R8 j3 q& I  _6 T" c(princ "\nhttp:\\doanduyhung.googlepages.com")
5 P: u; F4 ?) M7 h+ L)
" {* c8 M* U$ v! g( s
9 r" P0 R# d( Z  D6 |  l1 m
Tác giả: conghoa    Thời gian: 22/7/2014 13:47
Bạn có thể dùng cái này cho tiện ! Z* M+ _3 t& {; n2 {' m( j

2 |( N! K! l& W$ Z/ T5 N$ _6 [4 S5 }7 g7 ]
http://www.lee-mac.com/lisp/Areas2FieldV1-3.lsp
Tác giả: khoaxd2013    Thời gian: 22/7/2014 15:57
Bạn minhhieuthanh hướng dẫn cách sử dụng giùm luôn đi. Mình tải về rồi nhập lệnh mà không hiểu lệnh yêu cầu gì ("Thay cho so:" nghĩa là gì bạn?)
Tác giả: conghoa    Thời gian: 23/7/2014 08:46
khoaxd2013 gửi lúc 22/7/2014 15:57
1 M$ F% F( O! q9 ]9 m) iBạn minhhieuthanh hướng dẫn cách sử dụng giùm luôn đi. Mình tải về rồi nhập lệnh mà ...

9 ]/ s+ t4 [7 R4 `# {Chữ đó có nghĩa là bạn chọn 1 text có sẵn trong bản vẽ để nó ghi kết quả diện tích vào text đó1 l6 f/ l: o0 e5 i/ ^% m9 Y

" Z- Q# K# J. V- Còn nếu bạn muốn nó hiện ra 1 text mới thì dùng cái lisp mình post bên trên.
Tác giả: khongdunglai    Thời gian: 23/7/2014 09:58
conghoa gửi lúc 22/7/2014 13:47
9 h4 c9 j0 [5 `/ I8 P  }9 s5 X3 J7 oBạn có thể dùng cái này cho tiện
) |9 R8 s7 Z, W& H; I! ~$ r4 w
lisp rất hay. bác cho em hỏi là khi dùng lisp này thì ra text đóng khối nên phải thủ công phá khối đi. bác có thể chỉnh lại dc k?
Tác giả: minmhhieuthanh    Thời gian: 23/7/2014 10:25
khoaxd2013 gửi lúc 22/7/2014 15:579 E7 T& Z) I) e' z1 B1 c% B
Bạn minhhieuthanh hướng dẫn cách sử dụng giùm luôn đi. Mình tải về rồi nhập lệnh mà ...

  x  [& `0 |) a2 y# z2 u8 bNôm na thế này nhé: nếu bạn làm bên thiết kế (cầu đường chẳng hạn), khi bạn tính diện tích (đào, đắp, khuôn...) và bạn xuất nó ra trên trắc ngang- tức là đã có sẵn text khối lượng, nhưng bạn không chắc mình lập công thức tính có chính xác ko? khi đó bạn sẽ dùng lisp này để kiểm tra...
* r: G$ R3 m* i1 J- load lisp, gó lệnh SS$ H2 c, w& X/ C2 ]6 n0 W
- nói hỏi nhập tỷ lệ : - bạn nhập tỷ lệ bản vẽ của mình ( i6 P- U) ~  L8 f, t. X  G* F
- nói hỏi nhập số lẻ : là số chứ số bạn muốn làm tròn sau dấu phẩy8 s# V6 M6 t# U6 a' R
- chọn vùng kín tính diện tích: bạn bạn các vùng cần tính diện tích rồi enter6 M7 A; B. q2 y$ s& u- L
- thay cho số : là bạn click vào text (có sẵn) muốn thay thế để kiểm tra
Tác giả: minmhhieuthanh    Thời gian: 23/7/2014 10:29
conghoa gửi lúc 22/7/2014 13:47+ M, F: c+ M7 |  r8 h' l) C; ^/ x
Bạn có thể dùng cái này cho tiện
7 l; j8 N! c# E7 a
Lisp của bạn mình cũng đã dùng, cũng rất hay nhưng đối với việc kiểm tra diện tích trong trắc ngang thì mình thấy của mình tiện hơn vì khi chạy khối lượng đã có sẵn text, mình kiểm tra so sánh thôi. Cám ơn bạn đã chia sẻ
Tác giả: khoaxd2013    Thời gian: 23/7/2014 11:33
minmhhieuthanh gửi lúc 23/7/2014 10:252 {$ M$ j6 k8 D
Nôm na thế này nhé: nếu bạn làm bên thiết kế (cầu đường chẳng hạn), khi bạn tính ...

& M% K. [+ q9 w3 Z2 {Mình đã làm được rồi!Cám ơn bạn rất nhiều!
Tác giả: khoaxd2013    Thời gian: 23/7/2014 11:41
conghoa gửi lúc 22/7/2014 13:47
& d) z2 s; P8 |4 T# R3 gBạn có thể dùng cái này cho tiện
, s- u0 v2 y7 i: J6 [* @* o
Lisp của bạn nếu thay đổi tỉ lệ thì làm cách nào?
Tác giả: mr.minh_dt    Thời gian: 5/9/2014 09:23
conghoa gửi lúc 22/7/2014 13:47
( ]* U& Q0 d+ ]2 G4 V; VBạn có thể dùng cái này cho tiện
( x' A0 o/ d& H* s; E# L$ V
GÕ LỆNH TẮT NHƯ NÀO VẬY BAN
) H3 k2 Z- e5 ?" }) C$ r) c9 [
Tác giả: boda9999    Thời gian: 17/10/2014 22:53
conghoa gửi lúc 22/7/2014 13:47
- {! @  [1 j. i! ]5 Q" m, YBạn có thể dùng cái này cho tiện

, z0 ]: h% H9 p* @4 f- h4 Ta cho em hỏi...khi em tích 1 vùng diện tích bao gồm các ô dính vào nhau. khi tích xong em muốn chúng thành 1 cùng liền mạch được không ạ.( tức là các layer trung nhau sẽ biến mất, chỉ để lại đường bao ngoài cùng ý ạ)
Tác giả: boda9999    Thời gian: 18/10/2014 09:41
boda9999 gửi lúc 17/10/2014 22:53% k. k1 G6 d3 T, T+ v
a cho em hỏi...khi em tích 1 vùng diện tích bao gồm các ô dính vào nhau. khi tích xong  ...

# ?4 j4 V- f: @dạ không được ạ. chắc a chưa hiểu rõ ý của em.Hi. Tức là em có 1 vùng cần tính diện tích, nhưng vùng đó bị chia cắt bởi nhiều vùng nhỏ bên trong. Đáng ra thì dùng lệnh pl về đường bao tròn rồi dùng lệnh aa để ghi diện tich. Nếu miền đa giác ban đâu có ít điểm thì không sao, nhưng vùng của em nhiều điểm nên làm rất mất thời gian ạ. E muốn nhờ các a cái lips mà em chỉ cần pick vào các miền đa giác nhỏ bên trong mà xuất ra text được diện tích của vùng đó, đồng thời để lại luôn được đường bo tròn ngoài cùng ý ạ.
Tác giả: shatashi    Thời gian: 7/11/2014 09:01
Mình hỏi tí. Sao mình load cái http://www.lee-mac.com/lisp/Areas2FieldV1-3.lsp này rồi. A2f mà vẫn k đc? Mình dùng cad 2010
Tác giả: songlamngheanvn    Thời gian: 11/11/2014 14:23
minmhhieuthanh gửi lúc 23/7/2014 10:25
3 ?. }) y5 D+ p7 fNôm na thế này nhé: nếu bạn làm bên thiết kế (cầu đường chẳng hạn), khi bạn tính ...

  V  R4 }% o# L$ P$ PAnh ơi, em thử mấy cái trắc ngang đường nó thay toán số : "0.00" hết anh ạ. có cách nào thêm chỉ em với a. tk a nhiều nhé.
Tác giả: naturooo    Thời gian: 28/11/2014 11:17
Mình đã dùng lisp của bạn minmhhieuthanh, nó rất hay, có vấn đề này không biết có thể chỉnh lại được không, khi kiểm tra khối lượng lớn trắc ngang thì dùng lệnh cứ lắp đi lặp lại cái hỏi chọn tỉ lệ với số đằng sau dấu phảy, không biết có thể đê chức năng này bằng 1 lệnh phụ chỉ khi nào muốn thay thôi không, hoặc có thể dùng liên tiếp lệnh này thì lần thứ hai không hỏi như thế nữa mà kích luôn đối tượng cần đo diện tích.
Tác giả: minmhhieuthanh    Thời gian: 28/11/2014 11:44
naturooo gửi lúc 28/11/2014 11:17
4 o' _7 O' B0 K6 P+ @Mình đã dùng lisp của bạn minmhhieuthanh, nó rất hay, có vấn đề này không biết có th ...
9 E5 B, B3 F+ Z, I
Hix mình chỉ "chà đồ nhôm" thôi, của mấy anh trên công ty dùng rồi chỉ mình. Mình không có khả năng viết lisp nên đành chịu. Với lại, thứ nhất là nhưng lần sau nó có lưu lại thông số thì phải nên enter không thôi cũng đỡ. Thứ 2 mình chỉ dùng để kiểm tra qua một ít mặt cắt thôi để coi công thức lập có đúng không. Đa phần bước lập công thức khá chính xác nên không cần chỉnh thêm. Nếu ai có khả năng chỉnh sửa lisp thì giúp Naturooo nha
Tác giả: phanvandac    Thời gian: 20/12/2014 21:05
anh ơi xao em em cop về mak không dùn được ak. anh có thể dúp em không ak . email của em : dinhdac18.udideco@gmail.com    em cảm ơn anh nhiêu
Tác giả: minmhhieuthanh    Thời gian: 26/12/2014 13:27
songlamngheanvn gửi lúc 11/11/2014 14:23
& M4 E) M+ K) E# |3 J4 V8 q4 ?Anh ơi, em thử mấy cái trắc ngang đường nó thay toán số : "0.00" hết anh ạ. có cách ...
- L4 k% g; Y  b/ \- [
theo mình thì bạn nhập tỉ lệ sai. Tỉ lệ nhập ở mẫu số nha. ví dụ trắc ngang xuất từ Nova thường là 1/1000 thì bạn nhập tỉ lệ là 1000
Tác giả: thdong    Thời gian: 22/8/2015 15:14
conghoa gửi lúc 22/7/2014 13:47, a% b2 ]' V: {5 S7 n: V
Bạn có thể dùng cái này cho tiện
+ J- h) K6 C  E. {+ q3 k! F
Lisp này còn chưa hay lắm nếu áp dụng với diện tích có nhiều thanh rời rạc.( pick sẽ lâu). đề nghị bạn thêm tỉ lệ nữa.
Tác giả: phamthanh.green    Thời gian: 27/9/2016 20:16
sao mình gõ lệnh nó toàn báo unknow command nhỉ, load rồi mà mấy lisp liền chưa dùng đc
Tác giả: vandac    Thời gian: 4/7/2017 10:33
naturooo gửi lúc 28/11/2014 11:17
5 c! x, m0 O. u9 W* LMình đã dùng lisp của bạn minmhhieuthanh, nó rất hay, có vấn đề này không biết có th ...

7 V, @3 o/ r* [; Y7 p: GMình đã dùng lisp cua đoanuyhung rât hay nhưng nếu bạn hướng dẫn mình sửa lisp bỏ chữ "K" C lặp lại mỗi lần gõ lệnh đi được không. cám ơn bạn nhiều!
Tác giả: naturooo    Thời gian: 14/10/2017 08:10
vandac gửi lúc 4/7/2017 10:33
5 p) H$ [: \1 C7 r# @' N/ j' zMình đã dùng lisp cua đoanuyhung rât hay nhưng nếu bạn hướng dẫn mình sửa lisp bỏ c ...
. g$ b' M/ l; i2 ?/ Z* X, q
Gửi bạn vandac:Mình chỉnh lại lisp thành như vậy nhé:
6 f" {5 x6 y: _  [- Lần đầu dùng lệnh SS1 để nhập tỉ lệ và cỡ chứ
, f% b8 a5 L$ ?- z0 u9 T0 }- Lần 2 chỉ dùng lệnh SS thôi sẽ bỏ qua bước nhập tỉ lệ và cỡ chữ sẽ nhanh hơn.
5 y3 Y+ f8 F3 U, `7 [Bạn xem ok chưa.1 h7 g& l3 @+ C: `; o2 N- K. W* u

Tác giả: naturooo    Thời gian: 14/10/2017 08:12
  1. (defun c:ss1()7 M6 W) \3 |, R% H
  2. (setq old_osmode (getvar "osmode")
    , }2 \- H$ H& f8 G: n# M
  3. old_autosnap (getvar "autosnap")
    2 W, V1 Y& A) W, X; B2 z+ s8 y7 P
  4. ) 6 y1 k4 B- w/ P( F$ M3 `# Y) l, o
  5. (setvar "cmdecho" 0)# b1 R! h4 o5 h0 l! z; H3 E
  6. (setvar "DIMZIN" 0)( s0 a( u: M+ O
  7. (if (= Ty_le nil)
    6 x3 p1 y; |- _0 Y6 v, ]' j: w2 b$ k  ?
  8. (progn5 c6 f5 x. L& `$ J+ e( G+ w
  9. (setq Ty_le (getreal "\Nnhap ti le <1000>:"))" y- R8 U  k7 A8 e5 C- U, e
  10. (if (= Ty_le nil)(setq Ty_le 1000.00))
    $ r0 W3 @; a4 w4 ?
  11. )0 F8 c4 f' }5 S: S
  12. (progn
    1 @9 O( z0 s7 e+ n  i# A
  13. (setq khaibaoTy_le (getstring (strcat "\nti le = " (rtos Ty_le 2 0) " CO MUON THAY DOI KHONG <K>,C:")))0 B% K( \' ?! [8 Z7 Q
  14. (if (= (strlen khaibaoTy_le) 0) (setq khaibaoTy_le "K")); ^, @* k" q  ~9 S8 [  q2 ]& D3 ^& ?
  15. (if (or (= khaibaoTy_le "k") (= khaibaoTy_le "K"))
    ( O; D. b* y% V$ `' b- z
  16. (progn
    ; R. q% I# ~  K7 V: g% A, I: |" a3 _
  17. (princ (strcat "\nti le = " (rtos Ty_le 2 0)))0 v& a0 p& ~# P1 c9 x
  18. )
    - u7 z7 k, h* l5 }0 B) U( {
  19. (if (or (= khaibaoTy_le "c") (= khaibaoTy_le "C"))' x6 G1 [. E' e8 D3 X
  20. (progn
    * h, H/ g4 `* N& w& b) x
  21. (setq Ty_le (getreal "\nnhap ti le <1000>:"))  U% Y9 l) r4 P( ]& ~2 @& |
  22. (if (= Ty_le nil)(setq Ty_le 1000.00))3 @" t* L8 x( ^- g/ L0 ]# B* T
  23. )
    - d1 M* H9 v7 m& o' H+ S8 y
  24. )
    $ L! L7 Z. t. ^; }% C0 A
  25. )
    3 @: ?2 G: [  k2 ^2 j
  26. )
    ; F, U" l6 u4 ?! J+ q* m$ s
  27. )" w9 g2 v9 K4 F* h
  28. (if (= So_Le nil)' b/ x' ~7 d9 k$ ^& a
  29. (progn
    1 U# J0 |( T8 `( X8 X2 x* Q: }
  30. (setq So_Le (getint "\nnhap so le dien tich <2>:"))
    ' T: ?% U7 W9 P+ P) E% ]
  31. (if (= So_Le nil)(setq So_Le 2))) z; x3 M/ w1 Q+ j; S3 ~+ [
  32. ); l; S% R& q8 O8 t2 E  J. {+ k, i
  33. (progn! P( D2 a' K& g
  34. (setq khaibaoSo_Le (getstring (strcat "\nso le dien tich = " (rtos So_Le 2 0) " co muon thay doi khong <K>,C:")))
    ( X- p, u( E- e; t: y' J
  35. (if (= (strlen khaibaoSo_Le) 0) (setq khaibaoSo_Le "K"))+ q5 k  y4 a6 S( R1 x2 o; n2 o, [/ P
  36. (if (or (= khaibaoSo_Le "k") (= khaibaoSo_Le "K"))4 V  Y9 V/ o7 f/ S7 f% \
  37. (progn) V( N% R& I3 s) h
  38. (princ (strcat "\nso le dien tich = " (rtos So_Le 2 0)))
    / \; {4 r  |6 A- \
  39. )
    5 @; R7 L& d- |$ w7 I
  40. (if (or (= khaibaoSo_Le "c") (= khaibaoSo_Le "C"))4 y* @  Y7 f4 Y4 ?; Y
  41. (progn
    # q- G9 I, G$ t7 k- M) r* k( g! z  @
  42. (setq So_Le (getint "\nnhap so le dien tich <2>:"))
    / ]6 ~$ g# C( f8 F& b4 h2 G" g7 j
  43. (if (= So_Le nil)(setq So_Le 2))
    5 f1 f+ c* ?. i0 ~1 _  K' [
  44. )) s& E! v6 j8 L- {
  45. ) % U  D- [6 Q# g9 ]. l& C
  46. )
    5 Y4 s" |$ k3 [
  47. )( T$ Q9 o# S, U5 y
  48. )
    7 Z+ a2 _6 `- I) q  m, R5 |/ U
  49. (setq He_so (/ 1000 Ty_le))
    6 ?1 {" F# o( F$ m& h# g
  50. (setq He_so2 (* He_so He_so)) 1 q% r5 _' Q# b% v8 C
  51. (setq dtl 0)
    5 X# [! F! y, Y5 e5 {
  52. (setq ss (ssadd))4 r: C+ i% U6 K2 q( P
  53. (setq oslast (getvar "OSMODE"))' q8 z) j! v3 t& r, @. x; Y
  54. (command "osnap" "")+ v9 n9 G  ^/ r$ Q; r& P% E, q
  55. (print)( z5 w4 {, o! A9 Z- R6 r3 V$ s
  56. (print)4 f7 m0 B' U; A3 {8 t% C  e/ C! R- B3 r
  57. (setq pt1 (getpoint "\nChon Vung Kin Tinh Dien Tich : "))
    * p( @; X# u$ V1 K5 e
  58. (while (/= pt1 nil)
    # y4 w0 ^2 t% I" }  K
  59. (command "-boundary" pt1 "")' [& f; F# q# S' u
  60. (setq et (entlast))
    " }" b  V  p# x3 J0 W# o
  61. (ssadd et ss)4 {* k; I* l+ U
  62. (command "area" "e" "last")
    3 F& ~8 `5 N, {# K; O
  63. (setq vsize ( /(getvar "VIEWSIZE") 50 )), E  s/ v( c. |9 V) r1 w
  64. (command "hatch" "ANSI31" vsize "0" "last" "")5 ~& I6 H& g8 J  p( K
  65. (setq et (entlast))5 S! U+ b2 t7 D1 F) y1 ]. O! e9 G2 U
  66. (ssadd et ss)# r9 ~- Q3 o, M: W& _" |  ?1 p
  67. (setq dtcon (getvar "AREA"))+ n2 {( l& w. g7 w* v4 J; [/ f( }
  68. (setq dtl (+ dtcon dtl))
    , N) k/ Z9 L$ b, G2 A
  69. (print)' V0 L; e3 C% D
  70. (print)
    $ [) B4 @( d: S( W6 I, e6 y; E9 Y" r
  71. (setq pt1 (getpoint "\nChon Vung Kin Tinh Dien Tich : "))& c2 H, c2 S- g' H  u
  72. )
    % \, h5 I' F4 @: P4 B/ L
  73. (command "setvar" "OSMODE" oslast)8 R6 R. D, y8 M; Q9 X. q& E  l
  74. (command "erase" ss "")" g6 ~1 t; ?" m# O* e' J' A: P
  75. (setq ss nil)
    # I- ~7 G. n. u8 }
  76. (command "redraw"); H! a" S' \" g) V! A( W
  77. (setq dtl (/ (/ dtl He_so2) 1)) 1 F+ J3 K, A: g3 F
  78. (setq en (car (entsel "Thay cho so : ")))6 G1 C: B2 K3 ]6 ^; q- w% R! X7 I
  79. (while (= en nil)5 ^' x5 O3 s6 C1 y" r
  80. (setq en (car (entsel "Thay cho so : ")))
    * e% L# c/ I1 f4 H. B; q7 n
  81. )% v# [  e& h% i  E4 `
  82. (setq elst (entget en))
    : L* b) z4 O9 W/ n" b3 ~; z
  83. (setq elstold (assoc 1 elst)) ) U  w2 h! m+ ?5 q
  84. (setq elstnew (cons 1 (rtos dtl 2 So_Le)))4 o5 e! S7 v" i+ p  X( S
  85. (setq elst (subst elstnew elstold elst))8 x" w/ J* I2 A
  86. (entmod elst)
    $ t0 r( M: }) m# \* f. K
  87. (setq elst nil)
    9 i& y6 W6 n' y3 Q' o) W/ M- r; O
  88. (setq dtl nil)
    7 I; U' O, j( g$ c& X; s* h5 ?
  89. (command "_change" en "" "p" "c" "1" "")% p: r# F" a& l6 d
  90. (if old_osmode (setvar "osmode" old_osmode))
    & B. J& q6 F8 _: B( }* ~
  91. (if old_autosnap (setvar "autosnap" old_autosnap))5 o6 K7 K6 O3 ?- y4 v4 c
  92. )
    $ w! P) F* k; V' b! s
  93. ;==============================================================================
      T& s4 B' z: D8 t' M
  94. (defun c:ss()
    ( S) o# o& G2 f+ T1 O
  95. (setq old_osmode (getvar "osmode")1 i8 a# K& q7 h& ?4 Q- }
  96. old_autosnap (getvar "autosnap")6 g. m6 r' ~5 r
  97. )
    9 G/ K) }2 o3 `, H& b
  98. (setvar "cmdecho" 0)& B5 P. Z- y& g6 ^' ^' F
  99. (setvar "DIMZIN" 0)
      d2 T1 f) l1 }& d& Q' ?8 j  N% R/ V2 Y
  100. (setq He_so (/ 1000 Ty_le))% M( c5 J2 n4 P; r$ e, y# ]
  101. (setq He_so2 (* He_so He_so)) * o- i3 O- k7 G! _. h
  102. (setq dtl 0). k6 Y7 f' c0 b
  103. (setq ss (ssadd)); Y3 {, T2 q7 W3 M5 Q$ p: q
  104. (setq oslast (getvar "OSMODE"))
    # T) @3 _0 r1 P6 o7 x+ ^- Z% |+ f
  105. (command "osnap" "")
    0 v& v( B# {( j: @
  106. (print)2 @2 @) M  A' P
  107. (print)) `+ A) j( D0 f# V
  108. (setq pt1 (getpoint "\nChon Vung Kin Tinh Dien Tich : "))6 W( w0 G0 m# C% k6 E' ~: Q
  109. (while (/= pt1 nil)5 T8 |6 |4 s- v& c& H& z
  110. (command "-boundary" pt1 "")
    7 ~% ]/ }6 H: m' `9 ~- A
  111. (setq et (entlast))) K$ M8 @  s+ A' G( v9 w' s  y
  112. (ssadd et ss)6 L4 S5 x) o. _
  113. (command "area" "e" "last")
    + q! r# W1 Y$ e: W+ d6 P
  114. (setq vsize ( /(getvar "VIEWSIZE") 50 )): n: B. @8 q  W& Q2 O5 N/ q
  115. (command "hatch" "ANSI31" vsize "0" "last" "")
    7 ^% d" a, K9 F
  116. (setq et (entlast))
    , d$ G/ `0 K* E1 V5 S% f
  117. (ssadd et ss)/ t6 }5 V- @* d
  118. (setq dtcon (getvar "AREA"))
    : S& h0 i) J- J  m6 ^
  119. (setq dtl (+ dtcon dtl))0 l: r3 z" g7 b( z1 j" T7 {$ F
  120. (print)
    3 ?2 Y) f, D' Q) N; t& S
  121. (print)
    * J! E$ }6 y0 |$ _$ n4 Z
  122. (setq pt1 (getpoint "\nChon Vung Kin Tinh Dien Tich : "))$ c$ J  N) U! v% b  j1 Y
  123. )
    2 |7 t" R7 A% ]" o
  124. (command "setvar" "OSMODE" oslast)
    ! n1 ]6 f9 w% a1 A5 h* L- a
  125. (command "erase" ss "")& y/ t  w- X3 O% J' u  o
  126. (setq ss nil). w1 U5 S9 w; O8 i
  127. (command "redraw")' I& ?3 `( g& D: ?8 T$ d2 c
  128. (setq dtl (/ (/ dtl He_so2) 1))
    5 S7 ]+ a* J/ W8 L, s+ N% c
  129. (setq en (car (entsel "Thay cho so : ")))
    , ~' s; d5 [1 e7 x+ x: f3 G
  130. (while (= en nil)/ d) S$ T& D; G+ [7 v5 ?& Y
  131. (setq en (car (entsel "Thay cho so : ")))3 r" T. u, I$ ~* b) e; d4 |
  132. )$ a! G# T. a3 {$ z  _  @
  133. (setq elst (entget en))
    5 k* _  \6 p  x4 Z3 O
  134. (setq elstold (assoc 1 elst)) 7 q' l! w: h8 f1 M& U
  135. (setq elstnew (cons 1 (rtos dtl 2 So_Le)))8 U+ d2 r' D1 b9 w& o: \. [
  136. (setq elst (subst elstnew elstold elst))
    ; l* A* t  X- n  d/ G7 X" A* K# z& L0 d
  137. (entmod elst)
      ^; k" n& q) J$ Z
  138. (setq elst nil)
    - ]* O. M0 V7 O& N- ]! c
  139. (setq dtl nil)
    + h% E! r* {" k2 V9 F
  140. (command "_change" en "" "p" "c" "1" "")/ ^2 [2 r7 g) S, t! A1 u) Y5 t  c
  141. (if old_osmode (setvar "osmode" old_osmode)). }7 t7 i# A7 t0 q! h; ^
  142. (if old_autosnap (setvar "autosnap" old_autosnap))9 I8 c3 R2 M) d, z, }+ F
  143. )
Sao chép mã

Tác giả: naturooo    Thời gian: 14/10/2017 08:15
naturooo gửi lúc 14/10/2017 08:12
8 O# X% e, {$ C' ^2 m* R8 y+ d9 B% W
Lisp mình không rành nên đành mày mò thủ công là lệnh SS sử dụng mảng của lệnh SS1. Tính ra thành 2 lisp đơn rồi. )
Tác giả: dongks    Thời gian: 5/5/2023 17:46
Dùng chat open Ai sửa lại như này:
- o/ R" l5 S. E' j' o7 y, R
3 _- b1 s: g! d" M5 F(defun c:ss2() ; ! x# R4 K; F, u
  (setvar "cmdecho" 0)
) F* a( \: L/ X* Y& R6 p. M! e# C  (setvar "DIMZIN" 0)
; C! H& H! p/ L1 H) o8 t  (setq Ty_le (getreal "\nNhap ti le <1000>: "))2 c* @$ [1 g- \2 f4 Q
  (if (= Ty_le nil) (setq Ty_le 1000.00))$ S- C' y8 S2 h6 G$ x7 E  z1 _
  (setq So_Le (getint "\nNhap so le dien tich <2>: "))
5 {1 d' C; h, U8 f7 H) \  (if (= So_Le nil) (setq So_Le 2))
+ N% s+ q! `& }& x( _  (setq He_so (/ 1000 Ty_le))+ G3 o# h( C1 t1 V- \9 _* r; Q: O
  (setq He_so2 (* He_so He_so)) ; S  r- V0 n$ N  o
  (setq dtl 0)/ S& `5 h" L  {2 o
  (setq ss (ssadd))
: {2 Q( c7 w" D* E. G: B  (setq oslast (getvar "OSMODE"))  s+ J- e1 ^4 u. H; k8 n' L
  (command "osnap" "")7 c- o9 c# E8 `2 G1 x6 x9 G
  (print)
" z: Z6 b# L3 ~" R  (print)
1 r! ]- {( Y; r! O- L8 D; W9 o  (setq pt1 (getpoint "\nChon Vung Kin Tinh Dien Tich : "))
' Z( j0 _( {9 u  (while (/= pt1 nil)% G7 M' S" x5 K* e
    (command "-boundary" pt1 "")
! ^  i3 h# g# P' e4 a; z    (setq et (entlast))0 A/ V5 `; p8 _) i
    (ssadd et ss)
4 v( H1 W4 k, x" H& _    (command "area" "e" "last")2 v) j) P7 W+ s3 D0 x
    (setq vsize (/(getvar "VIEWSIZE") 50 ))
6 [0 _. O/ d9 y& k' z    (command "hatch" "ANSI31" vsize "0" "last" ""): ~( r- _2 \6 `' ~2 O8 T* m6 {
    (setq et (entlast))
, t" }9 D1 {  B/ C6 `    (ssadd et ss)# {* M* y. @- c5 V
    (setq dtcon (getvar "AREA"))
6 E9 N# ~2 V, ~( h* e; ?/ x    (setq dtl (+ dtcon dtl))
0 j% a% ?( N/ R& z5 V    (print)
# N! \7 ]7 h" `, A2 V    (print)1 l+ x  |7 T' M& |3 f
    (setq pt1 (getpoint "\nChon Vung Kin Tinh Dien Tich : "))) o7 E" z8 s' [' s) n
  )% X' z( A2 ^4 ?  ?- L3 B
  (command "setvar" "OSMODE" oslast)
) g- S) O9 X% k! N& d% i" F  (command "erase" ss "")
; e& B7 Z3 q4 g  T& ]  (setq ss nil): k: m6 _& c9 {3 G% u
  (command "redraw")& }& u- \: d0 K
  (setq dtl (/ (/ dtl He_so2) 1)) 9 x$ P0 z4 t3 A$ j; F) P4 g1 M3 `
  (setq en (car (entsel "Thay cho so : ")))2 e" v( Y. Z1 q* _! [  f
  (while (= en nil)0 Z9 p% d4 W1 R3 ~" w. o
    (setq en (car (entsel "Thay cho so : ")))
  D8 L6 M3 X: J+ u  P7 z. {  )! @' X: o& e1 u  W
  (setq elst (entget en))
& Y- w" f2 T& z) R  (setq elstold (assoc 1 elst))
" A. q  v* t6 V, M  (setq elstnew (cons 1 (rtos dtl 2 So_Le)))0 R8 \+ I# U! i: o+ n: V
  (setq elst (subst elstnew elstold elst))
$ k" F- i; z$ r' M" `  (entmod elst)
! O3 h( Q! T9 ~* ^. X3 K  (setq elst nil)1 i& R- v! Z1 M7 E
  (setq dtl nil)
' ]+ C9 Q* f" G( q7 R# X7 ?  O  (command "_change" en "" "p" "c" "1" "")
5 F; ?8 B5 w, K/ ~) U1 c) j  (princ "\nDongdac đã sửa bằng ứng dụng chat open AI ")
! S1 t' u& U1 Y' A& O+ K6 m. ~3 {)4 Y0 k$ d/ y' p1 t
* q) O4 k5 @2 {) u( I" K1 f
7 }' F8 b. u5 W+ b; |8 @





Chào mừng ghé thăm Thư viện xây dựng: Tiêu chuẩn xây dựng- Văn bản- File mẫu- Sơ đồ- Quy trình- Phần mềm xây dựng (https://xaydung360.vn/thuvien/) Powered by Discuz! X3.2