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

Scale đối tượng một chiều

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

Đây là đọan code scale đối tượng một chiều

Lệnh là XSC hoặc XSCALE

 

;Scale the mot chieu
(DEFUN EXCUTE()
 (setq oldvalue (getvar "CMDECHO"))
 (setvar "CMDECHO" 0)
 (princ "Chon doi tuong can scale: ")
 (setq ss (ssget))
 (setq P0 (getpoint "\nChon diem goc: "))
 (initget 1 "X Y X S")
 (setq C (getkword "\nScale theo [X,Y,Z,Scale]? :"))
 (setq hs (getreal "Cho biet he so scale: "))
 (DELBLOCK "vkc_temp")
 (CREATEBLOCK ss P0)  
 (Command "-Insert" "vkc_temp" C hs P0 "")   
 (setq dt (entlast))
 (Command "Explode" dt)
 (setvar "CMDECHO" oldvalue)
 (princ)
)
(DEFUN CREATEBLOCK(ss P)
 (command "-Block" "vkc_temp" P ss "")
)

(DEFUN DELBLOCK (bname)
 (if (IsExistBlock bname)
(Command "-Purge" "B" bname "Y" "Y")	
 )
)
(DEFUN IsExistBlock(bname / kq)
 (setq kq Nil)
 (setq n (length LiBlk))
 (setq i 0)
 (while (< i n)
(if (= bname (nth i LiBlk))
  (progn
(setq i n)
(setq kq T)
  )	
)
(setq i (1+ i))
 )
 kq
)
(DEFUN CREALIBLK (/ NL)
 (setq LiBlk (List))
 (setq NL (tblnext "BLOCK" T))  
 (while NL	
(setq LiBlk (append LiBlk (list (cdr (assoc 2 NL)))))
(setq NL (tblnext "BLOCK"))
 )
 (setq LiBlk (Acad_strlsort LiBlk))
)
(DEFUN C:XSCALE()
 (CREALIBLK)
 (EXCUTE)
)
(DEFUN C:XSC()
 (CREALIBLK)
 (EXCUTE)
)

  • Vote tăng 5

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
Đây là đọan code scale đối tượng một chiều

Lệnh là XSC hoặc XSCALE

 

;Scale the mot chieu
(DEFUN EXCUTE()
 (setq oldvalue (getvar "CMDECHO"))
 (setvar "CMDECHO" 0)
 (princ "Chon doi tuong can scale: ")
 (setq ss (ssget))
 (setq P0 (getpoint "\nChon diem goc: "))
 (initget 1 "X Y X S")
 (setq C (getkword "\nScale theo [X,Y,Z,Scale]? :"))
 (setq hs (getreal "Cho biet he so scale: "))
 (DELBLOCK "vkc_temp")
 (CREATEBLOCK ss P0)  
 (Command "-Insert" "vkc_temp" C hs P0 "")   
 (setq dt (entlast))
 (Command "Explode" dt)
 (setvar "CMDECHO" oldvalue)
 (princ)
)
(DEFUN CREATEBLOCK(ss P)
 (command "-Block" "vkc_temp" P ss "")
)

(DEFUN DELBLOCK (bname)
 (if (IsExistBlock bname)
(Command "-Purge" "B" bname "Y" "Y")	
 )
)
(DEFUN IsExistBlock(bname / kq)
 (setq kq Nil)
 (setq n (length LiBlk))
 (setq i 0)
 (while (< i n)
(if (= bname (nth i LiBlk))
  (progn
(setq i n)
(setq kq T)
  )	
)
(setq i (1+ i))
 )
 kq
)
(DEFUN CREALIBLK (/ NL)
 (setq LiBlk (List))
 (setq NL (tblnext "BLOCK" T))  
 (while NL	
(setq LiBlk (append LiBlk (list (cdr (assoc 2 NL)))))
(setq NL (tblnext "BLOCK"))
 )
 (setq LiBlk (Acad_strlsort LiBlk))
)
(DEFUN C:XSCALE()
 (CREALIBLK)
 (EXCUTE)
)
(DEFUN C:XSC()
 (CREALIBLK)
 (EXCUTE)
)

 

tôi gặp lỗi khi sử dụng: lần 1 scale theo phương X = ok, sau đó cũng các block này nếu tiếp tục scale theo phương khác thì gặp lỗi :

Command: XSC Chon doi tuong can scale:

Select objects: Specify opposite corner: 5 found

 

Select objects:

 

Chon diem goc:

Scale theo [X,Y,Z,Scale]?<X/Y/Z/S> :Y

Cho biet he so scale: 2

 

 

Command:

XSC Chon doi tuong can scale:

Select objects: P

5 found

 

Select objects:

 

Chon diem goc:

Scale theo [X,Y,Z,Scale]?<X/Y/Z/S> :X Cho biet he so scale: 5

Unknown command "-PURGE". Press F1 for help.

Unknown command "B". Press F1 for help.

Unknown command "VKC_TEMP". Press F1 for help.

Unknown command "Y". Press F1 for help.

Unknown command "Y". Press F1 for help.

 

Yes or No, please.

; error: Function cancelled

Redefine it? [Yes/No] <N>:

 

nhờ vndesperados xwm lại giúp. 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
tôi gặp lỗi khi sử dụng: lần 1 scale theo phương X = ok, sau đó cũng các block này nếu tiếp tục scale theo phương khác thì gặp lỗi :

Command: XSC Chon doi tuong can scale:

Select objects: Specify opposite corner: 5 found

 

Select objects:

 

Chon diem goc:

Scale theo [X,Y,Z,Scale]?<X/Y/Z/S> :Y

Cho biet he so scale: 2

Command:

XSC Chon doi tuong can scale:

Select objects: P

5 found

 

Select objects:

 

Chon diem goc:

Scale theo [X,Y,Z,Scale]?<X/Y/Z/S> :X Cho biet he so scale: 5

Unknown command "-PURGE". Press F1 for help.

Unknown command "B". Press F1 for help.

Unknown command "VKC_TEMP". Press F1 for help.

Unknown command "Y". Press F1 for help.

Unknown command "Y". Press F1 for help.

 

Yes or No, please.

; error: Function cancelled

Redefine it? [Yes/No] <N>:

 

nhờ vndesperados xwm lại giúp. Thanks

 

 

Test mãi cũng không ra lỗi này nên cũng không biết sửa sao nữa

Bác nào dùng mà gặp lỗi này thì POST lại giùm nhé

Mình có hai máy tính thôi nên không test ra hết các trường hợp, hehehehheh

  • 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
Test mãi cũng không ra lỗi này nên cũng không biết sửa sao nữa

Bác nào dùng mà gặp lỗi này thì POST lại giùm nhé

Mình có hai máy tính thôi nên không test ra hết các trường hợp, hehehehheh

 

Lổi xảy ra khi thực hiện lệnh PUGE theo em nghĩ hai bác dùng hai phiên bản CAD khác nhau nên mới thế. (Chỉ nghỉ vậy thôi chứ chưa thử không biết đúng 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
Bạn cho mình hỏi phần này có hỗ trợ vẽ được scale chiều x bằng 1 đoạn cho trước ko? Cad bình thường có. Mình đã thử nhưng ko đc.

 

 

Bạn có thể mô ta rõ hơn 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

Lỗi ở đây nè (màu đỏ).

Đây là đọan code scale đối tượng một chiều

Lệnh là XSC hoặc XSCALE

Scale the mot chieu

(DEFUN EXCUTE()

(setq oldvalue (getvar "CMDECHO"))

(setvar "CMDECHO" 0)

(princ "Chon doi tuong can scale: ")

(setq ss (ssget))

(setq P0 (getpoint "\nChon diem goc: "))

(initget 1 "X Y X S")

(setq C (getkword "\nScale theo [X,Y,Z,Scale]?<X/Y/Z/S> :"))

(setq hs (getreal "Cho biet he so scale: "))

(DELBLOCK "vkc_temp")

(CREATEBLOCK ss P0)

(Command "-Insert" "vkc_temp" C hs P0 "")

(setq dt (entlast))

(Command "Explode" dt)

(setvar "CMDECHO" oldvalue)

(princ)

)

(DEFUN CREATEBLOCK(ss P)

(command "-Block" "vkc_temp" P ss "")

)

 

(DEFUN DELBLOCK (bname)

(if (IsExistBlock bname)

(Command "-Purge" "B" bname "Y" "Y")

)

)

(DEFUN IsExistBlock(bname / kq)

(setq kq Nil)

(setq n (length LiBlk))

(setq i 0)

(while (< i n)

(if (= bname (nth i LiBlk))

(progn

(setq i n)

(setq kq T)

)

)

(setq i (1+ i))

)

kq

)

(DEFUN CREALIBLK (/ NL)

(setq LiBlk (List))

(setq NL (tblnext "BLOCK" T))

(while NL

(setq LiBlk (append LiBlk (list (cdr (assoc 2 NL)))))

(setq NL (tblnext "BLOCK"))

)

(setq LiBlk (Acad_strlsort LiBlk))

)

(DEFUN C:XSCALE()

(CREALIBLK)

(EXCUTE)

)

(DEFUN C:XSC()

(CREALIBLK)

(EXCUTE)

)

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ó thể mô ta rõ hơn không???

Ví dụ tớ có một cái bơm chiều dài 1570 , muốn giữ nguyên chiều cao, scale chiều dài ra thành 2547 thì ko đc. Bạn có cách nào làm đc ko?

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í dụ tớ có một cái bơm chiều dài 1570 , muốn giữ nguyên chiều cao, scale chiều dài ra thành 2547 thì ko đc. Bạn có cách nào làm đc ko?

 

Dùng 'cal... 2547/1570...

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
Test mãi cũng không ra lỗi này nên cũng không biết sửa sao nữa

Bác nào dùng mà gặp lỗi này thì POST lại giùm nhé

Mình có hai máy tính thôi nên không test ra hết các trường hợp, hehehehheh

Tôi cũng gặp lỗi khi scale theo trục Y như sau:

Command: xsc Chon doi tuong can scale:

Select objects: 1 found

 

Select objects:

Chon diem goc:

Scale theo [X,Y,Z,Scale]?<X/Y/Z/S> :y Cho biet he so scale: 0.9615

 

No unreferenced blocks found.

Unknown command "Y". Press F1 for help.

 

Yes or No, please.

; error: Function cancelled

Redefine it? [Yes/No] <N>:

Nhờ bác xem giúp. Tôi đang dùng cad 2004, winXP SP2

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 cũng gặp lỗi khi scale theo trục Y như sau:

Command: xsc Chon doi tuong can scale:

Select objects: 1 found

 

Select objects:

Chon diem goc:

Scale theo [X,Y,Z,Scale]?<X/Y/Z/S> :y Cho biet he so scale: 0.9615

 

No unreferenced blocks found.

Unknown command "Y". Press F1 for help.

 

Yes or No, please.

; error: Function cancelled

Redefine it? [Yes/No] <N>:

Nhờ bác xem giúp. Tôi đang dùng cad 2004, winXP SP2

 

Cái này tôi vẫn làm việc bình thường, tôi dùng AboutAutolisp1.2 , Cad2004,2007, win vista, Xp đều Ok

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

Quái thiệt, giờ thì cả scale theo trục X cũng bị lỗi tương tự luôn, không hiểu có điều gì bất ổn với cái PC của tôi nữa?! :)

Command: xsc Chon doi tuong can scale:

Select objects: Specify opposite corner: 33 found

 

Select objects:

Chon diem goc:

Scale theo [X,Y,Z,Scale]?<X/Y/Z/S> :x

Cho biet he so scale: 0.9

 

No unreferenced blocks found.

Unknown command "Y". Press F1 for help.

 

Yes or No, please.

; error: Function cancelled

Redefine it? [Yes/No] <N>:

Help me, please!

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
Quái thiệt, giờ thì cả scale theo trục X cũng bị lỗi tương tự luôn, không hiểu có điều gì bất ổn với cái PC của tôi nữa?! :)

Command: xsc Chon doi tuong can scale:

Select objects: Specify opposite corner: 33 found

 

Select objects:

Chon diem goc:

Scale theo [X,Y,Z,Scale]?<X/Y/Z/S> :x

Cho biet he so scale: 0.9

 

No unreferenced blocks found.

Unknown command "Y". Press F1 for help.

 

Yes or No, please.

; error: Function cancelled

Redefine it? [Yes/No] <N>:

Help me, please!

Bạn đã sửa dòng lệnh như bác "nô thiên" chưa? Mình chạy lisp này vẫn ngon, chưa thấy lổi gì

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ần gấp xin giúp :

Mình cũng dùng Scale 1 chiều công trình cao 32m, Scale theo trục Y, nhưng chỉ Scale được 2/3 công trình, fần còn lại chương trình đòi CODE ( command : CHO CODE ), không điền code được thi không cho Scale và bản vẽ báo lỗi,exit luôn.

mình copy nội dung file Scale 1 chiều vào Autocad2004.doc để chạy.

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ần gấp xin giúp :

Mình cũng dùng Scale 1 chiều công trình cao 32m, Scale theo trục Y, nhưng chỉ Scale được 2/3 công trình, fần còn lại chương trình đòi CODE ( command : CHO CODE ), không điền code được thi không cho Scale và bản vẽ báo lỗi,exit luôn.

mình copy nội dung file Scale 1 chiều vào Autocad2004.doc để chạy.

chương trình nào vậy bạ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

Cảm ơn Bạn!

Mình đang nói về lisp Scale một chiều của topic này.

Sory , mình nói cho rõ tí :

Công trình cần Scale mình chia ra làm 3 khối, vì để 1 khối thì Scale không được

sau đó mình Scale 1 chiều từng khối, Scale được 2 khối rồi, đến khối thứ 3 thì Lisp đòi CODE , mình không biết Code là gì cả. Sau đó không thể tiếp tục công việc đượ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

thấy các bro thao luận sôi nổi quá, nhưng tôi thấy việc scale theo 2 phương khác nhau chi cần tạo block, sau đó insert và chọn tỷ lệ theo 2 phương khác nhau là ok. có thể nhập tỷ lệ theo dạng phân số a/b trong hộp thoại insert

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 đang nói về lisp Scale một chiều của topic này.

Sory , mình nói cho rõ tí :

Công trình cần Scale mình chia ra làm 3 khối, vì để 1 khối thì Scale không được

sau đó mình Scale 1 chiều từng khối, Scale được 2 khối rồi, đến khối thứ 3 thì Lisp đòi CODE , mình không biết Code là gì cả. Sau đó không thể tiếp tục công việc được.

lisp nào đòi code?

 

Trên cadviet, toàn bộ lisp là free mà?

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ấy các bro thao luận sôi nổi quá, nhưng tôi thấy việc scale theo 2 phương khác nhau chi cần tạo block, sau đó insert và chọn tỷ lệ theo 2 phương khác nhau là ok. có thể nhập tỷ lệ theo dạng phân số a/b trong hộp thoại insert

Chưa hẳn đâu bạn ơi. Bạn test nhiều trường hợp xen sao, block có chứa đủ loại text, rec, circle...

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ấy các bro thao luận sôi nổi quá, nhưng tôi thấy việc scale theo 2 phương khác nhau chi cần tạo block, sau đó insert và chọn tỷ lệ theo 2 phương khác nhau là ok. có thể nhập tỷ lệ theo dạng phân số a/b trong hộp thoại insert

 

Cad 2009 đã có lệnh Scale XY

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

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
Đây là đọan code scale đối tượng một chiều

Lệnh là XSC hoặc XSCALE

 

;Scale the mot chieu
(DEFUN EXCUTE()
..................
 (setq P0 (getpoint "\nChon diem goc: "))
 (initget 1 "X Y X S")
 (setq C (getkword "\nScale theo [X,Y,Z,Scale]? :"))
 (setq hs (getreal "Cho biet he so scale: "))
 (DELBLOCK "vkc_temp")
 (CREATEBLOCK ss P0)  
 (Command "-Insert" "vkc_temp" C hs P0 "")   
 (setq dt (entlast))
 (Command "Explode" dt)
 (setvar "CMDECHO" oldvalue)
 (princ)
)
........

(DEFUN DELBLOCK (bname)
 (if (IsExistBlock bname)
(Command "-Purge" "B" bname "Y" "Y")	
 )
)
..............
(DEFUN C:XSC()
 (CREALIBLK)
 (EXCUTE)
)

 

Trường hợp trên bản vẽ có Block name vkc_temp thì hàm DELBLOCK sẽ không có tác dụng--> báo lỗi,

do đó Vndesperados nên đặt tên Block theo cách khá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

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

×