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

Vẽ ống mềm kiểu ruột gà

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

mình có 2 file lisp ma khi upload len nó bảo thiếu file dttlhh (.lsp/exe/.arx) cái lisp của mình cần là vẽ 1 đường thẳng là một hình zizac ( bác nào làm ĐHKK) hoạc đọc bản vẽ ĐHKK thì hiểu vì mình khó tả lắm. mong các bác giúp cho.

đây là file upload lên.

http://www.cadviet.com/upfiles/Thanh_1_1.lsp

 

<a href="http://www.cadviet.com/upfiles/dttlhh.lsp" target="_blank">http://www.cadviet.com/upfiles/dttlhh.lsp</a>

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ó 2 file lisp ma khi upload len nó bảo thiếu file dttlhh (.lsp/exe/.arx) cái lisp của mình cần là vẽ 1 đường thẳng là một hình zizac ( bác nào làm ĐHKK) hoạc đọc bản vẽ ĐHKK thì hiểu vì mình khó tả lắm. mong các bác giúp cho.

đây là file upload lên.

Góp ý:

1) File lisp của bạn có đoạn: (autoload "dttlhh" '("vc1" "vc2" "vc3" "vc4" "vc5" "vc6" "dx") ). Tìm không thấy file dttlhh.lsp thì nó bảo là thiếu, chẳng có gì là lạ!

 

2) Các file của bạn là những thành phần đơn lẻ của 1 ứng dụng nào đó. Bạn copy không đến đầu đến đũa (chỉ toàn là sub function, không có lệnh), không ai hiểu chúng là cái gì đâu. Bản thân ssg, hiểu về lisp cũng tương đối, nhưng đọc qua một lượt 2 file lsp của bạn vẫn không có một chút khái niệm gì trong đầu!

 

3) Người dùng CAD thuộc nhiều chuyên ngành khác nhau. Không có chuyên môn đọc càng không hiểu. Khó cũng phải tìm cách diễn đạt để bất kỳ ai cũng có thể hiểu được thì bạn mới có hy vọng được giúp đỡ.

 

4) Theo mình, tốt nhất bạn sang topic "Viết lisp theo yêu cầu" và nêu cụ thể bạn muốn gì. Lưu ý rằng, nếu ai đó có thể viết lisp theo yêu cầu của bạn, họ sẽ không bao giờ quan tâm đến 2 file lsp nói trên vì chúng chẳng có giá trị gì đối với họ!

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ảm ơn ban SSg đã trả lời. Chính vì mình không biết tí gí về lisp nên mình mới hỏi như thế mong bạn thông cảm.

http://www.cadviet.com/upfiles/duong_zizac.rar. Đây là cái đường mà mình miêu tả nó được vẽ bằng lệnh polyline, SPLine hoạc lệnh line đều được điểm đầu nó như một hình vuông điểm cuối nó là một đường tròn. và nó có thể thay đổi được hình tròn cuối và hình vuông ở đầu. nhưng hình tròng cuối đúng bằng khoảng cách giữa 2 cạnh của hình vuông.

Mong bạn thông cảm vì hình của nó như thế nên khó diễn tả qua. vậy các bạn có thể giúp mình cái lisp này được không vậy. nếu mà ở giữa có đường tâm thì tốt quá .

Cảm ơ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

Thì ra là cái ống mềm. Là nhà kỹ thuật, bạn hãy tập diễn đạt mọi vấn đề theo phong cách kỹ thuật: ngắn gọn, rõ ràng, kèm theo ví dụ minh hoạ. Chẳng hạn: tôi muốn có chương trình vẽ cái ống nối mềm (thuật ngữ là flexible tube, dân gian có khi gọi là ống ruột gà). Cái này dùng khá phổ biến trong kỹ thuật lẫn đời sống, không riêng gì ngành Điều hoà không khí của bạn. Ví dụ: dùng cho chỗ nối ống cho phép co giãn được của tất cả các hệ thống dẫn khí, nước, hơi nước, dầu...; ống lồng dây điện, ống dẫn nước ra vòi hoa sen... Nếu bạn diễn đạt như vậy thì chắc ai cũng hiểu!

Sơ bộ như vậy, nhưng yêu cầu lập trình phải chi tiết hơn. Bạn đưa ví dụ bằng file dwg là đúng bài rồi, tự thân nó nói lên nhiều điều không cần giải thích. Tuy nhiên, cần phải cụ thể hơn nữa. Nếu không, viết chương trình mất công mà kết quả có khi không đúng ý bạn. Xin nhắc lại, quan điểm của mình cũng như anh Hoành: không ngại lập trình nhưng rất ngại phải sửa đi sửa lại!

Tạm thời, bạn thử đoạn chương trình sau, tên lệnh RG, chỉ áp dụng cho đoạn thẳng. Bạn xem kết quả có đúng ý không. Nếu OK, sẽ có chương trình cho các đoạn ống với hình dạng bất kỳ (đường tâm là line, pline, spline, arc, circle):

;;;--------------------------------------------------------
(defun ToaDoRG()
(setq
   p1 (polar p01 (- a (/ pi 2)) (/ D 2))
   p2 (polar p1 a S)
   p3 (polar p01 (+ a (/ pi 2)) (/ D 2))
   p4 (polar p3 a S)
   p01 (polar p01 a S)
)
)
;;;--------------------------------------------------------
(defun C:RG( / D p01 p02 p1 p2 p3 p4 L a n S oldos) ;;;Ve ong ruot ga
(setq
   D (getreal "\nDuong kinh ong:")
   p01 (getpoint "\nDiem dau:")
   p02 (getpoint p01 "\nDiem cuoi:")
   L (distance p01 p02)
   a (angle p01 p02)
   n (fix (/ (* 4 L) D))
   S (/ L n)
   oldos (getvar "osmode")
)
(setvar "osmode" 0)
(command "line" p01 p02 "")
(command "circle" p02 (/ D 2))
(ToaDoRG)
(command "line" p1 p2 p4 p3 "C")
(repeat (- n 1)
   (ToaDoRG)
   (command "line" p2 p4 "")
   (command "arc" p2 "e" p1 "a" 90)
   (command "arc" p3 "e" p4 "a" 90)
)
(command "arc" p2 (polar p02 a S) p4)
(setvar "osmode" oldos)
(princ)
)
;;;--------------------------------------------------------

  • Vote tăng 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

cảm ơn ban. Thật ra thì mình cũng biết là nó ap dụng rất là nhiều nhưng để diễn đạn nó rất là khó vì như điện ban không bao giờ vẽ ống ruột ga lên bản vẽ cả và các ngàng khác nữa họ có vẽ nhưng rất ít ( cùng lắm chỉ thể hiện trên bản vẽ chi tiết thôi ) nên không cần đến lsp như thế cả. con lệnh của bạn là đúng theo yêu cầu của mình rồi cảm ơn bạn. nhưng mình thấy nó là tập hợp của các line nên như thế bản vẽ rất nặng. bạn có thể tạo thành đường spline và đường tâm của nó là một mầu khác 8 hoạc 9 ấy và nó là nét tâm được không vậy.

Cảm ơn bạn 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

Chương trình vẽ ống nối mềm. Xem giải thích chi tiết trong code:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;CHUONG TRINH VE ONG NOI MEM - FLEXIBLE TUBE
;;;Yeu cau: AutoCAD 2000 tro len
;;;Lenh: NM, nhap duong kinh ong va pick chon duong tam
;;;Chap nhan cac loai: line, pline, spline, arc, circle, ellipse
;;;Chuong trinh bat dau ve tu dau mut gan hon so voi diem pick
;;;Tri so duong kinh D cua lan chay truoc duoc tu dong luu lai
;;;Neu khong muon thay doi D, Enter khong can nhap so
;;;Gia tri mac dinh ban dau D = 100
;;;Ket qua ve la 1 duong pline duy nhat
;;;Written by ssg - June 2008 - www.cadviet.com
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun C:NM( / D chon e pC pM xM L ps pe n S
                     p01 x flag p02 a p1 p2 p3 p4 i oldos p03 p5 p6)
(vl-load-com)
(if (not D0) (setq D0 100))
(setq D (getreal (strcat "\nNhap duong kinh ong <" (rtos D0) ">:")))
(if (not D) (setq D D0) (setq D0 D))
(setq
   chon (entsel "\nPick chon duong tam:")
   e (car chon)
   pC (cadr chon)
   pM (vlax-curve-getClosestPointTo e pc) 
   xM (vlax-curve-getDistAtPoint e pM)
   L (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e))
   ps (vlax-curve-getPointAtDist e 0)
   pe (vlax-curve-getPointAtDist e L) 
   n (fix (/ (* 4 L) D))
   S (/ L n)
)
(if (<= xM (/ L 2)) (setq p01 ps x 0 flag 1) (setq p01 pe x L flag -1))
(setq
   p02 (vlax-curve-getPointAtDist e (+ x (* S flag)))
   a (angle p01 p02)
   p1 (polar p01 (- a (/ pi 2)) (/ D 2))
   p2 (polar p1 (+ a (/ pi 2)) D)
   p3 (polar p1 a S)
   p4 (polar p2 a S)
   i 2
   oldos (getvar "osmode")
)
(setvar "osmode" 0)
(command "pline" p3 p4 p2 p1 p3)
(repeat (- n 1)
   (setq
       p03 (vlax-curve-getPointAtDist e (+ x (* i S flag)))
       a (angle p02 p03)
       p5 (polar p03 (- a (/ pi 2)) (/ D 2))
       p6 (polar p5 (+ a (/ pi 2)) D)
   )
   (if (= i 2) (command "a"))
   (command "a" -90 p5 "L" p6 "a" "a" -90 p4 "L" p3 "a" "a" -90 p5)
   (setq p02 p03 p3 p5 p4 p6 i (1+ i))
)
(command "a" 90 p6 "a" 180 p5 "a" 180 p6 "")
(setvar "osmode" oldos)
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  • Like 1
  • Vote tăng 5

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ảm ơn bạn rất nhiều

Chào các bạn.

trước tiên tôi cảm ơn các bạn về trang wed cadviet .com.vn

Hai lisp mà tôi douwn về không sử dụng được

vì máy báo lổi, Mong các bạn chỉ giúp cho.

Xin trân trọng cảm ơn các bạn.

cái này tôi rất cầ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
Chào các bạn.

trước tiên tôi cảm ơn các bạn về trang wed cadviet .com.vn

Hai lisp mà tôi douwn về không sử dụng được

vì máy báo lổi, Mong các bạn chỉ giúp cho.

Xin trân trọng cảm ơn các bạn.

cái này tôi rất cần.

 

cho iem hỏi ống ruột gà có phải là ống loằng ngòa loằng ngoằng như ống nhựa mềm của máy bơm nước vẽ bằng lệnh spline ko????

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
cho iem hỏi ống ruột gà có phải là ống loằng ngòa loằng ngoằng như ống nhựa mềm của máy bơm nước vẽ bằng lệnh spline ko????

Chào bác haanh,

Chí phải, chí phải bác ạ. Nhưng mà cũng có lắm kiểu ruột gà lắm bác ạ, có loại có gân, có loại không, .....

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 bác haanh,

Chí phải, chí phải bác ạ. Nhưng mà cũng có lắm kiểu ruột gà lắm bác ạ, có loại có gân, có loại không, .....

 

Em thấy nhiều người hay gọi lò xo là ống xoắn ruột gà, nên mới hỏi bác. Em thử vẽ đường loằng ngoằng trên CAD 2007

 

Vẽ đường loằng ngoằng bằng lệnh Spline , vẽ vòng tròn ống bằng lệnh Circle nhưng nó ko cho Extrude theo đường dẫn Spline.

 

Cho em hỏi các bác có cách nào biến được Spline thành polyline ko?

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
+ Lệnh S2P trong s2p.lsp dùng để đổi Spine ra Polyline.

Lisp có trong bài #8: http://www.cadviet.com/forum/index.php?showtopic=9019

Cho em hỏi dùng lisp có nối liền được các đường line, spline, arc thành một khối như đường poline ko ạ, em chưa sử dụng lisp xin được chỉ giáo em cảm ơn trướ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
Cho em hỏi dùng lisp có nối liền được các đường line, spline, arc thành một khối như đường poline ko ạ, em chưa sử dụng lisp xin được chỉ giáo em cảm ơn trước!

Dùng lệnh C2P để chuyển Spline thành Pline.

Lệnh NN để join các Line, Pline, Arc.. thành "một khối"

Các Lisp này có post trong topic trên bạn ạ.

  • 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

Chương trình vẽ ống nối mềm. Xem giải thích chi tiết trong code:

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;CHUONG TRINH VE ONG NOI MEM - FLEXIBLE TUBE
;;;Yeu cau: AutoCAD 2000 tro len
;;;Lenh: NM, nhap duong kinh ong va pick chon duong tam
;;;Chap nhan cac loai: line, pline, spline, arc, circle, ellipse
;;;Chuong trinh bat dau ve tu dau mut gan hon so voi diem pick
;;;Tri so duong kinh D cua lan chay truoc duoc tu dong luu lai
;;;Neu khong muon thay doi D, Enter khong can nhap so
;;;Gia tri mac dinh ban dau D = 100
;;;Ket qua ve la 1 duong pline duy nhat
;;;Written by ssg - June 2008 - www.cadviet.com
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun C:NM( / D chon e pC pM xM L ps pe n S
p01 x flag p02 a p1 p2 p3 p4 i oldos p03 p5 p6)
(vl-load-com)
(if (not D0) (setq D0 100))
(setq D (getreal (strcat "\nNhap duong kinh ong <" (rtos D0) ">:")))
(if (not D) (setq D D0) (setq D0 D))
(setq
chon (entsel "\nPick chon duong tam:")
e (car chon)
pC (cadr chon)
pM (vlax-curve-getClosestPointTo e pc)
xM (vlax-curve-getDistAtPoint e pM)
L (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e))
ps (vlax-curve-getPointAtDist e 0)
pe (vlax-curve-getPointAtDist e L)
n (fix (/ (* 4 L) D))
S (/ L n)
)
(if (<= xM (/ L 2)) (setq p01 ps x 0 flag 1) (setq p01 pe x L flag -1))
(setq
p02 (vlax-curve-getPointAtDist e (+ x (* S flag)))
a (angle p01 p02)
p1 (polar p01 (- a (/ pi 2)) (/ D 2))
p2 (polar p1 (+ a (/ pi 2)) D)
p3 (polar p1 a S)
p4 (polar p2 a S)
i 2
oldos (getvar "osmode")
)
(setvar "osmode" 0)
(command "pline" p3 p4 p2 p1 p3)
(repeat (- n 1)
(setq
p03 (vlax-curve-getPointAtDist e (+ x (* i S flag)))
a (angle p02 p03)
p5 (polar p03 (- a (/ pi 2)) (/ D 2))
p6 (polar p5 (+ a (/ pi 2)) D)
)
(if (= i 2) (command "a"))
(command "a" -90 p5 "L" p6 "a" "a" -90 p4 "L" p3 "a" "a" -90 p5)
(setq p02 p03 p3 p5 p4 p6 i (1+ i))
)
(command "a" 90 p6 "a" 180 p5 "a" 180 p6 "")
(setvar "osmode" oldos)
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Đăng ký ngay 1 Account để cảm ơn bác, nhưng hơi tiếc chút là mình đang vẽ ống xoắn HDPE rãnh ống sít nhau quá.

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

Em thấy nhiều người hay gọi lò xo là ống xoắn ruột gà, nên mới hỏi bác. Em thử vẽ đường loằng ngoằng trên CAD 2007

 

Vẽ đường loằng ngoằng bằng lệnh Spline , vẽ vòng tròn ống bằng lệnh Circle nhưng nó ko cho Extrude theo đường dẫn Spline.

 

Cho em hỏi các bác có cách nào biến được Spline thành polyline ko?

 

Nếu em nhớ không nhầm thì từ AutoCAD2007 đã có lệnh Sweep vẽ được đường ống theo đường dẫn theo đường Spline

Và AutoCAD đời cao có thể Extrude theo đường dẫn Spline. :) :) :)

  • Like 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
On 6/16/2008 at 8:24 AM, ssg said:

Chương trình vẽ ống nối mềm. Xem giải thích chi tiết trong code:

 



 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;CHUONG TRINH VE ONG NOI MEM - FLEXIBLE TUBE
;;Yeu cau: AutoCAD 2000 tro len
;;Lenh: NM, nhap duong kinh ong va pick chon duong tam
;;Chap nhan cac loai: line, pline, spline, arc, circle, ellipse
;;Chuong trinh bat dau ve tu dau mut gan hon so voi diem pick
;;Tri so duong kinh D cua lan chay truoc duoc tu dong luu lai
;;Neu khong muon thay doi D, Enter khong can nhap so
;;Gia tri mac dinh ban dau D = 100
;;Ket qua ve la 1 duong pline duy nhat
;;Written by ssg - June 2008 - www.cadviet.com
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun C:NM( / D chon e pC pM xM L ps pe n S
                     p01 x flag p02 a p1 p2 p3 p4 i oldos p03 p5 p6)
(vl-load-com)
(if (not D0) (setq D0 100))
(setq D (getreal (strcat "\nNhap duong kinh ong <" (rtos D0) ">:")))
(if (not D) (setq D D0) (setq D0 D))
(setq
   chon (entsel "\nPick chon duong tam:")
   e (car chon)
   pC (cadr chon)
   pM (vlax-curve-getClosestPointTo e pc) 
   xM (vlax-curve-getDistAtPoint e pM)
   L (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e))
   ps (vlax-curve-getPointAtDist e 0)
   pe (vlax-curve-getPointAtDist e L) 
   n (fix (/ (* 4 L) D))
   S (/ L n)
)
(if (<= xM (/ L 2)) (setq p01 ps x 0 flag 1) (setq p01 pe x L flag -1))
(setq
   p02 (vlax-curve-getPointAtDist e (+ x (* S flag)))
   a (angle p01 p02)
   p1 (polar p01 (- a (/ pi 2)) (/ D 2))
   p2 (polar p1 (+ a (/ pi 2)) D)
   p3 (polar p1 a S)
   p4 (polar p2 a S)
   i 2
   oldos (getvar "osmode")
)
(setvar "osmode" 0)
(command "pline" p3 p4 p2 p1 p3)
(repeat (- n 1)
   (setq
       p03 (vlax-curve-getPointAtDist e (+ x (* i S flag)))
       a (angle p02 p03)
       p5 (polar p03 (- a (/ pi 2)) (/ D 2))
       p6 (polar p5 (+ a (/ pi 2)) D)
   )
   (if (= i 2) (command "a"))
   (command "a" -90 p5 "L" p6 "a" "a" -90 p4 "L" p3 "a" "a" -90 p5)
   (setq p02 p03 p3 p5 p4 p6 i (1+ i))
)
(command "a" 90 p6 "a" 180 p5 "a" 180 p6 "")
(setvar "osmode" oldos)
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 

Mình cũng đang tìm vì mình chỉ cần lisp vẽ nối mềm thôi chứ cài cả lisp Nam thì lại không dùng đến. Nhưng bạn có thể sửa hộ mình để bán kính các đướng tròn hướng ra ngoài ko? Vì nối mềm ống điện các cung tròn không hướng vào trong. Cám ơn bạ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
Vào lúc 16/6/2008 tại 08:24, ssg đã nói:

Chương trình vẽ ống nối mềm. Xem giải thích chi tiết trong code:

 


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;CHUONG TRINH VE ONG NOI MEM - FLEXIBLE TUBE
;;Yeu cau: AutoCAD 2000 tro len
;;Lenh: NM, nhap duong kinh ong va pick chon duong tam
;;Chap nhan cac loai: line, pline, spline, arc, circle, ellipse
;;Chuong trinh bat dau ve tu dau mut gan hon so voi diem pick
;;Tri so duong kinh D cua lan chay truoc duoc tu dong luu lai
;;Neu khong muon thay doi D, Enter khong can nhap so
;;Gia tri mac dinh ban dau D = 100
;;Ket qua ve la 1 duong pline duy nhat
;;Written by ssg - June 2008 - www.cadviet.com
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun C:NM( / D chon e pC pM xM L ps pe n S
                     p01 x flag p02 a p1 p2 p3 p4 i oldos p03 p5 p6)
(vl-load-com)
(if (not D0) (setq D0 100))
(setq D (getreal (strcat "\nNhap duong kinh ong <" (rtos D0) ">:")))
(if (not D) (setq D D0) (setq D0 D))
(setq
   chon (entsel "\nPick chon duong tam:")
   e (car chon)
   pC (cadr chon)
   pM (vlax-curve-getClosestPointTo e pc) 
   xM (vlax-curve-getDistAtPoint e pM)
   L (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e))
   ps (vlax-curve-getPointAtDist e 0)
   pe (vlax-curve-getPointAtDist e L) 
   n (fix (/ (* 4 L) D))
   S (/ L n)
)
(if (<= xM (/ L 2)) (setq p01 ps x 0 flag 1) (setq p01 pe x L flag -1))
(setq
   p02 (vlax-curve-getPointAtDist e (+ x (* S flag)))
   a (angle p01 p02)
   p1 (polar p01 (- a (/ pi 2)) (/ D 2))
   p2 (polar p1 (+ a (/ pi 2)) D)
   p3 (polar p1 a S)
   p4 (polar p2 a S)
   i 2
   oldos (getvar "osmode")
)
(setvar "osmode" 0)
(command "pline" p3 p4 p2 p1 p3)
(repeat (- n 1)
   (setq
       p03 (vlax-curve-getPointAtDist e (+ x (* i S flag)))
       a (angle p02 p03)
       p5 (polar p03 (- a (/ pi 2)) (/ D 2))
       p6 (polar p5 (+ a (/ pi 2)) D)
   )
   (if (= i 2) (command "a"))
   (command "a" -90 p5 "L" p6 "a" "a" -90 p4 "L" p3 "a" "a" -90 p5)
   (setq p02 p03 p3 p5 p4 p6 i (1+ i))
)
(command "a" 90 p6 "a" 180 p5 "a" 180 p6 "")
(setvar "osmode" oldos)
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 

 

cám ơn bạn, cám ơn người viết code đã chia sẻ cho anh em kỹ thuật, chúc mọi người nhiều sức khỏe!

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

×