Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
38 replies to this topic

#1 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 28 June 2007 - 09:48 AM

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

  • 5

#2 vbao

vbao

    biết lệnh array

  • CADViet Team
  • PipPipPip
  • 184 Bài viết
Điểm đánh giá: 80 (tàm tạm)

Đã gửi 28 June 2007 - 06:42 PM

Đâ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
  • 0

#3 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 29 June 2007 - 09:12 AM

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

#4 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 29 June 2007 - 11:16 AM

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


#5 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 29 June 2007 - 12:10 PM

Tôi đã thử và không gặp lỗi gì.
Không biết Vbao dùng ACAD đời bao nhiêu?
  • 0

#6 vbao

vbao

    biết lệnh array

  • CADViet Team
  • PipPipPip
  • 184 Bài viết
Điểm đánh giá: 80 (tàm tạm)

Đã gửi 29 June 2007 - 02:03 PM

Tôi đã thử và không gặp lỗi gì.
Không biết Vbao dùng ACAD đời bao nhiêu?


tôi sử dụng cad 2000 win 98SE, nhân tiện tôi xin gửi file block dùng test thử chương trình:
http://www.cadviet.com/upfiles/Arrow.dwg
  • 0

#7 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 29 June 2007 - 02:43 PM

tôi sử dụng cad 2000 win 98SE, nhân tiện tôi xin gửi file block dùng test thử chương trình:
http://www.cadviet.com/upfiles/Arrow.dwg



Đã test, không thấy lỗi.
  • 0

#8 dongphuong

dongphuong

    biết pan

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

Đã gửi 19 November 2007 - 03:09 AM

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

#9 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 19 November 2007 - 02:55 PM

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

#10 Nộ Thiên

Nộ Thiên

    biết lệnh ddedit

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

Đã gửi 19 November 2007 - 06:17 PM

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


  • 0

#11 dongphuong

dongphuong

    biết pan

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

Đã gửi 19 November 2007 - 08:01 PM

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

#12 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 20 November 2007 - 07:09 AM

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

#13 xgame

xgame

    biết vẽ arc

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

Đã gửi 28 January 2008 - 02:33 PM

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

#14 111ppp

111ppp

    biết zoom

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

Đã gửi 28 January 2008 - 05:50 PM

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

#15 xgame

xgame

    biết vẽ arc

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

Đã gửi 29 January 2008 - 09:40 AM

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

#16 leolas

leolas

    biết lệnh stretch

  • CADViet Team
  • PipPipPip
  • 163 Bài viết
Điểm đánh giá: 133 (tàm tạm)

Đã gửi 26 February 2008 - 09:41 PM

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ì
  • 0
Let those who only see the thorns have eyes to see the rose

#17 quoctoa

quoctoa

    biết vẽ ellipse

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

Đã gửi 21 March 2008 - 04:01 PM

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.
  • 0
Dù đục, dù trong con sông vẫn chảy, Dù cao, dù thấp cây lá vẫn xanh, Dù kẻ phàm tục hay kẻ tu hành, Đều phải sống từ những điều rất nhỏ. Ta hay chê cuộc đời méo mó, Sao ta không tròn tự trong tâm? Đất ôm cho những hạt nảy mầm, Nhưng chồi tự vươn lên tìm ánh sáng. Nếu tất cả đường đời đều trơn láng, Thì chắc gì, ta nhận ra ta?

#18 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 21 March 2008 - 04:02 PM

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

#19 quoctoa

quoctoa

    biết vẽ ellipse

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

Đã gửi 21 March 2008 - 04:06 PM

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.
  • 0
Dù đục, dù trong con sông vẫn chảy, Dù cao, dù thấp cây lá vẫn xanh, Dù kẻ phàm tục hay kẻ tu hành, Đều phải sống từ những điều rất nhỏ. Ta hay chê cuộc đời méo mó, Sao ta không tròn tự trong tâm? Đất ôm cho những hạt nảy mầm, Nhưng chồi tự vươn lên tìm ánh sáng. Nếu tất cả đường đời đều trơn láng, Thì chắc gì, ta nhận ra ta?

#20 trungcdc

trungcdc

    Chưa sử dụng CAD

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

Đã gửi 11 April 2008 - 08:04 PM

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