Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
pdle

[Hỏi] Lisp thao tác trong 3D

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

Em đang vẽ một số hình trong 3D, nhưng gặp khá nhiều khó khăn vì em biết ít lệnh trong môi trường này quá. Vì thế khi có vấn đề là em đè ra viết lisp để rút ngắn thời gian.

Em gửi mấy cái lisp mà em viết lên đây, chúng dùng để thực hiện những thao tác mà em cần, nhưng có thể trong CAD đã có những lệnh để thực hiện chúng, nên em mong mọi người ghóp ý cho em, ví dụ như: lisp này có thể thay bằng lệnh abc gì đó của CAD, hoặc đoạn trong lisp này có thể thay đổi lại như sau… vv.

Em cảm ơn cả nhà rất nhiều!

Sau đây, em xin đi vào chi tiết:

1. Đo khoảng cách 2 điểm và hiện ra thông báo như sau:

3-9.jpg

Lisp:

;; Do khoang cach 2 diem trong 3D, dua ra do chenh toa do trong he toa do hien hanh
;; By pdle
(defun c:dis(/ pt1 pt2 dx dy dz u)
(setq 
	pt1 (getpoint "\nDiem thu nhat: ")
	pt2 (getpoint "\nDiem thu hai: ")
	dx (- (nth 0 pt2) (nth 0 pt1))
	dy (- (nth 1 pt2) (nth 1 pt1))
	dz (- (nth 2 pt2) (nth 2 pt1))
	u  (distance pt1 pt2)
)
(alert (strcat "dx= " (rtos dx) " dy= " (rtos dy) " dz= " (rtos dz) " Do dai= " (rtos u)))
)

2. Vẽ một ống hình trụ, điều kiện cho trước là trục ống, bán kính ngoài và bán kính trong của ống:

1-16.jpg

Lisp:

;;; Ve ong hinh tru co truc cho truoc
;;; By pdle
(defun c:otr (/ ent pt1 pt2 ent1 ent2 Routerpre Rinnerpre)
;; Tat che do bat diem
(setq OldOS (getvar "osmode"))
(setvar "osmode" 0)
;; Nhap truc cua ong
(setq ent (car (entsel "\nTruc cua ong: ")))
(setq pt1 (acet-dxf 10 (entget ent)) pt2 (acet-dxf 11 (entget ent)))
;; Nhap ban kinh ngoai
(if (= Router nil) (setq Routerpre 0.04) (setq Routerpre Router))
	(setq Router (getreal (strcat "\nBan kinh ngoai < " (rtos Routerpre) " > : ")))
	(if (= Router nil) (setq Router Routerpre))
;; Nhap ban kinh trong
(if (= Rinner nil) (setq Rinnerpre 0.03) (setq Rinnerpre Rinner))
	(setq Rinner (getreal (strcat "\nBan kinh trong < " (rtos Rinnerpre) " > : ")))
	(if (= Rinner nil) (setq Rinner Rinnerpre))
;; Ve hinh tru va thuc hien lenh subtract
(command "cylinder" pt1 Router "a" pt2)
;; Neu ban kinh trong khac 0, thi thuc hien ve hinh tru voi ban kinh trong va subtract
(if (/= Rinner 0) 
(progn
	(setq ent1 (entlast))
	(command "cylinder" pt1 Rinner "a" pt2)
	(setq ent2 (entlast))
	(command "subtract" ent1 "" ent2 "")
))
;; Tra lai che do bat diem
(setvar "osmode" OldOS)
)

3. Vẽ một ống tiết diện vuông, điều kiện cho trước là trục ống, kích thước ngoài của ống và độ dày thành ống:

2-12.jpg

Lisp:

;; Ve ong hinh vuong co truc cho truoc, co canh vuong go voi 1 trong 3 truc toa do cua WCS
;; By pdle
(defun c:ovu(/ pt1 pt2 pt3 ct con1 con2 i j k ent ent1 ent2 pt2new OldOS Dimepre Thickpre Orenpre X1 Y1 Z1 X2 Y2 Z2 Outer Inner)
;; Tat che do bat diem
(setq OldOS (getvar "osmode"))
(setvar "osmode" 0)
;; Dua he truc toa do ve WCS
(command "ucs" "w")
;; Nhap truc cua ong 
(setq ent (car (entsel "\nTruc cua ong: "))
	pt1 (acet-dxf 10 (entget ent))
	pt2 (acet-dxf 11 (entget ent))
	X1 (nth 0 pt1) Y1 (nth 1 pt1) Z1 (nth 2 pt1)
	X2 (nth 0 pt2) Y2 (nth 1 pt2) Z2 (nth 2 pt2)
)
;; Kich thuoc ngoai cua ong vuong
(if (= Dime nil) (setq Dimepre 0.1) (setq Dimepre Dime))
	(setq Dime (getreal (strcat "\nKich thuoc ngoai cua ong < " (rtos Dimepre) " > : ")))
	(if (= Dime nil) (setq Dime Dimepre))
;; Do day thanh ong
(if (= Thick nil) (setq Thickpre 0.006) (setq Thickpre Thick))
	(setq Thick (getreal (strcat "\nDo day cua ong < " (rtos Thickpre) " > : ")))
	(if (= Thick nil) (setq Thick Thickpre))
;; Tinh toan kich thuoc mat ngoai va mat trong ong
(setq Outer (* 0.5 Dime) Inner (- Outer Thick))
;; Xac dinh truc dinh huong cua ong
(if (= Oren nil) (setq Orenpre "Z") (setq Orenpre Oren))
	(setq Oren (strcase (getstring (strcat "\nTruc dinh huong (X,Y,Z) < " Orenpre " >: "))))
	(if (= Oren "") (setq Oren Orenpre))
(setq 
	i (cond ((= Oren "X") 1) ((= Oren "Y") 0) ((= Oren "Z") 0))  
	j (cond ((= Oren "X") 0) ((= Oren "Y") 1) ((= Oren "Z") 0))  
	k (cond ((= Oren "X") 0) ((= Oren "Y") 0) ((= Oren "Z") 1))  
	pt3 ( list (+ X1 (* k(- Y2 Y1)) (* j (- Z2 Z1))) (+ Y1 (* i(- Z2 Z1)) (* k (- X2 X1))) (+ Z1 (* i(- Y2 Y1)) (* j (- X2 X1))))
)
;; Dua ho truc toa do ve truc cua ong
(command "ucs" "3" pt1 pt2 pt3)
(setq 
	pt2new (trans pt2 0 1)
	ct (list (* 0.5 (nth 0 pt2new)) (* 0.5 (nth 1 pt2new)) (* 0.5 (nth 2 pt2new)))
	con1 (list 0 Outer Outer)
	con2 (list 0 Inner Inner)
)
;; Ve 2 hinh hop va dung lenh subtract de tao ong
(command "box" "c" ct con1) (setq ent1 (entlast))
(command "box" "c" ct con2) (setq ent2 (entlast))
(command "subtract" ent1 "" ent2 "")
;; Dua he truc toa do ve WCS va tra lai che do bat diem hien hanh
(command "ucs" "w")
(setvar "osmode" OldOS)
) 

  • 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

Lệnh đầu tiên có thể dùng lệnh DIST (DI) của AutoCAD, kết quả có luôn các góc so với mặt phẳng

Command: di
DIST Specify first point:  Specify second point:
Distance = 17.3205,  Angle in XY Plane = 45,  Angle from XY Plane = 35
Delta X = 10.0000,  Delta Y = 10.0000,   Delta Z = 10.0000

 

 

2 lệnh sau dùng EXTRUDE (EXT)+ SUBTRACT (SU) với điều kiện là phải vẽ 2 hình tròn hoặc 2 hình vuông trước. cái trục thì cách nào cũng phải vẽ.

Thâ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

Lệnh đầu tiên có thể dùng lệnh DIST (DI) của AutoCAD, kết quả có luôn các góc so với mặt phẳng

Command: di
DIST Specify first point:  Specify second point:
Distance = 17.3205,  Angle in XY Plane = 45,  Angle from XY Plane = 35
Delta X = 10.0000,  Delta Y = 10.0000,   Delta Z = 10.0000

Giờ thì em đã biết thêm một lệnh mới!

 

2 lệnh sau dùng EXTRUDE (EXT)+ SUBTRACT (SU) với điều kiện là phải vẽ 2 hình tròn hoặc 2 hình vuông trước. cái trục thì cách nào cũng phải vẽ.

Thân!

Nhưng cái này em đã nói là cho trục trước mà anh. Trục là là một đường trong 3D, nếu muốn vẽ các hình tròn và hình vuông vuông góc với trục đó, hơn nữa cạnh hình vuông lại phải vuông góc với trục định hướng, thì có lẽ là phải đổi trục tọa độ. Lisp em viết với mục đích như vậy, gộp mấy lệnh của AutoCAD lại với nhau đấy ạ!

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 đã sửa lại mấy cái lisp trên kia một chút (lisp 2 và lisp 3), bây giờ nó sẽ cho phép em chọn nhiều trục ống, vẽ đồng thời một lúc. Tại từ trước tới giờ em chỉ quen thao tác với entsel, bây giờ biết thêm lệnh ssget(cái này là nhờ em ngâm cứu lại một cái lisp em nhờ anh ketxu viết hộ, cảm ơn anh í một lần nữa :D), nên em cải tiến chúng một chút như sau, công việc nhanh hơn hẳn :)

 

Lisp 2: vẽ ống trụ:

;;; Ve ong hinh tru co truc cho truoc
;;; By pdle
(defun c:otr (/ ent pt1 pt2 ent1 ent2 Routerpre Rinnerpre)
;; Tat che do bat diem
(setq OldOS (getvar "osmode"))
(setvar "osmode" 0)
;; Nhap ban kinh ngoai
(if (= Router nil) (setq Routerpre 0.04) (setq Routerpre Router))
	(setq Router (getreal (strcat "\nBan kinh ngoai < " (rtos Routerpre) " > : ")))
	(if (= Router nil) (setq Router Routerpre))
;; Nhap ban kinh trong
(if (= Rinner nil) (setq Rinnerpre 0.03) (setq Rinnerpre Rinner))
	(setq Rinner (getreal (strcat "\nBan kinh trong < " (rtos Rinnerpre) " > : ")))
	(if (= Rinner nil) (setq Rinner Rinnerpre))
(prompt "\nNhap truc ong: ")
(foreach ent  (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "LINE"))))))
	(setq pt1 (acet-dxf 10 (entget ent)) pt2 (acet-dxf 11 (entget ent)))
	;; Ve hinh tru va thuc hien lenh subtract
	(command "cylinder" pt1 Router "a" pt2)
	;; Neu ban kinh trong khac 0, thi thuc hien ve hinh tru voi ban kinh trong va subtract
	(if (/= Rinner 0) 
	(progn
		(setq ent1 (entlast))
		(command "cylinder" pt1 Rinner "a" pt2)
		(setq ent2 (entlast))
		(command "subtract" ent1 "" ent2 "")
	))
)
;; Tra lai che do bat diem
(setvar "osmode" OldOS)
)

 

Lisp 3: Vẽ ống vuông

;; Ve ong hinh vuong co truc cho truoc, co canh vuong go voi 1 trong 3 truc toa do cua WCS
;; By pdle
(defun c:ovu(/ pt1 pt2 pt3 ct con1 con2 i j k ent ent1 ent2 pt2new OldOS Dimepre Thickpre Orenpre X1 Y1 Z1 X2 Y2 Z2 Outer Inner)
;; Tat che do bat diem
(setq OldOS (getvar "osmode"))
(setvar "osmode" 0)
;; Dua he truc toa do ve WCS
(command "ucs" "w")
;; Kich thuoc ngoai cua ong vuong
(if (= Dime nil) (setq Dimepre 0.1) (setq Dimepre Dime))
	(setq Dime (getreal (strcat "\nKich thuoc ngoai cua ong < " (rtos Dimepre) " > : ")))
	(if (= Dime nil) (setq Dime Dimepre))
;; Do day thanh ong
(if (= Thick nil) (setq Thickpre 0.006) (setq Thickpre Thick))
	(setq Thick (getreal (strcat "\nDo day cua ong < " (rtos Thickpre) " > : ")))
	(if (= Thick nil) (setq Thick Thickpre))
;; Tinh toan kich thuoc mat ngoai va mat trong ong
(setq Outer (* 0.5 Dime) Inner (- Outer Thick))
;; Xac dinh truc dinh huong cua ong
(if (= Oren nil) (setq Orenpre "Z") (setq Orenpre Oren))
	(setq Oren (strcase (getstring (strcat "\nTruc dinh huong (X,Y,Z) < " Orenpre " >: "))))
	(if (= Oren "") (setq Oren Orenpre))
(prompt "\nNhap truc cua ong: ")
(foreach ent  (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "LINE"))))))
	(setq 
		pt1 (acet-dxf 10 (entget ent))
		pt2 (acet-dxf 11 (entget ent))
		X1 (nth 0 pt1) Y1 (nth 1 pt1) Z1 (nth 2 pt1)
		X2 (nth 0 pt2) Y2 (nth 1 pt2) Z2 (nth 2 pt2)
		i (cond ((= Oren "X") 1) ((= Oren "Y") 0) ((= Oren "Z") 0))  
		j (cond ((= Oren "X") 0) ((= Oren "Y") 1) ((= Oren "Z") 0))  
		k (cond ((= Oren "X") 0) ((= Oren "Y") 0) ((= Oren "Z") 1))  
		pt3 ( list (+ X1 (* k(- Y2 Y1)) (* j (- Z2 Z1))) (+ Y1 (* i(- Z2 Z1)) (* k (- X2 X1))) (+ Z1 (* i(- Y2 Y1)) (* j (- X2 X1))))
	)
	;; Dua ho truc toa do ve truc cua ong
	(command "ucs" "3" pt1 pt2 pt3)
	(setq 
		pt2new (trans pt2 0 1)
		ct (list (* 0.5 (nth 0 pt2new)) (* 0.5 (nth 1 pt2new)) (* 0.5 (nth 2 pt2new)))
		con1 (list 0 Outer Outer)
		con2 (list 0 Inner Inner)
	)
	;; Ve 2 hinh hop va dung lenh subtract de tao ong
	(command "box" "c" ct con1) (setq ent1 (entlast))
	(command "box" "c" ct con2) (setq ent2 (entlast))
	(command "subtract" ent1 "" ent2 "")
	(command "ucs" "w")
)
;; tra lai che do bat diem hien hanh
(setvar "osmode" OldOS)
) 

  • 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

@pdle : mình không rành 3D lắm, nên cũng không dám chém về tác dụng của lisp cả. Còn cái đoạn ssget trong hàm ssnamex đó, nếu bạn đã dùng acet-dxf ở sau, tức là máy cần có Express => ta tận dụng thêm 1 tẹo ACET nữa :

=> đoạn (foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "LINE"))))))

sẽ sửa thành (foreach ent (acet-ss-to-list ((ssget '((0 . "LINE")))))..) cho gọn ^^

 

P/S : Nếu bạn bắt đầu viết lisp từ sau khi yêu cầu viết lisp mấy hôm trước, mà giờ đã được thế này thì quả thật bạn phất quá nhanh, hy vọng chẳng mấy chốc lại thành 1 cây lisper của Diễn đàn, và thổi nhiệt huyết đó cho các thành viên khác. Tks bạn

  • 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

@pdle : mình không rành 3D lắm, nên cũng không dám chém về tác dụng của lisp cả. Còn cái đoạn ssget trong hàm ssnamex đó, nếu bạn đã dùng acet-dxf ở sau, tức là máy cần có Express => ta tận dụng thêm 1 tẹo ACET nữa :

=> đoạn (foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "LINE"))))))

sẽ sửa thành (foreach ent (acet-ss-to-list ((ssget '((0 . "LINE")))))..) cho gọn ^^

Lại có một tí bổ sung vào vốn lisp của em rồi. Cảm ơn anh ketxu!

P/S : Nếu bạn bắt đầu viết lisp từ sau khi yêu cầu viết lisp mấy hôm trước, mà giờ đã được thế này thì quả thật bạn phất quá nhanh, hy vọng chẳng mấy chốc lại thành 1 cây lisper của Diễn đàn, và thổi nhiệt huyết đó cho các thành viên khác. Tks bạn

Anh ketxu khen làm em thấy lâng lâng quá. Em thấy học qua các ví dụ trên diễn đàn kết hợp với một vài tài liệu cơ bản thì rất là hiệu quả và cảm giác khá khả quan. Khi gặp vấn đề gì tắc tị là lên 4rum hỏi, kiểu gì cũng có phúc đáp ngay. Em sẽ cố gắng học tập mấy anh trên diễn đàn, hy vọng đến một nào đó sẽ thành một lisper của cadviet :D

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 đang vẽ một số hình trong 3D, nhưng gặp khá nhiều khó khăn vì em biết ít lệnh trong môi trường này quá. Vì thế khi có vấn đề là em đè ra viết lisp để rút ngắn thời gian.

Em gửi mấy cái lisp mà em viết lên đây, chúng dùng để thực hiện những thao tác mà em cần, nhưng có thể trong CAD đã có những lệnh để thực hiện chúng, nên em mong mọi người ghóp ý cho em, ví dụ như: lisp này có thể thay bằng lệnh abc gì đó của CAD, hoặc đoạn trong lisp này có thể thay đổi lại như sau… vv.

Em cảm ơn cả nhà rất nhiều!

2. Vẽ một ống hình trụ, điều kiện cho trước là trục ống, bán kính ngoài và bán kính trong của ống:

3. Vẽ một ống tiết diện vuông, điều kiện cho trước là trục ống, kích thước ngoài của ống và độ dày thành ống:

Ý tưởng ứng dụng lisp vẽ 3D rất đáng được thưởng lớn, em đã bật đèn xanh (+) cho ý tưởng này.

Với điều kiện anh đã đặt ra:

(-Vẽ một ống hình trụ, điều kiện cho trước là trục ống, bán kính ngoài và bán kính trong của ống

-Vẽ một ống tiết diện vuông, điều kiện cho trước là trục ống, kích thước ngoài của ống và độ dày thành ống)

Lại còn kèm theo cả điều kiện có trục ống nữa chắc chắn là lisp không vẽ nhanh bằng lệnh vẽ thông thường:

Vẽ ống trụ:

-Gõ CYL (vẽ hình trụ đặc) > chọn tâm > nhập R > H > vẽ xong hình trụ to > Enter > chọn tâm > nhập r > không cần nhập H >Enter > vẽ được hình trụ to

-Gõ lệnh SU để trừ khối

Vẽ ống vuông:

- Vẽ hai hình vuông

- Gõ lệnh EXT > Quét chọn cả 2 hình vuông> nhập chiều cao> được luôn 2 hình hộp.

-Gõ lệnh SU để trừ khối

 

Đối với hình trụ đặc vẽ bằng CYL , hình hộp đặc vẽ bằng lệnh BOX có thể kéo co tuỳ thích làm cho nó to, nhỏ, dài ngắn một cách tiện lợi. Hình ống tròn và ống vuông thì lại không thể co kéo được, mà lệnh Stretch lại không can thiệp được với hình 3D.

Từ thực tế trên, căn cứ vào hai cái ống trụ và ống vuông em xin trân trọng kính mời anh Pdle cũng các bác vào diễn đàn tìm cách co kéo làm cho cái ống của anh Pdle nó dài ra và to lên! Rất hân hạnh có sự hiện diện của lisp Stretch3D trên Topic này!

  • 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

Vẽ ống trụ:

-Gõ CYL (vẽ hình trụ đặc) > chọn tâm > nhập R > H > vẽ xong hình trụ to > Enter > chọn tâm > nhập r > không cần nhập H >Enter > vẽ được hình trụ to

Chắc là cái sau là vẽ hình trụ nhỏ, đúng không anh?

Nếu làm như anh, thì trong trường hợp trục cho trước, không song song với hệ trục tọa độ hiện hành thì 2 tiết diện hai đầu ống không thể vuông góc với trục được.

Để khắc phục cái này có thể dùng lệnh CYL, sau khi chọn tâm, nhập bán kính, ta không nhập H mà là cho vào trục của ống:

Specify height or [2Point/Axis endpoint] <-10.0000>: a

Specify axis endpoint:

 

Sở dĩ em dùng lisp bởi em phải vẽ hàm trăm ống kiểu như thế này, mà đánh lệnh thế này thì lâu quá. Lisp em viết ra ở đây, dùng cũng không nhanh lắm, nhưng em chả phải gõ gì cả vì nó tự động làm các thao tác trên!

 

Vẽ ống vuông:

- Vẽ hai hình vuông

Nếu trục ống là một đường bất kỳ nằm trong 3D, có dễ dàng vẽ được 2 hình vuông này 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

Để vẽ nhiều ống, vẽ ở các vị trí khác nhau trong không gian có rất nhiều cách vẽ . Trong Express đã có lệnh Copy/Move/Rotate chọn thoải mái. Không ai dại dột vẽ từng cái giống như anh.

Em có thể khẳng định luôn với anh rằng, vẽ 3D mà lại phải vẽ thêm đường trục là cách làm thô thiển, hiệu quả thấp nhất trên thế gian này.

 

Bản thân cái thằng 3D đã làm cho bản vẽ nặng chình chịch, lại bắt nó phải cõng thêm đường trục nữa hỏi rằng như thế có có “tàn nhẫn”, "có bất công" ko? Vẽ đường trục.... lại phải xoá đường trục, có tốn thời gian ko?

Câu hỏi của anh "Nếu trục ống là một đường bất kỳ nằm trong 3D, có dễ dàng vẽ được 2 hình vuông này không ạ? " , câu trả lời là có.Thí dụ:

- Vẽ hình ống trụ: dụng lệnh REV

- Vẽ hình hình ống vuông: gắn hệ trục toạ độ vào trục để vẽ . Gõ UCS > gõ 3 > Chọn điểm đầu trục, chọn điểm tiếp theo trên trục sẽ có OX nằm trên trục > Enter > gõ 3 > gắn OZ lên trục rồi vẽ như thường

Đó là em giả nhời cho câu hỏi cụ thể của anh, trước kia em đã từng làm như thế, bây giờ không làm kiểu ấy nữa.

 

Tóm lại, mỗi người có một cách làm riêng. Việc anh thích dùng lisp để vẽ hình ống theo đường trục là cách làm của riêng anh, là quyền tự do của anh, em không can thiệp.

Hiện em đang chập chững nghiên cứu về Lisp, cũng chỉ mới hiểu biết sơ sơ thôi, chưa thể cộng tác viết Lisp, cũng như chưa thể góp ý về cái Lisp của anh lúc này được. Cái mà em mong muốn là nếu có thời gian anh thử nghiên cứu làm cái Lisp Stretch3D để co kéo cho cái đường ống của anh nó ngắn lại, dài ra và to lên hoăc bé đi.

Em nói mong muốn, không đồng nghĩa với việc ép buộc hay kích động anh phải làm ra cái Lisp đó ngay đâu nhé! Nếu có thời gian rảnh rỗi anh hãy làm, đừng bận tâm nhiều mà ảnh hưởng đến công việc chính của anh! Chúc anh thành công, em nói có gì chưa phải cũng mong anh thông cảm và lượng thứ!

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ẽ nhiều ống, vẽ ở các vị trí khác nhau trong không gian có rất nhiều cách vẽ . Trong Express đã có lệnh Copy/Move/Rotate chọn thoải mái. Không ai dại dột vẽ từng cái giống như anh.

Em có thể khẳng định luôn với anh rằng, vẽ 3D mà lại phải vẽ thêm đường trục là cách làm thô thiển, hiệu quả thấp nhất trên thế gian này.

 

Bản thân cái thằng 3D đã làm cho bản vẽ nặng chình chịch, lại bắt nó phải cõng thêm đường trục nữa hỏi rằng như thế có có “tàn nhẫn”, "có bất công" ko? Vẽ đường trục.... lại phải xoá đường trục, có tốn thời gian ko?

 

Quá tàn nhẫn, quá tốn thời gian, nhưng với em là không vô ích anh ạ.

Cụ thể là thế nào anh ạ, bọn em đang học môn tính toán kết cấu bằng phương pháp phần tử hữu hạn (thực chất là tính toán một cái cầu trong chương trình Femap-Nastran). Vì trong chương trình đó cũng có các công cụ để vẽ mô hình nhưng mà vẽ một cái mô hình 3D thì nó quá vất, nên em vẽ cái mô hình trong CAD dưới dạng file .dxf sau đó import vào cho tiện.

 

Mô hình đó em chỉ cần vẽ các đường trục của các chi tiết (và chính xác là chỉ được vẽ như thế, bởi nếu vẽ bằng cách công cụ 3D vẽ luôn ra mô hình thì import vào nó không nhận). Sau khi đã tính toán no xôi chán chè trong đó rồi, em muốn vẽ cái cầu kia dạng 3D trong CAD.

Vậy là em phải giải một bài toán:

 

Cho một khung dây là trục của các đối tượng, hãy dựng các đối tượng lên khung dây đó.

 

Và thế là mấy cái lisp đó ra đời :D

 

Câu hỏi của anh vẽ ống có trục cho trước nằm xiên chéo trong gian , câu trả lời là có.Thí dụ:

- Vẽ hình ống trụ: dụng lệnh REV

 

Câu này trong bài viết trên em đã trả lời rồi anh ạ. Không cần dùng lệnh REV, ta hoàn toàn có thể dùng lệnh CYLinder để vẽ!

 

- Vẽ hình hình ống vuông: gắn hệ trục toạ độ vào trục để vẽ . Gõ UCS > gõ 3 > Chọn điểm đầu trục, chọn điểm tiếp theo trên trục sẽ có OX nằm trên trục > Enter > gõ 3 > gắn OZ lên trục rồi vẽ như thường

 

Gắn OZ lên trục nào hả anh?

 

Tóm lại, mỗi người có một cách làm riêng. Việc anh thích dùng lisp để vẽ hình ống theo đường trục là cách làm của riêng anh, là quyền tự do của anh, em không can thiệp.

Hiện em đang chập chững nghiên cứu về Lisp, cũng chỉ mới hiểu biết sơ sơ thôi, chưa thể cộng tác viết Lisp, cũng như chưa thể góp ý về cái Lisp của anh lúc này được. Cái mà em mong muốn là nếu có thời gian anh thử nghiên cứu làm cái Lisp Stretch3D để co kéo cho cái đường ống của anh nó ngắn lại, dài ra và to lên hoăc bé đi.

Em nói mong muốn, không đồng nghĩa với việc ép buộc hay kích động anh phải làm ra cái Lisp đó ngay đâu nhé! Nếu có thời gian rảnh rỗi anh hãy làm, đừng bận tâm nhiều mà ảnh hưởng đến công việc chính của anh! Chúc anh thành công, em nói có gì chưa phải cũng mong anh thông cảm và lượng thứ!

 

Cái này thì thi xong, em sẽ tìm hiểu xem nó thế nào anh ạ :)

 

Cảm ơn anh về những đóng ghóp một lần nữa !

  • 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

Về cái lệnh REV em đã nói: "Đó là em giả nhời cho câu hỏi cụ thể của anh, trước kia em đã từng làm như thế, bây giờ không làm kiểu ấy nữa."

Câu hỏi của anh: "Gắn OZ lên trục nào hả anh?"

Trả lời: đó chính là cái trục:"Nếu trục ống là một đường bất kỳ nằm trong 3D, có dễ dàng vẽ được 2 hình vuông này không ạ?"

Xin lỗi anh, vì em đã viết tắt nên anh khó hiểu. Viết đầy đủ là gắn hệ trục toạ độ OXYZ lên điểm đầu của trục sao cho OZ nằm đè lên trục.

Muốn vẽ 2 hình vuông vuông góc với một đường thẳng nằm lơ lững trong không gian phải gắn vào nó một hệ trục toạ độ, cách làm em đã nói kỹ ở trên!

Chúc anh thành công và gặp vui 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

- Vẽ hình hình ống vuông: gắn hệ trục toạ độ vào trục để vẽ . Gõ UCS > gõ 3 > Chọn điểm đầu trục, chọn điểm tiếp theo trên trục sẽ có OX nằm trên trục > Enter > gõ 3 > gắn OZ lên trục rồi vẽ như thường[/b]

Trả lời: đó chính là cái trục:"Nếu trục ống là một đường bất kỳ nằm trong 3D, có dễ dàng vẽ được 2 hình vuông này không ạ?"

Xin lỗi anh, vì em đã viết tắt nên anh khó hiểu. Viết đầy đủ là gắn hệ trục toạ độ OXYZ lên điểm đầu của trục sao cho OZ nằm đè lên trục.

 

Ở trên, anh nói trục OX nằm trên trục, ở dưới, anh bảo điểm đầu của trục Oz nằm đè lên trục, vậy là OX và OZ trùng nhau ạ?

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ột đường thẳng nằm chơi vơi trong không gian, nó không nằm trong mặt phẳng nào cả, làm cách nào để vẽ được hình chữ nhật vuông góc với đường thẳng đó???

Bắt buộc người ta phải gắn hệ trục toạ độ vào điểm đầu của nó. Vậy thì gắn hệ trục toạ độ vào đầu của một đoạn thẳng thế nào, trong khi lệnh gắn hệ trục toạ độ bắt buộc cần phải có hai điểm để xác định OX và OY.

Khi thực hiện lệnh Gõ UCS > gõ 3 > đầu tiên ta phải chọn điểm gốc là điểm đầu của đoạn thẳng gọi đây là điểm O, tiếp theo là chọn hướng OX bằng cách bắt một điểm bất kỳ trên đường thẳng. Còn một điểm nữa để xác định hướng của OY tìm ở đâu, khi mà trong không gian chỉ có mỗi một đường thẳng??? Rất may là CAD nó mặc định cứ ấn bừa vào khoảng không thế là bước 1 ta đã gắn được hệ trục toạ độ mà OX nằm đè lên đường thẳng, tạm gọi là hệ toạ độ UCS1.

Mục tiêu của ta là phải gắn hệ trục toạ độ lên đường thẳng mà OZ phải nằm đè lên đường thẳng vì thế người ta phải gõ Enter > 3 để bắt điểm hai điểm theo phương OY và OZ của hệ toạ độ UCS1. Kết thúc lệnh ta được hệ trục toạ độ UCS2 có OZ nằm đè lên đường thẳng.

Em đã viết: “Gõ UCS > gõ 3 > Chọn điểm đầu trục, chọn điểm tiếp theo trên trục sẽ có OX nằm trên trục > Enter > gõ 3 > gắn OZ lên trục rồi vẽ như thường”

Em viết rõ ràng thế mà anh còn thắc mắc, chứng tỏ rằng anh chưa làm quen với môi trường vẽ 3D, vì thế cái lisp của anh chỉ mang tính chất như một bài tập thực hành lập trình lisp. Dẫu sao thì khởi đầu của anh như thế cũng rất đáng 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

Bắt buộc người ta phải gắn hệ trục toạ độ vào điểm đầu của nó. Vậy thì gắn hệ trục toạ độ vào đầu của một đoạn thẳng thế nào, trong khi lệnh gắn hệ trục toạ độ bắt buộc cần phải có hai điểm để xác định OX và OY.

Khi thực hiện lệnh Gõ UCS > gõ 3 > đầu tiên ta phải chọn điểm gốc là điểm đầu của đoạn thẳng gọi đây là điểm O, tiếp theo là chọn hướng OX bằng cách bắt một điểm bất kỳ trên đường thẳng. Còn một điểm nữa để xác định hướng của OY tìm ở đâu, khi mà trong không gian chỉ có mỗi một đường thẳng??? Rất may là CAD nó mặc định cứ ấn bừa vào khoảng không thế là bước 1 ta đã gắn được hệ trục toạ độ mà OX nằm đè lên đường thẳng, tạm gọi là hệ toạ độ UCS1.

Mục tiêu của ta là phải gắn hệ trục toạ độ lên đường thẳng mà OZ phải nằm đè lên đường thẳng vì thế người ta phải gõ Enter > 3 để bắt điểm hai điểm theo phương OY và OZ của hệ toạ độ UCS1. Kết thúc lệnh ta được hệ trục toạ độ UCS2 có OZ nằm đè lên đường thẳng.

Em đã viết: “Gõ UCS > gõ 3 > Chọn điểm đầu trục, chọn điểm tiếp theo trên trục sẽ có OX nằm trên trục > Enter > gõ 3 > gắn OZ lên trục rồi vẽ như thường”

Em viết rõ ràng thế mà anh còn thắc mắc, chứng tỏ rằng anh chưa làm quen với môi trường vẽ 3D, vì thế cái lisp của anh chỉ mang tính chất như một bài tập thực hành lập trình lisp. Dẫu sao thì khởi đầu của anh như thế cũng rất đáng quý.

 

Em cám ơn anh đã quan tâm đến vấn đề của em.

 

Quả thực em mới vẽ trong môi trường 3D có 2 tuần, và vẻn vẹn có 2 lệnh là BOXCYLINDER với cái biến FACETRES

 

Trở lại vấn đề của em: Vẽ ống vuông với kích thước cho trước khi biết trục của nó, và thỏa mãn điều kiện là một trong các cạnh của tiết diện vuông phải vuông góc với 1 trong 3 trục tọa độ của WCS.

 

Hình minh họa:

 

2-12.jpg

 

Về cách của anh:

 

Gõ UCS > gõ 3 > Chọn điểm đầu trục, chọn điểm tiếp theo trên trục sẽ có OX nằm trên trục > Enter > gõ 3 > gắn OZ lên trục rồi vẽ như thường

Em làm mà nó ra như thế này anh ạ:

Specify origin of UCS or [Face/NAmed/OBject/Previous/View/World/X/Y/Z/ZAxis]

<World>: 3

Specify new origin point <0,0,0>:

Specify point on positive portion of X-axis <-756.8396,-1.8700,-2662.5130>:

Specify point on positive-Y portion of the UCS XY plane

<-758.5999,-1.2204,-2662.5130>:

Command: 3

Unknown command "3". Press F1 for help.

 

Đến đoạn Enter gõ 3 xong là nó bắt em xem help rồi. Em không hiểu tại sao nữa!

 

Cái lisp của em thì chắc là chỉ có ích với mỗi em thôi, và quả thực là nó rất có ích:

 

1. Giải quyết được vấn đề

2. Hiểu được mấy cái
foreach
,
mapcar
,
vl-remove-if
,
ssget
... mà hôm trước anh
ketxu
viết hộ cho em một cái lisp

 

Cái lisp đó đã giúp em giải quyết được vấn đề cụ thể sau:

 

Cho file như sau: http://www.cadviet.com/upfiles/3/before.dwg

Trong đó có chứa 516 trục của 516 ống vuông, kích thước ngoài là 0,1m và độ dày thành ống là 6mm. Điều kiện yêu cầu thêm là một trong các cạnh của tiết diện vuông của ống phải vuông góc với trục OX của WCS.

 

Em đã dùng lisp ongvuong, và vẽ 516 ống này trong vòng khoảng tầm 40s.

 

 

Và đây là kết quả: http://www.cadviet.com/upfiles/3/after.dwg

 

Em không biết là có cách giải quyết nào tối ưu hơn không?

 

Mong anh hoan2182 và mọi người ghóp ý!

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

Anh đưa ra con số so sánh thật khập khiễng….hình của anh quá đơn giản , anh chưa nói đến thời gian vẽ 2D. Anh vẽ “516 ống này trong vòng khoảng tầm 40s” chứng tỏ tốc độ máy của anh hơi bị chậm đấy!

Cách làm nhanh, em đã nói ở các bài trên rồi, vấn đề là anh phải thạo các lệnh biến đổi!

 

Anh thử làm lại xem????

“Gõ UCS > gõ 3 > Chọn điểm đầu trục, chọn điểm tiếp theo trên trục sẽ có OX nằm trên trục > Enter > gõ 3 > gắn OZ lên trục rồi vẽ như thường”

Command: ucs

Current ucs name: *WORLD*

Specify origin of UCS or [Face/NAmed/OBject/Previous/View/World/X/Y/Z/ZAxis]

<World>: 3

Specify new origin point <0,0,0>:

Specify point on positive portion of X-axis <2664.9350,756.3798,-0.2568>:

Specify point on positive-Y portion of the UCS XY plane

<2664.9334,756.3227,-0.2568>:

Command: UCS

Current ucs name: *NO NAME*

Specify origin of UCS or [Face/NAmed/OBject/Previous/View/World/X/Y/Z/ZAxis]

<World>: 3

Specify new origin point <0,0,0>:

Specify point on positive portion of X-axis <1.0000,0.0000,0.0000>:

Specify point on positive-Y portion of the UCS XY plane <-1.0000,0.0000,0.0000>:

ucs.jpg

 

Đây là file bản vẽ em lấy bản vẽ của anh, hình vẽ của anh để đặt hệ trục toạ độ:

 

http://www.cadviet.com/upfiles/3/ucs.dwg

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

Anh đưa ra con số so sánh thật khập khiễng….hình của anh quá đơn giản , anh chưa nói đến thời gian vẽ 2D. Anh vẽ “516 ống này trong vòng khoảng tầm 40s” chứng tỏ tốc độ máy của anh hơi bị chậm đấy!

 

Cái này có lẽ là do thuật toán của lisp của em viết chưa thanh thoát, còn tốc độ máy tính của em thì em thấy là nó cũng bình thường anh ạ :D

 

Cách làm nhanh, em đã nói ở các bài trên rồi, vấn đề là anh phải thạo các lệnh biến đổi!

 

Anh thử làm lại xem????

 

Để thạo các lệnh biến đổi thì cần phải luyện một thời gian. Hy vọng là em sẽ cố gắng được trong thời gian tới :D

 

“Gõ UCS > gõ 3 > Chọn điểm đầu trục, chọn điểm tiếp theo trên trục sẽ có OX nằm trên trục > Enter > gõ 3 > gắn OZ lên trục rồi vẽ như thường”

 

Command: ucs

Current ucs name: *WORLD*

Specify origin of UCS or [Face/NAmed/OBject/Previous/View/World/X/Y/Z/ZAxis]

<World>: 3

Specify new origin point <0,0,0>:

Specify point on positive portion of X-axis <2664.9350,756.3798,-0.2568>:

Specify point on positive-Y portion of the UCS XY plane

<2664.9334,756.3227,-0.2568>:

Command: UCS

Current ucs name: *NO NAME*

Specify origin of UCS or [Face/NAmed/OBject/Previous/View/World/X/Y/Z/ZAxis]

<World>: 3

Specify new origin point <0,0,0>:

Specify point on positive portion of X-axis <1.0000,0.0000,0.0000>:

Specify point on positive-Y portion of the UCS XY plane <-1.0000,0.0000,0.0000>:

 

Em thì mới học nên cũng hơi máy móc, ở đoạn trục OX nằm trên trục > Enter, hóa ra là phải gõ 2 lần Enter rồi mới gõ 3. Không phải là 1 lần Enter.

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ì mới học nên cũng hơi máy móc, ở đoạn trục OX nằm trên trục > Enter, hóa ra là phải gõ 2 lần Enter rồi mới gõ 3. Không phải là 1 lần Enter.

Khổ thân anh Pdle quá cơ! Đầu óc anh đang để ý đến cái Lisp vẽ ống, hay là đang tơ tưởng đế cái "mô hình hoá tương lai to đẹp và nhiều mơ mộng mộng mơ"???

Thao tác của anh lại có vấn đề rồi đấy! Gõ Enter 2 lần nó sẽ kết thúc lệnh thì còn làm nhanh ăn nhanh thế nào được nữa?

Anh hãy vào Thư giãn, mở cái Topic to đùng của anh ra ngắm nghía cái “mô hình hoá tương lai” của mình cho chán đi, rồi tiếp tục làm việc nhé!

Anh thử làm lại xem, chỉ cần Enter 1 lần thôi!!!

“Gõ UCS > gõ 3 > Chọn điểm đầu trục, chọn điểm tiếp theo trên trục sẽ có OX nằm trên trục > Enter > gõ 3 > gắn OZ lên trục rồi vẽ như thườ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

Khổ thân anh Pdle quá cơ! Đầu óc anh đang để ý đến cái Lisp vẽ ống, hay là đang tơ tưởng đế cái "mô hình hoá tương lai to đẹp và nhiều mơ mộng mộng mơ"???

Thao tác của anh lại có vấn đề rồi đấy! Gõ Enter 2 lần nó sẽ kết thúc lệnh thì còn làm nhanh ăn nhanh thế nào được nữa?

Anh hãy vào Thư giãn, mở cái Topic to đùng của anh ra ngắm nghía cái “mô hình hoá tương lai” của mình cho chán đi, rồi tiếp tục làm việc nhé!

Anh thử làm lại xem, chỉ cần Enter 1 lần thôi!!!

“Gõ UCS > gõ 3 > Chọn điểm đầu trục, chọn điểm tiếp theo trên trục sẽ có OX nằm trên trục > Enter > gõ 3 > gắn OZ lên trục rồi vẽ như thường”

 

Vất vả cho anh hoan2182 quá, gặp một cậu em amateur như em. Nhưng anh xem hộ em cái này với, nếu cái này đúng thì phải gõ 2 lần Enter mới chuẩn chứ anh?

 

1-24.jpg

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ất vả cho anh hoan2182 quá, gặp một cậu em amateur như em. Nhưng anh xem hộ em cái này với, nếu cái này đúng thì phải gõ 2 lần Enter mới chuẩn chứ anh?

Ko có gì vất vả chấm hết, em rất vui khi được giao lưu trực tuyến với người trên mạng ảo, chỉ nhìn thấy những dòng chữ lạnh lùng khô khan, mà chẳng dòm thấy cái mày ngang mũi dọc nó ra làm sao cũng vui lắm rồi!

Bây giờ anh mở cái bản vẽ của anh ra, nó ở đây:

Anh Zoom to nó lên rồi gõ UCS và thực hiện lại xem sao???

khoqua.jpg

Command: ucs

Current ucs name: *LEFT*

Specify origin of UCS or [Face/NAmed/OBject/Previous/View/World/X/Y/Z/ZAxis]

<World>: 3

Specify new origin point <0,0,0>:

Specify point on positive portion of X-axis <-755.3798,-0.2568,-2663.9350>:

Specify point on positive-Y portion of the UCS XY plane

<-757.1402,0.3927,-2663.9350>:

Command: UCS

Current ucs name: *NO NAME*

Specify origin of UCS or [Face/NAmed/OBject/Previous/View/World/X/Y/Z/ZAxis]

<World>: 3

Specify new origin point <0,0,0>:

Specify point on positive portion of X-axis <1.0000,0.0000,0.0000>:

Specify point on positive-Y portion of the UCS XY plane <-1.0000,0.0000,0.0000>:

Command:

Anh thử làm lại xem, chỉ cần Enter 1 lần thôi!!!

“Gõ UCS > gõ 3 > Chọn điểm đầu trục, chọn điểm tiếp theo trên trục sẽ có OX nằm trên trục > Enter > gõ 3 > gắn OZ lên trục rồi vẽ như thườ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

Em gửi mấy cái lisp mà em viết lên đây, chúng dùng để thực hiện những thao tác mà em cần, nhưng có thể trong CAD đã có những lệnh để thực hiện chúng, nên em mong mọi người ghóp ý cho em, ví dụ như: lisp này có thể thay bằng lệnh abc gì đó của CAD, hoặc đoạn trong lisp này có thể thay đổi lại như sau… vv.

Em cảm ơn cả nhà rất nhiều!

2. Vẽ một ống hình trụ, điều kiện cho trước là trục ống, bán kính ngoài và bán kính trong của ống:

3. Vẽ một ống tiết diện vuông, điều kiện cho trước là trục ống, kích thước ngoài của ống và độ dày thành ống:

Từ AutoCAD2007 đã có lệnh vẽ ống trụ và ống vuông, tên lệnh là: Polysolid

_Polysolid Specify start point or [Object/Height/Width/Justify]

<Object>:

Lệnh này cho phép ta lựa chọn H: nhập chiều dài ống, lựa chọn W: nhập độ dầy ố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

Giờ thì em đã biết thêm một lệnh mới!

Nhưng cái này em đã nói là cho trục trước mà anh. Trục là là một đường trong 3D, nếu muốn vẽ các hình tròn và hình vuông vuông góc với trục đó, hơn nữa cạnh hình vuông lại phải vuông góc với trục định hướng, thì có lẽ là phải đổi trục tọa độ. Lisp em viết với mục đích như vậy, gộp mấy lệnh của AutoCAD lại với nhau đấy ạ!

Từ AutoCAD2007 đã có lệnh vẽ ống trụ và ống vuông, tên lệnh là: Polysolid

_Polysolid Specify start point or [Object/Height/Width/Justify]

<Object>:

Lệnh này cho phép ta lựa chọn H: nhập chiều dài ống, lựa chọn W: nhập độ dầy ống...

ww.jpg

 

Từ AutoCAD2007 đã có lệnh Sweep, lệnh này tương tự như lệnh Extrude, chỉ có sự khác biệt là không cần hình tròn và vuông phải vuông góc với trục dẫn!

 

Chốt lại chỉ cần ứng dụng 1 trong 2 lệnh: hoặc dùng lệnh Polysolid , hoặc dùng lệnh Sweep một cách hợp lý, không cần phải gắn hệ trục toạ độ USC, công việc của anh Pdle sẽ được thực hiện nhanh hơn lisp gấp nhiều lầ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

ww.jpg

 

Từ AutoCAD2007 đã có lệnh Sweep, lệnh này tương tự như lệnh Extrude, chỉ có sự khác biệt là không cần hình tròn và vuông phải vuông góc với trục dẫn!

 

Chốt lại chỉ cần ứng dụng 1 trong 2 lệnh: hoặc dùng lệnh Polysolid , hoặc dùng lệnh Sweep một cách hợp lý, không cần phải gắn hệ trục toạ độ USC, công việc của anh Pdle sẽ được thực hiện nhanh hơn lisp gấp nhiều lần!

Cám ơn anh hoan2182, em sẽ tham khảo :D

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ẤY cái lisp này mấy anh và chú phòng mình viết cách đây 4 năm rồi, vẽ cả được thép chữ I, L theo tiêu chuẩn Mỹ ASTM, API. vẽ thép ống dàn khoan dầu khí chỉ mất 10s với đúng i thao tác: kích ký hiệu lệnh, chọn layer => xong!!! xem file: ống chiều dày t ở giá cập tàu, ống vỏ mỏng ở phía trên và ống đặc ở phía dưới, file này là vẽ cho vui thôi ^^ http://www.mediafire.com/?4opus77kltz4m3e

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ẤY cái lisp này mấy anh và chú phòng mình viết cách đây 4 năm rồi, vẽ cả được thép chữ I, L theo tiêu chuẩn Mỹ ASTM, API. vẽ thép ống dàn khoan dầu khí chỉ mất 10s với đúng i thao tác: kích ký hiệu lệnh, chọn layer => xong!!!

Có gì lạ đâu :o

Chỉ lạ khi bạn public nó thôi :D

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ó gì lạ đâu :o Chỉ lạ khi bạn public nó thôi :D

vậy bạn thử viết cho mình xin 1 cái thử đc ko?

bài toán đặt ra: vẽ layer có tên W24x18, W12x40 hoặc bất kỳ(khoảng 320 loại , không theo quy luật) , dùng lisp 1 lệnh vẽ đúng thép W trong tiêu chuẩn ASTM ( chiều cao, rông, chiều dày, bán kính cong hàn...) , vẽ 1 lúc nhiều thanh trong không gian và tên khác nhau chỉ mất 5-7s.

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
Đăng nhập để thực hiện theo  

×