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 bạn!Mình đã dùng chức năng search của diễn đàn mà vẫn ko tìm ra, nay mình mạo muội nhờ các bạn viết dùm mình LISP đổi Global Width trong Block, chẳng là mình có rất nhiều Block nhà cửa, trong đó được vẽ bằng các Pline đã được định sẵn Global Width, bây giờ mình muốn chuyển hết tất cả các Pline trong các block đó về cùng 1 giá trị Global width, lisp thực hiện như sau:

- gọi lệnh

- chọn block (không cần quan tâm block đó là gì, trong bãn vẽ có bao nhiêu block thì chọn hết)

- nhập giá trị global width mới

- kết thúc lệnh

Thanks mọi người rất nhiều.

Mấy anh giúp em với!

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

Bạn cứ EXPLODE 1 Block ra rồi đổi Width của các chi tiết sau đó tạo lại Block với đúng các đối tượng vừa EXPLODE ra với tên của Block đúng như tên Block cũ, khi đó Cad sẽ hỏi bạn có muốn định nghĩa lại Block hay không, hãy chấp nhậ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
Hề hề, cho Vàng bạn luôn. :D

Anh Duy và bạn kẽtu hãy thử Lisp này

Đoạn này:

(while (< 0 (getvar "CMDACTIVE"))

(command pause)

) Là tác dụng gì vậy Tuệ, giải thích cho mình 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
Đoạn này:

(while (

(command pause)

) Là tác dụng gì vậy Tuệ, giải thích cho mình với!

Anh xem lời giải thích ở đây nhé : http://www.cadviet.com/forum/index.php?showtopic=13595

Mạn phép bạn ndtnv, Tue_NV mượn lại code của bạn để viết cho nhanh :D - giúp cho truong thanh

Truongthanh thử code này nhé :

(defun c:PWB(/ i ss ls nw)
(vl-load-com)
    (setq  i 0 ss (ssget "X" '((0 . "INSERT"))))
   (setq nw (getdist "\n Cho do rong moi cua POLYLINE trong Block :"))
    (command ".UNDO" "BE")
    (repeat (sslength ss)
        (UPWB (ssname ss i) )
        (setq i (1+ i))
    )
    (command ".REGEN")
    (command ".UNDO" "E")
    (princ)
)
(defun  UPWB (blk /  e el s ob)
    (setq s (cdr (assoc 2 (entget blk))))
    (if (not (member s ls))
        (progn
            (setq ls (append ls (list s)))
            (setq e (cdr (assoc -2 (tblsearch "BLOCK" s))))
            (while e
                (setq el (entget e))
                (if (wcmatch (cdr (assoc 0 el)) "INSERT")
		(UPWB e)
	)
	(if (vlax-property-available-p 
		(setq ob (vlax-ename->vla-object e)) 
				'ConstantWidth)
		(vla-put-ConstantWidth ob nw) 
	)
                (setq e (entnext e))  
            )
        )
    )
)

  • Vote tăng 3

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ề, cho Vàng bạn luôn. :D

Anh Duy và bạn kẽtu hãy thử Lisp này

(defun c:1(/ ov vl)
(setvar "hpname" "ansi31") 
 (setq vl '("clayer" "cmdecho"); Sys Var list
ov (mapcar 'getvar vl)); Get Old values
 (setvar "cmdecho" 1) 
 (if (tblsearch "layer" "KT-Hatch")
(setvar "CLAYER" "KT-Hatch")
(command "-layer" "M" "KT-Hatch" "" ) )
 (initdia)
 (command "hatch")
 (while (	(command pause)
 ) 
 (vl-cmdf "change" "L" "" "P" "LA" "KT-Hatch" "")
 (mapcar 'setvar vl ov); reset Sys Vars
 (princ)
 )

Là thành viên mới,e cũng biết cách tốt nhất là ấn TKS,nhưng phải phản hồi mới thấy được hết sự vui mừng.Tks bác,code chạy ngon lắm.Thấy hpname nhận đc cả custom pat cũng vui quá ^^

Em gửi thêm 1 nguyện vọng nữa,mong các bác giúp đỡ:

- Thực hiện lệnh bắn line (hoặc pline) vào giao điểm của 2 đường line gần nhất.Ở đầu vào User kích chọn vào đường line cần bắn.

- Thực hiện lệnh bắn line (hoặc pline) vào 1 điểm gấp khúc gần nhất của các đường pline xung quanh.Ở đầu vào User kích chọn vào đường line cần bắn và có lựa chọn pick hay không cần kick vào pline.(Giống lệnh ex,hay trim,có thể chọn hoặc không chọn đường biên ý ạ.vì có thể có nhiều pl xung quanh mũi đường l,pl gốc,người dùng không phải băn khoăn xem đường nào gần nhất).

Mong các bác giúp đỡ e vấn đề 1,còn vấn đề 2 thì với bản thân e chưa cần thiết lắm,e chỉ nghĩ nên mở rộng vấn đề như thế thôi.hì ^^

55010618.gif

68191987.gif

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ạn cứ EXPLODE 1 Block ra rồi đổi Width của các chi tiết sau đó tạo lại Block với đúng các đối tượng vừa EXPLODE ra với tên của Block đúng như tên Block cũ, khi đó Cad sẽ hỏi bạn có muốn định nghĩa lại Block hay không, hãy chấp nhận.

Dạ em cũng biết cách đó ạ!Nhưng em có rất nhiều block khác tên nhau ạ!Nếu làm như cách của bạn thì mình edit block rồi save lại còn nhanh hơn, cần gì phải EXPLODE!Vấn đề ở đây là em có rất nhiều block khác tên nhau!

Thanks TUE rất nhiều!

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 đại ca cho em hỏi cái

em có cái lisp này khi dùng ấn esc thì không quay về lúc ban đầu được. Em đã đọc bài viết của bác Hoành và làm theo nhưng không ăn thua.

http://www.cadviet.com/upfiles/3/phaohoa.rar

Các đại ca giúp em cá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
Hề hề, cho Vàng bạn luôn. :D

Đại ca cho e hỏi luôn,e muốn set luôn cả biến hpscale 15 vào code trên thì làm ra răng ^^ À,cả góc xoay của hatch nữa.e muốn trước khi thực hiện lệnh hatch với các thông số cũ,máy hoỉ góc mới,hoặc tỉ lệ hatch mới thì mần ră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

Cám ơn bạn, mình thử cả một buổi chiều và kết quả thế này:

Lips của bạn ndtnv: chạy tít, đổi màu rất ngon.

lips của bạn Phamthanhbinh chạy tít, chuyển layer ngon.

kết hợp cả hai lips thì đúng yêu cầu của em nhờ các bác. tuy nhiên là phải chạy lips của bạn ndtnv trước xong mới chạy lips của bạn Phamthanhbinh, làm ngược lại thì không chuyển tất về 1 layer được (lạ thế ??? )

Cám ơn các bác nhiều, các bác có giúp em cho trót thì tổng hợp cả 2 cái thành 1 giúp em, nếu không thì em túc tắc chạy cả 2 cái cũng được.

Một lần nữa tks các bác nhiề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
Cám ơn bạn, mình thử cả một buổi chiều và kết quả thế này:

Lips của bạn ndtnv: chạy tít, đổi màu rất ngon.

lips của bạn Phamthanhbinh chạy tít, chuyển layer ngon.

kết hợp cả hai lips thì đúng yêu cầu của em nhờ các bác. tuy nhiên là phải chạy lips của bạn ndtnv trước xong mới chạy lips của bạn Phamthanhbinh, làm ngược lại thì không chuyển tất về 1 layer được (lạ thế ??? )

Cám ơn các bác nhiều, các bác có giúp em cho trót thì tổng hợp cả 2 cái thành 1 giúp em, nếu không thì em túc tắc chạy cả 2 cái cũng được.

Một lần nữa tks các bác nhiều. :D

Bạn thử cái này xem :

Lisp sẽ chuyển về Block về Layer hiện hành nhé. Đương nhiên là trong Block có Block

Thử nhé :

(defun c:CHBL(/ i ss ls nw ent curla)
(vl-load-com)
(setq curla (getvar "clayer"))
    (setq  i 0 ss (ssget '((0 . "INSERT"))))
    (command ".UNDO" "BE")
    (repeat (sslength ss)
        (UPWB (setq ent (ssname ss i)) )
        (setq i (1+ i))
(vl-cmdf "change" ent "" "P" "LA" curla "") 
    )
    (command ".REGEN")
    (command ".UNDO" "E")
    (princ)
)
(defun  UPWB (blk /  e el s ob)
    (setq s (cdr (assoc 2 (entget blk))))
    (if (not (member s ls))
        (progn
            (setq ls (append ls (list s)))
            (setq e (cdr (assoc -2 (tblsearch "BLOCK" s))))
            (while e
                (setq el (entget e))
                (if (wcmatch (cdr (assoc 0 el)) "INSERT")
		(UPWB e)
	)
		(vla-put-Layer (setq ob (vlax-ename->vla-object e)) curla) 
		(vla-put-Color ob 256) 

                (setq e (entnext e))  
            )
        )
    )
)

  • 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ạn thử cái này xem :

Lisp sẽ chuyển về Block về Layer hiện hành nhé. Đương nhiên là trong Block có Block

Thử nhé :

(defun c:CHBL(/ i ss ls nw ent curla)
(vl-load-com)
(setq curla (getvar "clayer"))
    (setq  i 0 ss (ssget '((0 . "INSERT"))))
    (command ".UNDO" "BE")
    (repeat (sslength ss)
        (UPWB (setq ent (ssname ss i)) )
        (setq i (1+ i))
(vl-cmdf "change" ent "" "P" "LA" curla "") 
    )
    (command ".REGEN")
    (command ".UNDO" "E")
    (princ)
)
(defun  UPWB (blk /  e el s ob)
    (setq s (cdr (assoc 2 (entget blk))))
    (if (not (member s ls))
        (progn
            (setq ls (append ls (list s)))
            (setq e (cdr (assoc -2 (tblsearch "BLOCK" s))))
            (while e
                (setq el (entget e))
                (if (wcmatch (cdr (assoc 0 el)) "INSERT")
		(UPWB e)
	)
		(vla-put-Layer (setq ob (vlax-ename->vla-object e)) curla) 
		(vla-put-Color ob 256) 

                (setq e (entnext e))  
            )
        )
    )
)

Quá tốt rồi bạn ơi, không còn gì để phàn nàn many thank

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ạn thử cái này xem :

Lisp sẽ chuyển về Block về Layer hiện hành nhé. Đương nhiên là trong Block có Block

Thử nhé :

 

(defun c:CHBL(/ i ss ls nw ent curla)

(vl-load-com)

(setq curla (getvar "clayer"))

    (setq  i 0 ss (ssget '((0 . "INSERT"))))

    (command ".UNDO" "BE")

    (repeat (sslength ss)

        (UPWB (setq ent (ssname ss i)) )

        (setq i (1+ i))

(vl-cmdf "change" ent "" "P" "LA" curla "")

    )

    (command ".REGEN")

    (command ".UNDO" "E")

    (princ)

)

(defun  UPWB (blk /  e el s ob)

    (setq s (cdr (assoc 2 (entget blk))))

    (if (not (member s ls))

        (progn

            (setq ls (append ls (list s)))

            (setq e (cdr (assoc -2 (tblsearch "BLOCK" s))))

            (while e

                (setq el (entget e))

                (if (wcmatch (cdr (assoc 0 el)) "INSERT")

(UPWB e)

)

(vla-put-Layer (setq ob (vlax-ename->vla-object e)) curla)

(vla-put-Color ob 256)

 

                (setq e (entnext e))

            )

        )

    )

)

Chào bác Tuệ_NV,

Bác cho hỏi một chút nhé:

Vì sao trong đoạn lisp trên của bác, trong khi bác định nghĩa hàm UPWB bác lại vẫn sử dụng nó trong vòng lặp được bác nhỉ???( cái chỗ mình bôi đỏ trong đoạn lisp trên ấy bác ạ)

Theo mình hiểu thì bác phải định nghĩa cho xong cái hàm UPWB đã tức là phải kết thúc cái hàm (defun upwb (......) .........) rồi mới lôi nó ra dùng được chứ ạ.

Mình đọc mà vẫn chưa hiểu rõ chỗ này, mong bác giải thích giùm....

Cám ơn bác trước.

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ào bác Tuệ_NV,

Bác cho hỏi một chút nhé:

Vì sao trong đoạn lisp trên của bác, trong khi bác định nghĩa hàm UPWB bác lại vẫn sử dụng nó trong vòng lặp được bác nhỉ???( cái chỗ mình bôi đỏ trong đoạn lisp trên ấy bác ạ)

Theo mình hiểu thì bác phải định nghĩa cho xong cái hàm UPWB đã tức là phải kết thúc cái hàm (defun upwb (......) .........) rồi mới lôi nó ra dùng được chứ ạ.

Mình đọc mà vẫn chưa hiểu rõ chỗ này, mong bác giải thích giùm....

Cám ơn bác trước.

Trong lập trình kĩ thuật này gọi là "Đệ qui" bác ạ. (tiếng Anh : recursion)

 

Bác tham khảo trên WIKI : http://vi.wikipedia.org/wiki/đệ_qui

  • Vote tăng 2

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ào bác Tuệ_NV,

Bác cho hỏi một chút nhé:

Vì sao trong đoạn lisp trên của bác, trong khi bác định nghĩa hàm UPWB bác lại vẫn sử dụng nó trong vòng lặp được bác nhỉ???( cái chỗ mình bôi đỏ trong đoạn lisp trên ấy bác ạ)

Theo mình hiểu thì bác phải định nghĩa cho xong cái hàm UPWB đã tức là phải kết thúc cái hàm (defun upwb (......) .........) rồi mới lôi nó ra dùng được chứ ạ.

Mình đọc mà vẫn chưa hiểu rõ chỗ này, mong bác giải thích giùm....

Cám ơn bác trước.

Chào bác Bình

Chính xác như anh giaBach đã nói, kỹ thuật Đệ quy này Tue_NV đã được học từ môn Tin học đại Cương, trong đó có được học ngôn ngữ Lập trình Pascal. Và Tue_NV đã ứng dụng được các thuật toán của Pascal trong Lisp. Nó rất hay bác ạ

 

Nói tóm lại, hàm con UPWB sẽ phải gọi đến chính nó khi trong Block có tồn tại Block nữa bác ạ. Nó được thể hiện cụ thể sau :

(if (wcmatch (cdr (assoc 0 el)) "INSERT")

(UPWB e)

)

 

Nếu mà (cdr (assoc 0 el)) không phải là Block nữa thì thực thi cái công việc là thiết lập Layer và màu sắc cho nó. Còn nếu mà (cdr (assoc 0 el)) là 1 cái Block thì hàm UPWB phải gọi đến chính nó. và cứ thế..... cho đến khi ... biến e =nil

 

Vài dòng chia sẻ cùng bác. Chúc bác vui

 

@Anh Duy : Tue_NV đã Link bài viết có lời giải thích cho anh ở bài viết 1658 ở topic này? Không biết anh đã đọc chưa? và giải quyết được chưa? Sao không thấy anh Reply? Chúc anh thành công

Dạo này công việc của Tue_NV bận lắm nên ít lên diễn đàn được nên rất mong các bác thông cảm

  • Vote tăng 2

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
@Anh Duy : Tue_NV đã Link bài viết có lời giải thích cho anh ở bài viết 1658 ở topic này? Không biết anh đã đọc chưa? và giải quyết được chưa? Sao không thấy anh Reply? Chúc anh thành công

Dạo này công việc của Tue_NV bận lắm nên ít lên diễn đàn được nên rất mong các bác thông cảm

À mình đã nắm được đoạn này và ứng dụng để thực hiện cho lệnh pline và fillet mà trước đây bị dở dang. Đúng là có nhiều cái đã hướng dẩn nhưng vẫn ko để ý nên cứ vướng nhiều nơi. Cám ơn Tuệ. Công việc vẩn là quan trọng nhất. Diển đàn thì lúc nào rảnh mới ghé, nhưng mà pảh ứng của Tuệ vậy là nhanh rồi ko chậm đâ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
Thử cái này xem:

(Defun c:trt ( )

(princ "\nPHAM QUOC DUY Binh Son - Quang ngai")

(command "undo" "be")

(Princ "\nHay chon doi tuong :")

(setq SS (ssget '((0 . "TEXT"))))

 

(setq bkt (getstring "\nBan kinh vong tron:"))

 

(setq i 0)

(setq N (sslength ss))

(while (< i N)

(setq TEXTENT (ssname SS i))

(setq luubatdiem (getvar "osmode"))

(setvar "osmode" 0)

(command "ucs" "object" textent)

(setq tbTB (textbox (list (cons -1 textent)))

ll (car tbTB)

ur (cadr tbTB)

ul (list (car ll) (cadr ur))

lr (list (car ur) (cadr ll))

)

 

(setq daitext (distance ul lr))

(setq goctext(angle ul lr))

(setq dainuatext (/ daitext 2))

(setq diemquay (polar ul goctext dainuatext))

 

(command ".circle" diemquay bkt)

(command ".polygon" "30" diemquay "" bkt)

(command ".wipeout" "" "last" "y")

(command ".copy" textent "" diemquay diemquay)

(command ".erase" "Previous" "")

(command "ucs" "p")

(setq i (1+ i))

(setvar "osmode" luubatdiem)

)

(command "undo" "end")

(Princ)

)

Cảm ơn anh đx viết lisp trên,nhưng em muốn không những là hình tròn mà 1 số hình khác nữa như hình vuông hay tam giác hay đa giác chẳng hạn.Thank's anh nhiều!

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
Đơn giản mà anh :D

(defun c:shat();show hatch
(initdia)
(command "hatch")
)

Nó hay lắm đó. Nó còn dùng để hiện các hộp thoại khác nữa à. :D

Trong lúc chờ đợi được giúp đỡ,nhờ bác Tue và mọi người cho e hỏi,khi gọi hàm (initdia) trong 1 lisp,nếu đóng gói luôn thành VLX thì sẽ xuất hiện thông báo lỗi sau :

"no function definition: INITDIA" và lệnh không thực hiện được.Nếu chuyển từ lisp sang combined lisp(*.fas) rồi đóng gói lại thì lại được.Vấn đề là ở đâ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

Em Chào các bác.

 

CHả là thế này: em hay vẽ trong Model ( ko phải layout) của Cad theo tỷ lệ 1:1 rồi Scale khung vẽ. Thế nên việc chỉnh text_hight và text_dim khi in trên khổ giấy A3 rất mệt. hjx

 

Em muốn nhờ các bác viết hộ em cái Lisp như thế này để khi in bản vẽ nhìn text và dim nó đều nhau.

 

- Text, dim nguồn: Giả sử có

Text: text1 có style là T1 text_hight là A1.

text2 có style là T2 text_hight là A2.

....................

textn có style là Tn text_hight là An.

 

Dim: Dim1 có style là D1 text_hight là D1.

Dim2 có style là D2 text_hight là D2.

....................

Dimn có style là Dn text_hight là Dn.

 

Các bước của lệnh là:

 

B1: Chọn text và dim nguồn:

 

B2: Chọn text và dim đích:

Xử lý:

Với Text : Bất cứ Text đích nào Có Style Giống với style của text nguồn thì chuyển text_hight của Text đích = text_hight cuả text nguồn.

 

Với Dim :Bất cứ Dim đích nào Có Style Giống với style của Dim nguồn thì chuyển

Dim _hight của Dim đích = Dim_hight cuả Dim nguồn.

B3: Kết thúc.

 

Lưu ý: Với Dim đích có những dim bị sửa factor ( bị scale bản vẽ phải chỉnh lại factor).thì chỉ chuyển chiều cao của text,

- Khi chọn nguồn và đích có thể có lẫn cả line, arc , poline......và Block. Nếu đích có Block thì cũng chỉnh sửa luôn chiều cao của text và dim trong block này như nguồn luôn.

 

P/s: Các text và dim nguồn ở bên trong 1 block các bác nhé

 

Mong các bác giúp minh mình nhé Cảm ơn các bác nhiều. Chúc mọi người 1 tuần làm việc vui vẻ

Còn đây là File minh họa của mình:

http://www.mediafire.com/?0989patwozh43mc

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ào bác Tuệ_NV,

Bác cho hỏi một chút nhé:

Vì sao trong đoạn lisp trên của bác, trong khi bác định nghĩa hàm UPWB bác lại vẫn sử dụng nó trong vòng lặp được bác nhỉ???( cái chỗ mình bôi đỏ trong đoạn lisp trên ấy bác ạ)

Theo mình hiểu thì bác phải định nghĩa cho xong cái hàm UPWB đã tức là phải kết thúc cái hàm (defun upwb (......) .........) rồi mới lôi nó ra dùng được chứ ạ.

Mình đọc mà vẫn chưa hiểu rõ chỗ này, mong bác giải thích giùm....

Cám ơn bác trước.

thuật toán đệ quy này còn rất tiện để lặp lại lệnh hoặc dùng trong các điều kiện rẽ nhánh chương trình mà không cần dùng các vòng lặp. code sẽ đơn giản hơn rất nhiều đó bác ạ :D

ví dụ:

(defun c:xxx ()

.......

(c:xxx)

);defun

  • 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ào bác Tuệ_NV,

Bác cho hỏi một chút nhé:

Vì sao trong đoạn lisp trên của bác, trong khi bác định nghĩa hàm UPWB bác lại vẫn sử dụng nó trong vòng lặp được bác nhỉ???( cái chỗ mình bôi đỏ trong đoạn lisp trên ấy bác ạ)

Theo mình hiểu thì bác phải định nghĩa cho xong cái hàm UPWB đã tức là phải kết thúc cái hàm (defun upwb (......) .........) rồi mới lôi nó ra dùng được chứ ạ.

Mình đọc mà vẫn chưa hiểu rõ chỗ này, mong bác giải thích giùm....

Cám ơn bác trước.

Anh Bình tham khảo thêm topic này:

 

http://www.cadviet.com/forum/index.php?showtopic=6243

 

Chú ý ví dụ dùng đệ quy để tính giai thừa n! (một ví dụ rất hay dùng để minh họa thuật toán đệ quy).

  • 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

em nhờ các bác viết giúp e 1 lisp như sau:

em có:

- đối tượng A (có thể là L, PL, SPL, ARC, C....)

- và một loạt đối tượng là B, C, D, ... cắt qua A

em nhờ các bác giúp cho e 1 lisp mà khi thực hiện chỉ cần pick vào A thì toàn bộ các đối tượng B, C, D bị Break (thay vì e ngồi làm cái một ý mà)

Cám ơn các bác nhiều!

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
em nhờ các bác viết giúp e 1 lisp như sau:

em có:

- đối tượng A (có thể là L, PL, SPL, ARC, C....)

- và một loạt đối tượng là B, C, D, ... cắt qua A

em nhờ các bác giúp cho e 1 lisp mà khi thực hiện chỉ cần pick vào A thì toàn bộ các đối tượng B, C, D bị Break (thay vì e ngồi làm cái một ý mà)

Cám ơn các bác nhiều!

 

Bạn vào ô tìm kiếm nhé, gõ từ khóa "MyBreak" sẽ tìm có cái LISP tương tự... :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

Trong lisp hide_show dùng để ẩn,hiện đối tượng,có cách nào để lưu các đối tượng đã ẩn không?Tức là khi e thực hiện lệnh ẩn,thì các đối tượng này ẩn đi.Lúc cần hiện thì gọi lệnh hiện.Sau 1 số thao tác,e lại muốn những đối tượng trước ẩn đi,hoặc thêm vài đối tượng khác nữa mà không phải chọn lại các đối tượng này không ?? (vì hiện giờ khi thao tác lại,lại phải chọn lại đối tượng -> rất rườm rà)

 

-Có cách nào khóa 1 đối tượng giống như đóng băng không ạ ? (k phải đóng băng layer chứa đối tượng đó)

Em thấy chức năng này rất cần thiết nhưng hình như chưa có

E nghĩ có cách là copy đối tượng sang 1 layer temp,layer này có tính chất giống layer của đối tượng,nhưng bị khóa.Sau khi unlock thì trả đối tượng về layer cũ và (có thể) xóa layer temp đi.Nhưng lại có vấn đề là nếu có nhiều đối tượng thuộc nhiều layer khác nhau thì phải tạo ra nhiều layer temp,hoặc phải lưu giữ thông tin của nhiều đối tượng trước khi bị khóa.Nhưng kể cả như vậy thì có thể thực hiênện được không ạ ??Em k biết lập trình nên không triển khai được ý đồ,mong các bác giúp đỡ ..

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ào các bạn

Mình có 1 file lisp tãi trên mạng dùng để vẽ bánh xích, nhưng nó chỉ vẽ theo đơn vị inch thôi. Nếu dùng mặc định bản vẽ là acadiso.dwt thì không dùng lisp được, mình nhờ các bạn sửa dùm có thêm dòng lệnh " đơn vị theo inch hay mm" để có thể vẽ theo inch hoặc theo mm đều được. Cám ơn nhiều

http://www.cadviet.com/upfiles/3/djg_rcs.zip

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.

×