Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
22 replies to this topic

#1 hoangkimanh1607

hoangkimanh1607

    biết vẽ line

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

Đã gửi 22 July 2009 - 12:41 AM

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

#2 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 22 July 2009 - 10:58 AM

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.
  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#3 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 22 July 2009 - 12:29 PM

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

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#4 nataca

nataca

    biết lệnh adcenter

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

Đã gửi 22 July 2009 - 03:01 PM

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 đó
  • 0

#5 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 22 July 2009 - 04:13 PM

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.
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#6 q288

q288

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 209 Bài viết
Điểm đánh giá: 164 (tàm tạm)

Đã gửi 22 July 2009 - 04:25 PM

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.
  • 0

#7 nataca

nataca

    biết lệnh adcenter

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

Đã gửi 22 July 2009 - 04:32 PM

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:
  • 0

#8 q288

q288

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 209 Bài viết
Điểm đánh giá: 164 (tàm tạm)

Đã gửi 22 July 2009 - 05:48 PM

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.
  • 2

#9 hoangkimanh1607

hoangkimanh1607

    biết vẽ line

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

Đã gửi 24 July 2009 - 11:56 AM

Đú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
  • 0

#10 q288

q288

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 209 Bài viết
Điểm đánh giá: 164 (tàm tạm)

Đã gửi 24 July 2009 - 10:10 PM

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)
)

  • 2

#11 hoangkimanh1607

hoangkimanh1607

    biết vẽ line

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

Đã gửi 24 July 2009 - 11:33 PM

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é
  • 0

#12 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 25 July 2009 - 12:27 AM

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 "")
)

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

  • 1

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#13 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 25 July 2009 - 12:45 AM

Đ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
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#14 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 25 July 2009 - 02:59 AM

......
(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
  • 1

#15 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 25 July 2009 - 04:12 AM

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.
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#16 q288

q288

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 209 Bài viết
Điểm đánh giá: 164 (tàm tạm)

Đã gửi 25 July 2009 - 12:30 PM

Đ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.
  • 1

#17 hoangkimanh1607

hoangkimanh1607

    biết vẽ line

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

Đã gửi 29 July 2009 - 09:24 PM

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

#18 q288

q288

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 209 Bài viết
Điểm đánh giá: 164 (tàm tạm)

Đã gửi 30 July 2009 - 06:43 PM

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)
)

  • 0

#19 hoangkimanh1607

hoangkimanh1607

    biết vẽ line

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

Đã gửi 30 July 2009 - 11:58 PM

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

#20 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 31 July 2009 - 03:01 AM

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