Chuyển đến nội dung
Diễn đàn CADViet
Nguyen Hoanh

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

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

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.com/?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 ^^

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á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 ạ.

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á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.com/download/dkJvc2ZEQzczeUkwTVE9PQ

 

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.

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 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 ạ.

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 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 . <_<

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

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)

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

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

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ỉnh sửa theo phamthanhbinh

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

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

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

  • 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

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

  • 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

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:

  • 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

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

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

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.

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

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.

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

mong các pro viết thêm mọt hai dòng lisp nữa

lisp không tẩy được layer có trong block

nhìn rất khó chịu

thank you

 

(defun c:dlay (/ ss ssl en enl lay)
(vl-load-com)
(command "undo" "be")
(setq ss (ssget "x")
       ssl (acet-ss-to-list ss))
(foreach en ssl
     (setq enl (entget en)
              lay (cdr (assoc 8 enl)))
     (if (or (/= lay "cut") (/= lay "glass") (/= lay "hide") (/= lay "hatch") (/= lay "funitures") (/= lay "tree") (/= lay "text") (/= lay "center"))
          (progn
                 (if (= (tblsearch "layer" "wall") nil)
                     (command "layer" "n" "wall" "c" "7" "wall" "lt" "continuous" "wall" "")
                 )
                 (command "change" en "" "p" "la" "wall" "")
                 (if (/= (cdr (assoc 62 enl)) nil)
                     (command "change" en "" "p" "c" "7" "")
                 )
         )
     )
)
(command "-purge" "a" "" "N")
(command "undo" "e") 
(princ))
)

  • 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

thank you pro

em tạm chế từ lisp khác

chạy cũng ổn

hehe trình độ còi nên đành chế vậy

 

Hề hề hề,

Vậy là cái trình độ lisper của bạn đâu có còi đâu. ý bác Phạm Ngọc Tú cũng y chang vậy mà, Khác chăng là bác ấy xài trên dòng command và bạn thi nhét luôn vào líp cho đỡ phải gõ lần nữa thôi mà.

Rất mong bạn phát huy cái "còi" của bạn để giúp cho công việc của bạn và các anh em khác trên diễn đàn.

Chúc bạn luôn thành công.

hề hề hề.

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

mong các pro viết thêm mọt hai dòng lisp nữa

lisp không tẩy được layer có trong block

nhìn rất khó chịu

thank you

 

(defun c:dlay (/ ss ssl en enl lay)
(vl-load-com)
(command "undo" "be")
(setq ss (ssget "x")
       ssl (acet-ss-to-list ss))
(foreach en ssl
     (setq enl (entget en)
              lay (cdr (assoc 8 enl)))
     (if (or (/= lay "cut") (/= lay "glass") (/= lay "hide") (/= lay "hatch") (/= lay "funitures") (/= lay "tree") (/= lay "text") (/= lay "center"))
          (progn
                 (if (= (tblsearch "layer" "wall") nil)
                     (command "layer" "n" "wall" "c" "7" "wall" "lt" "continuous" "wall" "")
                 )
                 (command "change" en "" "p" "la" "wall" "")
                 (if (/= (cdr (assoc 62 enl)) nil)
                     (command "change" en "" "p" "c" "7" "")
                 )
         )
     )
)
(command "-purge" "a" "" "N")
(command "undo" "e") 
(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

mong các pro viết thêm mọt hai dòng lisp nữa

lisp không tẩy được layer có trong block

nhìn rất khó chịu

thank you

 

Hề hề hề,

Với các chú block thì nếu muốn xử nó bạn cần nói rõ hơn mới được. Tỷ như các block này có chứa các block con hay không??? Các block này được tạo từ cái gì?? Có gồm các đối tượng Xref không??? Có cho phép phá vỡ các block hay vẫn cứ phải giữ nguyên nó ????

Ái chà chà, bạn suy nghĩ thêm ky kỹ một chút rồi đặt lại vấn đề cho chuẩn xác nhé.

Hề hề hề,....

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ần đầu tham gia diễn đàn, có gì sai sót mong mọi người bỏ qua :(((

Em đang có 2 bản vẽ nhà thế này. Giờ làm sao dùng lisp để ứng dụng lên bản vẽ này được ạh? (như viết code để vẽ cửa đi, cầu thanng,... tự động) Hay làm sao dùng lisp để vẽ bản vẽ như thế 1 cách tự động dc ạh? em không rành lisp, tìm được nhiều file lisp rồi mà không bik cak sử dụng. Mong anh Nguyen Hoanh giúp đỡ :( t2 này phải viết báo cáo rồi :((((((((( em tự mày mò hoài ko ra :(((((

http://www.mediafire.com/file/s5dkui8k8uckc58/hoc.dwg

http://www.mediafire.com/file/eeg0mqg4t36cqb3/NHA%20IN.dwg

 

Mình đang tìm hiểu về lisp cho nhóm, và mình muốn dùng lisp để thực hành trên bản vẽ này (vẽ thêm cầu thang, cửa, tường,...). Bạn nào có thể cho mình file lisp cũng như cách thực hiện các bước để thao tác lisp trên bản vẽ không? đa tạ nhiều lém :D

 

http://www.mediafire.com/file/s5dkui8k8uckc58/hoc.dwg

email của mình là n.anhdonguyen@gmail.com

Mình mong sự giúp đỡ từ diễn đàn nhìu nhìu :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

Hề hề hề,

Với các chú block thì nếu muốn xử nó bạn cần nói rõ hơn mới được. Tỷ như các block này có chứa các block con hay không??? Các block này được tạo từ cái gì?? Có gồm các đối tượng Xref không??? Có cho phép phá vỡ các block hay vẫn cứ phải giữ nguyên nó ????

Ái chà chà, bạn suy nghĩ thêm ky kỹ một chút rồi đặt lại vấn đề cho chuẩn xác nhé.

Hề hề hề,....

mình cần tẩy layer thôi còn các block giữ nguyên thuộc tính, chỉ là chuyển layer thôi

ko cần xref vì mình không dùng xref

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ần đầu tham gia diễn đàn, có gì sai sót mong mọi người bỏ qua :(((

Em đang có 2 bản vẽ nhà thế này. Giờ làm sao dùng lisp để ứng dụng lên bản vẽ này được ạh? (như viết code để vẽ cửa đi, cầu thanng,... tự động) Hay làm sao dùng lisp để vẽ bản vẽ như thế 1 cách tự động dc ạh? em không rành lisp, tìm được nhiều file lisp rồi mà không bik cak sử dụng. Mong anh Nguyen Hoanh giúp đỡ :( t2 này phải viết báo cáo rồi :((((((((( em tự mày mò hoài ko ra :(((((

http://www.mediafire.com/file/s5dkui8k8uckc58/hoc.dwg

http://www.mediafire.com/file/eeg0mqg4t36cqb3/NHA%20IN.dwg

 

Mình đang tìm hiểu về lisp cho nhóm, và mình muốn dùng lisp để thực hành trên bản vẽ này (vẽ thêm cầu thang, cửa, tường,...). Bạn nào có thể cho mình file lisp cũng như cách thực hiện các bước để thao tác lisp trên bản vẽ không? đa tạ nhiều lém :D

 

http://www.mediafire.com/file/s5dkui8k8uckc58/hoc.dwg

email của mình là n.anhdonguyen@gmail.com

Mình mong sự giúp đỡ từ diễn đàn nhìu nhìu :D

Một câu hỏi mông lung sẽ khó lòng nhận được một câu trả lời cụ thể. Bạn post 2 bản vẽ lên với hàng trăm đối tượng và đưa ra 1 đề bài :"Vẽ tự động"

Dù bạn không rành lisp, nhưng bạn cũng cần nhớ Lisp liếc gì gì cũng là từ cái máy mà ra, đã là máy thì chỉ làm cái mà mình quyết định cho nó làm, và quyết định của bạn không phải ai cũng mần hộ được.

Lisp cũng là 1 ngôn ngữ lập trình, nên bạn chí ít cần biết sơ qua về tư duy lập trình đã :)

Mình nghĩ bạn nên nghiêm túc đọc các bài giới thiệu về lisp, chứ đốt cháy giai đoạn như thế, e.. ít người có khả nă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

mình cần tẩy layer thôi còn các block giữ nguyên thuộc tính, chỉ là chuyển layer thôi

ko cần xref vì mình không dùng xref

Bạn dùng thử cái này coi sao nhé.

(defun c:dlay (/ ss ssl en enl lay)
(vl-load-com)
(command "undo" "be")
(setq ss (ssget "x")
       ssl (acet-ss-to-list ss))
(if (= (tblsearch "layer" "wall") nil)
    (command "layer" "n" "wall" "c" "7" "wall" "lt" "continuous" "wall" "")
)
(foreach en ssl
     (setq enl (entget en)
              lay (cdr (assoc 8 enl)))      
     (if (or (/= lay "cut") (/= lay "glass") (/= lay "hide") (/= lay "hatch") (/= lay "funitures") (/= lay "tree") (/= lay "text") (/= lay "center"))
          (progn                  
                 (command "change" en "" "p" "la" "wall" "")
                 (if (/= (cdr (assoc 62 enl)) nil)
                     (command "change" en "" "p" "c" "7" "")
                 )
         )
     )
     (if (= (cdr (assoc 0 enl)) "INSERT")
     (progn
          (setq bln (cdr (assoc 2 enl)))
          (dbl bln)
     )
     )
)
(command "regenall")
(command "undo" "e")
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun dbl (bln / e1 el1 lay )
(setq e1 (cdr (assoc -2 (tblsearch "block" bln))))
;;;;;(setq e1 (entnext en))
(while e1
    (setq el1 (entget e1))
    (if (/= (cdr (assoc 0 el1)) "INSERT")
         (progn 
              (setq lay (cdr (assoc 8 el1)))
              (if (or (/= lay "cut") (/= lay "glass") (/= lay "hide") (/= lay "hatch") (/= lay "funitures") (/= lay "tree") (/= lay "text") (/= lay "center"))
                  (progn                  
                       (setq el1 (subst (cons 8 "wall") (assoc 8 el1) el1))
                       (if (/= (cdr (assoc 62 el1)) nil)
                           (setq el1 (subst (cons 62 7) (assoc 62 el1) el1))
                           (setq el1 (cons (cons 62 7) el1))
                       )
                       (entmod el1)
                  )
              ) 
         )
         (dbl (cdr (assoc 2 (entget e1))))
     )
     (setq e1 (entnext e1))
)
)     

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

vẫn khônh được bác pham thanh binh a

bác thử sửa từ lisp này xem

nhưng trừ layer: cut,glass,hide,hatch,funitures,tree,text,center

lisp này không biết pro nào viết tẩy cả block và dim cực kỳ pro

mong pro nào rảnh giúp đỡ

(defun c:clear(/ nla)
(vl-load-com)
(command "undo" "be")
(setvar "cmdecho" 0)
(setq nla  "funitures")
(if (not (tblsearch "layer" nla))(command "layer" "n" nla "c" "31" nla "lt" "continuous" nla ""))
(setvar "clayer" nla)
(command "change" (ssget "X") "" "p" "la" nla "c" "31" "")
 (setq adoc (vla-get-activedocument (vlax-get-acad-object))) 
 (vlax-for block (vla-get-blocks adoc) 
   (if   (not (wcmatch (strcase (vla-get-name block) t) "*_space*")) 
     (vlax-for   ent block 
	(progn
		(vla-put-color ent "31")
		(vla-put-layer ent "funitures")
	)    
   ) 
    ) 
  )
(acet-sysvar-set (list "dimclrt" 256 "dimclre" 256 "dimclrd" 256 "INSUNITS" 4 "INSUNITSDEFSOURCE" 4 "INSUNITSDEFTARGET" 4)) 
(command "dim1" "update" (ssget "X" '((0 . "Leader"))) "")	
(vla-regen adoc acactiveviewport) 
(command "-purge" "a" "" "N")
(command "undo" "e") 
(princ))    

sory pro ketxu

mong pro giúp amater cái

chuyển tất cả nhưng trừ lại một số layer: cut,glass,hide,hatch,funitures,tree,text,center

không cần chuyển dim, hoặc chuyển cả dim ( cái này thì sao cũng được )

thank you

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

vẫn khônh được bác pham thanh binh a

bác thử sửa từ lisp này xem

nhưng trừ layer: cut,glass,hide,hatch,funitures,tree,text,center

lisp này không biết pro nào viết tẩy cả block và dim cực kỳ pro

mong pro nào rảnh giúp đỡ

 

vẫn không đưõc

My link

Những cái @ nếu bạn có ý định post lại tại chính diễn đàn thì đừng xóa nó đ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
Khách
Chủ đề này bây giờ đã bị đóng lại để trả lời thêm.

×