Chuyển đến nội dung
Diễn đàn CADViet
haimed

lisp vẽ 2 đoạn thẳng song song

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

Mình định viết 1 đoạn lisp làm việc sau: trên bản vẽ có các line lớp "0", chọn các điểm đầu bên trái các line đó, vẽ từ điểm đó 2 đoạn thẳng song song cách nhau 0,5. Bác nào giúp mình sửa đoạn lisp này với:

(defun c:vd()

;(command "-layer" "new" "vd" "color" "20" "cat-20" "")

(setq ssg (ssget "x" '((0 . "line")(8 . "0")) ) )

(setq sodt (sslength ssg)

index 0)

 

(repeat sodt

(setq ent (ssname ssg index)

index (1+ index)

data (entget ent)

x (car(cdr(assoc 10 data)))

y (cadr(cdr(assoc 10 data)))

y1 (- y 30)

x1 (+ x 0.5)

)

(princ x1)

(command "line" (list x y) (list x y1) "")

(command "line" (list x1 y) (list x1 y1) "")

)

 

 

)

Mong đc chỉ giáo 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
Mình định viết 1 đoạn lisp làm việc sau: trên bản vẽ có các line lớp "0", chọn các điểm đầu bên trái các line đó, vẽ từ điểm đó 2 đoạn thẳng song song cách nhau 0,5. Bác nào giúp mình sửa đoạn lisp này với:

Mong đc chỉ giáo nhiều!!!

 

Đề bài của bạn chưa rỏ:

-Nếu đoạn thẳng thẳng đứng thì điểm nào là điểm bên trái?

-Hai đoạn thẳng vẽ theo phương nào, chiều dài bao nhiêu?

-vẽ từ điểm đó 2 đoạn thẳng song song từ 1 điểm không thể vẽ ra 2 đường thẳng song song!

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ài của bạn chưa rỏ:

-Nếu đoạn thẳng thẳng đứng thì điểm nào là điểm bên trái?

-Hai đoạn thẳng vẽ theo phương nào, chiều dài bao nhiêu?

-vẽ từ điểm đó 2 đoạn thẳng song song từ 1 điểm không thể vẽ ra 2 đường thẳng song song!

Ý mình là 2 đoạn thẳng thẳng đứng, song song với nhau, đoạn đầu tiên bắt đầu từ điểm bên trái của các đoạn thẳng ban đầu trên bản vẽ. Độ dài các đoạn thẳng song song tùy ý, như trog đoạn lisp trên mình lấy 35. Mong bạn chỉ giáo

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 là 2 đoạn thẳng thẳng đứng, song song với nhau, đoạn đầu tiên bắt đầu từ điểm bên trái của các đoạn thẳng ban đầu trên bản vẽ. Độ dài các đoạn thẳng song song tùy ý, như trog đoạn lisp trên mình lấy 35. Mong bạn chỉ giáo

Ch­ưa rõ lắm. Bạn có thể minh họa bằng hình vẽ có được không? hoặc upload hình minh họa bằng CAD cũng đượ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
Ch­ưa rõ lắm. Bạn có thể minh họa bằng hình vẽ có được không? hoặc upload hình minh họa bằng CAD cũng được.

Mình cũng cho là vậy. Bạn haimed nên úp file lên.

-Thẳng đứng thì có 2 phương lên và xuống.

-Đường thẳng thứ 2 nằm bên trái hai bên phải đường thứ nhất?

-2 đường thẳng mới có yêu cầu gì về layer không hay dùng layer hiện hành để vẽ.

-Hỏi lại. Nếu đoạn thẳng (nguồn) thẳng đứng thì điểm nào là điểm bên trái?

-Ý bạn mốn lisp tự động chọn tất cả line lớp 0 trong bản vẽ hay chỉ chọn trong vùng chọn thôi.

 

@haimed : Bạn nên đọc kỹ và trả lời đủ những vướng mắc trên không nên để người khác phải hỏi nhiều lần cho 1 yêu cầu của bạn! Đoạn líp của bạn thì chiều dài ý định của bạn là 30 chứ không phải 35.

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 cũng cho là vậy. Bạn haimed nên úp file lên.

-Thẳng đứng thì có 2 phương lên và xuống.

-Đường thẳng thứ 2 nằm bên trái hai bên phải đường thứ nhất?

-2 đường thẳng mới có yêu cầu gì về layer không hay dùng layer hiện hành để vẽ.

-Hỏi lại. Nếu đoạn thẳng (nguồn) thẳng đứng thì điểm nào là điểm bên trái?

-Ý bạn mốn lisp tự động chọn tất cả line lớp 0 trong bản vẽ hay chỉ chọn trong vùng chọn thôi.

 

@haimed : Bạn nên đọc kỹ và trả lời đủ những vướng mắc trên không nên để người khác phải hỏi nhiều lần cho 1 yêu cầu của bạn! Đoạn líp của bạn thì chiều dài ý định của bạn là 30 chứ không phải 35.

Sorry, mình mới tham gia diễn đàn nên chưa quen. Mình đã up bản vẽ minh họa, trên đó lúc đầu có các đoạn thẳng layer 0, lisp sẽ chọn tất cả các đoạn đó, bắt đầu từ điểm bên trái của các đoạn đó (hoặc điểm đầu tiên của đoạn thẳng) vẽ 2 đoạn song song thẳng đứng xuống dưới, dài 30 cách nhau 0.5, đường thứ 2 ở bên phải đường thứ nhất. 2 đường thẳng mới layer 2, màu trắng, nét liền. Cám ơn các bạn đã quan tâ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
Sorry, mình mới tham gia diễn đàn nên chưa quen. Mình đã up bản vẽ minh họa, trên đó lúc đầu có các đoạn thẳng layer 0, lisp sẽ chọn tất cả các đoạn đó, bắt đầu từ điểm bên trái của các đoạn đó (hoặc điểm đầu tiên của đoạn thẳng) vẽ 2 đoạn song song thẳng đứng xuống dưới, dài 30 cách nhau 0.5, đường thứ 2 ở bên phải đường thứ nhất. 2 đường thẳng mới layer 2, màu trắng, nét liền. Cám ơn các bạn đã quan tâm

Đây bạn!

 

(Defun C:vd ( )

(command "undo" "be")

(setq luubatdiem (getvar "osmode"))

(setvar "osmode" 0)

(command "-layer" "new" "2" "color" "7" "2" "")

(setq taphoplinegoc (ssget "x" '((8 . "0"))))

(setq taphoplinegoc (ssget "p" '((0 . "line"))))

 

(setq L 0)

(setq M (sslength taphoplinegoc))

(while (< L M)

(setq DTs (ssname taphoplinegoc L))

(setq DTMs (entget DTs))

(setq diemdau (cdr (assoc 10 DTMs)))

(command "line" diemdau "@30<-90" "")

(command ".chprop" "last" "" "la" "2" "color" "bylayer" "")

(setq diemdau2 (list (+ (car diemdau) (/ 1.0 2)) (cadr diemdau)))

(command "line" diemdau2 "@30<-90" "")

(command ".chprop" "last" "" "la" "2" "color" "bylayer" "")

 

 

(setq L (1+ L))

)

(setvar "osmode" luubatdiem)

(command "undo" "end")

(Princ)

)

 

Cái chổ giá trị 0.5 nó làm mắc công ghê gớm. Nhập 0.5 nó không chịu, nhập 1/2 nó cũng không chịu cuối cùng nhập 1.0/2 thì nó được :cheers:

Lưu ý mình lấy điểm đầu tiên của đoạn thẳng mà không xét là trái hay phả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
Đây bạn!

 

(Defun C:vd ( )

(command "undo" "be")

(setq luubatdiem (getvar "osmode"))

(setvar "osmode" 0)

(command "-layer" "new" "2" "color" "7" "2" "")

(setq taphoplinegoc (ssget "x" '((8 . "0"))))

(setq taphoplinegoc (ssget "p" '((0 . "line"))))

 

(setq L 0)

(setq M (sslength taphoplinegoc))

(while (< L M)

(setq DTs (ssname taphoplinegoc L))

(setq DTMs (entget DTs))

(setq diemdau (cdr (assoc 10 DTMs)))

(command "line" diemdau "@30<-90" "")

(command ".chprop" "last" "" "la" "2" "color" "bylayer" "")

(setq diemdau2 (list (+ (car diemdau) (/ 1.0 2)) (cadr diemdau)))

(command "line" diemdau2 "@30<-90" "")

(command ".chprop" "last" "" "la" "2" "color" "bylayer" "")

 

 

(setq L (1+ L))

)

(setvar "osmode" luubatdiem)

(command "undo" "end")

(Princ)

)

 

Cái chổ giá trị 0.5 nó làm mắc công ghê gớm. Nhập 0.5 nó không chịu, nhập 1/2 nó cũng không chịu cuối cùng nhập 1.0/2 thì nó được :cheers:

Lưu ý mình lấy điểm đầu tiên của đoạn thẳng mà không xét là trái hay phải.

 

 

Cũng với đường thẳng song song, nhờ bác Duy sửa lại với nội dung : chọn đối tượng sau đó vẽ polyline layer hiện hành màu đỏ, continuos, lineweight 0.3mm, độ dài 2000mm, 2 đường cách nhau 200mm, song song đi từ tâm đối tượng.

 

http://www.cadviet.com/upfiles/duong_song_song.dwg

 

Xin 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
Cũng với đường thẳng song song, nhờ bác Duy sửa lại với nội dung : chọn đối tượng sau đó vẽ polyline layer hiện hành màu đỏ, continuos, lineweight 0.3mm, độ dài 2000mm, 2 đường cách nhau 200mm, song song đi từ tâm đối tượng.

 

http://www.cadviet.com/upfiles/duong_song_song.dwg

 

Xin cám ơn.

Mình không biết cách lấy tâm của 1 đối tượng nên không viết lisp của bạn đượ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
Mình không biết cách lấy tâm của 1 đối tượng nên không viết lisp của bạn được!

 

Cám ơn Duy đã quan tâm. Khi nào Duy biết thì hãy viết dùm mình nhé. Thanks a lot. :cheers:

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

×