Đến nội dung


Hình ảnh
* * * - - 8 Bình chọn

Viết lisp theo yêu cầu [phần 2]


  • Chủ đề bị khóa Chủ đề bị khóa
3783 replies to this topic

#3521 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 01 June 2011 - 11:35 AM

em có cái lisp của bác gia bạch thì phải
dung move rất relax mong bác nào rảnh viết thêm em cái lisp copy
em rất cám ơn
em tự sủa mà không ra trình độ còi quá
rất cám ơn bác kietxu về lisp chuyển layer em dùng rất ổn

Defun C:mo (/ os xx diem1 diem2 gocve daive daichia diem3 diem4 diem5 diem6 diem7 l m dt)
(setq os (getvar "OSMODE"))
(Princ "\nCh\U+1ECDn \U+0111\U+1ED1i t\U+01B0\U+1EE3ng: ")
(command ".undo" "be")
(setq XX (ssget))
(setq diem1 (getpoint "\n\U+0110i\U+1EC3m chu\U+1EA9n: "))
(setq diem2 (getpoint diem1 "\n\U+0110ích \U+0111\U+1EBFn: "))
(setq gocve(angle diem1 diem2))
(setq daive (distance diem1 diem2))
(setq daichia (/ daive 6))
(setq diem3 (polar diem1 gocve daichia))
(setq diem4 (polar diem3 gocve daichia))
(setq diem5 (polar diem4 gocve daichia))
(setq diem6 (polar diem5 gocve daichia))
(setq diem7 (polar diem6 gocve daichia))
(setvar "osmode" 0)
(setq L 0)
(setq M (sslength XX))
(while (< L M)
(setq DT (ssname xx L))
(command ".move" dt "" diem1 diem3)
(command ".delay" 20)
(command ".move" "previous" "" diem3 diem4)
(command ".delay" 20)
(command ".move" "previous" "" diem4 diem5)
(command ".delay" 20)
(command ".move" "previous" "" diem5 diem6)
(command ".delay" 20)
(command ".move" "previous" "" diem6 diem7)
(command ".delay" 20)
(command ".move" "previous" "" diem7 diem2)
(command ".delay" 20)
(setq L (1+ L))
)
(command ".undo" "e")
(setvar "osmode" os)
(Princ)
(Princ)
)

1. Bạn nhớ cho đoạn mã vào trong thẻ Code
2. Thanks thì bạn hãy nhấn Nút + màu xanh
3. Lisp bạn post không phải của bác gia_bach.
Bác Duy đang onl ở topic, có lẽ bác ấy sẽ sửa giúp bạn
4. Nick của mình là KETXU, không có Kiet
Thân!
  • 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


#3522 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 01 June 2011 - 01:59 PM

1. Bạn nhớ cho đoạn mã vào trong thẻ Code
2. Thanks thì bạn hãy nhấn Nút + màu xanh
3. Lisp bạn post không phải của bác gia_bach.
Bác Duy đang onl ở topic, có lẽ bác ấy sẽ sửa giúp bạn
4. Nick của mình là KETXU, không có Kiet
Thân!

Mình nhớ lúc xưa mình viết cái giống giống này cho vui (chứ nó ko có tăng mà còn giảm hiệu quả làm việc nửa). Cái này là của bác khác viết chứ không phải mình, nhưng bác ketxu tin tưởng mình cũng ra tay phát:
(Defun C:co (/ os xx diem1 diem2 gocve daive daichia diem3 diem4 diem5 diem6 diem7 l m dt)
(setq os (getvar "OSMODE"))
(Princ "\nCh\U+1ECDn \U+0111\U+1ED1i t\U+01B0\U+1EE3ng: ")
(command ".undo" "be")
(setq XX (ssget))
(setq diem1 (getpoint "\n\U+0110i\U+1EC3m chu\U+1EA9n: "))
(setq diem2 (getpoint diem1 "\n\U+0110ích \U+0111\U+1EBFn: "))
(setq gocve(angle diem1 diem2))
(setq daive (distance diem1 diem2))
(setq daichia (/ daive 6))
(setq diem3 (polar diem1 gocve daichia))
(setq diem4 (polar diem3 gocve daichia))
(setq diem5 (polar diem4 gocve daichia))
(setq diem6 (polar diem5 gocve daichia))
(setq diem7 (polar diem6 gocve daichia))
(setvar "osmode" 0)
(setq L 0)
(setq M (sslength XX))
(while (< L M)
(setq DT (ssname xx L))
(command ".move" dt "" diem1 diem3)
(command ".delay" 20)
(command ".copy" dt "" diem3 diem1)
(command ".delay" 20)
(command ".move" "previous" "" diem3 diem4)
(command ".delay" 20)
(command ".move" "previous" "" diem4 diem5)
(command ".delay" 20)
(command ".move" "previous" "" diem5 diem6)
(command ".delay" 20)
(command ".move" "previous" "" diem6 diem7)
(command ".delay" 20)
(command ".move" "previous" "" diem7 diem2)
(command ".delay" 20)
(setq L (1+ L))
)
(command ".undo" "e")
(setvar "osmode" os)
(Princ)
(Princ)
)

  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#3523 minhhieuthanh

minhhieuthanh

    biết zoom

  • Members
  • Pip
  • 13 Bài viết
Điểm đánh giá: -1 (bình thường)

Đã gửi 01 June 2011 - 02:01 PM

CHÀO CÁC ANH TRÊN DIỄN ĐÀN.
Em có cái lisp này dùng để nội suy cao độ hố ga thoát nước.(dùng trong nova sau khi đa tk đuờng đỏ)
khi dùng lệnh "DMTN" thì nó hỏi nhập chiều rộng mặt đường, chiều rộng vỉa hè, chiều cao bó vỉa nhưng lại mặc định là độ dốc mặt đường là 2%, còn độ dốc vỉa hè là -1%.
ý em là muốn nhờ các anh sửa dùm em 1 chút sao cho lisp thành lisp mở.tức là có thể nhập độ dốc mặt đường, độ dốc vỉa hè ( như với chiều rộng).để nó có thể ứng dụng cho mọi truờng hợp, chứ không phải là chỉ có 1 trường hợp như trên
em không biết đính kèm file nên up lên mediafire.
http://www.mediafire...brz7j683j06syq0
mong các anh giúp đõ
cám ơn các anh nhiều !
  • 0

#3524 3d.decor

3d.decor

    biết vẽ arc

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

Đã gửi 01 June 2011 - 03:18 PM

Mình nhớ lúc xưa mình viết cái giống giống này cho vui (chứ nó ko có tăng mà còn giảm hiệu quả làm việc nửa). Cái này là của bác khác viết chứ không phải mình, nhưng bác ketxu tin tưởng mình cũng ra tay phát:

(Defun C:co (/ os xx diem1 diem2 gocve daive daichia diem3 diem4 diem5 diem6 diem7 l m dt)
(setq os (getvar "OSMODE"))
(Princ "\nCh\U+1ECDn \U+0111\U+1ED1i t\U+01B0\U+1EE3ng: ")
(command ".undo" "be")
(setq XX (ssget))
(setq diem1 (getpoint "\n\U+0110i\U+1EC3m chu\U+1EA9n: "))
(setq diem2 (getpoint diem1 "\n\U+0110ích \U+0111\U+1EBFn: "))
(setq gocve(angle diem1 diem2))
(setq daive (distance diem1 diem2))
(setq daichia (/ daive 6))
(setq diem3 (polar diem1 gocve daichia))
(setq diem4 (polar diem3 gocve daichia))
(setq diem5 (polar diem4 gocve daichia))
(setq diem6 (polar diem5 gocve daichia))
(setq diem7 (polar diem6 gocve daichia))
(setvar "osmode" 0)
(setq L 0)
(setq M (sslength XX))
(while (< L M)
(setq DT (ssname xx L))
(command ".move" dt "" diem1 diem3)
(command ".delay" 20)
(command ".copy" dt "" diem3 diem1)
(command ".delay" 20)
(command ".move" "previous" "" diem3 diem4)
(command ".delay" 20)
(command ".move" "previous" "" diem4 diem5)
(command ".delay" 20)
(command ".move" "previous" "" diem5 diem6)
(command ".delay" 20)
(command ".move" "previous" "" diem6 diem7)
(command ".delay" 20)
(command ".move" "previous" "" diem7 diem2)
(command ".delay" 20)
(setq L (1+ L))
)
(command ".undo" "e")
(setvar "osmode" os)
(Princ)
(Princ)
)

cảm ơn pro PHẠM QUỐC DUY và pro ketxu lisp dùng rất ổn
thực ra mình dùng để thư giãn lúc rổi thôi
còn lệnh copy và move vẫn la m và cc
xin loi pro ketxu về gọi sai nick
  • 0

#3525 tuan162516238

tuan162516238

    Chưa sử dụng CAD

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

Đã gửi 01 June 2011 - 09:22 PM

Các bác giúp em viết lisp làm công việc này thế.

Em gửi files kèm theo ạ.

http://www.yousendit...EQzczeUkwTVE9PQ

Các bác giúp em ạ, cái này em vẽ bằng macro ở trong ASD, nhừng cần list cad để chỉnh sửa cho nhanh
  • 0

#3526 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 01 June 2011 - 09:29 PM

CHÀO CÁC ANH TRÊN DIỄN ĐÀN.
Em có cái lisp này dùng để nội suy cao độ hố ga thoát nước.(dùng trong nova sau khi đa tk đuờng đỏ)
khi dùng lệnh "DMTN" thì nó hỏi nhập chiều rộng mặt đường, chiều rộng vỉa hè, chiều cao bó vỉa nhưng lại mặc định là độ dốc mặt đường là 2%, còn độ dốc vỉa hè là -1%.
ý em là muốn nhờ các anh sửa dùm em 1 chút sao cho lisp thành lisp mở.tức là có thể nhập độ dốc mặt đường, độ dốc vỉa hè ( như với chiều rộng).để nó có thể ứng dụng cho mọi truờng hợp, chứ không phải là chỉ có 1 trường hợp như trên
em không biết đính kèm file nên up lên mediafire.
http://www.mediafire...brz7j683j06syq0
mong các anh giúp đõ
cám ơn các anh nhiều !

Lisp dài quá, đọc để hiểu hết e hơi mệt, lại không có file CAD để test, dân ngoại đạo thật vất vả để hiểu. CHi bằng bạn tự sửa nhé.
Thêm dòng :

(setq im (/ (getreal "\nDo doc mat duong :") 100)
il (/ (getreal "\nDo doc via he :") 100))

vào sau dòng (Defun c:DMTN()
sau đó tìm tất cả số 0.02 (2%) trong lisp thay bằng im, tất cả số 0.01 (1%) thay bằng il
Như vậy có khả năng là ok, cũng dễ hiểu nữa ^^
  • 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


#3527 tuan162516238

tuan162516238

    Chưa sử dụng CAD

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

Đã gửi 02 June 2011 - 10:33 AM

"Các bác giúp em viết lisp làm công việc này thế.

Em gửi files kèm theo ạ.

http://www.yousendit...EQzczeUkwTVE9PQ

Các bác giúp em ạ, cái này em vẽ bằng macro ở trong ASD, nhừng cần list cad để chỉnh sửa cho nhanh "

Mong các bác giúp em với ạ.
  • 0

#3528 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1433 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 02 June 2011 - 11:28 AM

Các bác giúp em viết lisp làm công việc này thế.

Em gửi files kèm theo ạ.

http://www.yousendit...EQzczeUkwTVE9PQ

Các bác giúp em ạ, cái này em vẽ bằng macro ở trong ASD, nhừng cần list cad để chỉnh sửa cho nhanh

Đối tượng của bạn là "Proxy entity".

- Lisp pótay với kiểu đối tượng này.

- CAD cũng không thực hiện lệnh stretch đuợc.
Command: _stretch
..............
Select objects:
Proxy entities are de-selected.
Proxy entities are not stretchable.

  • 0

#3529 tuan162516238

tuan162516238

    Chưa sử dụng CAD

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

Đã gửi 02 June 2011 - 12:30 PM

Bác gia ơi, có người làm được rồi ạ, nhưng mà họ nhất quyết không cho em xin ạ. Khô em lại không biết tý tẹo gì về lisp, ở trong diễn đàn này họ đã làm được rồi, nhưng chỉ đưa ra phương hướng thôi ạ.
Còn em làm thủ công bằng lệnh Stretch được ạ, vấn đề là cái chỉ thép anh ạ, khi em vẽ bằng maccro trong ASD thì chỉ thép không theo kiểu của việt nam, giờ em nhờ anh viết giúp em cái lisp cad để em chuyển nó về dạng chỉ thép việt nam ạ.
Em gửi anh đường link để anh đọc cho dễ hiểu hơn cái em cần anh giúp ạ.

http://arttool.vn/thread-627.arttool

Mong là các anh giúp được em ạ, cái bác dùng được trong diễn đàn này nhất quyết không cho em ạ.
  • 0

#3530 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1433 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 02 June 2011 - 01:48 PM

Bác gia ơi, có người làm được rồi ạ, nhưng mà họ nhất quyết không cho em xin ạ. Khô em lại không biết tý tẹo gì về lisp, ở trong diễn đàn này họ đã làm được rồi, nhưng chỉ đưa ra phương hướng thôi ạ.
Còn em làm thủ công bằng lệnh Stretch được ạ, vấn đề là cái chỉ thép anh ạ, khi em vẽ bằng maccro trong ASD thì chỉ thép không theo kiểu của việt nam, giờ em nhờ anh viết giúp em cái lisp cad để em chuyển nó về dạng chỉ thép việt nam ạ.
Em gửi anh đường link để anh đọc cho dễ hiểu hơn cái em cần anh giúp ạ.

http://arttool.vn/thread-627.arttool

Mong là các anh giúp được em ạ, cái bác dùng được trong diễn đàn này nhất quyết không cho em ạ.

Link bạn gửi chạy trên môi trường ASD : AutoCAD_Structural_Detailing hoặc CAD gì gì đó ???
tiếc là tui hổng có ASD để thử !

Trên môi trường AutoCAD thì tui chưa biết cách . <_<
  • 0

#3531 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 02 June 2011 - 03:56 PM

dạ em nhầm ah,thêm phần "chọn điểm ghi diện tích" mới đúng.
Ai giúp em với ah.
Em xin cảm ơn!

Hề hề hề,
Xin lỗi vì chậm trả lời, Suốt tuần qua mình có việc gấp phải về quê nên không vào mạng được.
Bạn dùng thử cái này xem sao. Do làm vội và chưa test thử nên nhờ bạn test giùm. Nếu có trục trặc , hãy post lên để mình sửa lại nhé.


(defun c:udt (/ ss tong ham tmp tt hstl oldim toe frome cur dt)
(prompt "\n Kich thuoc cua chuong trinh tinh theo don vi mm ")
(if (not hstlo) (setq hstlo 0.001))
(setq hstl (getreal (strcat "\n Nhap ti le chuyen doi don vi <" (rtos hstlo 2 3) "> :")))
(if (not hstl) (setq hstl hstlo) (setq hstlo hstl))
(if (not tpo) (setq tpo 2))
(setq tp (getint (strcat "\n Nhap So chu so thap phan <" (itoa tpo) "> :")))
(if (not tp) (setq tp tpo) (setq tpo tp))
(setq oldim (getvar "Dimzin"))
(setvar "Dimzin" 0)
(prompt "\n Chon doi tuong de tinh dien tich hay Enter de tinh dien tich theo Pick diem ")
(setq
ss (ssget '((-4 . "<OR")(0 . "LWPOLYLINE")(0 . "REGION")(0 . "CIRCLE")(0 . "ARC")(-4 . "OR>")))
tong 0.0
ham (lambda (x) (command ".area" "o" x) (setq tong (+ tong (getvar "area"))))
tmp (mapcar 'ham (ss2ent ss))
)

(if (not ss)
(progn
(setq tong 0.0 ss (ssadd))
(while (setq p (getpoint "\n Pick vao vung tinh dien tich :"))
(setq frome (entlast))
(command ".boundary" p "")
(setq toe (entlast))

(setq cur frome)
(while (not (eq cur toe))
(setq
cur (entnext cur)
ss (ssadd cur ss))
(command "area" "S" "O" ss "" "")
(setq dt (getvar "area"))
(setq tong (+ tong dt))
)
(command "area" "A" "O" "L" "" "")
(setq dt (getvar "area"))
(setq tong (+ tong (* dt 2)))
(sssetfirst ss ss)
)
(command "erase" ss "")
))
(if (not (setq pt (getpoint "\n Chon diem dat text")))
(progn
(setq tt (entget (car (entsel "\nChon text ket qua: ")))
tong (vl-string-right-trim "." (vl-string-right-trim "0" (rtos tong)))
)
(entmod (subst (cons 1 (rtos (* (atof tong) hstl hstl) 2 tp)) (assoc 1 tt) tt))
)
(progn
(setq ht (getreal "\n Nhap chieu cao text"))
(command "text" pt ht 0 (rtos (* (atof tong) hstl hstl) 2 tp) "")
)
)

(setvar "Dimzin" oldim)


(princ)
)
;
(defun ss2ent(ss / sodt index lstent)
(setq
sodt (if ss (sslength ss) 0)
index 0
)
(repeat sodt
(setq ent (ssname ss index)
index (1+ index)
lstent (cons ent lstent)
)
)
(reverse lstent)
)
(princ "\nUpdate Area - free lisp from cadviet.com")
(princ "\nUse UDT command to start!")
(vl-load-com)

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

#3532 minhhieuthanh

minhhieuthanh

    biết zoom

  • Members
  • Pip
  • 13 Bài viết
Điểm đánh giá: -1 (bình thường)

Đã gửi 02 June 2011 - 04:10 PM

Lisp dài quá, đọc để hiểu hết e hơi mệt, lại không có file CAD để test, dân ngoại đạo thật vất vả để hiểu. CHi bằng bạn tự sửa nhé.
Thêm dòng :

vào sau dòng (Defun c:DMTN()
sau đó tìm tất cả số 0.02 (2%) trong lisp thay bằng im, tất cả số 0.01 (1%) thay bằng il
Như vậy có khả năng là ok, cũng dễ hiểu nữa ^^

cám ơn anh nhiều. em sẽ thử xem
  • 0

#3533 3d.decor

3d.decor

    biết vẽ arc

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

Đã gửi 02 June 2011 - 05:08 PM

trên diễn đàn hiện nay đã có lisp Hide & Show
nhưng bác nào rỗi viết thêm em lisp unhide
nghĩa là chon object xong rồi ẩn các đối tượng không được chọn
em dùng max quen thấy chức năng này khá hay
ẩn bớt vẽ cho đỡ rối

; Hide & Show

(defun c:InVis (/ SSet Count Elem)

(defun Dxf (Id Obj)
(cdr (assoc Id (entget Obj)))
);end Dxf

(prompt "\nSelect object(s) to hide: ")
(cond
((setq SSet (ssget))
(repeat (setq Count (sslength SSet))
(setq Count (1- COunt)
Elem (ssname SSet Count))
(if (/= 4 (logand 4 (Dxf 70 (tblobjname "layer" (Dxf 8 Elem)))))
(if (Dxf 60 Elem)
(entmod (subst '(60 . 1) (assoc 60 (entget Elem)) (entget Elem)))
(entmod (append (entget Elem) (list '(60 . 1))))
)
(prompt "\nEntity on a locked layer. Cannot hide this entity. ")
);end if
);end repeat
)
);end cond
(princ)
);end c:InVis



(defun c:Vis (/ WhatNextSSet Count Elem)

(defun Dxf (Id Obj)
(cdr (assoc Id (entget Obj)))
);end Dxf

(cond
((setq SSet (ssget "_X" '((60 . 1))))
(initget "Yes No")
(setq WhatNext (cond
((getkword "\nAll hidden entities will be visible. Continue? No, <Yes>: "))
(T "Yes")))
(cond
((= WhatNext "Yes")
(prompt "\nPlease wait...")
(repeat (setq Count (sslength SSet))
(setq Count (1- COunt)
Elem (ssname SSet Count))
(if (/= 4 (logand 4 (Dxf 70 (tblobjname "layer" (Dxf 8 Elem)))))
(entmod (subst '(60 . 0) '(60 . 1) (entget Elem)))
(prompt "\nEntity on a locked layer. Cannot make visible this entity. ")
);end if
);end repeat
(prompt "\nDone...")
)
);end cond
)
(T (prompt "\nNo objects was hidden. "))
)
)




Nhắc bạn 3d cho code vào trong thẻ code!

Bài viết đã được chỉnh sửa nội dung bởi phamthanhbinh: 02 June 2011 - 09:12 PM

  • 0

#3534 tuan162516238

tuan162516238

    Chưa sử dụng CAD

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

Đã gửi 02 June 2011 - 05:09 PM

Bác Gia.
Bác ơi phần mền đó như cad à, bác có thể liên hệ với bác Hiệp ở trong diễn đàn ARTTool.vn có số điện thoại là 0903343591(bác này cũng ở trong nam)
  • 0

#3535 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 02 June 2011 - 05:51 PM

trên diễn đàn hiện nay đã có lisp Hide & Show
nhưng bác nào rỗi viết thêm em lisp unhide
nghĩa là chon object xong rồi ẩn các đối tượng không được chọn
em dùng max quen thấy chức năng này khá hay
ẩn bớt vẽ cho đỡ rối

; Hide & Show

(defun c:InVis (/ SSet Count Elem)

(defun Dxf (Id Obj)
(cdr (assoc Id (entget Obj)))
);end Dxf

(prompt "\nSelect object(s) to hide: ")
(cond
((setq SSet (ssget))
(repeat (setq Count (sslength SSet))
(setq Count (1- COunt)
Elem (ssname SSet Count))
(if (/= 4 (logand 4 (Dxf 70 (tblobjname "layer" (Dxf 8 Elem)))))
(if (Dxf 60 Elem)
(entmod (subst '(60 . 1) (assoc 60 (entget Elem)) (entget Elem)))
(entmod (append (entget Elem) (list '(60 . 1))))
)
(prompt "\nEntity on a locked layer. Cannot hide this entity. ")
);end if
);end repeat
)
);end cond
(princ)
);end c:InVis



(defun c:Vis (/ WhatNextSSet Count Elem)

(defun Dxf (Id Obj)
(cdr (assoc Id (entget Obj)))
);end Dxf

(cond
((setq SSet (ssget "_X" '((60 . 1))))
(initget "Yes No")
(setq WhatNext (cond
((getkword "\nAll hidden entities will be visible. Continue? No, <Yes>: "))
(T "Yes")))
(cond
((= WhatNext "Yes")
(prompt "\nPlease wait...")
(repeat (setq Count (sslength SSet))
(setq Count (1- COunt)
Elem (ssname SSet Count))
(if (/= 4 (logand 4 (Dxf 70 (tblobjname "layer" (Dxf 8 Elem)))))
(entmod (subst '(60 . 0) '(60 . 1) (entget Elem)))
(prompt "\nEntity on a locked layer. Cannot make visible this entity. ")
);end if
);end repeat
(prompt "\nDone...")
)
);end cond
)
(T (prompt "\nNo objects was hidden. "))
)
)



Nhắc bạn 3d cho code vào trong thẻ code!

Chỉ cần linh động một chút giữa 2 lisp đó là làm được thôi

(defun c:InVert (/ SSet Count Elem)

(defun Dxf (Id Obj)
(cdr (assoc Id (entget Obj)))
);end Dxf

(prompt "\nSelect object(s) to hide: ")
(setq SSet1 (ssget))
(cond
((setq SSet (ssget "x"))
(repeat (setq Count (sslength SSet))
(setq Count (1- COunt)
Elem (ssname SSet Count))
(if (/= 4 (logand 4 (Dxf 70 (tblobjname "layer" (Dxf 8 Elem)))))
(if (Dxf 60 Elem)
(entmod (subst '(60 . 1) (assoc 60 (entget Elem)) (entget Elem)))
(entmod (append (entget Elem) (list '(60 . 1))))
)
(prompt "\nEntity on a locked layer. Cannot hide this entity. ")
);end if
);end repeat
)
);end cond

(repeat (setq Count1 (sslength SSet1))
(setq Count1 (1- COunt1)
Elem (ssname SSet1 Count1))
(if (/= 4 (logand 4 (Dxf 70 (tblobjname "layer" (Dxf 8 Elem)))))
(entmod (subst '(60 . 0) '(60 . 1) (entget Elem)))
(prompt "\nEntity on a locked layer. Cannot make visible this entity. ")
);end if
);end repeat
(princ)
);end c:InVert

  • 1
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#3536 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 02 June 2011 - 08:15 PM

Chỉ cần linh động một chút giữa 2 lisp đó là làm được thôi

Eo ơi, bác Tú kêu bận mà vẫn nhiệt tình giúp CV mem thế ^^
Em xin gửi thêm 1 phương án nữa, trong trường hợp máy có Express thì cả 3 hàm sẽ gói lại trong 3 dòng sau :
(defun C:invis()(prompt "\nCh\U+1ECDn c\U+00E1c \U+0111\U+1ED1i t\U+01B0\U+1EE3ng mu\U+1ED1n \U+1EA9n \U+0111i :")(acet-ss-visible (ssget) 1))
(defun C:vis()(prompt "Hi\U+1EC7n l\U+1EA1i c\U+00E1c \U+0111\U+1ED1i t\U+01B0\U+1EE3ng \U+0111\U+00E3 b\U+1ECB \U+1EA9n :")(acet-ss-visible (ssget "_X" '((60 . 1))) 0))
(defun C:invert()(prompt "\nCh\U+1ECDn c\U+00E1c \U+0111\U+1ED1i t\U+01B0\U+1EE3ng hi\U+1EC7n : ")(acet-ss-visible (acet-ss-remove (ssget) (ssget "x")) 1))

  • 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


#3537 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 02 June 2011 - 08:35 PM

Eo ơi, bác Tú kêu bận mà vẫn nhiệt tình giúp CV mem thế ^^
Em xin gửi thêm 1 phương án nữa, trong trường hợp máy có Express thì cả 3 hàm sẽ gói lại trong 3 dòng sau :

(defun C:invis()(prompt "\nCh\U+1ECDn c\U+00E1c \U+0111\U+1ED1i t\U+01B0\U+1EE3ng mu\U+1ED1n \U+1EA9n \U+0111i :")(acet-ss-visible (ssget) 1))
(defun C:vis()(prompt "Hi\U+1EC7n l\U+1EA1i c\U+00E1c \U+0111\U+1ED1i t\U+01B0\U+1EE3ng \U+0111\U+00E3 b\U+1ECB \U+1EA9n :")(acet-ss-visible (ssget "_X" '((60 . 1))) 0))
(defun C:invert()(prompt "\nCh\U+1ECDn c\U+00E1c \U+0111\U+1ED1i t\U+01B0\U+1EE3ng hi\U+1EC7n : ")(acet-ss-visible (acet-ss-remove (ssget) (ssget "x")) 1))

Híc định kiếm ít danh tiếng không ngờ gặp ngay hàng khủng :wub:
  • 1
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#3538 AutoTay.com

AutoTay.com

    biết lệnh move

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

Đã gửi 02 June 2011 - 08:44 PM

Sorry trước nếu yêu cầu của mình đã được đáp ứng trên 4R!
Cho mình xin cái lisp cài phần Express CAD2007 (mình không muốn cài lại vì p` có quá nhiều máy, chẳng lẽ lại đi cài từng máy :()
Thanks!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  • 0

#3539 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 03 June 2011 - 09:05 AM

thank you pro
nhờ pro viết thêm dòng lisp tẩy các layer thừa sau khi chuyển đổi xong được không
lisp chạy rất ổn rồi

Dùng lệnh PURGE chọn Purge All là được mà đâu cần lisp.
  • 0
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#3540 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 03 June 2011 - 09:17 AM

Sorry trước nếu yêu cầu của mình đã được đáp ứng trên 4R!
Cho mình xin cái lisp cài phần Express CAD2007 (mình không muốn cài lại vì p` có quá nhiều máy, chẳng lẽ lại đi cài từng máy :()
Thanks!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

http://www.cadviet.com/upfiles/3/themexpress.rar
Bạn load cái này về giải nén ra thư mục themexpress, chép nó vào ổ C. Load file cai.lsp lên gỏ lệnh caiex. Nếu được thì tốt còn không được thì làm thủ công cũng ko chậm mấy đâu:
-Copy thư mục themexpress dô chổ nào cũng được.
-Add thêm thư mục express (nhớ là thư mục express trong themexpress chứ không phải themexpress nhé) vào đường dẩn tìm kiếm của cad. Khởi dđộng lại cad nếu lên menu rồi thì thôi còn chưa lên thì làm tiếp bước dưới.
-Gỏ lệnh menuload và load file acetmain.cui lên.
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D