Đến nội dung


Hình ảnh

cách chia đường cong thành đoạn không bằng nhau


  • Please log in to reply
10 replies to this topic

#1 ducchinh_dt

ducchinh_dt

    Chưa sử dụng CAD

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

Đã gửi 06 March 2010 - 01:21 PM

cách chia đường cong thành đoạn không bằng nhau? ai biết giúp mình với . lệnh DIV chỉ chia được thành những đoạn bằng nhau.hic
  • 1

#2 hoan2182

hoan2182

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2646 Bài viết
Điểm đánh giá: 832 (rất tốt)

Đã gửi 06 March 2010 - 07:02 PM

cách chia đường cong thành đoạn không bằng nhau? ai biết giúp mình với . lệnh DIV chỉ chia được thành những đoạn bằng nhau.hic


Lệnh MASURE để chia thành n đoạn có chiều dài cho trước, sẽ có "nửa... đoạn" lẻ.
  • 0

Gió đưa cây cải về trời

Rau răm ở lại chịu lời đắng cay...


#3 cactus

cactus

    biết pan

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

Đã gửi 01 July 2010 - 06:34 PM

Lệnh masure ở đâu hả bác? Sao em ko thấy?
  • 0

#4 anh.tuan

anh.tuan

    biết lệnh extend

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

Đã gửi 01 July 2010 - 07:19 PM

Lệnh masure ở đâu hả bác? Sao em ko thấy?

Lệnh Mesure bạn à.
  • 0

#5 1203

1203

    biết zoom

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

Đã gửi 01 July 2010 - 08:50 PM

Lệnh Mesure bạn à.

Không được bạn à, mình dùng cad 07
  • 0

#6 anh.tuan

anh.tuan

    biết lệnh extend

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

Đã gửi 01 July 2010 - 09:10 PM

Không được bạn à, mình dùng cad 07

thah that xin lỗi nghen: lệnh measure bạn à, lệnh tắt là me.
  • 0

#7 hoan2182

hoan2182

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2646 Bài viết
Điểm đánh giá: 832 (rất tốt)

Đã gửi 01 July 2010 - 10:06 PM

Draw >> Point >> Measure hoặc gõ lệnh tắt Me:
Command: _measure
Select object to measure: (chọn đường cong)
Specify length of segment or [Block]: 2 (Nhâp độ dài đoạn cong)

Command: me
MEASURE
Select object to measure:
Specify length of segment or [Block]: 2
Lệnh Measure có từ xa xưa chắc phải có từ CAD14 ( AutoCAD 2007 có 100%)
  • 0

Gió đưa cây cải về trời

Rau răm ở lại chịu lời đắng cay...


#8 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 02 July 2010 - 07:09 AM

cách chia đường cong thành đoạn không bằng nhau? ai biết giúp mình với . lệnh DIV chỉ chia được thành những đoạn bằng nhau.hic

Dùng lisp sau của bác SSG nhé. Mình tính hoàn chỉnh lisp này nhưng vẫn chưa làm đc.

(defun C:POC( / c p1 oldos ph k d1 dh p2) ;;;Point On Curve
(vl-load-com)
(setq
c (car (entsel "\nChon curve:"))
p1 (getpoint "\nDiem chuan tren curve:")
oldos (getvar "osmode")
)
(entmake (list (cons 0 "POINT") (cons 10 p1)))
(setvar "osmode" 512)
(setvar "pdmode" 34)
(setq
ph (getpoint p1 "\nDiem dinh huong tren curve:")
k (getreal "\nKhoang cach:")
d1 (vlax-curve-getDistAtPoint c p1)
dh (vlax-curve-getDistAtPoint c ph)
)
(if (> dh d1) (setq d2 (+ d1 k)) (setq d2 (- d1 k)))
(setq p2 (vlax-curve-getPointAtDist c d2))
(entmake (list (cons 0 "POINT") (cons 10 p2)))
(setvar "osmode" oldos)
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


Thực chất lisp này không chi 1 lúc nhiều đoạn được nhưng thao tác như sau bạn có thể làm nhiều lẩn để ra kết quả ưng ý.

-Tên lệnh POC.
-Chọn đường cong (thực chất thì mọi loại cuver).
-Chọn điểm chuẩn trên đường cong (điểm này nằm bất kỳ không nhất thiết là điểm đầu hay điểm cuối)
-Chọn điểm định hướng (nhằm xác định phía sẽ tính, từ điểm chuẩn).
-Nhập khoảng cách.
Lisp sẽ vẽ ra 1 point tại vị trí cách điểm chẩn khoảng cách vừa nhập nằm trên đường cong ở phía điểm định hướng.

Bạn cứ làm vài lần cới điểm chẩn là điểm mới vẽ ra và khoảng cách nhập vào là đáp ứng nhu cầu chứ ME và DIV không đáp ứng được đâu.
  • 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


#9 hoan2182

hoan2182

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2646 Bài viết
Điểm đánh giá: 832 (rất tốt)

Đã gửi 02 July 2010 - 09:19 AM

Lisp của bác SSG có cái hay điểm chuẩn làm bất kỳ không nhất thiết là điểm đầu và cuối. Muốn ME điểm chia nằm bất kỳ không phải là điểm đầu hay điểm cuối phải dùng thêm lệnh phụ trợ là BREAK và một vài lệnh thông thường nữa.
Tóm lại ME vẫn đáp ứng được trong trường hợp đơn giản. Trường hợp phức tạp dùng ME phải sử dụng thêm các lệnh phụ trơ sẽ tốn thời gian hơn.
Tuỳ từng trường hợp cụ thể, có thể dùng lisp hoặc dùng ME
  • 0

Gió đưa cây cải về trời

Rau răm ở lại chịu lời đắng cay...


#10 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 02 July 2010 - 06:52 PM

Dùng lisp sau của bác SSG nhé. Mình tính hoàn chỉnh lisp này nhưng vẫn chưa làm đc.

1- Ý bạn muốn hoàn chỉnh như thế nào? Nói chung, các hàm dạng vlax-curve-xxxx có đủ khả năng để đảm đương việc "chia chác" curve theo đủ các kiểu ta muốn. Thật ra thì ý của chủ topic này chưa rõ ràng: cách user nhập số liệu? Cách đáp ứng của chương trình? v.v...

2- Nói về DIV và ME, ssg xin nêu Bài toán trồng trụ rào như sau:
Đường ranh có chiều dài L. Người ta muốn trồng các trụ rào cách đều nhau, với khoảng cách dự kiến là k.
Số khoảng chia n = L/k nói chung không phải là số nguyên -> ta phải làm tròn n, sau đó tính lại kt = L/n, có sai khác chút ít với k dự kiến ban đầu. Bài toán này ssg gặp rất nhiều trong cơ khí: chia và khoan các lỗ cách đều nhau trên một đoạn chiều dài cho trước. Dùng ME trong trường hợp này không ổn vì nó sẽ chừa lại một đoạn cuối cùng "không giống ai"! Để dùng DIV phải qua các bước:
- Đo chiều dài L của curve
- Dự kiến khoảng cách k
- Tính n = L/k. Làm tròn n (có thể làm tròn tăng hoặc giảm tùy trường hợp)
- Dùng lệnh DIV với thông số n
Ssg vẫn thường dùng lisp sau, kết hợp ME và DIV. Bạn nào có nhu cầu tương tự bài toán "trồng trụ rào" nêu trên thử dùng xem:

;;;---------------------------------------------------------
(defun C:MED( / e kc L OK n kieu) ;;;Measure then Divide
(if (not kieu0) (setq kieu0 "Tang"))
(setq
e (car (entsel "\nChon doi tuong:"))
L (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e))
OK nil
)
(while (not OK)
(setq kc (getreal (strcat "\nChieu dai doi tuong L= " (rtos L) ". Nhap khoang cach du kien:")))
(if (>= kc L)
(alert "Khoang cach lon hon chieu dai doi tuong!")
(setq OK T)
)
)
(setq n (/ L kc))
(initget "Tang Giam")
(setq kieu (getkword (strcat "\nSo khoang chia tinh toan n= " (rtos n) ". Lam tron n [Tang/Giam] <" kieu0 ">:")))
(if (not kieu) (setq kieu kieu0) (setq kieu0 kieu))
(setq n (fix n))
(if (= kieu "Tang") (setq n (1+ n)))
(command "divide" e n)
(setvar "pdmode" 34)
(princ)
)
;;;---------------------------------------------------------

  • 0

#11 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 02 July 2010 - 07:45 PM

1- Ý bạn muốn hoàn chỉnh như thế nào? Nói chung, các hàm dạng vlax-curve-xxxx có đủ khả năng để đảm đương việc "chia chác" curve theo đủ các kiểu ta muốn. Thật ra thì ý của chủ topic này chưa rõ ràng: cách user nhập số liệu? Cách đáp ứng của chương trình? v.v...

Hồi Duy hỏi anh cái lisp này là muốn xào nấu thêm để ra thành lệnh me và div nhưng cho chọn điểm xuất phát và đối tượng rải không cần là block mà do mình chọn 1 nhóm đối tượng và điểm gốc nhóm đối tượng (Duy thường thiết kế cây xanh vỉa hè mà). Nhưng rồi bận với lại không hiểu rỏ lắm về các hàm vlax-. Cố thì dựa vào lisp của anh rồi viết thêm nhưng cũng lười nên bỏ trôi miết tới hôm nay.
  • 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