Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
19 replies to this topic

#1 asu2006

asu2006

    biết vẽ line

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

Đã gửi 24 January 2013 - 05:48 PM

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.c..._thang_rm_1.lsp
  • -2

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 24 January 2013 - 06:25 PM

Bạn sử dụng lệnh PEDIT chưa?
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#3 asu2006

asu2006

    biết vẽ line

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

Đã gửi 24 January 2013 - 09:29 PM

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
  • 0

#4 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 24 January 2013 - 09:45 PM

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?
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#5 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 25 January 2013 - 08:35 AM

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 :)
  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#6 asu2006

asu2006

    biết vẽ line

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

Đã gửi 25 January 2013 - 11:06 AM

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
  • 0

#7 asu2006

asu2006

    biết vẽ line

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

Đã gửi 25 January 2013 - 11:08 AM

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
  • 0

#8 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 25 January 2013 - 11:40 AM

Đú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))

  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#9 asu2006

asu2006

    biết vẽ line

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

Đã gửi 25 January 2013 - 12:20 PM

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.
  • 0

#10 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 25 January 2013 - 01:34 PM

Gởi bản vẽ thể hiện trước và sau yêu cầu để dễ hiểu và dễ test nhé!
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#11 asu2006

asu2006

    biết vẽ line

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

Đã gửi 25 January 2013 - 06:22 PM

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
  • 0

#12 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 25 January 2013 - 09:04 PM

Yêu cầu khó vậy ^^
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#13 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 25 January 2013 - 10:07 PM

Khổ thế ư?
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#14 Hoan1111

Hoan1111

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2587 Bài viết
Điểm đánh giá: 692 (tốt)

Đã gửi 25 January 2013 - 10:51 PM

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

Hình đã gửi

(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!)
  • 0

66 Câu Phật Học Cho Cuộc Sống : http://ngocchinh.com...-cho-cuoc-song/

Gió đưa cây cải về trời / Rau răm ở lại chịu lời đắng cay...

 

 


#15 asu2006

asu2006

    biết vẽ line

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

Đã gửi 25 January 2013 - 11:08 PM

Hình đã gửi

(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.c..._thang_rm_2.lsp
  • 0

#16 Hoan1111

Hoan1111

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2587 Bài viết
Điểm đánh giá: 692 (tốt)

Đã gửi 25 January 2013 - 11:13 PM

Ý 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:

Hình đã gửi
  • 0

66 Câu Phật Học Cho Cuộc Sống : http://ngocchinh.com...-cho-cuoc-song/

Gió đưa cây cải về trời / Rau răm ở lại chịu lời đắng cay...

 

 


#17 asu2006

asu2006

    biết vẽ line

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

Đã gửi 26 January 2013 - 11:10 AM

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!
  • 0

#18 tran1804

tran1804

    biết zoom

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

Đã gửi 31 March 2015 - 10:02 PM

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
  • 0

#19 tran1804

tran1804

    biết zoom

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

Đã gửi 31 March 2015 - 11:08 PM

Có ai giải dùm mình đc ko? Cảm ơn!
  • 0

#20 phamvandung

phamvandung

    Chưa sử dụng CAD

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

Đã gửi 15 August 2015 - 11:50 AM

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


  • 0