Đến nội dung


Hình ảnh
* * * - - 8 Bình chọn

Viết lisp theo yêu cầu [phần 2]


  • Chủ đề bị khóa Chủ đề bị khóa
3783 replies to this topic

#1081 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 22 April 2010 - 10:00 PM

-Cám ơn Anh Tue_NV nhiều , giờ e có vấn đề này cần nhờ a giúp tiếp. Nhờ anh kết hợp giữa hai lisp này với nhau:
+ Lisp 1: lđây http://www.cadviet.c...__lenh_ts_1.lsp lisp này có chức năng là khi mình nhập giá trị A(góc chuyển hướng) và R(bán kính của đường cong) như hình thì nó sẽ ra được các thông số ở trong vòng tròn màu tím
+ Lisp 2 là cái lisp mà bác vừa giải quyết giúp em đó. Nó có chức năng vẽ ra tiếp tuyến , thì từ đó sẽ có được giá trị của góc A , bán kính R thì có sẵn
- Giờ e muốn nhờ bác kết hợp thánh 1 lisp có chức năng : chọn đường tròn rồi nó vẽ ra tiếp tuyến , và chọn điểm đặt vòng tròn chứa các giá trị và nó tính ra luôn, ko cần phải nhập giá trị A và R như lisp 1 nữa
-Bác xem giúp e nhé , Cám ơn bác

Lisp của bạn rườm rà quá. Ghép lại đơn giản cho bạn đây :

(defun vtt(/ oldos)
  (setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(princ "\n Chon 1 cung Arc :")
(if (null (setq ss (ssget ":S" '((0 . "ARC"))) ))
(alert "\n Khong co cung Arc nao duoc chon ")
(progn
(setq ent (ssname ss 0))
    (setq tam (cdr(assoc 10 (entget ent))))
(setq D (cdr(assoc 40 (entget ent))));bankinh
    (setq dd (vlax-curve-getstartpoint ent))
    (setq dc (vlax-curve-getendpoint ent))
    (setq p1 (polar dd (+ (/ pi 2) (angle dd tam)) 1))
    (setq p2 (polar dc (+ (/ pi 2) (angle dc tam)) 1))
    (if (setq a (inters dd p1 dc p2 nil))
      (progn
        (vl-cmdf "line" dd a "")
        (vl-cmdf "line" dc a "")
(setq c (/ (* 180 (abs (- (angle dd a) (angle dc a)))) pi))
      )
    )
))
  (setvar "osmode" oldos)
(princ)
)
;;;;;;;;
(defun C:TS (/ ro CC CAT MD CD C D N O M I H L J AA RR KK TT PP ss)
(SETVAR "CMDECHO" 0)
(command "-Style" "TS DUONG CONG" "arial" "0" "1" "0" "n" "")
(command "-Layer" "n" "TS DUONG CONG" "c" "222" "TS DUONG CONG" "lw" "0.2" "TS DUONG CONG" "")
(command "-Layer" "s" "TS DUONG CONG" "" "")
(setq CC (getpoint "\nCHON TAM CUA DUONG TRON / Enter ket thuc "))
(setq CAT (getreal "\nDUONG KINH DUONG TRON: "))
(while CC
(command ".circle" CC "d" CAT) (vtt)
(if ss (progn
(setq L (rtos C 2 2))
(setq N (rtos D 2 2))
(setq H (COS (/ (/ (* C PI) 180) 2))) ;CONG THUC TINH GIA TRI COS(A/2)
(setq O (/ (SIN (/ (/ (* C PI) 180) 2)) (COS (/ (/ (* C PI) 180) 2)))) ;CONG THUC TINH GIA TRI TAN(A/2)
(setq M (rtos (* O D) 2 2)) ;CONG THUC TINH GIA TRI T
(setq I (rtos (* D (- (/ 1 H) 1)) 2 2)) ;CONG THUC TINH GIA TRI P
(setq J (rtos (/ (* D C PI) 180) 2 2)) ;CONG THUC TINH GIA TRI K
(setq AA (strcat "A=" L "'")) ;GIA TRI A
(setq RR (strcat "R=" N)) ;GIA TRI R
(setq KK (strcat "K=" J)) ;GIA TRI K
(setq TT (strcat "T=" M)) ;GIA TRI T
(setq PP (strcat "P=" I)) ;GIA TRI P
(setq MD (/ CAT 10))
(setq CD (list (car CC) (+ (cadr CC) (/ CAT 3.1))))
(command ".text" "m" CD MD 0.0 AA) ;TEXT GIA TRI A
(command ".text" "" RR) ;TEXT GIA TRI R
(command ".text" "" KK) ;TEXT GIA TRI K
(command ".text" "" TT) ;TEXT GIA TRI T
(command ".text" "" PP) ;TEXT GIA TRI P
(setq CC (getpoint "\nCHON TAM CUA DUONG TRON: "))
))
) ;dong WHILE
(SETVAR "CMDECHO" 1)
(PRINC)
) ;KET THUC DEFUN

  • 1

#1082 bachngoctung

bachngoctung

    biết lệnh copy

  • Members
  • PipPipPip
  • 115 Bài viết
Điểm đánh giá: 11 (tàm tạm)

Đã gửi 22 April 2010 - 10:28 PM

Lisp của bạn rườm rà quá. Ghép lại đơn giản cho bạn đây :

-Cám ơn bác, Bác chỉnh lại một chút cho em cái giá trị A(góc) mà bác gán bằng L ở trong lisp đó . Cái góc A là góc nhỏ bác à , tức là phải trừ giá trị L đi 180 độ. bác chỉnh giúp e nhé, e chưa biêt lisp nên ko chỉnh được cái này :undecided:
Hình đã gửi
  • 0

#1083 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 22 April 2010 - 11:03 PM

thonghoang1 thử dùng lisp này xem. Lệnh là NSG

Hình đã gửi


Upgrate lên để nội suy với số lượng đường nhập vào

Hình đã gửi

Link down NSG
  • 1

#1084 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 23 April 2010 - 05:15 AM

-Cám ơn bác, Bác chỉnh lại một chút cho em cái giá trị A(góc) mà bác gán bằng L ở trong lisp đó . Cái góc A là góc nhỏ bác à , tức là phải trừ giá trị L đi 180 độ. bác chỉnh giúp e nhé, e chưa biêt lisp nên ko chỉnh được cái này :undecided:

Chào bạn 'bachngoctung'
Bạn sửa dòng này : (setq c (/ (* 180 (abs (- (angle dd a) (angle dc a)))) pi))
thành dòng :
(setq c (- 180 (/ (* 180 (abs (- (angle dd a) (angle dc a)))) pi)))

@Nataca : Tue_NV nhớ không nhầm là mình đã từng viết Lisp timsong (tìm PLINE tim sông khi đã cho PLINE của 2 bên bờ sông) và bác thiep cũng đã từng viết 1 Lisp tương tự.
Và cả 3 cái Lisp của Nataca, của bác Thiep và của Tue_NV đều chưa giải quyết được 1 nhược điểm lớn : là khi Pline bờ sông có những đoạn "cua ngoặc" lớn thì Lisp chạy không còn đúng nữa. Bản vẽ của bạn thonghoang01 upload lên là 1 minh chứng

xin lổi mình quên up file http://www.cadviet.c...drawing1_28.dwg

- Không biết "chiến trường" của Nataca còn "quyết liệt" và "căng thẳng" không? :blink: . Rất mong "chiến trường" của Nataca bớt 1 chút "căng thẳng" để Nataca bớt 1 chút thời gian cho 1 vài ví dụ ở topic Nhờ viết lisp thống kê bản vẽ để làm quà cho anh em CADVIET nơi phương xa
hì. Sao mà bớt 1 hoài dzậy? Phải _THÊM MỘT__ cho quân bình chứ? :blink:
Rất cảm ơn vì sự chia sẻ của Nataca và chúc bạn sức khoẻ
  • 2

#1085 truongthanh

truongthanh

    biết lệnh text

  • Members
  • PipPipPipPip
  • 275 Bài viết
Điểm đánh giá: 7 (bình thường)

Đã gửi 23 April 2010 - 08:15 AM

Nhờ các bạn giúp mình vấn đề giải tỏa nhà với!
em làm quy hoạch và tính giải tỏa đền bù, em muốn tính tổng diện tích giải tỏa trên từng con đường và tìm xem trong đó có bao nhiêu nhà giải tỏa trắng (giải tỏa 100%) và tổng diện tích giải tỏa trắng là bao nhiêu!
Nhờ các bạn giúp dùm mình với!vì mình làm việc này với số lượng rất lớn nên rất vất vả!
Cảm ơn các bạn nhìu!
http://www.cadviet.c...s/2/giaitoa.dwg
  • 0

#1086 bachngoctung

bachngoctung

    biết lệnh copy

  • Members
  • PipPipPip
  • 115 Bài viết
Điểm đánh giá: 11 (tàm tạm)

Đã gửi 23 April 2010 - 09:24 AM

Chào bạn 'bachngoctung'
Bạn sửa dòng này : (setq c (/ (* 180 (abs (- (angle dd a) (angle dc a)))) pi))
thành dòng :
(setq c (- 180 (/ (* 180 (abs (- (angle dd a) (angle dc a)))) pi)))

-Cám ơ A Tue nhiều nhé , e sưa được ngon rồi a à . Cái dòng sửa mà a hướng dẫn thì góc của nó ra âm . Em ngồi nghịch thêm dấu trừ vào nữa là ok ( thử mãi mới đúng được cú pháp)
(setq c (- ( - 180 (/ (* 180 (abs ( - (angle dd a) ( angle dc a)))) pi))))
-Cám ơn bác :undecided: :D :D :blink: :blink:
  • 0

#1087 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 23 April 2010 - 09:43 AM

-Cám ơ A Tue nhiều nhé , e sưa được ngon rồi a à . Cái dòng sửa mà a hướng dẫn thì góc của nó ra âm . Em ngồi nghịch thêm dấu trừ vào nữa là ok ( thử mãi mới đúng được cú pháp)
(setq c (- ( - 180 (/ (* 180 (abs ( - (angle dd a) ( angle dc a)))) pi))))
-Cám ơn bác :undecided: :D :D :blink: :blink:

Sorry. mình cũng chưa kiểm tra kỹ nữa. Nhưng bạn đã sửa thì đừng sửa theo cách thêm dấu trừ đằng trước mà nên sử dụng hàm abs là hàm lấy giá trị tuyệt đối. Việc lấy giá trị tuyệt đối chắc bạn đã biết hồi khi học phổ thông
Ví dụ :
(Abs 5) -> trả về 5
(Abs -5) -> trả về 5
Như vậy thì dòng code sẽ được sửa lại như sau : Nó đúng cho mọi trường hợp
(setq c (abs ( - 180 (/ (* 180 (abs ( - (angle dd a) ( angle dc a)))) pi))))

@truongthanh : Theo Tue_NV nghĩ để dễ dàng và thuận tiện -> Bạn nên quản lý đối tượng bản vẽ theo Layer
đối tượng thuộc Đường hiện trạng nên để riêng 1 layer
đối tượng thuộc Đường quy hoạch nên để riêng 1 layer
Chữ NHà (NHà giải tỏa trắng) nên để riêng 1 layer
Tên đường nên để riêng 1 layer, đường bao quanh nhà giải tỏa trắng nên để riêng 1 layer và để cho nó là 1 PLINE kín để thuận lợi hơn trong quá trình tính diện tích
Bạn đừng để các đối tượng chung 1 layer như thế. Khó quản lý lắm.
Vài lời góp ý cho bản vẽ của bạn
Chúc vui
  • 2

#1088 truongthanh

truongthanh

    biết lệnh text

  • Members
  • PipPipPipPip
  • 275 Bài viết
Điểm đánh giá: 7 (bình thường)

Đã gửi 23 April 2010 - 11:11 AM

Sorry. mình cũng chưa kiểm tra kỹ nữa. Nhưng bạn đã sửa thì đừng sửa theo cách thêm dấu trừ đằng trước mà nên sử dụng hàm abs là hàm lấy giá trị tuyệt đối. Việc lấy giá trị tuyệt đối chắc bạn đã biết hồi khi học phổ thông
Ví dụ :
(Abs 5) -> trả về 5
(Abs -5) -> trả về 5
Như vậy thì dòng code sẽ được sửa lại như sau : Nó đúng cho mọi trường hợp
(setq c (abs ( - 180 (/ (* 180 (abs ( - (angle dd a) ( angle dc a)))) pi))))

@truongthanh : Theo Tue_NV nghĩ để dễ dàng và thuận tiện -> Bạn nên quản lý đối tượng bản vẽ theo Layer
đối tượng thuộc Đường hiện trạng nên để riêng 1 layer
đối tượng thuộc Đường quy hoạch nên để riêng 1 layer
Chữ NHà (NHà giải tỏa trắng) nên để riêng 1 layer
Tên đường nên để riêng 1 layer, đường bao quanh nhà giải tỏa trắng nên để riêng 1 layer và để cho nó là 1 PLINE kín để thuận lợi hơn trong quá trình tính diện tích
Bạn đừng để các đối tượng chung 1 layer như thế. Khó quản lý lắm.
Vài lời góp ý cho bản vẽ của bạn
Chúc vui

Cảm ơn TUE_NV rất nhiều!Thú thật là khi mình làm Quy Hoạch mình nhận được file bản vẽ địa chính do người ta cung cấp, tất cả các nhà và đường hiện trạng đều cùng 1 layer hết, sau đó mình XREF vào bản vẽ Quy Hoạch của mình, (tất cả các nhà hiện trạng đều được vẽ bằng LINE hết)!khi mình làm Quy hoạch lúc đó mới có đường quy hoạch và lúc đó mới lòi ra nhà nào bị giải tỏa trắng.Chính vì vậy việc phân ra từng layer như TUE_NV nói thật là khó!Nhờ TUE_NV góp ý và giúp dùm mình!(những gì mà ko liên quan đến nền hiện trạng thì mình đã phân ra layer rất rõ ràng ví dụ:tên đường, đường Quy Hoạch!
Chân thành cảm ơn bạn!
  • 0

#1089 damvinhduy

damvinhduy

    biết vẽ line

  • Members
  • PipPip
  • 27 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 23 April 2010 - 11:31 AM

Mình rất cần một lisp như sau:
Mình làm thiết kế nên có rất nhiều bảng vẽ được đánh số thứ tự như sau: T10A03001, T10A03002, T10A03003...T10A030XY. Trong đó T10A030 là ký hiệu bảng vẽ (giống nhau với mọi bảng vẽ), 2 số cuối 01, 02, 03...XY là số thứ tự bảng vẽ. Bây giờ muốn bổ xung hay bỏ bớt bảng vẽ thì số thứ tự bảng vẽ cũng thay đổi theo. Nếu làm cách thủ công là chọn từng text và sửa thì quá lâu. Nên mình nhờ các bạn viết dùm mình một lisp với tác dụng:
- Nhập lệnh.
- Nhập số cần tăng hoặc giãm. Ví dụ +4 thì tương ứng số thứ tự bảng vẽ(XY) sẻ tăng thêm +4 đơn vị (T10A03005->T10A03009) hoặc -4 thì tương ứng số thứ tự bảng vẽ sẻ bớt đi 4 đơn vị (T10A03005->T10A03001). Mặc định là tăng +1 đơn vị.
- Chọn đối tượng cần thay đổi (Mtext hoặc Text), lệnh sẽ thực thi. Chọn tiếp đối tượng cần thay đổi(nếu có). Enter hoặc ESC kết thúc lệnh.
Xin cảm ơn các bạn rất nhiều.
  • 0

#1090 truongthanh

truongthanh

    biết lệnh text

  • Members
  • PipPipPipPip
  • 275 Bài viết
Điểm đánh giá: 7 (bình thường)

Đã gửi 23 April 2010 - 12:00 PM

Mình rất cần một lisp như sau:
Mình làm thiết kế nên có rất nhiều bảng vẽ được đánh số thứ tự như sau: T10A03001, T10A03002, T10A03003...T10A030XY. Trong đó T10A030 là ký hiệu bảng vẽ (giống nhau với mọi bảng vẽ), 2 số cuối 01, 02, 03...XY là số thứ tự bảng vẽ. Bây giờ muốn bổ xung hay bỏ bớt bảng vẽ thì số thứ tự bảng vẽ cũng thay đổi theo. Nếu làm cách thủ công là chọn từng text và sửa thì quá lâu. Nên mình nhờ các bạn viết dùm mình một lisp với tác dụng:
- Nhập lệnh.
- Nhập số cần tăng hoặc giãm. Ví dụ +4 thì tương ứng số thứ tự bảng vẽ(XY) sẻ tăng thêm +4 đơn vị (T10A03005->T10A03009) hoặc -4 thì tương ứng số thứ tự bảng vẽ sẻ bớt đi 4 đơn vị (T10A03005->T10A03001). Mặc định là tăng +1 đơn vị.
- Chọn đối tượng cần thay đổi (Mtext hoặc Text), lệnh sẽ thực thi. Chọn tiếp đối tượng cần thay đổi(nếu có). Enter hoặc ESC kết thúc lệnh.
Xin cảm ơn các bạn rất nhiều.

mình thì ko biết có lisp như bạn cần ko, nhưng nếu bạn đang gấp thì có thể làm theo 3 bước như sau:
Bước 1:bạn dùng LISP thêm bớt text bỏ đi các ký tự phía trước, chỉ chừa lại 2 số cuối (XY). http://www.cadviet.c...?showtopic=6991
Bước 2:bạn dùng LISP cộng trừ nhân chia text của bạn THAISTREETZ http://www.cadviet.c...o...3203&st=100 bài viết #105.
Bước 3:làm ngược lại bước 1 là thêm lại chuỗi text đã bỏ.
Còn tổng hợp 3 bước này lại thành 1 lisp thì nhờ các cao thủ của chúng ta ra tay!
Thân!
  • 0

#1091 damvinhduy

damvinhduy

    biết vẽ line

  • Members
  • PipPip
  • 27 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 23 April 2010 - 01:53 PM

mình thì ko biết có lisp như bạn cần ko, nhưng nếu bạn đang gấp thì có thể làm theo 3 bước như sau:
Bước 1:bạn dùng LISP thêm bớt text bỏ đi các ký tự phía trước, chỉ chừa lại 2 số cuối (XY). http://www.cadviet.c...?showtopic=6991
Bước 2:bạn dùng LISP cộng trừ nhân chia text của bạn THAISTREETZ http://www.cadviet.c...o...3203&st=100 bài viết #105.
Bước 3:làm ngược lại bước 1 là thêm lại chuỗi text đã bỏ.
Còn tổng hợp 3 bước này lại thành 1 lisp thì nhờ các cao thủ của chúng ta ra tay!
Thân!

Cảm ơn truongthanh, nhưng mình thấy nếu có một lisp nào đó duy nhất thì hay biết mấy. Chỉ cần nhấp chuột là đối tượng tự thay đổi. Mình đang mày mò học về lisp, hy vọng sẽ làm được. Cảm ơn!
  • 0

#1092 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 23 April 2010 - 02:55 PM

Cảm ơn truongthanh, nhưng mình thấy nếu có một lisp nào đó duy nhất thì hay biết mấy. Chỉ cần nhấp chuột là đối tượng tự thay đổi. Mình đang mày mò học về lisp, hy vọng sẽ làm được. Cảm ơn!

Bạn thử code Lisp này nhé :
(defun c:dstt(/ ss delta ob chuoi chdau chcuoi)
(vl-load-com)
;; copyright by Tue_NV
(setq ss (ssget "X" (list(cons 0 "*TEXT") (cons 1 "T10A030*"))) i -1)
(setq delta (getint "\n so tang giam :"))
(while (setq ent (ssname ss (setq i (1+ i))))
(setq ob (vlax-ename->vla-object ent))
(setq chuoi (vlax-get ob 'textstring))
(setq chdau "T10A030")
(setq chcuoi (atoi (substr chuoi (1+ (strlen chdau)) (strlen chuoi))))
(if (and (>= (+ chcuoi delta) 0) (<= (+ chcuoi delta) 9))
(vlax-put ob 'textstring (strcat chdau "0" (itoa (+ chcuoi delta))))
)
(if (> (+ chcuoi delta) 9)
(vlax-put ob 'textstring (strcat chdau (itoa (+ chcuoi delta))))
)
)
(princ)
)

  • 0

#1093 truongthanh

truongthanh

    biết lệnh text

  • Members
  • PipPipPipPip
  • 275 Bài viết
Điểm đánh giá: 7 (bình thường)

Đã gửi 23 April 2010 - 03:58 PM

Cảm ơn TUE_NV rất nhiều!Thú thật là khi mình làm Quy Hoạch mình nhận được file bản vẽ địa chính do người ta cung cấp, tất cả các nhà và đường hiện trạng đều cùng 1 layer hết, sau đó mình XREF vào bản vẽ Quy Hoạch của mình, (tất cả các nhà hiện trạng đều được vẽ bằng LINE hết)!khi mình làm Quy hoạch lúc đó mới có đường quy hoạch và lúc đó mới lòi ra nhà nào bị giải tỏa trắng.Chính vì vậy việc phân ra từng layer như TUE_NV nói thật là khó!Nhờ TUE_NV góp ý và giúp dùm mình!(những gì mà ko liên quan đến nền hiện trạng thì mình đã phân ra layer rất rõ ràng ví dụ:tên đường, đường Quy Hoạch!
Chân thành cảm ơn bạn!

nhờ TUE_NV xem xét và giúp đỡ mình với!thanks bạn nhiều!
  • 0

#1094 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 23 April 2010 - 04:10 PM

Cảm ơn TUE_NV rất nhiều!Thú thật là khi mình làm Quy Hoạch mình nhận được file bản vẽ địa chính do người ta cung cấp, tất cả các nhà và đường hiện trạng đều cùng 1 layer hết, sau đó mình XREF vào bản vẽ Quy Hoạch của mình, (tất cả các nhà hiện trạng đều được vẽ bằng LINE hết)!khi mình làm Quy hoạch lúc đó mới có đường quy hoạch và lúc đó mới lòi ra nhà nào bị giải tỏa trắng.Chính vì vậy việc phân ra từng layer như TUE_NV nói thật là khó!Nhờ TUE_NV góp ý và giúp dùm mình!(những gì mà ko liên quan đến nền hiện trạng thì mình đã phân ra layer rất rõ ràng ví dụ:tên đường, đường Quy Hoạch!
Chân thành cảm ơn bạn!

Truong thanh upload lại file bạn đã thể hiện nhé.
Bạn nói rõ dữ liệu input (đầu vào) bạn nhập vào những gì?? Kết quả output (xuất ra) theo ý của bạn. Bạn nên upload khoảng 3 hoặc 4 con đường để kiểm chứng nhé. Bạn thể hiện rõ ràng, chi tiết trong file .dwg rồi upload lên luôn. Thấy trong file cũ vừa rồi truongthanh upload lên sơ sài lắm đó, chẳng hiểu được cái "mong muốn" của bạn là gì nữa??
Tue_NV không biết có giúp được không vì thời gian này mình rất bận. Nhưng chắc sẽ có các bác trên diễn đàn giúp cho bạn mà.
Vậy nhé.
  • 1

#1095 truongthanh

truongthanh

    biết lệnh text

  • Members
  • PipPipPipPip
  • 275 Bài viết
Điểm đánh giá: 7 (bình thường)

Đã gửi 23 April 2010 - 04:57 PM

Truong thanh upload lại file bạn đã thể hiện nhé.
Bạn nói rõ dữ liệu input (đầu vào) bạn nhập vào những gì?? Kết quả output (xuất ra) theo ý của bạn. Bạn nên upload khoảng 3 hoặc 4 con đường để kiểm chứng nhé. Bạn thể hiện rõ ràng, chi tiết trong file .dwg rồi upload lên luôn. Thấy trong file cũ vừa rồi truongthanh upload lên sơ sài lắm đó, chẳng hiểu được cái "mong muốn" của bạn là gì nữa??
Tue_NV không biết có giúp được không vì thời gian này mình rất bận. Nhưng chắc sẽ có các bác trên diễn đàn giúp cho bạn mà.
Vậy nhé.

Mình gửi file khác lên nhờ bạn xem dùm nhé!nếu bản vẽ phức tạp hay cần phải theo 1 quy định nào đó để tính toán được thì bạn đưa ra ý kiến nhé!
thanks bạn rất nhiều!
http://www.cadviet.c...files/2/1_8.dwg
  • 0

#1096 trinhvqh

trinhvqh

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 408 Bài viết
Điểm đánh giá: 222 (khá)

Đã gửi 23 April 2010 - 05:30 PM

Mình gửi file khác lên nhờ bạn xem dùm nhé!nếu bản vẽ phức tạp hay cần phải theo 1 quy định nào đó để tính toán được thì bạn đưa ra ý kiến nhé!
thanks bạn rất nhiều!
http://www.cadviet.c...files/2/1_8.dwg


Thêm một bài toán “Thống kê”
Autolisp có thể giải quyết được nhưng xem ra cũng “khê cơm” lắm! :undecided:

Những gì truongthanh mong muốn không đủ cơ sở để máy tính hiểu
Cho nên cần phải thêm một vài công đoạn mới có thể tính toán được

Một nguyên tắc để thống kê tức là những gì cần thống kê phải được vẽ phải chính xác
Muốn tính diện tích giải tỏa thì ít ra phải là các đối tượng như: Polyline, Polygon, Circle,…
Như vậy việc đầu tiên của bạn là dung lệnh Bo (Boundary) xác định phần diện tích của mỗi nhà sẽ bị giải tỏa khi mở đường

(Xong bước này, Tìm kiếm Lisp trên diễn đàn về tính diện tích Polyline là có thể đối phó được rồi)!

Tiếp theo, phải cho thêm một số thông tin cho Polyline vừa tạo:
- Ký hiệu (1,2,3,…)
- Giải tỏa trắng hay giải tỏa một phần
- Đơn giá đền bù/ m2
- Tổng tiền = Diện tích x Đơn giá
Nếu chi tiết một chút bạn có thể thêm thông tin (Tên chủ nhà, địa chỉ,…)

Sau đó, là lập bảng và tính tổng diện tích bị giải tỏa

Cuối cùng muốn làm được những điều trên phải dung ACA
Không thì bạn ráng chờ các cao thủ Lisp giải quyết vậy!
  • 1

#1097 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 23 April 2010 - 09:50 PM

Chào Tue_NV!
Có vấn đề này nhờ bạn giúp mình
Mình có một loạt các block vật tư như: van, tê, cút... trên 1bản vẽ CAD
Mình thống kê thủ công dễ bị nhầm lẫn và thiếu vật tư nữa nên mình muốn một lisp thống kê Block cụ thể như:
có 4 cột và kẻ khung như sau:
Stt Tên vật tư Đơn vị tính Số lượng
1 van cái 01

Khi đánh lệnh, lisp tự động tìm các block hiện hành và thống kê như mẫu trên
Cảm ơn bạn nhiều.
(Mình đã tìm rất nhiều các lisp trên diễn đàn nhưng không có cái nào phù hợp cả)

Bạn chạy thử LISP này :
Update : http://www.cadviet.c...o...ost&p=93700
  • 0

#1098 truongthanh

truongthanh

    biết lệnh text

  • Members
  • PipPipPipPip
  • 275 Bài viết
Điểm đánh giá: 7 (bình thường)

Đã gửi 23 April 2010 - 10:33 PM

Bạn TUE_NV hiện đang bận, xin nhờ bác GIA BACH giúp dùm em với!
Xin chân thành cảm ơn bác!
  • 0

#1099 vansulich

vansulich

    biết pan

  • Members
  • Pip
  • 5 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 23 April 2010 - 10:55 PM

Em muốn nhờ các bác làm hộ cái lisp khi mà mình fillet 2 đường thì phần đườngthằngmới tạo ra để fillet là line khác (chứ ko phải là 2 đường cũ) layer có thể là layer hiện thời, chứ ko phải là layer của 2 đường gôc

Hình đã gửi

Cảm ơn các bác nha
  • 0

#1100 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 401 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 24 April 2010 - 03:54 AM

Mình gửi file khác lên nhờ bạn xem dùm nhé!nếu bản vẽ phức tạp hay cần phải theo 1 quy định nào đó để tính toán được thì bạn đưa ra ý kiến nhé!
thanks bạn rất nhiều!
http://www.cadviet.c...files/2/1_8.dwg

Mình kg xem đc cả 2 file của bạn. vấn đề bạn đề cập cũng dễ hiểu. Tuy nhiên xử lý vđ này bạn cần phải chuyên nghiệp (cad làm đc nhưng phải đầu tư nghiêm túc).
về BĐ địa chính người ta vẫn phân lớp rõ ràng chứ kg nhập lại thành 1 layer như của bạn. Bạn có thể làm ở mức đơn giản như sau :
- Sử dụng lệnh tính diện tích bằng 1 cái Pick (đã có trên diễn đàn)
- Tạo block có thuộc tính là STT và diện tích vừa tính
Sau đó Pick vào từng hình bạn muốn tính diện tích (tăng STT sau mỗi lần Pick) và dùng cad để thống kê
(Mình kg giúp bạn viết thành Lisp đc vì mình kg có thời gian và mình cũng kg nhở các kiến thức trên. Bạn có thể tự viết hoặc nhờ các bạn khác viết nhé)
  • 1