Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
TRUNGNGAMY

Biến pl phức tạp thành đơn giản mà diện tích không đổi

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

Xin lỗi. Lần trước mình đã nói CA=CB nhưng khi up bị lỗi nên viết lại mình quên. Mình nghĩ có công thức hoặc PP dựng hình nào đó xác định cái là đc. Chứ thời học HH phẳng làm gì biết lặp

Ơ hay! Cái việc tìm điểm C này không có gì gọi là "lặp" cả Bác ạ.

Tam giác OAC biết trước 1 cạnh và 1 góc + điểm C di động trên 1 đường thẳng đã biết. Chuyển chúng qua hệ tọa độ Đề Các, tính S theo tọa độ (x,y) của C, cho S này bằng S kia, giải phương trình tìm ra (x,y), xong. Tuy nhiên công thức kết quả thì hơi... lòng thòng đấy.

Ở đây nói với điều kiện CA=CB.

Nói thêm: có thể chọn 1 trục trùng với OC => chỉ tìm mỗi x hoặc 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

Xin lỗi. Lần trước mình đã nói CA=CB nhưng khi up bị lỗi nên viết lại mình quên. Mình nghĩ có công thức hoặc PP dựng hình nào đó xác định cái là đc. Chứ thời học HH phẳng làm gì biết lặp

Gọi a là góc chắn cung AOB, a tính bằng radian

Gọi R là bán kính cung AB,

OC x AB = a x R x R

 

-> Bác có thể tính được OC

-> Biết tọa độ điểm O, biết góc OC nghiêng so với phương ngang => Tọa độ C

  • 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

Mình chạy tre6n cad2006 nó báo như vậy, bạn xem lại giúp

Command: xapxi2

 

Cho duong chinh: ; error: no function definition: CDRR

 

Command:

...Xin lỗi nhé. Nó đây, Bạn load lại cả 3 hàm này!

 

 

 

 

(defun cdrr(ds1 / dsbo)

(setq dsbo1 (reverse (cdr (reverse ds1))))

)

 

(defun Dientich_3canh(la lb lc / p)

(setq p (/ (+ la lb lc) 2) Dientich (sqrt (* p (- p la)(- p lb)(- p lc))))

)

(defun c:Xapxi2()

(setvar "osmode" 0) (setvar "cmdecho" 0)

(setq e1 (car (entsel "\nCho duong chinh: ")))

(setq ds1 (acet-pline-segment-list e1)

ds2 (cdrr (cadddr ds1))

d1 (car (car ds1)) d2 (cadr (car ds1)) bulge1 (car ds2)

ts1 (acet-geom-pline-arc-info d1 d2 bulge1)

tamO (car ts1) bkR (cadr ts1) Ldai (cadddr ts1) LD (last ts1)

goc (angle tamO (list (/ (+ (car d1)(car d2)) 2) (/ (+ (cadr d1)(cadr d2)) 2)))

deltaL 1.0 l1 bkR Nua_goctamO (abs (/ (caddr ts1) 2))

)

(command "Undo" "be")

(While (> deltaL 0.0001)

(setq l1 (+ l1 deltaL) d3 (polar tamO goc l1))

(command "line" d2 d3 "")

(setq e2 (entlast) giao (acet-geom-intersectwith e1 e2 0))

(If (< (distance d2 (car giao)) 0.000001)(setq d4 (cadr giao)) (setq d4 (car giao)))

(setq goc1 (- (angle tamO d2) (angle tamO d4)))

(If (> goc1 Nua_goctamO)(setq goc1 (- (* 2 pi) goc1)))

(setq S1a (* goc1 bkR bkR 0.5)

S1b (Dientich_3canh bkR bkR (distance d2 d4))

S1 (- S1a S1b)

S2a (- (* Nua_goctamO bkR bkR 0.5) S1a)

S2b (Dientich_3canh bkR l1 (distance d3 d4))

S2 (- S2b S2a)

)

(entdel e2)

(If (< s1 s2)

(Progn

(setq l1 (- l1 deltaL) deltaL (/ deltaL 10.0))

(Print (list s1 s2 deltaL))

)

)

)

(command "line" d2 d3 "")

(command "Undo" "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

...Xin lỗi nhé. Nó đây, Bạn load lại cả 3 hàm này!

 

 

 

 

(defun cdrr(ds1 / dsbo)

(setq dsbo1 (reverse (cdr (reverse ds1))))

)

 

(defun Dientich_3canh(la lb lc / p)

(setq p (/ (+ la lb lc) 2) Dientich (sqrt (* p (- p la)(- p lb)(- p lc))))

)

(defun c:Xapxi2()

(setvar "osmode" 0) (setvar "cmdecho" 0)

(setq e1 (car (entsel "\nCho duong chinh: ")))

(setq ds1 (acet-pline-segment-list e1)

ds2 (cdrr (cadddr ds1))

d1 (car (car ds1)) d2 (cadr (car ds1)) bulge1 (car ds2)

ts1 (acet-geom-pline-arc-info d1 d2 bulge1)

tamO (car ts1) bkR (cadr ts1) Ldai (cadddr ts1) LD (last ts1)

goc (angle tamO (list (/ (+ (car d1)(car d2)) 2) (/ (+ (cadr d1)(cadr d2)) 2)))

deltaL 1.0 l1 bkR Nua_goctamO (abs (/ (caddr ts1) 2))

)

(command "Undo" "be")

(While (> deltaL 0.0001)

(setq l1 (+ l1 deltaL) d3 (polar tamO goc l1))

(command "line" d2 d3 "")

(setq e2 (entlast) giao (acet-geom-intersectwith e1 e2 0))

(If (< (distance d2 (car giao)) 0.000001)(setq d4 (cadr giao)) (setq d4 (car giao)))

(setq goc1 (- (angle tamO d2) (angle tamO d4)))

(If (> goc1 Nua_goctamO)(setq goc1 (- (* 2 pi) goc1)))

(setq S1a (* goc1 bkR bkR 0.5)

S1b (Dientich_3canh bkR bkR (distance d2 d4))

S1 (- S1a S1b)

S2a (- (* Nua_goctamO bkR bkR 0.5) S1a)

S2b (Dientich_3canh bkR l1 (distance d3 d4))

S2 (- S2b S2a)

)

(entdel e2)

(If (< s1 s2)

(Progn

(setq l1 (- l1 deltaL) deltaL (/ deltaL 10.0))

(Print (list s1 s2 deltaL))

)

)

)

(command "line" d2 d3 "")

(command "Undo" "e")

)

Kg đc bạn ạ. Mình vẽ thử pl gồm 1 hoặc nhiều cung tròn bk khoảng 15, 20, hở hay đóng nó đều cho ra 1 cái line rồi thôi.

 

Cám ơn hai bác gợi ý cách tìm điểm C. Để mình viết xong phần cung tròn sẽ tham khảo các bác về các TH khá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

Em thấy các bác đưa ra cách giải quyết hình học hợp lý quá, mà hok biết các bác có cần rào chắn cho C hoặc cung nó giống như cái hình kia hok?? Chẳng hạn cung nó là nửa già cái bánh thì hok biết phần đỏ là phần nào, vàng là phần nào nữa :((

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

Gọi a là góc chắn cung AOB, a tính bằng radian

Gọi R là bán kính cung AB,

OC x AB = a x R x R

 

-> Bác có thể tính được OC

-> Biết tọa độ điểm O, biết góc OC nghiêng so với phương ngang => Tọa độ C

Qúa hay. Đúng là các bác đầu óc tinh nhanh thật. Hôm nọ mình muốn tìm cách tính cái phần diện tích chắn bởi dây cung AB, phải tìm quyển sổ tay toán học mới biết nó gọi là diện tích hình viên phân.

Như vây bài toán "Biến pl phức tạp thành đơn giản mà diện tích kg đổi" với TH là cung tròn về mặt ý tưởng xem như đã xong. Do điểm C đc xác định bằng công thức nên sai số về diện tích gần như bằng 0 (chỉ còn sai số tính toán).

Goi H là hình chiếu của C lên cung AB. CH chính là khoảng cách lớn nhất từ đường mô phỏng đến đg cong gốc. Ứng với CH nhập vào ta tìm đc AB, từ AB tìm đc số cung AB cần chia cho một cung tròn thật tạo nên cái pl gốc. Ứng với mỗi cung tròn thật có trong pl ta sẽ tìm đc AB lớn nhất theo khoảng cách <=CH từ đó vẽ lại cái pl (có cung tròn) thành pl toàn line, có độ lệch nhỏ hơn hoặc bằng số liệu nhập vào và diện tích gần như kg đổi.

Các bạn thấy mình viết hơi dài dòng thì phải. Tại vì mình chưa hẳn đã viết đc nhanh cái ý tưởng đó thành lisp vì kiến thức đã quên nhiều rồi.

 

Với ý tưởng trên, phiền các bạn góp ý thêm các TH khác của pl nên xử lý thế nào và có ý tưởng nào khác nhanh hơn chăng. Cám ơn các bạ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

Em thấy các bác đưa ra cách giải quyết hình học hợp lý quá, mà hok biết các bác có cần rào chắn cho C hoặc cung nó giống như cái hình kia hok?? Chẳng hạn cung nó là nửa già cái bánh thì hok biết phần đỏ là phần nào, vàng là phần nào nữa :((

Nửa già cái bánh thì vẫn tồn tại điểm C mà 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

Qúa hay. Đúng là các bác đầu óc tinh nhanh thật. Hôm nọ mình muốn tìm cách tính cái phần diện tích chắn bởi dây cung AB, phải tìm quyển sổ tay toán học mới biết nó gọi là diện tích hình viên phân.

Như vây bài toán "Biến pl phức tạp thành đơn giản mà diện tích kg đổi" với TH là cung tròn về mặt ý tưởng xem như đã xong. Do điểm C đc xác định bằng công thức nên sai số về diện tích gần như bằng 0 (chỉ còn sai số tính toán).

Goi H là hình chiếu của C lên cung AB. CH chính là khoảng cách lớn nhất từ đường mô phỏng đến đg cong gốc. Ứng với CH nhập vào ta tìm đc AB, từ AB tìm đc số cung AB cần chia cho một cung tròn thật tạo nên cái pl gốc. Ứng với mỗi cung tròn thật có trong pl ta sẽ tìm đc AB lớn nhất theo khoảng cách <=CH từ đó vẽ lại cái pl (có cung tròn) thành pl toàn line, có độ lệch nhỏ hơn hoặc bằng số liệu nhập vào và diện tích gần như kg đổi.

Các bạn thấy mình viết hơi dài dòng thì phải. Tại vì mình chưa hẳn đã viết đc nhanh cái ý tưởng đó thành lisp vì kiến thức đã quên nhiều rồi.

 

Với ý tưởng trên, phiền các bạn góp ý thêm các TH khác của pl nên xử lý thế nào và có ý tưởng nào khác nhanh hơn chăng. Cám ơn các bạn

1. Em chỉ đơn giản để chứng minh bài toán theo con đường ngắn nhất.

Tỷ như bác có thể chứng minh được tứ giác (đa giác lồi và đa giác lõm)có 2 đường chéo vuông góc thì diện tích của nó bằng 1/2 tích 2 đường chéo. Còn diện tích hình quạt thì em không cần nhớ. Em nhớ mỗi diện tích hình tròn là đủ. Vì bản thân hình tròn có góc ở tâm bằng 360 độ còn hình quạt thì chẳng qua có góc ở tâm < 360 độ mà thôi.

 

2. Bác phải viết điều kiện khống chế đoạn CH nhập vào.

Dựa vào cung AB cho trước, ta có thể tính được khoảng cách CH max = OC max - R.

Như vậy là đoạn Line mô phỏng ấy có 1 điểm nằm trên cung, điểm còn lại chính là C phải không bác? Nếu ý bác là như thế thì ý tưởng trên hoàn toàn có cơ sở để thực hiện được, còn như hình vẽ đầu mà bác đưa ra thì có nhiều nghiệm quá... :rolleyes:

Diện tích theo cách tính mà em đưa ra là không đổi, sai số do tính toán số lẻ thập phân mà thôi và độ lệch bao giờ cũng <= CH mà bác nhập vào

 

@KetXu: C bao giờ cũng di chuyển trên cung thực AB. Cách tính trên của Tue_NV ứng với góc chắn cung AB nằm trong khoảng từ 0 -> 360 độ luôn. Bạn có thể kiểm chứng. Mình đã chứng minh. Không biết "rào chắn " mà bạn nói để "chắn" gì nhỉ?

 

Chúc mọi người 1 buổi sáng tốt là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

Vì e chưa hiểu khi cung nó ôm cả điểm O thì phần vàng là phần nào, phần đỏ là phần nào thôi 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

Kg đc bạn ạ. Mình vẽ thử pl gồm 1 hoặc nhiều cung tròn bk khoảng 15, 20, hở hay đóng nó đều cho ra 1 cái line rồi thôi.

 

Cám ơn hai bác gợi ý cách tìm điểm C. Để mình viết xong phần cung tròn sẽ tham khảo các bác về các TH khác

...Đúng rồi đó do gấp quá nên Mình chưa hoàn chỉnh. Bạn lấy đối xứng qua cung tròn đó là đươc cái phải tìm. Mình nghĩ phần việc còn lại nhờ Bạn tiếp sức, đoạn thẳng đó chính là AC, BC thì lấy đối xứng. Bạn thấy đúng ý của Bạn thì Mình bổ sung thêm. Mình chỉ lập với 1 Poly chuyển từ arc qua đơn độc và từ đó mới vận dụng tiếp tùy tình hình cụ thể. Bạn kiểm tra diện tích thì sẽ thấy các diện tích bù nhau...

Như vậy đây là kết quả của xấp xỉ bằng 2 đoạn, Mình đã viết trường hợp = 3 đoạn nhưng để Bạn xem đã đạt yêu cầu trường hượp 2 đoạn này chưa?

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 rồi đó do gấp quá nên Mình chưa hoàn chỉnh. Bạn lấy đối xứng qua cung tròn đó là đươc cái phải tìm. Mình nghĩ phần việc còn lại nhờ Bạn tiếp sức, đoạn thẳng đó chính là AB, BC thì lấy đối xứng. Bạn thấy đúng ý của Bạn thì Mình bổ sung thêm. Mình chỉ lập với 1 Poly chuyển từ arc qua đơn độc và từ đó mới vận dụng tiếp tùy tình hình cụ thể. Bạn kiểm tra diện tích thì sẽ thấy các diện tích bù nhau...

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 rồi đó do gấp quá nên Mình chưa hoàn chỉnh. Bạn lấy đối xứng qua cung tròn đó là đươc cái phải tìm. Mình nghĩ phần việc còn lại nhờ Bạn tiếp sức, đoạn thẳng đó chính là AC, BC thì lấy đối xứng. Bạn thấy đúng ý của Bạn thì Mình bổ sung thêm. Mình chỉ lập với 1 Poly chuyển từ arc qua đơn độc và từ đó mới vận dụng tiếp tùy tình hình cụ thể. Bạn kiểm tra diện tích thì sẽ thấy các diện tích bù nhau...

Như vậy đây là kết quả của xấp xỉ bằng 2 đoạn, Mình đã viết trường hợp = 3 đoạn nhưng để Bạn xem đã đạt yêu cầu trường hượp 2 đoạn này chưa?

Cám ơn bạn. Không phải mình quyết định chia 2 hay 3 đoạn bạn ạ. Chính khoảng cách CH (độ lệch lơn nhất của đoạn thẳng và đường cong) nhập vào cùng với độ lớn bk và độ dài cung tròn quyết định phải chia bao nhiêu đọan AB như vậy. Bài toán này mình chưa viết ra lisp cụ thể nên chưa nói rõ cho bạn đc. Nếu bạn có thể viết lisp nhanh thì bạn viết giúp mình. Một lần nữa cám ơn bạ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

Cám ơn bạn. Không phải mình quyết định chia 2 hay 3 đoạn bạn ạ. Chính khoảng cách CH (độ lệch lơn nhất của đoạn thẳng và đường cong) nhập vào cùng với độ lớn bk và độ dài cung tròn quyết định phải chia bao nhiêu đọan AB như vậy. Bài toán này mình chưa viết ra lisp cụ thể nên chưa nói rõ cho bạn đc. Nếu bạn có thể viết lisp nhanh thì bạn viết giúp mình. Một lần nữa cám ơn bạn

Bạn xem thử kết qủa ở file này xem. Thấy bài toán Bạn đưa ra hay nên Mình làm cho vui thôi! Mong là nó có ích cho Bạn.

Nếu Bạn thấy tạm ổn Mình sẽ up chương trình lên nhé!

http://www.cadviet.com/upfiles/3/xapxi_1.dwg

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 bạn. Không phải mình quyết định chia 2 hay 3 đoạn bạn ạ. Chính khoảng cách CH (độ lệch lơn nhất của đoạn thẳng và đường cong) nhập vào cùng với độ lớn bk và độ dài cung tròn quyết định phải chia bao nhiêu đọan AB như vậy. Bài toán này mình chưa viết ra lisp cụ thể nên chưa nói rõ cho bạn đc. Nếu bạn có thể viết lisp nhanh thì bạn viết giúp mình. Một lần nữa cám ơn bạn

xapxi.png

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 xem thử kết qủa ở file này xem. Thấy bài toán Bạn đưa ra hay nên Mình làm cho vui thôi! Mong là nó có ích cho Bạn.

Nếu Bạn thấy tạm ổn Mình sẽ up chương trình lên nhé!

http://www.cadviet.com/upfiles/3/xapxi_1.dwg

Chắc là bạn up chương trình lên để mình và mọi người cùng tham khảo. Kg hiểu sao cái máy của mình bị lỗi gì mà khi down file dwg của bạn nó chỉ hiện lên màn hình toàn chữ V

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ắc là bạn up chương trình lên để mình và mọi người cùng tham khảo.

Hi!

Bạn chạy thử xem sao. Mình dự đoán về điều kiện chièu dài cạnh và độ lệch như vậy không biết có đúng không, sai số về diện tích là rất nhỏ.

Chương trình vẫn chưa đẹp lắm, chỉ cốt phục vụ được công việc. Nếu được thì Bjan giới thiệu về toàn bộ vấn đề thì có thể viết hoàn thiện để thân thiện với người dùng hơn. Ví dụ chắc nó phải là 1 Poly đầy đủ các loại chứ không như ở đây chỉ là 1 poly duy nhất v.v...

Bạn xem rồi góp ý nhé!

Chúc may mắn!

 

(defun cXapxi_22(e1 d1a d2a)

(setq l1 (vlax-curve-getdistatpoint e1 d1a)

l2 (vlax-curve-getdistatpoint e1 d2a)

d0a (vlax-curve-getPointAtDist e1 (* 0.5 (+ l1 l2)))

)

(command "ARC" d1a d0a d2a)(command "PEDIT" (entlast) "Y" "")

(setq e11 (entlast) ds1 (acet-pline-segment-list e11)

ds2 (cdrr (cadddr ds1))

d1 (car (car ds1)) d2 (cadr (car ds1)) bulge1 (car ds2)

ts1 (acet-geom-pline-arc-info d1 d2 bulge1)

tamO (car ts1) bkR (cadr ts1) Ldai (cadddr ts1) LD (last ts1)

goc (angle tamO d0a)

l1 bkR Nua_goctamO (abs (/ (caddr ts1) 2))

deltaL 1.0

)

(If (< Nua_goctamO (/ pi 2))(setq DeltaL (* bkR (- (/ 1 (cos Nua_goctamO)) 1) 0.1)))

 

(entdel e11)

(While (> deltaL 0.0001)

(setq l1 (+ l1 deltaL) d3 (polar tamO goc l1))

(command "line" d2 d3 "")

(setq e2 (entlast) giao (acet-geom-intersectwith e1 e2 0))

(If (< (distance d2 (car giao)) 0.000001)(setq d4 (cadr giao)) (setq d4 (car giao)))

(setq goc1 (- (angle tamO d2) (angle tamO d4)))

(If (> goc1 Nua_goctamO)(setq goc1 (- (* 2 pi) goc1)))

(setq S1a (* goc1 bkR bkR 0.5)

S1b (Dientich_3canh bkR bkR (distance d2 d4))

S1 (- S1a S1b)

S2a (- (* Nua_goctamO bkR bkR 0.5) S1a)

S2b (Dientich_3canh bkR l1 (distance d3 d4))

S2 (- S2b S2a)

)

(entdel e2)

(If (< s1 s2)(setq l1 (- l1 deltaL) deltaL (/ deltaL 10.0)))

)

(setq deltamax (- (distance d3 tamO) bkR))

)

 

(defun Mid_Cung(d1 d2 bulge)

(setq diem (polar (Mid0 d1 d2) (- (angle d1 d2) (/ pi 2)) (* bulge (distance d1 d2) 0.5)))

)

 

(Defun Mid0(A B)

(setq diemgiua (list (* 0.5 (+ (car a)(car B))) (* 0.5 (+ (cadr a)(cadr B)))))

)

 

(defun c:Xapxi_22()

(vl-load-com)

(setvar "osmode" 512) (setvar "cmdecho" 0)

(setq e1 (car (entsel "\nCho Cung duong tron: "))

dsloai (entget e1)

)

(If (> (cdr (assoc 42 dsloai)) 0.001)

(Progn

(setq ds1z (acet-pline-segment-list e1)

d1a (car (car ds1z)) d2a (cadr (car ds1z)) b0 (car (last ds1z))

dax (Mid_Cung d1a d2a b0) day (Mid0 d1a d2a)

)

(command "Mirror" e1 "" dax day "Y")

(setq e1 (entlast))

)

)

(setq dskq '()

ds1z (acet-pline-segment-list e1)

d1a (car (car ds1z)) d2a (cadr (car ds1z)) b0 (car (last ds1z))

dax (Mid_Cung d1a d2a b0)

Lcung (* 2 (vlax-curve-getdistatpoint e1 dax))

)

(setq dkLdai 26.5 dkCuc 1.47

chu1 (Strcat "\nCung dai: " (rtos Lcung 2 1) " . Dieu kien Lmax: ")

dkLdai (getreal chu1)

dkCuc (getreal "\nDo lech CHmax: ")

)

(setq ncung (fix (/ Lcung dkLdai 2)) deltamax 1000.0 S0 (vlax-curve-getArea e1))

(setvar "osmode" 0)

(While (> deltamax dkcuc)

(setq ncung (1+ ncung) d1b (vlax-curve-getPointAtDist e1 (/ Lcung ncung)))

(cXapxi_22 e1 d1a d1b)

(Princ (strcat "\nLcanh = " (rtos (distance d2 d3) 2 2) ". Do lech CH = " (rtos deltamax 2 3) " Ndoan = " (itoa ncung)))

)

(setq gocCung (- (angle tamO d1a)(angle tamO d2a)))

(If (< goccung 0)(setq goccung (+ goccung pi pi)))

(setq gocCung (/ goccung ncung)

l3 (distance tamO d3) gocdau (angle tamO d3)

dskq (list d2 d3) i 1

)

(repeat (1- ncung)

(setq dskq (append dskq (list (polar tamO (+ (/ gocCung 2)(- gocdau (* i gocCung))) bkR))

(list (polar tamO (- gocdau (* i gocCung)) l3))

)

i (1+ i)

)

)

(setq dskq (append dskq (list d2a)))

(acet-pline-make (list dskq))

(setq S1 (vlax-curve-getArea (entlast))

chu1 (strcat "\nSban dau = " (rtos s0 2 3) " Sxap xi = " (rtos s1 2 3))

chu1 (strcat chu1 "\nSai so % = " (rtos (/ (- s1 s0) s0 0.01) 2 3))

)

(Princ (strcat "\nLcanh = " (rtos (distance d2 d3) 2 2) ". Do lech DeltaH = " (rtos deltamax 2 3)))

(Princ chu1)(Princ)

)

 

Chương trình chạy là xapxi_22

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ắc là bạn up chương trình lên để mình và mọi người cùng tham khảo.

Không hiểu sao lại có mặt cười chắc trùng ký tự. Bạn download ở đây cho chắc!

http://www.cadviet.com/upfiles/3/xapxi_22.lsp

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

Vì "B )" trùng với ký hiệu mặt cười, nên nếu bạn đặt biến là B thì tốt nhất là cho vào tag code :)

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

Không hiểu sao lại có mặt cười chắc trùng ký tự. Bạn download ở đây cho chắc!

http://www.cadviet.com/upfiles/3/xapxi_22.lsp

Mình vẽ cung tròn 90độ bk 25. Khi chạy nó báo lỗi. Bạn xem lại giúp nhé.

Command: XAPXI_22

Cho Cung duong tron: ; error: bad argument type: fixnump: nil

Command:

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

Gọi a là góc chắn cung AOB, a tính bằng radian

Gọi R là bán kính cung AB,

OC x AB = a x R x R

 

-> Bác có thể tính được OC

-> Biết tọa độ điểm O, biết góc OC nghiêng so với phương ngang => Tọa độ C

Giả sử biết CH (H là hình chiếu của C lên cung AB) (=> biết OC) và R, Tue_NV và các bạn có thể giúp mình xác định AB (hoặc a) nhanh nhất bằng cách nào để vẫn đảm bảo OC x AB = a x R x R. Cám ơ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

Mình vẽ cung tròn 90độ bk 25. Khi chạy nó báo lỗi. Bạn xem lại giúp nhé.

Command: XAPXI_22

Cho Cung duong tron: ; error: bad argument type: fixnump: nil

Command:

-Bạn chưa đổi Arc thành Poly đó!

-Nếu chạy sai Bạn chạy lần thứ hai thử xem!

-Bạn load chạy lại thử xem cái này Mình đã điều chỉnh theo như các Bạn trên diễn đàn không cần thử dần Diện tích nữa!

Lệnh là: xapxi_22

http://www.cadviet.com/upfiles/3/xapxi_22_1.lsp

:) Chúc may mắn, vất vả bạn nhỉ!

À Bạn nói sai số 4cm là ở trên thực tế ngoài lô đất hay là trong cad, thực tế mỗi lô đất thì thường yêu cầu chiều dài và độ lêch đó bằng bao 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

Giả sử biết CH (H là hình chiếu của C lên cung AB) (=> biết OC) và R, Tue_NV và các bạn có thể giúp mình xác định AB (hoặc a) nhanh nhất bằng cách nào để vẫn đảm bảo OC x AB = a x R x R. Cám ơn

OC= OA * (FA / SIN(FA))

Với FA là 1nửa góc ở tâm = góc AOC đó Bạn

OA=R

...

Bạn hỏi xác định AB là xác định cái gì,A và B là 2 điểm đầu mình đã biết rồi mà, có phải không? Mình chỉ đi tìm điểm C thôi mà.

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

OC= OA * (FA / SIN(FA))

Với FA là 1nửa góc ở tâm = góc AOC đó Bạn

OA=R

...

Bạn hỏi xác định AB là xác định cái gì,A và B là 2 điểm đầu mình đã biết rồi mà, có phải không? Mình chỉ đi tìm điểm C thôi mà.

Cái lisp của bạn đã chạy đúng ý mình rồi. Tuy nhiên, lmax là cái bạn phải tính ra sao cho ứng với CHmax sẽ có lmax lớn nhất, mục đích để cho pl mới tạo ra có ít điểm nhất.

Độ lệch 4cm là sai số có thể chấp nhận đc khi chuyển một điểm ra thực địa. Tùy loại công trình, đôi lúc nó đòi hỏi cao hơn.

Đoạn AB cần tìm mà mình hỏi hình như chính là 2 lần lmax trong lisp của bạn đấy (vì mình chưa hiểu lisp của bạn nên kg chắc). Biết R và CHmax tính ra đc OC(=OH+CHmax) và AB (là đoạn dây cung chắn tạo nên hai đoạn thẳng đối xứng AC và BC).

Như ban đầu bài toán mình đặt ra là trong một pl phức tạp. Bạn đã giải quyết trong arc rồi. Bây giờ bạn giúp mình liên kết nó vào trong pl có line và arc. Sau đó bạn nghĩ cách viết trong một pl phức tạp giúp.

Bạn hãy phân biệt TH nào giải quyết đc TH nào kg để người sd biết. Nếu giải quyết đc trong mọi TH thì rất tốt.

Mình đã từng lập trình nên biết đôi lúc rất cam go, mất thời gian và nhức đầu. Bạn lại viết miễn phí nên thật lòng rất cám ơn bạ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

Cái lisp của bạn đã chạy đúng ý mình rồi. Tuy nhiên, lmax là cái bạn phải tính ra sao cho ứng với CHmax sẽ có lmax lớn nhất, mục đích để cho pl mới tạo ra có ít điểm nhất.

Độ lệch 4cm là sai số có thể chấp nhận đc khi chuyển một điểm ra thực địa....

Mình đã từng lập trình nên biết đôi lúc rất cam go, mất thời gian và nhức đầu. Bạn lại viết miễn phí nên thật lòng rất cám ơn bạn

Hi! Chào 1 tuần mới tốt lành!

Cám ơn Bạn đã có lời động viên...

Chà ngoài thực địa mà lệch 4cm thì phải có nhiều đỉnh lắm để xấp xỉ 1 cung tròn. Bạn có thể up lên 1 thửa đất cụ thể để Mình dễ hình dung về kích thước của bài toán được k? Mình đã viết hoàn chỉnh nhưng có lẽ phần điều kiện đưa ra về Lmax và độ lệch chưa đúng với ý Bạn. Mình sẽ điều chỉnh lại điều kiện ràng buộc qua những thông tin Bạn vừa đưa đến.

 

http://www.cadviet.com/upfiles/3/diachinh_1.lsp

 

Ghi chú: Lệnh là: Diachinh_1

-Bạn chạy thử nếu có trường hợp bị tắc thì up file dwg lên để Mình test thử xem. Lập trình nó cam go ở chỗ như Bạn nói phải hết mọi trường hợp đó. Phải test thật nhiều mẫu thì mới hoàn thiện được, :) có chương trình Mình lập 2-3 năm mà test vẫn chưa hết đó.

-Mình cũng nhờ các Bạn trên diễn đàn cùng test để góp ý luôn nhé, các Bạn đừng chê, gấp quá nên viết nhiều đoạn lũng cũng không tối ưu, chỉ mong chạy tốt rồi sẽ soát xét lại chương trình cho đẹp khong có đoạn thừa...

  • 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

Hi! Chào 1 tuần mới tốt lành!

Cám ơn Bạn đã có lời động viên...

Chà ngoài thực địa mà lệch 4cm thì phải có nhiều đỉnh lắm để xấp xỉ 1 cung tròn. Bạn có thể up lên 1 thửa đất cụ thể để Mình dễ hình dung về kích thước của bài toán được k? Mình đã viết hoàn chỉnh nhưng có lẽ phần điều kiện đưa ra về Lmax và độ lệch chưa đúng với ý Bạn. Mình sẽ điều chỉnh lại điều kiện ràng buộc qua những thông tin Bạn vừa đưa đến.

 

http://www.cadviet.com/upfiles/3/diachinh_1.lsp

 

Ghi chú: Lệnh là: Diachinh_1

-Bạn chạy thử nếu có trường hợp bị tắc thì up file dwg lên để Mình test thử xem. Lập trình nó cam go ở chỗ như Bạn nói phải hết mọi trường hợp đó. Phải test thật nhiều mẫu thì mới hoàn thiện được, :) có chương trình Mình lập 2-3 năm mà test vẫn chưa hết đó.

-Mình cũng nhờ các Bạn trên diễn đàn cùng test để góp ý luôn nhé, các Bạn đừng chê, gấp quá nên viết nhiều đoạn lũng cũng không tối ưu, chỉ mong chạy tốt rồi sẽ soát xét lại chương trình cho đẹp khong có đoạn thừa...

Chào bạn. Lisp chạy quá tốt. Nó thiếu cái hàm cdrr và mình đã trích trong cái lisp bạn đã gởi lần trước. Bạn viết rất nhanh và ngắn gọn. Mình đã xem qua nhưng cũng chưa hiểu lắm, mình thiếu một số kiến thức về vl, mình sẽ nghiên cứu sau, hy vọng sẽ học hỏi đc nhiều ở các bạn.

Hôm trước mình thấy bạn viết khi đối tượng là spline tuy chưa đúng ý mình lắm. Bạn có thể giúp mình viết lại bài toán tương tự như arc cho một spline kg. Một là thửa đất vẫn có thể là spline, hai là mình muốn học hỏi bạn viết về spline. Mình kg hiểu lắm về cấu trúc của spline. Cái hôm nọ bạn viết về spline mình thấy nó có nhiều ý tưởng có thể vận dụng cho những TH khác.

Cám ơn bạn rất 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

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  

×