Đến nội dung


Hình ảnh
- - - - -

Đóng băng layer


  • Please log in to reply
10 replies to this topic

#1 pdle

pdle

    biết lệnh mtext

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

Đã gửi 08 April 2012 - 07:36 PM

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

  • 0
Share your knowledge. It is a way to achieve immortality !

***

PS: Nếu bài viết của mình có ích, xin hãy "Bình chọn cho bài viết này" nhé :D

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 08 April 2012 - 07:44 PM

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

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#3 pdle

pdle

    biết lệnh mtext

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

Đã gửi 08 April 2012 - 08:22 PM

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

  • 0
Share your knowledge. It is a way to achieve immortality !

***

PS: Nếu bài viết của mình có ích, xin hãy "Bình chọn cho bài viết này" nhé :D

#4 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 08 April 2012 - 08:47 PM

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

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 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 08 April 2012 - 09:03 PM

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

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#6 pdle

pdle

    biết lệnh mtext

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

Đã gửi 08 April 2012 - 09:04 PM

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?
  • 0
Share your knowledge. It is a way to achieve immortality !

***

PS: Nếu bài viết của mình có ích, xin hãy "Bình chọn cho bài viết này" nhé :D

#7 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 08 April 2012 - 09:19 PM

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

#8 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 08 April 2012 - 09:20 PM

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


#9 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 08 April 2012 - 09:21 PM

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

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#10 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 08 April 2012 - 09:25 PM

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

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#11 pdle

pdle

    biết lệnh mtext

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

Đã gửi 09 April 2012 - 02:42 AM

@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.c...4291_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
Hình đã gửi

Kết quả như sau:
Hình đã gửi

02. Kiểm tra hình và di chuyển theo yêu cầu. Lệnh dc
Hình đã gửi

03. Lệnh an
Hình đã gửi

Layer 3D ở chế độ freeze:
Hình đã gửi

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!
  • 0
Share your knowledge. It is a way to achieve immortality !

***

PS: Nếu bài viết của mình có ích, xin hãy "Bình chọn cho bài viết này" nhé :D