Đến nội dung


Hình ảnh

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


  • Please log in to reply
19 replies to this topic

#1 huynhphuongdesigner

huynhphuongdesigner

    biết vẽ circle

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

Đã gửi 11 November 2011 - 11:08 AM

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

  • 1

#2 huynhphuongdesigner

huynhphuongdesigner

    biết vẽ circle

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

Đã gửi 11 November 2011 - 12:19 PM

Không ai quan tâm chủ đề này hả ta. Bác Bình và Bác Hai đâu rùi,,,
  • 0

#3 huynhphuongdesigner

huynhphuongdesigner

    biết vẽ circle

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

Đã gửi 11 November 2011 - 01:52 PM


-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.
  • 0

#4 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 11 November 2011 - 01:53 PM

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)
)


  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#5 huynhphuongdesigner

huynhphuongdesigner

    biết vẽ circle

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

Đã gửi 11 November 2011 - 02:14 PM

Thanks bác ketxu. Lisp1 của bạn là đổi tên layer. Mình muốn viết lisp mà khi có một sản phẩm là ghế 3d. chỉ cần load lisp là nó tự xuất file thành 2d. Hình minh họa:
Hình đã gửi
Hình đã gửi
  • 0

#6 hoa dai nhan

hoa dai nhan

    biết lệnh ddedit

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

Đã gửi 11 November 2011 - 02:27 PM

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.
  • 0

#7 huynhphuongdesigner

huynhphuongdesigner

    biết vẽ circle

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

Đã gửi 11 November 2011 - 02:33 PM

Cách đó ngày nào mình chẳng làm. Mình muốn nó trở thành nhanh chóng hơn. Vì một ngày mình xuất rất nhiều bảng vẽ.
  • 0

#8 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 11 November 2011 - 03:36 PM

Đầu vào đâu, đầu ra đâu bạn ???
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#9 huynhphuongdesigner

huynhphuongdesigner

    biết vẽ circle

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

Đã gửi 11 November 2011 - 03:42 PM

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

#10 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 11 November 2011 - 04:22 PM

Đầ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
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#11 lp_hai

lp_hai

    biết lệnh measure

  • Members
  • PipPipPipPipPipPip
  • 456 Bài viết
Điểm đánh giá: 202 (khá)

Đã gửi 11 November 2011 - 04:29 PM

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!
  • 1
Hình đã gửi

#12 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 11 November 2011 - 05:15 PM


-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.....
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#13 huynhphuongdesigner

huynhphuongdesigner

    biết vẽ circle

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

Đã gửi 12 November 2011 - 07:28 PM

Đú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.
  • 0

#14 lp_hai

lp_hai

    biết lệnh measure

  • Members
  • PipPipPipPipPipPip
  • 456 Bài viết
Điểm đánh giá: 202 (khá)

Đã gửi 14 November 2011 - 08:44 AM

Đú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...
  • 0
Hình đã gửi

#15 huynhphuongdesigner

huynhphuongdesigner

    biết vẽ circle

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

Đã gửi 14 November 2011 - 08:52 AM

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?
  • 0

#16 lp_hai

lp_hai

    biết lệnh measure

  • Members
  • PipPipPipPipPipPip
  • 456 Bài viết
Điểm đánh giá: 202 (khá)

Đã gửi 14 November 2011 - 09:13 AM

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 :)
  • 0
Hình đã gửi

#17 lp_hai

lp_hai

    biết lệnh measure

  • Members
  • PipPipPipPipPipPip
  • 456 Bài viết
Điểm đánh giá: 202 (khá)

Đã gửi 14 November 2011 - 03:50 PM

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

  • 1
Hình đã gửi

#18 huynhphuongdesigner

huynhphuongdesigner

    biết vẽ circle

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

Đã gửi 15 November 2011 - 10:20 AM

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
  • 0

#19 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 15 November 2011 - 11:07 AM

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
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#20 NTD

NTD

    biết lệnh rotate

  • Members
  • PipPipPip
  • 135 Bài viết
Điểm đánh giá: 11 (tàm tạm)

Đã gửi 23 August 2012 - 12:03 PM

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
  • 0