Rated 5/5 based on 240179 internet user reviews

Jump to content


Change Photo
* - - - - 1 Phiếu

làm sao để chuyển đổi đường Spline thành Pline


  • Please log in to reply
33 replies to this topic

#1 harmonysouth

harmonysouth

    biết pan

  • Members
  • Pip
  • 9 posts
Danh tiếng: 1 (b́nh thường)

Gửi vào 06 August 2008 - 10:49 AM

ḿnh muốn chuyển đường spline thành đường polyline nhưng ko lam được nhờ mọi người giúp. thasnk !
  • 0

#2 hiepquang

hiepquang

    biết dimradius

  • Members
  • PipPipPipPipPip
  • 315 posts
Danh tiếng: 262 (khá)

Gửi vào 06 August 2008 - 11:03 AM

ḿnh muốn chuyển đường spline thành đường polyline nhưng ko lam được nhờ mọi người giúp. thasnk !


Bạn dùng lệnh FLATTEN nhé
  • 6
There was something wrong. I just never read between the lines...

#3 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2,032 posts
Danh tiếng: 1293 (rất tốt)

Gửi vào 06 August 2008 - 01:59 PM

ḿnh muốn chuyển đường spline thành đường polyline nhưng ko lam được nhờ mọi người giúp. thasnk !

Bác SSG đă có 1 lisp cho việc này. bạn chịu khó t́m xem!
  • 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 :-cool.png


#4 duongsatdn

duongsatdn

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 1,657 posts
Danh tiếng: 757 (tốt)

Gửi vào 06 August 2008 - 03:34 PM

Bác SSG đă có 1 lisp cho việc này. bạn chịu khó t́m xem!

Admin đă lập mục T́m kiếm theo yêu cầu. E rằng các bác ây sẽ vất vả... nếu em lười t́m kiếm! :s_big:
  • 0

#5 tranchan

tranchan

    biết lệnh break

  • Members
  • PipPipPipPip
  • 221 posts
Danh tiếng: 91 (tàm tạm)

Gửi vào 06 August 2008 - 03:40 PM

Ko biết bác SSG có share đúng file này ko? Đây là file có mục đích nt


;; Spline2Pline.lsp © 2005 Lloyd Beachy
;; Routine to convert splines to plines

(Defun C:S2P (/ ss pt# cmdecho osmode clayer count ent lay lng pt-list
cnt)
(vl-load-com)
(setq ss (ssget '((0 . "spline")))
pt# (getint "Enter number of segments <100>:")
cmdecho (getvar "cmdecho")
osmode (getvar "osmode")
clayer (getvar "clayer")
count 0 ;spline counter
) ;end setq
(if (null pt#)
(setq pt# 100)
)
(setvar "cmdecho" 0)
(command ".undo" "begin") ;begin undo group
(setvar "osmode" 0)
(repeat (sslength ss) ;repeat for each spline
(setq ent (vlax-ename->vla-object (ssname ss count))
;change spline to vla-object
lay (vlax-get-property ent "layer");spline's layer
lng (vlax-curve-getDistAtPoint ent (vlax-curve-getEndPoint ent))
;length of spline
pt-list (list (vlax-curve-getStartPoint ent))
;coords for start of spline
cnt 1.0 ;segment counter
) ;end setq
(repeat pt# ;repeat for each segment
(setq pt-list
(cons (vlax-curve-getPointAtDist ent (* lng (/ cnt pt#)))
pt-list
)
) ;add segment's point to pt-list
(setq cnt (1+ cnt)) ;counter to next segment
) ;end segment repeat
(setq cnt 0) ;pline counter
(setvar "clayer" lay) ;match spline's layer
(command ".pline" ;start "pline" command
(repeat (length pt-list);repeat for each point
(command (nth cnt pt-list));enter current point
(setq cnt (1+ cnt));counter to next point
"" ;return value to close "pline" command
) ;end point repeat
) ;end command
(setq count (1+ count)) ;counter to next spline
) ;end spline repeat
(command ".erase" ss "")
(setvar "osmode" osmode)
(setvar "clayer" clayer)
(command ".undo" "end") ;end of undo group
(setvar "cmdecho" cmdecho)
(princ) ;exit quietly
) ;end C:S2P

  • 1

#6 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1,228 posts
Danh tiếng: 1063 (rất tốt)

Gửi vào 06 August 2008 - 04:21 PM

Nhiều khi t́m lại bài của chính ḿnh cũng... khá vất vả! Khối lượng không nhiều, xin post lại ở đây.
Lisp này chơi tất: line, pline, spline, arc, circle, ellipse sang pline (không chứa cung tṛn mà thành nhiều đoạn thẳng nhỏ liên tiếp). Chiều dài mỗi đoạn nhỏ user chọn tuỳ ư, mặc định là 0.5:


;;;***********************************************************
;;;CONVERT TO PLINES PROGRAM WITH FULL COMMENTS!
;;;Convert all objects: Line, Pline, Spline, Arc, Circle, Ellipse_
;;;to Plines. Length of 1 segment is specified by user
;;;Copy & Paste to Notepad, Saveas *.lsp, Appload then Type C2P to run
;;;Happy New Year 2008!
;;;Written by ssg - January 2008 - www.cadviet.com
;;;***********************************************************

;;;-------------------------------------------------------------
(defun makepl ( e d1 / ps pe d d2 p2) ;;;Make pline along curve e. Length of 1 segment = d1
(vl-load-com) ;;;Load Visual LISP extensions before use vlax-xxxx functions
(setq
ps (vlax-curve-getStartPoint e) ;;;Start point
pe (vlax-curve-getEndPoint e) ;;;End point
d (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e)) ;;;Length of curve e
d2 d1 ;;;Init variable distance
)
(command "pline") ;;;Call pline command
(command ps) ;;;Start point
(while (<= d2 d) ;;;While not over end point pe
(setq p2 (vlax-curve-getPointAtDist e d2)) ;;;Variable point at d2 = length along curve
(command p2) ;;;Continue pline command from current point to p2
(setq d2 (+ d2 d1)) ;;;Increase distance d2 by d1
) ;;;End while
(command pe "") ;;;Pline to pe and finish command
)
;;;-------------------------------------------------------------
(defun C:C2P( / d1 ss oldos i e ans) ;;;Convert to Plines
(if (not d0) (setq d0 0.5)) ;;;Init dividual distance, global variable
(setq d1 (getreal (strcat "\nLength of 1 segment <" (rtos d0) ">:"))) ;;;Input distance
(if d1 (setq d0 d1) (setq d1 d0)) ;;;Reset or get distance
(setq
ss (ssget '((0 . "LINE,LWPOLYLINE,SPLINE,ARC,CIRCLE,ELLIPSE"))) ;;;Selection set
oldos (getvar "osmode") ;;;Save osmode
i 0 ;;;Init counter
)
(setvar "osmode" 0) ;;;Disable osmode
(repeat (sslength ss) ;;;Repeat for all entities in ss
(setq e (ssname ss i)) ;;;Set e for entity with ordinal i in selection set ss
(makepl e d1) ;;;Use makepl function. Make pline along e
(setq i (1+ i)) ;;;Increase counter
)
(initget "Y N") ;;;Init keywords
(setq ans (getkword "\nDelete source objects? [Yes/No] <N>:")) ;;;Get answer from user
(if (= ans "Y") (command "erase" ss "")) ;;;Erase source objects if ans = "y" or "Y"
(setvar "osmode" oldos) ;;;Reset osmode
(princ) ;;;Silent quit
)
;;;-------------------------------------------------------------

  • 7

#7 be_chanh

be_chanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 1,712 posts
Danh tiếng: 883 (rất tốt)

Gửi vào 06 August 2008 - 06:59 PM

(defun C:s2p ()
 (while (not (and
			  (setq lstSelection   (entsel "\nSelect Spline: "))
			  (setq sngSegment	 (getdist "\nGet Segment Length: "))
			  (setq objSelection   (vlax-ename->vla-object (car
lstSelection)))
			  (wcmatch (vla-get-objectname objSelection) 
 
"AcDb2dPolyline,AcDbPolyline,AcDbLine,AcDbArc,AcDbSpline"
			  )
			 )
		)
  (princ "\nError please select again: ")
 )
 (setq sngLength   (vlax-curve-getDIstAtParam objSelection
					(vlax-curve-getEndParam objSelection)
				   )
	   sngDistance 0.0
 )
 (vl-cmdf "._pline" (vlax-curve-getpointatDist objSelection 0.0))  (repeat (fix (/ sngLength sngSegment))
  (vl-cmdf (vlax-curve-getpointatDist objSelection sngDistance))
  (setq sngDistance (+ sngDistance sngSegment))
 )
 (vl-cmdf (vlax-curve-getPointAtParam objSelection
		   (vlax-curve-getEndParam objSelection)
		  )
		  ""
 )
)

Đoạn mă trên đây cũng khá hay. bạn thử dùng nhé.
  • 3

t: 097.323.1199 | m: cudstk@gmail.com | w: http://www.aicollect.com


#8 k_malau

k_malau

    biết vẽ ellipse

  • Members
  • PipPip
  • 58 posts
Danh tiếng: 1 (b́nh thường)

Gửi vào 24 April 2009 - 11:06 AM

Em mới học Cad, cho hỏi những đoạn Code đó gián vào đâu??
  • 0

#9 KimSauRang

KimSauRang

    biết vẽ line

  • Members
  • PipPip
  • 23 posts
Danh tiếng: 0 (b́nh thường)

Gửi vào 28 April 2009 - 10:37 AM

Em mới học Cad, cho hỏi những đoạn Code đó gián vào đâu??

đoạn code này bạn dán nó vào trong 1 cái lisp bất kỳ xong vào cad appload cái lisp mà bạn dán lên, chạy dùng thử là okie mà
  • 0

#10 quocbao059

quocbao059

    Chưa sử dụng CAD

  • Members
  • Pip
  • 1 posts
Danh tiếng: 0 (b́nh thường)

Gửi vào 05 May 2009 - 01:28 PM

mà ḿn dùng lệnh j hả mấy pác
  • 0

#11 archhnm

archhnm

    biết zoom

  • Members
  • Pip
  • 18 posts
Danh tiếng: 0 (b́nh thường)

Gửi vào 22 May 2009 - 05:52 PM

(defun C:s2p ()
 (while (not (and
			  (setq lstSelection   (entsel "\nSelect Spline: "))
			  (setq sngSegment	 (getdist "\nGet Segment Length: "))
			  (setq objSelection   (vlax-ename->vla-object (car
lstSelection)))
			  (wcmatch (vla-get-objectname objSelection) 
 
"AcDb2dPolyline,AcDbPolyline,AcDbLine,AcDbArc,AcDbSpline"
			  )
			 )
		)
  (princ "\nError please select again: ")
 )
 (setq sngLength   (vlax-curve-getDIstAtParam objSelection
					(vlax-curve-getEndParam objSelection)
				   )
	   sngDistance 0.0
 )
 (vl-cmdf "._pline" (vlax-curve-getpointatDist objSelection 0.0))  (repeat (fix (/ sngLength sngSegment))
  (vl-cmdf (vlax-curve-getpointatDist objSelection sngDistance))
  (setq sngDistance (+ sngDistance sngSegment))
 )
 (vl-cmdf (vlax-curve-getPointAtParam objSelection
		   (vlax-curve-getEndParam objSelection)
		  )
		  ""
 )
)

Đoạn mă trên đây cũng khá hay. bạn thử dùng nhé.


Bro có thể viết lisp sử dụng arc trong polyline được không , ḿnh thấy nhiều đoạn thẳng quá
  • 0

#12 w1nDream

w1nDream

    biết lệnh ddedit

  • Members
  • PipPipPipPip
  • 293 posts
Danh tiếng: 71 (tàm tạm)

Gửi vào 12 October 2009 - 09:31 AM

mà ḿn dùng lệnh j hả mấy pác


Lệnh ở ngay sau defun c : đó bạn
VD: defun C:s2p th́ lệnh là s2p
:bigsmile:
  • 0
__Tâm tựa lưu thủY__
Vi nhân nan

#13 haluke

haluke

    biết lệnh copy

  • Members
  • PipPipPip
  • 118 posts
Danh tiếng: 36 (tàm tạm)

Gửi vào 10 March 2010 - 10:55 PM

Lệnh ở ngay sau defun c : đó bạn
VD: defun C:s2p th́ lệnh là s2p
:cheers:

Ok. Lisp tuyệt vời thật! :cheers:
  • 0
Tôi là người bộ hành phiêu lăng
Đường trần gian khắp nẻo để vui chơi...

#14 ngovinh

ngovinh

    biết lệnh ddedit

  • Members
  • PipPipPipPip
  • 298 posts
Danh tiếng: 102 (tàm tạm)

Gửi vào 10 March 2010 - 11:33 PM

Ok. Lisp tuyệt vời thật! :cheers:

Trên diễn đàn đă có bài viết chuyển SPL sang PL không cần dùng líp!
Hăy vào chức năng t́m kiếm
!

  • 1

#15 conan3134

conan3134

    biết pan

  • Members
  • Pip
  • 5 posts
Danh tiếng: 0 (b́nh thường)

Gửi vào 22 February 2012 - 08:54 AM

Sao mình dùng mấy Lisp này chuyển từ Elip sang polyline không đc nhỉ? Ai xem giúp mình với

http://www.mediafire...jvtk3bu87xe78qy
  • 0

#16 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 4,465 posts
Danh tiếng: 2128 (tuyệt vời)

Gửi vào 22 February 2012 - 09:16 AM

Sao mình dùng mấy Lisp này chuyển từ Elip sang polyline không đc nhỉ? Ai xem giúp mình với

http://www.mediafire...jvtk3bu87xe78qy

1). Muốn chuyển elip sang lwpolyline bạn phải chuyển elip sang spline, sau đó chuyển từ spline sang lwpolyline bằng lisp ở trên. Riêng chuyển từ elip sang spline thì bạn xem trang đố vui số 11 sẽ có.
2). Tuy nhiên xem trên bản vẽ thì thấy hình của bạn không ăn nhập gì với câu hỏi của bạn, vì nó có tới hàng trăm đối tượng. Vậy cần phải nối chúng lại đã.
  • 1

#17 Hai_YenLang

Hai_YenLang

    biết lệnh explore

  • Members
  • PipPipPipPipPipPip
  • 473 posts
Danh tiếng: 148 (tàm tạm)

Gửi vào 22 February 2012 - 09:47 AM

Bạn dùng lệnh FLATTEN nhé

Còn một cách nữa không cần phải nhớ lệnh FLATTEN:
Nhấp đúp chuột >> tiếp tục chuột phải >>> sẽ hiện ra bảng sau:
Posted Image
Command: _splinedit
Enter an option [Close/Join/Fit data/Edit vertex/convert to
Polyline/Reverse/Undo/eXit] <eXit>: P
Specify a precision <10>:
  • 1
Đức hạnh lớn nhất mà bên cạnh đó, mọi đức hạnh khác đều mờ nhạt đi, đó là không làm hại ai và tùy sức mà giúp đỡ mọi người "
Người cảnh sát điều tra hình sự giỏi là người biết được tất cả những hành vi thủ đoạn trộm cắp của bọn trộm cắp, nhưng lại dốt ăn cắp ăn trộm ...

#18 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 4,465 posts
Danh tiếng: 2128 (tuyệt vời)

Gửi vào 22 February 2012 - 10:18 AM

Còn một cách nữa không cần phải nhớ lệnh FLATTEN:
Nhấp đúp chuột >> tiếp tục chuột phải >>> sẽ hiện ra bảng sau:
Posted Image
Command: _splinedit
Enter an option [Close/Join/Fit data/Edit vertex/convert to
Polyline/Reverse/Undo/eXit] <eXit>: P
Specify a precision <10>:

Acad 2007 không có tuỳ chọn "convert to Polyline". Chắc Cad đời cao hơn mới có?
Trích dẫn:
Command: _splinedit
Enter an option [Fit data/Close/Move vertex/Refine/rEverse/Undo]:
  • 0

#19 Hai_YenLang

Hai_YenLang

    biết lệnh explore

  • Members
  • PipPipPipPipPipPip
  • 473 posts
Danh tiếng: 148 (tàm tạm)

Gửi vào 22 February 2012 - 10:58 AM

AutoCAD2004 không biết có ko, nhưng chắc chắn 100% là Autocad2007 có, em dùng nhiều từ lâu rồi, chỗ đang làm mọi người đều dùng CAD đời cao hết nên ko nói cho bác biết được. Thao tác cũng tương tự chọn đối tượng 1 hoặc nhấp đúp, chon chuột phải hoặc trái nó không hiện ra bảng như CAD đời cao mà hiện tùy chọn dưới dòng lệnh. Bác cứ thử đi, nếu không được em sẽ Loat 2007 về và cài đặt lại rồi nói với bác sau.
  • 0
Đức hạnh lớn nhất mà bên cạnh đó, mọi đức hạnh khác đều mờ nhạt đi, đó là không làm hại ai và tùy sức mà giúp đỡ mọi người "
Người cảnh sát điều tra hình sự giỏi là người biết được tất cả những hành vi thủ đoạn trộm cắp của bọn trộm cắp, nhưng lại dốt ăn cắp ăn trộm ...

#20 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 4,465 posts
Danh tiếng: 2128 (tuyệt vời)

Gửi vào 22 February 2012 - 11:05 AM

AutoCAD2004 không biết có ko, nhưng chắc chắn 100% là Autocad2007 có, em dùng nhiều từ lâu rồi, chỗ đang làm mọi người đều dùng CAD đời cao hết nên ko nói cho bác biết được. Thao tác cũng tương tự chọn đối tượng 1 hoặc nhấp đúp, chon chuột phải hoặc trái nó không hiện ra bảng như CAD đời cao mà hiện tùy chọn dưới dòng lệnh. Bác cứ thử đi, nếu không được em sẽ Loat 2007 về và cài đặt lại rồi nói với bác sau.

Tất cả ở trên là trích dẫn từ dòng command khi dùng lệnh splinedit từ bàn phím (hay nhấp chuột cũng thế) của cad2007 tôi vừa thử xong mà. Nếu bạn đã dùng có thì coi là có vậy, cũng không quan trọng gì lắm, đôi lúc có thể tôi cài không đầy đủ cũng nên.
  • 0