Đến nội dung


Hình ảnh

nối nhiều spline!!!!


  • Please log in to reply
6 replies to this topic

#1 nani

nani

    biết vẽ circle

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

Đã gửi 05 April 2009 - 06:16 PM

a chị nào biết lệnh nối nhiều spline thành một không ạ!!! chỉ cho e với, e xin cảm ơn.
  • 0

#2 tucdrom

tucdrom

    — T — U — N — A —

  • Members
  • PipPipPipPipPipPip
  • 497 Bài viết
Điểm đánh giá: 642 (tốt)

Đã gửi 05 April 2009 - 07:11 PM

a chị nào biết lệnh nối nhiều spline thành một không ạ!!! chỉ cho e với, e xin cảm ơn.

Bạn có thể dùng chương trình Convert Spline to Pline(lệnh tắt là SPL2PL) sau đó dùng lệnh PE của Cad hoặc dùng Lisp để Joint các Pline thành 1 Pline vậy.Hơi thủ công & dài dòng nhưng méo mó có hơn không. :cry:

  • 0

Email : anhtu2101@gmail.com



 


#3 nani

nani

    biết vẽ circle

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

Đã gửi 05 April 2009 - 08:55 PM

không còn cách nào khác hả bác, cách này cũng được nhưng hơi lâu bác nhỉ.
  • 1

#4 haanh

haanh

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2875 Bài viết
Điểm đánh giá: 1554 (rất tốt)

Đã gửi 05 April 2009 - 10:20 PM

a chị nào biết lệnh nối nhiều spline thành một không ạ!!! chỉ cho e với, e xin cảm ơn.

Khư khư khư cư:

em muốn hỏi về đường pline khép kín

http://www.cadviet.c...?showtopic=9600
  • 0

“Sống trong đời sống cần có một tấm lòng / Để làm gì em biết không ? / Để gió cuốn đi, để gió cuốn đi...”


#5 tuannguyen314169

tuannguyen314169

    biết lệnh ddedit

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

Đã gửi 05 April 2009 - 10:31 PM

a chị nào biết lệnh nối nhiều spline thành một không ạ!!! chỉ cho e với, e xin cảm ơn.

Mình cũng đang cần nối nhiều spline thành 1 spline chứ không phải nhiều spline thành 1 pline. Không biết ý bác có phải như vậy không?
  • 1

#6 haanh

haanh

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2875 Bài viết
Điểm đánh giá: 1554 (rất tốt)

Đã gửi 05 April 2009 - 10:36 PM

không còn cách nào khác hả bác, cách này cũng được nhưng hơi lâu bác nhỉ.

Vậy có cách nào cúng được nhưng hơi... nhanh bác nói cho Pà Kon biết???
  • 0

“Sống trong đời sống cần có một tấm lòng / Để làm gì em biết không ? / Để gió cuốn đi, để gió cuốn đi...”


#7 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 06 April 2009 - 10:12 AM

a chị nào biết lệnh nối nhiều spline thành một không ạ!!! chỉ cho e với, e xin cảm ơn.

Bạn có thể dùng chương trình Convert Spline to Pline(lệnh tắt là SPL2PL) sau đó dùng lệnh PE của Cad hoặc dùng Lisp để Joint các Pline thành 1 Pline vậy.Hơi thủ công & dài dòng nhưng méo mó có hơn không.

Đầu tiên, cho phép Tue_NV gửi lời cảm ơn đến bác Nguyễn Hoành, bác ssg cùng các bác trên diễn đàn. Các bác đã đặt những viên gạch đầu tiên vô cùng quý giá. Nếu hiểu đúng và đầy đủ bản chất của lệnh Lisp thì ta có thể làm rất nhiều việc lắm, tạo nên những ứng dụng cực kì hiệu quả cho công việc của mỗi chúng ta.

Chào các bạn Nani, tucdrom, haanh :
Đoạn Code sau Tue_NV đã cải tiến dựa trên Lisp của bác ssg và cải tiến dựa trên Code của bác Nguyễn Hoành đã trả lời cho bài viết Làm thế nào để tìm số đối tượng sinh ra bởi lệnh Boundary
Dựa vào ý của bạn tucdrom mình đã biến cái Spline thành Pline sau đó nối chúng lại với nhau thành 1 Pline duy nhất trong cùng một đọan Lisp

;;;***********************************************************
;;;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 tr ss1 cur frome toe) ;;;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


(setq frome (entlast))
(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
)
(setq toe (entlast))
(setq cur frome
ss1 (ssadd)
)
(while (not (eq cur toe)) ;; chon cac doi tuong tu frome den toe
(setq cur (entnext cur)
ss1 (ssadd cur ss1)))



(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"

(initget "C K") ;;;Init keywords
(setq ans (getkword "\nBan co muon noi cac Pline vua tao khong [C/K] <K>:")) ;;;Get answer from user
(if (= ans "C") (Command "Pedit" "M" ss1 "" "j" "0.5" "")) ;;;join Pline


(setvar "osmode" oldos) ;;;Reset osmode
(princ) ;;;Silent quit
)
;;;-------------------------------------------------------------

Chúc các bạn thành công :cry:
  • 1