Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
hoangkimanh1607

tim list tính diện tích theo 2 tỷ lệ X Y khác nhau

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

nhờ các bác viết dùm cái list tính diện tích có 2 tỷ lệ X Y khac nhau

ví dụ : có 1 hình tỷ lệ đứng 200 tỷ lệ ngang 100 nhờ các bác viết theo ý của e được không khi ta pick vào hùnh đó sẽ hỏi tỷ lệ đứng: nhập vào, tỷ lệ ngang:nhập vào,chiều cao text: nhập vào,nếu xuất ra excel càng tốt

Thanks 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
duy782006    1.374
nhờ các bác viết dùm cái list tính diện tích có 2 tỷ lệ X Y khac nhau

ví dụ : có 1 hình tỷ lệ đứng 200 tỷ lệ ngang 100 nhờ các bác viết theo ý của e được không khi ta pick vào hùnh đó sẽ hỏi tỷ lệ đứng: nhập vào, tỷ lệ ngang:nhập vào,chiều cao text: nhập vào,nếu xuất ra excel càng tốt

Thanks các bác

-Đối tượng cần đo là đối tượng gì?

-Pick vào hình là:

+Chọn đối tượng.

+Pick 1 điểm nằm trong vùng khép kín. (vùng khép kín tạo bởi cái gì)

 

Bàn thêm về tỉ lệ:

Trong tất cả các lisp tính diện tích mình không hỏi tỉ lệ mà sẽ hỏi một mét bạn vẽ là bao nhiêu: Như vậy tiện cho việc tính toán ra theo giá trị mét vuông và tránh việc khác nhau về quan niệm về tỉ lệ giữa người viết và người dùng.

 

Mình dùng vẽ trên không gia mô hình chứ không rành không gian giấy nên:

-Một mét mình vẽ là 1000, khung tờ giấy A4 vẽ là 210000,297000 khi in với tỉ lệ 1/100 thì gọi là 1/100. Quan trọng là khi in ra 1 mét trên tờ giấy là 1cm.

  • 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
Thaistreetz    515
nhờ các bác viết dùm cái list tính diện tích có 2 tỷ lệ X Y khac nhau

ví dụ : có 1 hình tỷ lệ đứng 200 tỷ lệ ngang 100 nhờ các bác viết theo ý của e được không khi ta pick vào hùnh đó sẽ hỏi tỷ lệ đứng: nhập vào, tỷ lệ ngang:nhập vào,chiều cao text: nhập vào,nếu xuất ra excel càng tốt

Thanks các bác

-Đối tượng cần đo là đối tượng gì?

-Pick vào hình là:

+Chọn đối tượng.

+Pick 1 điểm nằm trong vùng khép kín. (vùng khép kín tạo bởi cái gì)

 

với đề bài thế này thì em nghĩ với những đối tượng tính toán là hình chữ nhật thì còn có thể làm đc. chứ đối với một hình đa giác bất kỳ thì thực sự hơi khó. không biết thuật toán nào có thể làm đc?

 

@a.Tue: Cái này đúng là tuỳ quan điểm của từng người anh ạ. em là dân cầu đường, làm việc với trắc dọc nhiều, bản vẽ loại này thường có tỷ lệ x và y khác nhau. ví dụ

x là 1/1000, y là 1/100. khi đó bọn em chỉ cần nói với nhau trắc dọc tỷ lệ 1000,100 là đủ hiểu. thế nên em mới nói đây có lẽ cũng chỉ là thói quen khi nói của bạn kimanh. tất nhiên khi viết thì không được phép ghi tỷ lệ như vậ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
nataca    553
với đề bài thế này thì em nghĩ với những đối tượng tính toán là hình chữ nhật thì còn có thể làm đc. chứ đối với một hình đa giác bất kỳ thì thực sự hơi khó. không biết thuật toán nào có thể làm đc?

 

@a.Tue: Cái này đúng là tuỳ quan điểm của từng người anh ạ. em là dân cầu đường, làm việc với trắc dọc nhiều, bản vẽ loại này thường có tỷ lệ x và y khác nhau. ví dụ

x là 1/1000, y là 1/100. khi đó bọn em chỉ cần nói với nhau trắc dọc tỷ lệ 1000,100 là đủ hiểu. thế nên em mới nói đây có lẽ cũng chỉ là thói quen khi nói của bạn kimanh. tất nhiên khi viết thì không được phép ghi tỷ lệ như vậy

Mình cũng là dân cầu đường. Chắc là bài toán này phát sinh khi chạy trắc dọc trắc ngang với tỷ lệ đứng và tỷ lệ ngang khác nhau. Về mặt thuật toán thì vẫn làm được:

- Dùng lệnh Bo để tạo ra được Polyline bao quanh hình cần tính

- Biến Polyline đó thành 1 block

- Insert block đó với tỷ lệ X, Y khác nhau tuỳ thuộc tương quan X, Y như bạn yêu cầu

- Cuối cùng lấy diện tích của Block ployline đó

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
duy782006    1.374
Mình cũng là dân cầu đường. Chắc là bài toán này phát sinh khi chạy trắc dọc trắc ngang với tỷ lệ đứng và tỷ lệ ngang khác nhau. Về mặt thuật toán thì vẫn làm được:

- Dùng lệnh Bo để tạo ra được Polyline bao quanh hình cần tính

- Biến Polyline đó thành 1 block

- Insert block đó với tỷ lệ X, Y khác nhau tuỳ thuộc tương quan X, Y như bạn yêu cầu

- Cuối cùng lấy diện tích của Block ployline đó

Không hiểu sao pline khép kín tạo block, chèn với tỉ lệ x.y khác nhau thì khi x block ra cái pline này cũng nát bé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
q288    164
Mình cũng là dân cầu đường. Chắc là bài toán này phát sinh khi chạy trắc dọc trắc ngang với tỷ lệ đứng và tỷ lệ ngang khác nhau. Về mặt thuật toán thì vẫn làm được:

- Dùng lệnh Bo để tạo ra được Polyline bao quanh hình cần tính

- Biến Polyline đó thành 1 block

- Insert block đó với tỷ lệ X, Y khác nhau tuỳ thuộc tương quan X, Y như bạn yêu cầu

- Cuối cùng lấy diện tích của Block ployline đó

 

Sao rắc rối thế, chỉ cần tính diện tích bình thường rồi nhân cho tỷ lệ x/y hoặc y/x là được 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
nataca    553
Sao rắc rối thế, chỉ cần tính diện tích bình thường rồi nhân cho tỷ lệ x/y hoặc y/x là được rồi.

Với một đa giác bất kỳ thì bạn nhân tỷ lệ x/y như thế nào? Bạn có thể cho một ví dụ được ko?

@duy782006: bác lại Bo lần nữa đa giác nát bét để tính xem sao :s_dead:

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
q288    164
Với một đa giác bất kỳ thì bạn nhân tỷ lệ x/y như thế nào? Bạn có thể cho một ví dụ được ko?

 

thí dụ tỷ lệ ngang 1/100 , đứng 1/200 , cần tính diện tích chuẩn theo 1/100 thì x/y sẽ là 2/1. Bạn cứ đo diện tích hình trên bản vẽ rồi nhân với 2 thì ra diện tích thật. Bạn nghiệm thử xem có đúng không.

  • Vote tăng 2

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
Đúng là thế thật. nếu chia đa giác bất kỳ thành n hình chữ nhật (n là vô cùng) thì việc ta tăng hay giảm tỷ lệ X theo một phương cũng đồng nghĩa với việc diện tích của mỗi hình chữ nhật đó sẽ tăng lên X lần => diện tích của đa giác cần tính cũng tăng lên X lần. Đúng là đơn giản nhưng không fải ai cũng nhận thấy ngay điều đó :s_dead:

 

@a.Tuệ: vâng, em biết 1/2 và 2/1 khác nhau nhiều lắm chứ, chênh nhau tới 4 lần chứ ít đâu. Tuy nhiên em chỉ muốn giải thích: vì sao bạn kimanh viết như vậy rõ ràng là sai hoàn toàn về bản chất nhưng hầu hết mọi người vẫn có thể hiểu được tỷ lệ thực sự mà bạn ấy muốn nói. Thực tế ngay cả anh cũng hiểu nên mới reply cho bạn ấy về vấn đề này, vì rõ ràng là các bản vẽ của chúng ta đều có kích thước nhỏ hơn thực tế rất nhiều (trừ những trường hợp cá biệt khi đó lại khác). tỷ lệ 100 hay 200 quả thực là điều vô lý.

Tuy nhiên một câu nói vô lý nhưng vẫn có thể khiến người nghe hiểu được bản chất thực sự bởi chính sự vô lý của nó. điều em muốn nói ở đây không mang tính chất hàn lâm, quy chuẩn, quy đinh hay nguyên tắc như anh đã giải thích... em chỉ muốn nói đó là 1 thói quen được khá nhiều người trong nghề như em chấp nhận. vậy thôi ạ

ok

mình đính chính lại

là tỉ lệ 1/200 và 1/100

thấy các bác trao đổi cung chỉ là vấn đề này mình đính chính lại rùi nhờ các bác giúp dùm

có bác nói tạo block nếu như nhiều hình cái nào cụng tạo block thì mất thời gian, nền mình nhờ các bác xem và viết dùm đọan lít trên 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
q288    164
nhờ các bác viết dùm cái list tính diện tích có 2 tỷ lệ X Y khac nhau

ví dụ : có 1 hình tỷ lệ đứng 200 tỷ lệ ngang 100 nhờ các bác viết theo ý của e được không khi ta pick vào hùnh đó sẽ hỏi tỷ lệ đứng: nhập vào, tỷ lệ ngang:nhập vào,chiều cao text: nhập vào,nếu xuất ra excel càng tốt

Thanks các bác

 

Bạn thử cái này xem. Khi nhập tỷ lệ chỉ nhập 100, 200.. ko nhập 1/100, 1/200.

Kết quả đưa ra file ketqua.txt trong cùng thư mục với file cad.

Chú ý vì lệnh boundary chỉ làm đc với đa giác kín và zoom cho thấy đủ đa giác đó (trong tầm nhìn).

Có vòng lặp cho nên nếu muốn thoát thì enter.

(defun c:dth()
 (vl-load-com)
 (setvar "cmdecho" 0)

 (if (not tln) (setq tln 100))
 (if (not tld) (setq tld 100))
 (if (not caot) (setq caot 1))
 (setq tln1 (getreal (strcat "\nCho ty le ngang < 1/" (rtos tln 2 0) " >: 1/"))
tld1 (getreal (strcat "\nCho ty le dung < 1/" (rtos tld 2 0) " >: 1/"))
caot1 (getreal (strcat "\nCao text < " (rtos caot 2 0) " >: ")))
 (if tln1 (setq tln tln1))
 (if tld1 (setq tld tld1))
 (if caot1 (setq caot caot1))

 (setq heso (/ tld tln)
file (open (strcat (getvar "dwgprefix") "Ketqua.txt") "a")
p (getpoint "\nPick a internal point:")
el (entlast))

 (while p		
   (command "boundary" p "")
   (if (not (equal el (setq el1 (entlast))))
     (progn 
       (write-line (setq chu (rtos (* heso (vla-get-Area (vlax-ename->vla-object el1))))) file)
(entdel el1)
(entmakex (list '(0 . "TEXT") (cons 40 caot) (cons 10 p) (cons 1 chu))) ))      
   (setq p (getpoint "\nPick a internal point:"))
 )
 (close file)
 (setvar "cmdecho" 1)
 (princ)
)

  • Vote tăng 2

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 thử cái này xem. Khi nhập tỷ lệ chỉ nhập 100, 200.. ko nhập 1/100, 1/200.

Kết quả đưa ra file ketqua.txt trong cùng thư mục với file cad.

Chú ý vì lệnh boundary chỉ làm đc với đa giác kín và zoom cho thấy đủ đa giác đó (trong tầm nhìn).

Có vòng lặp cho nên nếu muốn thoát thì enter.

(defun c:dth()
 (vl-load-com)
 (setvar "cmdecho" 0)

 (if (not tln) (setq tln 100))
 (if (not tld) (setq tld 100))
 (if (not caot) (setq caot 1))
 (setq tln1 (getreal (strcat "\nCho ty le ngang < 1/" (rtos tln 2 0) " >: 1/"))
tld1 (getreal (strcat "\nCho ty le dung < 1/" (rtos tld 2 0) " >: 1/"))
caot1 (getreal (strcat "\nCao text < " (rtos caot 2 0) " >: ")))
 (if tln1 (setq tln tln1))
 (if tld1 (setq tld tld1))
 (if caot1 (setq caot caot1))

 (setq heso (/ tld tln)
file (open (strcat (getvar "dwgprefix") "Ketqua.txt") "a")
p (getpoint "\nPick a internal point:")
el (entlast))

 (while p		
   (command "boundary" p "")
   (if (not (equal el (setq el1 (entlast))))
     (progn 
       (write-line (setq chu (rtos (* heso (vla-get-Area (vlax-ename->vla-object el1))))) file)
(entdel el1)
(entmakex (list '(0 . "TEXT") (cons 40 caot) (cons 10 p) (cons 1 chu))) ))      
   (setq p (getpoint "\nPick a internal point:"))
 )
 (close file)
 (setvar "cmdecho" 1)
 (princ)
)

 

đúng cái mình đang cần

thanks bạn nhiều

dia chi mail cua minh

daihoang2001@yahoo.com

if có dịp mình cùng trao đổi cùng nhé

thanks ban lần nữa

chúc ban làm việc tốt

bạn cho mình dịa chỉ mail 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
Thaistreetz    515
nhờ các bác viết dùm cái list tính diện tích có 2 tỷ lệ X Y khac nhau

ví dụ : có 1 hình tỷ lệ đứng 200 tỷ lệ ngang 100 nhờ các bác viết theo ý của e được không khi ta pick vào hùnh đó sẽ hỏi tỷ lệ đứng: nhập vào, tỷ lệ ngang:nhập vào,chiều cao text: nhập vào,nếu xuất ra excel càng tốt

Thanks các bác

 

hoặc cái này. mình viết chậm rồi nhưng thôi cứ post bạn tham khảo. thấy cái nào hay thì dùng.

Với lisp này bạn có thể cộng 1 lần diện tích của nhiều miền kín lại và xuất ra kết quả vào text có săn hoặc xuất ra vị trí bất kỳ trên màn hình với cao text bạn nhập vào. text style sẽ lấy theo textstyle hiện tại. lisp không có chức năng xuất ra file text

 

;;;===Tinh dien tich theo ty le ban ve====;;;

(defun C:ax (/ P1 dtich dtich1 L a1 a2 tx ty tlx tly h)

(if (= tx nil)
(progn (setq tx (getreal "\nTy le theo phuong ngang 1/"))
(setq tlx tx)))
(if (= ty nil)
(progn (setq ty (getreal "\nTy le theo phuong dung 1/"))
(setq tly ty)))

(command "UCS" "W" "")
(setq lastcol (getvar "CEColor"))
(setq lastos (getvar "OsMODE"))
(setvar "OSMODE" 0)
(command "CECOLOR" 4)

(setq P1 (getpoint "\n Chon mien tinh dien tich"))
(command "boundary" P1 "")
(setq a1 (ssget "L")
a2 (ssadd)
a2 (ssadd (ssname a1 0) a2)
ent (ssname a1 0))  
(command "area" "o" "l")
(setq dtich (getvar "Area"))

(setq P1 (getpoint "\n Diem tiep theo ..."))
(while (/= P1 nil)
(command "boundary" P1 "")
(setq a1 (ssget "L")
a2 (ssadd (ssname a1 0) a2)
ent (ssname a1 0))
(command "area" "o" "l")
(setq dtich1 (getvar "Area")
dtich (+ dtich dtich1))
(setq P1 (getpoint "\n Diem tiep theo ...")))

(setvar "CECOLOR" lastcol)
(setvar "OSMODE" lastos)

(setq res (entsel "\n Chon text ghi ket qua, Pick hoac Enter de ghi ket qua ra man hinh "))
(if res
(progn
(setq res (entget (car res)))
(setq res (subst (cons 1 (rtos (* dtich tlx tly) 2 2)) (assoc 1 res) res))
(entmod res)
)
(progn
(setq h (getstring "\n Nhap chieu cao text: " ))
(setq p (getpoint "\n Chon diem ghi ket qua" ))
(command "TEXT" p h "" (rtos (* dtich tlx tly) 2 2))
)
)
(command "erase" a2 "")
)

;;;==================================

  • 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
Thaistreetz    515

Đoạn này của bác q288 hay quá. tuyệt thật...

 

(if (not tln) (setq tln 100))

(if (not tld) (setq tld 100))

(if (not caot) (setq caot 1))

(setq tln1 (getreal (strcat "\nCho ty le ngang < 1/" (rtos tln 2 0) " >: 1/"))

tld1 (getreal (strcat "\nCho ty le dung < 1/" (rtos tld 2 0) " >: 1/"))

caot1 (getreal (strcat "\nCao text < " (rtos caot 2 0) " >: ")))

(if tln1 (setq tln tln1))

(if tld1 (setq tld tld1))

(if caot1 (setq caot caot1))

 

Tiện đây bác q288 cho em hỏi cái này có tác dụng gì thế?

(vl-load-com)

(setvar "cmdecho" 0)

thấy rất nhiều lisp mọi người viết bắt đầu thường có đoạn này, tại vì em cũng chỉ học mót, chắp vá nên không hiểu lắm. bác giải thích hộ em vớ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
Tue_NV    3.841
......

(vl-load-com)

(setvar "cmdecho" 0)

thấy rất nhiều lisp mọi người viết bắt đầu thường có đoạn này, tại vì em cũng chỉ học mót, chắp vá nên không hiểu lắm. bác giải thích hộ em với

Xin được giải thích :

(vl-load-com) : khởi động các hàm vl đó mà

mặc định CAD2004 load hàm (vl-load-com) khi khởi động, nên khi viết LISP trên CAD2004 thuờng quên dòng này.

nhưng các version sau này Autodesk không load (vl-load-com) khi khởi động nữa (có lẽ để giảm bớt bộ nhớ cho hệ thống).

 

(setvar "cmdecho" 0)

- Cái này cũng dễ hiểu lắm.

Bạn chạy Lisp với dòng này -> Mở thanh Command line quan sát (1)

Bạn chạy Lisp không có dòng này -> Mở thanh Command line quan sát (2)

Quan sát (1) và (2) => Rút ra kết luận

 

Sau đó chạy Lisp với dòng này nữa (setvar "cmdecho" 1)

Quan sát => Rút ra kết luận

  • 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
Thaistreetz    515
Bạn thử cái này xem. Khi nhập tỷ lệ chỉ nhập 100, 200.. ko nhập 1/100, 1/200.

Kết quả đưa ra file ketqua.txt trong cùng thư mục với file cad.

Chú ý vì lệnh boundary chỉ làm đc với đa giác kín và zoom cho thấy đủ đa giác đó (trong tầm nhìn).

Có vòng lặp cho nên nếu muốn thoát thì enter.

(defun c:dth()
 (vl-load-com)
 (setvar "cmdecho" 0)

 (if (not tln) (setq tln 100))
 (if (not tld) (setq tld 100))
 (if (not caot) (setq caot 1))
 (setq tln1 (getreal (strcat "\nCho ty le ngang < 1/" (rtos tln 2 0) " >: 1/"))
tld1 (getreal (strcat "\nCho ty le dung < 1/" (rtos tld 2 0) " >: 1/"))
caot1 (getreal (strcat "\nCao text < " (rtos caot 2 0) " >: ")))
 (if tln1 (setq tln tln1))
 (if tld1 (setq tld tld1))
 (if caot1 (setq caot caot1))

 (setq heso (/ tld tln)
file (open (strcat (getvar "dwgprefix") "Ketqua.txt") "a")
p (getpoint "\nPick a internal point:")
el (entlast))

 (while p		
   (command "boundary" p "")
   (if (not (equal el (setq el1 (entlast))))
     (progn 
       (write-line (setq chu (rtos (* heso (vla-get-Area (vlax-ename->vla-object el1))))) file)
(entdel el1)
(entmakex (list '(0 . "TEXT") (cons 40 caot) (cons 10 p) (cons 1 chu))) ))      
   (setq p (getpoint "\nPick a internal point:"))
 )
 (close file)
 (setvar "cmdecho" 1)
 (princ)
)

 

Có sự khác nhau trong công thức tính diện tích của em và bác q288. Với tỷ lệ bản vẽ 1/X và 1/Y, Bác q288 lấy diện tích đo được nhân với tỷ số Y/X để ra diện tích thực, hình như không đúng. theo em ta fải lấy diện tích đo được nhân với đồng thời cả X và Y thì mới ra được chính xác diện tích thậ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
q288    164
Đoạn này của bác q288 hay quá. tuyệt thật...

Tiện đây bác q288 cho em hỏi cái này có tác dụng gì thế?

thấy rất nhiều lisp mọi người viết bắt đầu thường có đoạn này, tại vì em cũng chỉ học mót, chắp vá nên không hiểu lắm. bác giải thích hộ em với

 

vì trong ct co hàm vla-get-area de lấy dt nên phải load cac hàm có chữ vl đừng trước nhu vl-, vla-,vlax-,vlr-. Từ cad 2004 về trước thì các hàm này tự load, còn các cad sau này ko tư động, mình thêm vào cho chắc ăn vì ko biết ng dùng xài cad nào.

 

còn cmdecho=0 để tắt tạm thời đối thoại của cad, vì nếu ko thì cad cứ đưa ra kết quả lằng nhằng đôi khi gây khó chịu mà còn làm chậm tộc độ chạy ct.

  • 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
Xin được giải thích :

(vl-load-com) : khởi động các hàm vl đó mà

(setvar "cmdecho" 0)

- Cái này cũng dễ hiểu lắm.

Bạn chạy Lisp với dòng này -> Mở thanh Command line quan sát (1)

Bạn chạy Lisp không có dòng này -> Mở thanh Command line quan sát (2)

Quan sát (1) và (2) => Rút ra kết luận

 

Sau đó chạy Lisp với dòng này nữa (setvar "cmdecho" 1)

Quan sát => Rút ra kết luận

Nhờ bạn q288 có cách nào thêm dòng lệnh,lít ban đưa chi có pick dc 1 vìng kín, mình muốn pich nhiều vùng kín rùi công dồn lại ra kết quả được ko,lít bạn gửi chi có pick vùng kín 1 lần thui rùi ra kết quả, thansk

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
q288    164
Nhờ bạn q288 có cách nào thêm dòng lệnh,lít ban đưa chi có pick dc 1 vìng kín, mình muốn pich nhiều vùng kín rùi công dồn lại ra kết quả được ko,lít bạn gửi chi có pick vùng kín 1 lần thui rùi ra kết quả, thansk

 

Vậy bạn xài cái này.

(defun c:dth()
 (vl-load-com)
 (setvar "cmdecho" 0)

 (if (not tln) (setq tln 100))
 (if (not tld) (setq tld 100))
 (if (not caot) (setq caot 1))
 (setq tln1 (getreal (strcat "\nCho ty le ngang < 1/" (rtos tln 2 0) " >: 1/"))
tld1 (getreal (strcat "\nCho ty le dung < 1/" (rtos tld 2 0) " >: 1/"))
caot1 (getreal (strcat "\nCao text < " (rtos caot 2 0) " >: ")))
 (if tln1 (setq tln tln1))
 (if tld1 (setq tld tld1))
 (if caot1 (setq caot caot1))

 (setq heso (/ tld tln)
file (open (strcat (getvar "dwgprefix") "Ketqua.txt") "a")
p (getpoint "\nChon diem ben trong da giac:")
el (entlast)
tong 0)

 (while p		
   (command "boundary" p "")
   (if (not (equal el (setq el1 (entlast))))
     (progn 
       (write-line (setq chu (rtos
  (setq dientich (* heso (vla-get-Area (vlax-ename->vla-object el1)))))) file)
(entdel el1)
(setq tong (+ tong dientich))
(entmakex (list '(0 . "TEXT") (cons 40 caot) (cons 10 p) (cons 1 chu))) ))      
   (setq p (getpoint "\nChon diem ben trong da giac:"))
 )
 (write-line (strcat "Tong = " (rtos tong)) file)
 (princ (strcat "Tong = " (rtos tong)))
 (setq p (getpoint "\nChon diem de ghi tong dien tich:"))
 (entmakex (list '(0 . "TEXT") (cons 40 caot) (cons 10 p) (cons 1 (rtos tong))))
 (close file)
 (setvar "cmdecho" 1)
 (princ)
)

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ờ bạn q288 có cách nào thêm dòng lệnh,lít ban đưa chi có pick dc 1 vìng kín, mình muốn pich nhiều vùng kín rùi công dồn lại ra kết quả được ko,lít bạn gửi chi có pick vùng kín 1 lần thui rùi ra kết quả, thansk

Không ý của mình như thế này bạn chọn liên tục vùng kín sau khi chọn xong tất cả các vùng kín click chuot phải pick ra kết quả luôn trên hình, chứ ko phải pick hình nào ra kết quả hình đó, mong ban hồi âm sớm 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
Tue_NV    3.841
Không ý của mình như thế này bạn chọn liên tục vùng kín sau khi chọn xong tất cả các vùng kín click chuot phải pick ra kết quả luôn trên hình, chứ ko phải pick hình nào ra kết quả hình đó, mong ban hồi âm sớm thanks

Tue_NV thấy cái này cũng đơn giản mà. Bạn nên tìm tòi để có thể sửa được cái đơn giản nhất :

Bỏ dòng :

(entmakex (list '(0 . "TEXT") (cons 40 caot) (cons 10 p) (cons 1 chu)))))

 

Nhưng đừng bỏ 2 dấu móc ở cuối nhé. 2 dấu này )) giữ 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
q288    164
Không ý của mình như thế này bạn chọn liên tục vùng kín sau khi chọn xong tất cả các vùng kín click chuot phải pick ra kết quả luôn trên hình, chứ ko phải pick hình nào ra kết quả hình đó, mong ban hồi âm sớm thanks

 

Bạn làm như bạn Tuệ hướng dẫn là đúng ý bạn 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
Tue_NV thấy cái này cũng đơn giản mà. Bạn nên tìm tòi để có thể sửa được cái đơn giản nhất :

Bỏ dòng :

(entmakex (list '(0 . "TEXT") (cons 40 caot) (cons 10 p) (cons 1 chu)))))

 

Nhưng đừng bỏ 2 dấu móc ở cuối nhé. 2 dấu này )) giữ lại

thanks ban hen mình cũng ko rành ve lít lắm,nên nhờ các bác phụ mình,chúc moi nguoi lam tot

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
trinhtuankx    0

Bạn thử cái này xem. Khi nhập tỷ lệ chỉ nhập 100, 200.. ko nhập 1/100, 1/200.

Kết quả đưa ra file ketqua.txt trong cùng thư mục với file cad.

Chú ý vì lệnh boundary chỉ làm đc với đa giác kín và zoom cho thấy đủ đa giác đó (trong tầm nhìn).

Có vòng lặp cho nên nếu muốn thoát thì enter.

(defun c:dth()  (vl-load-com)  (setvar "cmdecho" 0)    (if (not tln) (setq tln 100))  (if (not tld) (setq tld 100))  (if (not caot) (setq caot 1))  (setq tln1 (getreal (strcat "\nCho ty le ngang < 1/" (rtos tln 2 0) " >: 1/"))	tld1 (getreal (strcat "\nCho ty le dung < 1/" (rtos tld 2 0) " >: 1/"))	caot1 (getreal (strcat "\nCao text < " (rtos caot 2 0) " >: ")))  (if tln1 (setq tln tln1))  (if tld1 (setq tld tld1))  (if caot1 (setq caot caot1))    (setq heso (/ tld tln)	file (open (strcat (getvar "dwgprefix") "Ketqua.txt") "a")	p (getpoint "\nPick a internal point:")	el (entlast))    (while p	    	(command "boundary" p "")    (if (not (equal el (setq el1 (entlast))))      (progn     	(write-line (setq chu (rtos (* heso (vla-get-Area (vlax-ename->vla-object el1))))) file)	(entdel el1)	(entmakex (list '(0 . "TEXT") (cons 40 caot) (cons 10 p) (cons 1 chu))) ))          (setq p (getpoint "\nPick a internal point:"))  )  (close file)  (setvar "cmdecho" 1)  (princ))

 

Cái này bạn thay đổi tỷ lệ thì kết quả không thay đổ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

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  

×