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

[YỀU CẦU] LISP Xuất file 3d thành 2d

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

Hiện tại mình đang viết script xuất 3d thành 2d. Nhưng mình muốn ẩn tất cả các layer ngoại trừ layer PH & PV. và đổi tên layer PH & PV thành layer 1 &layer 2. Nhưng mình không biết lệnh. Các huynh giúp mình ha. Sẳn các huynh viết cho mình lisp xuất 3d thành 2d luon nha.

-GROUP
C
OUXX
ALL
-VIEW
O
F
COPY
ALL
0,0,0
@2000,0,0
ROTATE3D
LAST
Y
@8000,0,0
90
COPY
G
OUXX
0,0,0
0,-2000,0
ROTATE3D
LAST
X
@0,-2000,0
90
LAYOUT

ERASE
ALL
MVIEW
_.MSPACE
SOLPROF
ALL
Y
Y
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

-GROUP
C
OUXX
ALL
-VIEW
O
F
COPY
ALL
0,0,0
@2000,0,0
ROTATE3D
LAST
Y
@0,500,0
90
COPY
G
OUXX
0,0,0
0,-2000,0
ROTATE3D
LAST
X
@-2000,0,0
90
LAYOUT

ERASE
ALL
MVIEW
_.MSPACE
SOLPROF
ALL
Y
Y
N
-LAYER
OFF
*
Y
MODEL
-LAYER
ON
PH*
ON
PV*

Mình đã hoàn thành xong doan script đó. Nhưng nó bắt mình phải về tọa độ 0,0,0. thỉnh thoảng nó vẫn bị lỗi. Bạn nào sửa giúp mình với.

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ạn không nên vừa post bài đã kêu trời. Cũng không nên post 2 bài yêu cầu vào 1 chỗ. Càng không nên post yêu cầu 1 cách hời hợt như vậy.

- Việc xuất 3D -> 2D không biết theo ý bạn là làm gì, bạn không nói đầu vào và đầu ra => Nghiên cứu lệnh FLATSHOT và phương pháp in áo ra file DXB

- Layer : bạn hoàn toàn có thể tự làm từ những dòng command như sau, mình ghi chú chức năng và bỏ qua các phần kiểm tra liệu có / không tồn tại layer PH,PV,1,2 trong bản vẽ :

(defun c:test()

;Chuyển layer hiện thời sang PH hoặc PV, nếu là layer khác đang ở trạng thái active thì không thể ẩn nó được

(setvar "clayer" "PH")

;Freeze toàn bộ các layer không bao gồm tên PH,PV

(command "-layer" "F" "~P[HV]" "")

;Rename PH => 1

(command "-rename" "LA" "PH" "1")

;Rename PV => 2

(command "-rename" "LA" "PV" "2")

(princ)

)

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ó 1 cách khác không cần viết lisp vẫn có thể xuất 3D thành 2D trong CAD. Bạn vẽ 3D trong model, sau khi vẽ xong bạn qua layout tạo 1 viewport bất kỳ, click double vào bên trong viewport sau đó bạn dùng lệnh SOLPROF là ok. Lệnh này tạo ra các đường bao, tạo thành 1block luôn, chỉ 1layer mạc định.

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

Đầu vào là cái ghế 3d (hình 1). đầu ra là file 2d đã xuất ra(hình 2)

:) Mình hiểu biết về 3D có hạn, đề bài của bạn lại có nhõn 2 cái bức ảnh pixel thế kia thì bó tay rồi, rút 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

hihihi. cái vụ 3D thì mình hơi bị kém. Theo mình thì có thể làm thủ công, nhưng mà thủ công với sự trợ giúp của Lisp cũng "tạm được"

Như mình nghĩ thì bạn có file 3D, bạn muốn xuất ra 3 hình gồm Mặt bằng (TOP), mặt trước (FRONT) và mặt bên (có thể là LEFT hoặc RIGHT)??

Nếu vậy bạn có thể làm từ bước rồi đem những bước này vào lisp, cho máy nó tự chạy.

VD như muốn lấy mặt bằng:

(defun c:xu()

(setq dt (car(entsel)))

(command "-view" "o" "T")

(command "zoom" "o" dt "")

(command "SOLPROF" dt "" "y" "y" "y")

)

như vậy là bạn có MB rồi, muốn thêm mặt nào thì bạn add dòng lệnh vào. ở mặt bên mình thường bạn dùng lệnh SOLPRF xong bạn có đưa nó về Plan luôn ko(dùng Rotate3d)? hay là cứ trình bày ở Left hoặc rigth luôn? nếu có thì thêm lệnh quay vào....

Thắc mắc đến đâu bạn hỏi đến đó!!

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

-GROUP
C
OUXX
ALL
-VIEW
O
F
COPY
ALL
0,0,0
@2000,0,0
ROTATE3D
LAST
Y
@0,500,0
90
COPY
G
OUXX
0,0,0
0,-2000,0
ROTATE3D
LAST
X
@-2000,0,0
90
LAYOUT

ERASE
ALL
MVIEW
_.MSPACE
SOLPROF
ALL
Y
Y
N
-LAYER
OFF
*
Y
MODEL
-LAYER
ON
PH*
ON
PV*

Mình đã hoàn thành xong doan script đó. Nhưng nó bắt mình phải về tọa độ 0,0,0. thỉnh thoảng nó vẫn bị lỗi. Bạn nào sửa giúp mình với.

hề hề hề,

cái nhà bác này tài nhỉ, chơi cả Script nữa, Ối giời, biển học thiệt bao la. Spam mãi không hết.....

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

Đúng là bác Hai tài thiệt. Ý mình là: khi mình có một file A là 3d hoàn chỉnh. Lúc này mình sẽ đưa về front. từ mặt front mình copy ra 2 cái A, sau đó mình dùng lệnh rotate3d quay a1 về left va a2 về top. sau đó vào layout solprof . như hình minh họa trên. Mục đích của mình chỉ muốn rút gọn những bước này. Mình đã làm bên script nhưng thích làm lisp hơn. Vì trình độ có hạn nên mới nhờ các anh tài jup.

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

Đúng là bác Hai tài thiệt. Ý mình là: khi mình có một file A là 3d hoàn chỉnh. Lúc này mình sẽ đưa về front. từ mặt front mình copy ra 2 cái A, sau đó mình dùng lệnh rotate3d quay a1 về left va a2 về top. sau đó vào layout solprof . như hình minh họa trên. Mục đích của mình chỉ muốn rút gọn những bước này. Mình đã làm bên script nhưng thích làm lisp hơn. Vì trình độ có hạn nên mới nhờ các anh tài jup.

Thì bạn cứ làm từng bước, thêm từng bước vào trong lisp bằng các dòng lệnh (command ...). Bạn có thể dùng lệnh solprof để lấy các mặt cần thiết sau đó xoay các mặt này về TOP...

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

Lisp của bác chỉ đưa về mặt top thui. Chứ đâu có solprof. Bác hai vui tính thiệt....Chắc bác đưa ý tưởng xong để e tim tòi thêm đúng không?

(defun c:xu()

(setq dt (car(entsel)))

(command "-view" "o" "T")

(command "zoom" "o" dt "")

(command "SOLPROF" dt "" "y" "y" "y")

)

hehheh. Bạn cũng vui tính ko kém ah! bạn thử cái đoạn mình gửi chưa nè?! nhưng đoạn mình nói thì nó như thế này:

sau khu bạn gõ lệnh xong lisp hỏi bạn chọn dt

tiếp theo lisp sẽ view ở TOP

rồi lisp dùng lệnh SOLPROF

như vậy bạn đã có một hình là mặt bằng rồi còn gì!

Thực ra đó là một đoạn code mà mình ghép từ các command bình thường trong cad. bạn cũng có thể tự thêm vào các command khác như move, rotate... để lisp làm việc theo ý bạn. Cái này gọi là "thủ công mỹ nghệ" heeheh :)

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

Ko biết bạn có viết dc cái lisp chua hay là dùng Crip! Mình thử add các command vào thành cái lisp này mong là có thể giúp bạn nhanh hơn làm thủ công! :)

 
(defun c:xu(/ dt)
 (command "Mspace")
 (setq dt (car(entsel)))
 (command "-view" "o" "F")
 (command "zoom" "o" dt "")
 (command "SOLPROF" dt "" "y" "y" "n")
 (entdel(entlast))
 ;;;;;;
 (command "-view" "o" "r")
 (command "rotate" (entlast) "" "0,0,0" "-90")
 (command "SOLPROF" dt "" "y" "y" "n")
 (entdel(entlast))
 ;;;;;;
 (command "-view" "o" "F")
 (command "rotate" (entlast) "" "0,0,0" "90")
 ;;;;;;
 (command "Ucs" "W")
 (command "plan" "") 
 (command "SOLPROF" dt "" "y" "y" "n")
 (entdel(entlast))
 (command "Pspace")
 )

  • 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

Bác Hai oi! Lisp của bác nó đâu có chạy được. bác Solprof bên model sao được. Bác phải qua Layout chứ. Hiện tại mình dang suy nghĩ bên lisp. Vẫn phải xài script. mong bác giúp đỡ.heee

- Bạn hãy thực hiện lisp của lp_hai bên Layout (vì thế mới có lệnh "mspace" "pspace")

- Nếu không hãy thêm dòng (setvar "tilemode" 0) vào đầu lisp để đảm bảo lisp sẽ chuyển qua layout tab (và có thể set lại 1 sau khi chạy xong)

- Script với command trong lisp không khác gì nhau cả, bạn nhìn vào bảng script của bạn với dòng command của lp_hai rõ ràng là thấy sự tương đồng

  • 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 CREATEHLR của AutoCAD Architecture với các bản từ rất xưa như 2002 đã thực hiện ngon lành yêu cầu của chủ topic mà màu sắc & Layer ko đổi , ko bi nhập làm 1 & tỷ lệ có thể chọn dc , tự động làm thành block nếu muốn

CAD cơ bản có kiểu in 3D thanh 2D nhờ vào Plot ra files DXB rồi DXBIN file DXB cũng hiệu quả mà

Có thêm Lisp này kể cũng tiện , thanks 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

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  

×