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

lisp nối đường cong, đường thẳng

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

Mình làm bên giao thông, hay phải cắt các cung tròn, đường cong, đường thẳng thành các đoạn nhỏ, nhiều lúc muốn dùng lại các đường đó nhưng vẽ lại thì rất lâu, anh em giúp mình tạo một lisp nào đó mà có thể nối những đường vừa cắt thành một đường như ban đầu

mình có lisp nối đường thẳng mà không nối được đường cong, nhờ mọi người giúp đỡ tạo một lisp mà nối được cả đường thẳng, và đường cong, (nối các đoạn đã cắt ra thành một đường như ban đầu)

http://www.cadviet.com/upfiles/3/113162_noi_duong_thang_rm_1.lsp

  • Vote giảm 2

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 sử dụng lệnh PEDIT chưa?

lệnh pedit thì nó sẽ tạo ra đường gẫy khúc, mà đường cong thì nó sẽ thành pline nên k đc, muốn nối nó về như đường cong ban đầu, hoặc đoạn thẳng ban đầu, bạn dùng thử lisp mình đưa lên sẽ thấy. 2 đoạn line khi cắt rời từ một đường, dùng lisp nối lại nó thành 1 đường như ban đầ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

Nếu các đường của bạn là arc, line, pline thì nối lại như cũ là được.

Nếu nó là spline thì có cách gần đúng là vi phân spline thành từng đoạn nhỏ.

Ý bạn sao?

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

Nhoc thì xài cách thổ rân : line thì dùng join, cung hay tròn thì kím cái tâm của nó vẽ lại rùi trim, còn mún nói line với arc làm 1 thì lại dùng join, nhiều thì quét hết rùi join cũng ok mừ :D

Ps: nhoc nghĩ nếu viết lsp chắc có thể dùng lệnh join này chăng ^^, nhoc có nói bậy ko đúng ý chủ top mấy huynh và chủ top đừng cười hen :)

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

Nếu các đường của bạn là arc, line, pline thì nối lại như cũ là được.

Nếu nó là spline thì có cách gần đúng là vi phân spline thành từng đoạn nhỏ.

Ý bạn sao?

Đúng rồi. mình muốn nối lại như cũ nhưng mà arc, line, pline thì nó là một đường trơn luôn, không bị gãy khúc, Pline không bị chia ra nhiều đoạn nhỏ như dùng lệnh join

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

Nhoc thì xài cách thổ rân : line thì dùng join, cung hay tròn thì kím cái tâm của nó vẽ lại rùi trim, còn mún nói line với arc làm 1 thì lại dùng join, nhiều thì quét hết rùi join cũng ok mừ :D

Ps: nhoc nghĩ nếu viết lsp chắc có thể dùng lệnh join này chăng ^^, nhoc có nói bậy ko đúng ý chủ top mấy huynh và chủ top đừng cười hen :)

dùng lệnh join với đường pline thì pải kéo 2 điểm lại gần nhau thì mới join được, như thế thì hơi lâu đối với làm nhiều đường muốn nối lạ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

Đúng rồi. mình muốn nối lại như cũ nhưng mà arc, line, pline thì nó là một đường trơn luôn, không bị gãy khúc, Pline không bị chia ra nhiều đoạn nhỏ như dùng lệnh join

Lisp nối Arc, Line, Polyline, Lwpolyline của Jimmy Bergmark. Chấp nhận giữa các đối tượng có khoảng hở (fuzz).

(defun c:jf () (c:pljoinfuzz))
(defun c:pljoinfuzz (/ ss1 entLine objType oldcmdecho oldpeditaccept fuzz okObjects)
 (setq oldcmdecho (getvar "cmdecho"))
 (setq oldpeditaccept (getvar "PEDITACCEPT"))
 (setvar "cmdecho" 0)
 (setq A2k4 (>= (substr (getvar "ACADVER") 1 2) "16"))
 (if A2k4 (setvar "PEDITACCEPT" 0))
 (setq okObjects '((0 . "LINE,ARC,POLYLINE,LWPOLYLINE")))
 (princ "\nSelect object to join: ")
 (setq ss1 (ssget okObjects))
 (setq fuzz (getdist "\nFuzz distance <0>: "))
 (if (= fuzz nil) (setq fuzz 0))
 (if (/= ss1 nil)
 	(progn
(setq objType (cdr (assoc 0 (entget (setq entLine (ssname ss1 0))))))
(if (= (sslength ss1) 1) (setq ss1 (ssget "X" okObjects)))
(if (member objType '("LINE" "ARC"))
  (command "_.pedit" "_M" ss1 "" "_Y" "_J" "_J" "_B" fuzz "")
  (command "_.pedit" "_M" ss1 "" "_J" "_J" "_B" fuzz ""))))
 (setvar "cmdecho" oldcmdecho)
 (if A2k4 (setvar "PEDITACCEPT" oldpeditaccept))
 (princ))

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

Lisp nối Arc, Line, Polyline, Lwpolyline của Jimmy Bergmark. Chấp nhận giữa các đối tượng có khoảng hở (fuzz).

(defun c:jf () (c:pljoinfuzz))
(defun c:pljoinfuzz (/ ss1 entLine objType oldcmdecho oldpeditaccept fuzz okObjects)
 (setq oldcmdecho (getvar "cmdecho"))
 (setq oldpeditaccept (getvar "PEDITACCEPT"))
 (setvar "cmdecho" 0)
 (setq A2k4 (>= (substr (getvar "ACADVER") 1 2) "16"))
 (if A2k4 (setvar "PEDITACCEPT" 0))
 (setq okObjects '((0 . "LINE,ARC,POLYLINE,LWPOLYLINE")))
 (princ "\nSelect object to join: ")
 (setq ss1 (ssget okObjects))
 (setq fuzz (getdist "\nFuzz distance <0>: "))
 (if (= fuzz nil) (setq fuzz 0))
 (if (/= ss1 nil)
 	(progn
(setq objType (cdr (assoc 0 (entget (setq entLine (ssname ss1 0))))))
(if (= (sslength ss1) 1) (setq ss1 (ssget "X" okObjects)))
(if (member objType '("LINE" "ARC"))
 	(command "_.pedit" "_M" ss1 "" "_Y" "_J" "_J" "_B" fuzz "")
 	(command "_.pedit" "_M" ss1 "" "_J" "_J" "_B" fuzz ""))))
 (setvar "cmdecho" oldcmdecho)
 (if A2k4 (setvar "PEDITACCEPT" oldpeditaccept))
 (princ))

lisp này là chỉnh sửa của lệnh pedit, nối arc thì chuyển thành pline. mình muốn khi nối nó giữ luôn là arc, tạo thành cung tròn trơn như ban đầ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 up file lên. mọi người xem xong giúp mình với nhé!

http://www.cadviet.c...3162_file_1.dwg

114276_5777.png

 

(Hình ảnh trên là yêu cầu viết lisp của chủ thớt asu2006 , Hoằn xin gói gọn tóm tắt lại là biến Hình 1 thành Hình 2)

 

Thông thường để biến Hình 1 thành Hình 2 như ảnh, CAD đời thấp phải sử dụng 3 lệnh Arc , Pline và Line vẽ đè lên sau đó dùng lệnh Overkill để xóa nét trùng bên dưới là xong! Cách làm như trên tốn nhiều thời gian.

Từ AutoCAD2011 trở lên, đã có thêm lệnh (...) đáp ứng được nhu cầu trên. Chỉ cần gõ lệnh 1 lần sau đó là lần lượt làm thịt từng em một, không làm thịt nhiều em một lúc được.

Em Hoằn có ý kiến: nếu bác nào có í định viết lisp thì nên viết lisp làm thịt đồng thời (đồng loạt) tất cả các em mới có năng suất!

 

Hoằn xin phép không tiết lộ lệnh (...) của AutoCAD tại đây, lý do đơn giản là: Hoằn để dành cho cho mục đố vui.

(Coi như đây là một câu đố, các bác thử mầy mò xem sao??? Biết đâu khi mầy mò lại phát hiện ra nhiều tính năng hay khác của AutoCAD đời mớ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

114276_5777.png

 

(Hình ảnh trên là yêu cầu viết lisp của chủ thớt asu2006 , Hoằn xin gói gọn tóm tắt lại là biến Hình 1 thành Hình 2)

 

Thông thường để biến Hình 1 thành Hình 2 như ảnh, CAD đời thấp phải sử dụng 3 lệnh Arc , Pline và Line vẽ đè lên sau đó dùng lệnh Overkill để xóa nét trùng bên dưới là xong!

Tuy nhiên cách làm như trên tốn nhiều thời gian vì thế từ AutoCAD2011 trở lên, đã có thêm lệnh (...) đáp ứng được nhu cầu trên. Khổ cái là vẫn phải mất công làm từng em một (làm thịt xong em Arc > Enter > chuyển sang em Pline > Enter > chuyển sang em Line)

Em Hoằn có ý kiến: nếu bác nào có í định viết lisp thì nên viết lisp làm thịt đồng thời (đồng loạt) tất cả các em mới có năng suất!

 

Hoằn xin phép không tiết lộ lệnh (...) của AutoCAD, có thể làm thịt từng em một vì lý do: Hoằn để dành ra câu đố.

(Coi như đây là một câu đố, các bác thử mầy mò xem sao??? Biết đâu khi mầy mò lại phát hiện ra nhiều tính năng hay khác của AutoCAD đời mới!)

ở trên mình có up 1 lisp nối đường thẳng. mình rất thích lisp đó. giá như nó nối được arc và pline nữa thì tốt quá. mọi người xem lisp trên xem có dùng được gì không nhé. mình mù về lisp nên nhờ mọi người giúp đỡ

http://www.cadviet.com/upfiles/3/113162_noi_duong_thang_rm_2.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

Ý kiến của Hoằn là AutoCAD đã giải quyết được, không nên dùng lisp, dành thời gian cho việc khác, cần thiết hơn!

 

Cách chuyển Spline sang Polyline mà vẫn cong trơn như Spline làm theo hai bước sau:

 

114276_321777_1.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

mình chỉ cần nối các đường rời lại như lúc chưa cắt thôi. ca này khó quá không ai giúp được mình rồi...

cảm ơn mọi ngườ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

Bạn ơi! Làm sao để xuất đc 1file txt có chứa toạ độ xyz ra màn hình cad2007 được nhỉ. Mong bạn viết lisp dùm. Cảm ơn bạn. Ví dụ như:

-3.000 0.000 9.000

-6.000 7.000 -6.000

-4.000 14.000 -166.000

-3.000 23.000 -497.000

112

-7.000 27.000 -653.000

3.000 0.000 9.000

1.000 7.000 -41.000

2.000 15.000 -206.000

3.000 22.000 -453.000

1.000 29.000 -811.000

12.000 -2.000 138.000

8.000 5.000 44.000

9.000 13.000 -75.000

10.000 20.000 -280.000

9.000 25.000 -519.000

17.000 0.000 289.000

14.000 6.000 166.000

15.000 14.000 43.000

16.000 21.000 -164.000

15.000 27.000 -477.000

23.000 3.000 523.000

21.000 8.000 385.000

23.000 16.000 289.000

24.000 23.000 70.000

22.000 30.000 -386.000

31.000 2.000 959.000

30.000 8.000 844.000

29.000 15.000 631.000

30.000 21.000 480.000

31.000 26.000 311.000

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ào các bạn.

Mình có ca này khó quá nhờ các ban giúp.

Tình hình là khách hàng gửi bản vẽ PDF cho mình,sau khi convert ra file bản vẽ thì các nét bị nát hết ra nhưng vẫn là 1 đường Polyline .

Mình muốn biết trong cad có cách nào nối lại thành 1 cung tròn chỉ có 4 điểm như trong hình không, vì nhũng hình sau khi conver có rất nhiều điểm nên bãn vẽ khá nặng.

Thanks.145141_polyline.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

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

×