Đến nội dung


Hình ảnh
- - - - -

Hiệu chỉnh chiều dài của đoạn thẳng !!!


  • Please log in to reply
8 replies to this topic

#1 quangthanhdu

quangthanhdu

    biết vẽ rectang

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

Đã gửi 24 November 2010 - 11:20 AM

Em muốn làm cho các đoạn thẳng dài ra hoặc ngắn lại (như trong bản vẽ, từ hình 1 có thể tạo thành hình 2 hoặc hình 3), có cách nào làm nhanh được việc này không?
Chân thành cảm ơn!!!

http://up.4share.vn/...366666763/chieu dai coc.dwg
  • 0

#2 w1nDream

w1nDream

    biết lệnh ddedit

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

Đã gửi 24 November 2010 - 01:41 PM

Em muốn làm cho các đoạn thẳng dài ra hoặc ngắn lại (như trong bản vẽ, từ hình 1 có thể tạo thành hình 2 hoặc hình 3), có cách nào làm nhanh được việc này không?
Chân thành cảm ơn!!!

http://up.4share.vn/...366666763/chieu dai coc.dwg


Bạn hãy dùng lệnh Len = Lengthen với tham số f.
:leluoi:
  • 0
__Tâm tựa lưu thủY__
Vi nhân nan

#3 quangthanhdu

quangthanhdu

    biết vẽ rectang

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

Đã gửi 24 November 2010 - 03:11 PM

Có cái lisp nào làm nhanh việc này không hả máy anh? chứ dùng tham số f chọn thì trong trường hợp đoạn cong thì không khả thi.
  • 0

#4 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 24 November 2010 - 05:57 PM

Có cái lisp nào làm nhanh việc này không hả máy anh? chứ dùng tham số f chọn thì trong trường hợp đoạn cong thì không khả thi.

Bạn sử dụng cái này thử nhé :

(defun c:Clen(/ ss pl cdai ent pcl pch)
(vl-load-com)
(if (setq ss (ssget '((0 . "LINE") (8 . "2"))))
(progn
(setq i -1
pl (car(entsel "\n Pick vao tim duong PLINE :"))
cdai (getreal "\n Khoang cach can thay doi :")
)
(while (setq ent (ssname ss (setq i (1+ i))))
(setq pcl (vlax-curve-getClosestPointTo pl (vlax-curve-getstartpoint ent)))
(if (< (distance (vlax-curve-getstartpoint ent) pcl)
(distance (vlax-curve-getendpoint ent) pcl)
)
(setq pch (vlax-curve-getstartpoint ent))
(setq pch (vlax-curve-getendpoint ent))
)
(vl-cmdf "LENGTHEN" "de" cdai pch "")
)
))
(princ)
)

  • 2

#5 conmuaha

conmuaha

    biết vẽ ellipse

  • Members
  • PipPip
  • 50 Bài viết
Điểm đánh giá: 18 (tàm tạm)

Đã gửi 24 November 2010 - 08:28 PM

Bạn sử dụng cái này thử nhé :


(defun c:Clen(/ ss pl cdai ent pcl pch)
(vl-load-com)
(if (setq ss (ssget '((0 . "LINE") (8 . "2"))))
(progn
(setq i -1
pl (car(entsel "\n Pick vao tim duong PLINE :"))
cdai (getreal "\n Khoang cach can thay doi :")
)
(while (setq ent (ssname ss (setq i (1+ i))))
(setq pcl (vlax-curve-getClosestPointTo pl (vlax-curve-getstartpoint ent)))
(if (< (distance (vlax-curve-getstartpoint ent) pcl)
(distance (vlax-curve-getendpoint ent) pcl)
)
(setq pch (vlax-curve-getstartpoint ent))
(setq pch (vlax-curve-getendpoint ent))
)
(vl-cmdf "LENGTHEN" "de" cdai pch "")
)
))
(princ)
)


Hay Quá.
Nhưng có một điều mà tớ vẩn không rõ...là vì sao khi mình áp dụng lệnh Clen đó cho các đối tượng khác thì không được, trog khi nếu dùng lệnh Matchprop để sao chép thuộc tính của đối tượng màu vàng trong bản vẽ sang cho đối tuợng mới thì lại thực hiện đuợc?! Có phải trong đoạn Lisp chỉ định nghĩa cho một Layer nhất định?? Có cách nào khác để ứng dụng nó cho mọi đối tuợng không..Tue_NV? Cám ơn nhiều nhé!
  • 0

#6 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 24 November 2010 - 08:35 PM

Hay Quá.
Nhưng có một điều mà tớ vẩn không rõ...là vì sao khi mình áp dụng lệnh Clen đó cho các đối tượng khác thì không được, trog khi nếu dùng lệnh Matchprop để sao chép thuộc tính của đối tượng màu vàng trong bản vẽ sang cho đối tuợng mới thì lại thực hiện đuợc?! Có phải trong đoạn Lisp chỉ định nghĩa cho một Layer nhất định?? Có cách nào khác để ứng dụng nó cho mọi đối tuợng không..Tue_NV? Cám ơn nhiều nhé!

Ừ, đúng rồi
Để áp dụng cho các đối tượng LINE, bạn thay dòng :
(if (setq ss (ssget '((0 . "LINE") (8 . "2"))))
(progn
(setq i -1
.......
thành dòng :
(if (setq ss (ssget '((0 . "LINE") )))
(progn
(setq i -1
......
  • 1

#7 conmuaha

conmuaha

    biết vẽ ellipse

  • Members
  • PipPip
  • 50 Bài viết
Điểm đánh giá: 18 (tàm tạm)

Đã gửi 24 November 2010 - 09:05 PM

Ừ, đúng rồi
Để áp dụng cho các đối tượng LINE, bạn thay dòng :
(if (setq ss (ssget '((0 . "LINE") (8 . "2"))))
(progn
(setq i -1
.......
thành dòng :
(if (setq ss (ssget '((0 . "LINE") )))
(progn
(setq i -1
......


Cám ơn nhiều nhé!
  • 0

#8 quangthanhdu

quangthanhdu

    biết vẽ rectang

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

Đã gửi 25 November 2010 - 07:33 AM

Cảm ơn Các Anh Nhiều !!!
  • 0

#9 w1nDream

w1nDream

    biết lệnh ddedit

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

Đã gửi 25 November 2010 - 04:59 PM

Ừ, đúng rồi
Để áp dụng cho các đối tượng LINE, bạn thay dòng :
(if (setq ss (ssget '((0 . "LINE") (8 . "2"))))
(progn
(setq i -1
.......
thành dòng :
(if (setq ss (ssget '((0 . "LINE") )))
(progn
(setq i -1
......


Lisp hay Pác à.
Tuy nhiên em thấy có mấy điều mong muốn thế này:
1.Lúc chọn tim đường Pline thì fải là Snap bắt điểm chứ không fải dạng select
2.Pác cho thêm mấy sự lựa chọn giống lựa chọn gốc của lệnh Lengthen
3.Khi đã chọn tim Pline rồi thì nên có lựa chọn thêm hoặc bớt chiều dài theo hướng nào.
:leluoi:
  • 0
__Tâm tựa lưu thủY__
Vi nhân nan