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

Đóng băng layer

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

Tại sao đoạn code này của em không chạy được?

(defun c:an (/ ob ss)
(
setq ss (ssget "_X" (list(cons 8 "3D")))
  ob (ssname ss 0)
)
(command "layfrz" ob)
(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

Tại sao đoạn code này của em không chạy được?

(defun c:an (/ ob ss)
(
setq ss (ssget "_X" (list(cons 8 "3D")))
  ob (ssname ss 0)
)
(command "layfrz" ob)
(princ)
)

Do layer "3D" đang current.

  • 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

Do layer "3D" đang current.

Em thêm dòng đổi layer hiện hành vẫn ko được!

(defun c:an (/ ob ss)
(
setq ss (ssget "_X" (list(cons 8 "3D")))
  ob (ssname ss 0)
)
(command "clayer" "0")
(command "layfrz" ob)
(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

Layfrz không phải lệnh chuẩn của CAD mà thuộc Express

Đối số của nó nếu dùng command thì lại là 1 điểm thuộc đối tượng, k phải 1 ename

 

P/s : pdle lâu rồi k vào 4r nên quên luôn nội quy r :)

  • 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

Layfrz không phải lệnh chuẩn của CAD mà thuộc Express

Đối số của nó nếu dùng command thì lại là 1 điểm thuộc đối tượng, k phải 1 ename

P/s : pdle lâu rồi k vào 4r nên quên luôn nội quy r :)

Không biết hỏi câu này có ngớ ngẩn không: làm sao biết 1 lệnh là nguyên thủy của Cad hay thuộc Tool Exprees?

  • 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

Layfrz không phải lệnh chuẩn của CAD mà thuộc Express

Đối số của nó nếu dùng command thì lại là 1 điểm thuộc đối tượng, k phải 1 ename

 

P/s : pdle lâu rồi k vào 4r nên quên luôn nội quy r :)

1. Để freeze layer chỉ có lệnh layfrz hay sao, hay là còn command nào khác nữa

2. Làm sao để lấy một điểm thuộc object khi đã biết ename của nó? Mã dxf nào?

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

1. Để freeze layer chỉ có lệnh layfrz hay sao, hay là còn command nào khác nữa

2. Làm sao để lấy một điểm thuộc object khi đã biết ename của nó? Mã dxf nào?

1. Còn có Command :-Layer

2. Bạn có thể nói rõ hơn không?

 

Edit: Đã hiểu ý bạn. Câu trả lời là : Có đối tượng có thể không thể lấy được điểm thuộc object khi đã biết ename của nó.

Vấn đề của bạn nếu giải quyết theo ý của KetXu thì rất dễ bị nhầm lẫn khi đối tượng bị đè lên nhau.

Có thể dùng Command layer hoặc dùng layfrz đơn giản hơn nhưng không theo cách của KetXu, vì rất dễ nhầm lẫn khi đối tượng bị đè lên nhau nếu xác định một điểm thuộc object khi đã biết ename

  • 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 ĐVH : thông tin này ketxu đọc từ lâu rồi nên cũng k nhớ nó từ Ver nào cho CAD, có thể các CAD đời sau này nó đã là built-in command rồi ^^ Thường thì các command sẽ có trong help.

 

@pdle : mỗi loại đối tượng đều có 1 điểm grip cố định.Nhưng bạn k phải làm như thế, tại sao k đào vào mã 70 của layer ?

  • 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

1. Để freeze layer chỉ có lệnh layfrz hay sao, hay là còn command nào khác nữa

2. Làm sao để lấy một điểm thuộc object khi đã biết ename của nó? Mã dxf nào?

1. (command "layer"...) thì freeze được.

2. Không hiểu? Lấy điểm nào?

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 ĐVH : thông tin này ketxu đọc từ lâu rồi nên cũng k nhớ nó từ Ver nào cho CAD, có thể các CAD đời sau này nó đã là built-in command rồi ^^ Thường thì các command sẽ có trong help.

@pdle : mỗi loại đối tượng đều có 1 điểm grip cố định.Nhưng bạn k phải làm như thế, tại sao k đào vào mã 70 của layer ?

Tớ cũng nhớ mang máng cái lệnh mà pdle dùng hình như cad cũ không có, nhưng tìm trong help thì nó có cái lệnh này nên cứ ngỡ nó thuộc cad => chưa thể biết được lệnh nào của cad lệnh nào 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

@all: Cảm ơn tất cả mọi người đã quan tâm giải đáp thắc mắc cho em. Lâu không dùng CAD, không nghịch Lisp, E giờ đã mù tịt rồi.

@ketxu: em sẽ đọc lại nội quy để thực hiện đúng. Từ nay sẽ lại online cadviet đều đều thôi.

 

Về vấn đề của em, sở dĩ em nghĩ đến dùng lisp bởi công việc được lặp đi lặp lại theo một trình tự nhất định. Đây là file mẫu:http://www.cadviet.com/upfiles/3/64291_23b010.dwg

 

Trình tự xử lý như sau:

1. Nhập ip key <lấy từ mã hoàng hóa tương ứng>, thay thế IP KEY của text

2. Thaw layer 3D, xem lại hình 3D đã đúng chưa. Yêu cầu: Điểm thấp nhất của mặt phẳng dưới phải nằm trên mặt phẳng OXY

3. Dùng lệnh _hide để ẩn đường khuất. Sau đó freeze layer 3D. Chuyển view về dạng top, và lưu file dưới dạng CAD 2004.

 

Với trình tự đó em viết lisp sau:

;;; Lenh doi ip
(defun c:ip(/ s l ip ss)
(
setq s (ssget "_X" (list(cons 0 "TEXT") (cons 8 "PLAN")))
  l(sslength s)
)
(setq ip (getstring "IP = "))
(
if(= l 1)
 (progn
  (
  setq ss (entget (ssname s 0))
	ss (subst (cons 1 ip) (assoc 1 ss) ss )
  )
  (entmod ss)
 )
)
(
if (/= l 1)
 (progn
  (
  setq ss(entget (car(entsel "Specify The Text")))
	ss (subst (cons 1 ip) (assoc 1 ss) ss )
  )
  (entmod ss)
 )
)
(command "laythw")
(command "-view" "sw"  )
(command "-visualstyles" "c" "r" )
(princ)
)
;;; Lenh di chuyen
(defun c:dc (/ ss)
(
setq  pt1(getpoint "\nBase point:")
  pt2(getpoint "\nPlane point:")
  z1  (caddr pt1)
  z2 (caddr pt2)
  pt3 (list 0 0 (- z1 z2))
  ss (ssget "_X" (list(cons 8 "3D")))
  sp (ssget "_X" (list(cons 8 "PLAN")))
)
(command "move" ss "" pt1 pt3)
(setq pt4(getpoint "\nBase point:")
  pt5(list 0 0 0)
)
(command "move" sp "" pt4 pt5)
(princ)
)
;;; Lenh an doi tuong va luu file
(defun c:an (/ ob ss fina link)
(
setq fina (vl-filename-base (getvar "dwgname"))
  link "C:\\Users\\pdle\\Desktop\\Technoinox\\Corrected\\"
  link (strcat link fina ".dwg")
)
(command "-visualstyles" "c" "2")
(command "_hide")
(command "-layer" "f" "3D" "")
(command "-view" "t")
(command "saveas" "2004" link)
(princ)
)

 

Minh họa:

1. Đổi IP KEY, dùng lệnh ip

64291_01.jpg

 

Kết quả như sau:

64291_02.jpg

 

02. Kiểm tra hình và di chuyển theo yêu cầu. Lệnh dc

64291_03.jpg

 

03. Lệnh an

64291_04.jpg

 

Layer 3D ở chế độ freeze:

64291_05.jpg

 

Mọi người xem hộ em cái lisp, cho ý kiến lisp như thế đã hợp lý chưa? nên sửa chỗ nào cho nhanh và hợp lý hơn với yêu cầu.

 

Em cảm ơ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

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  

×