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

#21 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 11 April 2008 - 10:40 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.

lisp nào đòi code?

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

#22 duongsatdn

duongsatdn

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 1657 Bài viết
Điểm đánh giá: 761 (tốt)

Đã gửi 16 May 2008 - 10:39 AM

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

#23 nguyenhuyhoang

nguyenhuyhoang

    biết lệnh adcenter

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

Đã gửi 16 May 2008 - 09:29 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


Cad 2009 đã có lệnh Scale XY
http://www.cadviet.c...?showtopic=3474
  • 0

#24 minh2453

minh2453

    biết lệnh scale

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

Đã gửi 28 July 2008 - 11:33 PM

Cái này giống cái em đang dùng.No problem
  • 1
Đừng giấu những gì bạn biết và những thứ bạn không biết

#25 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 29 July 2008 - 08:55 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 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.

  • 0

#26 vndesperados

vndesperados

    biết lệnh xref

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

Đã gửi 29 July 2008 - 09:00 AM

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.



Thanks bạn
Tôi viết code này để mọi người cùng tham khảo, không phải là một ứng dụng để có thể tránh tất cả lỗi có khả năng xảy ra (Mà với kinh nghiệm của tôi thì không có chương trình nào không tồn tại lỗi, thậm chí với chương trình tính tổng hai số).
Theo tôi, thì bạn cũng có khả năng debug đó.
  • 0

#27 cuongtk2

cuongtk2

    biết vẽ ellipse

  • Members
  • PipPip
  • 59 Bài viết
Điểm đánh giá: 20 (tàm tạm)

Đã gửi 29 July 2008 - 11:48 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


Dùng lisp để giảm thao tác khi dùng cad, được ví như "đuờng chim bay" là thời gian ngắn nhất để thực hiện 1 công việc.
Còn phương án như bạn đề ra thì ai cũng biết, được ví như " đường chim đi xe đạp".
Bạn không thấy là đoạn lisp trên có tác dụng tạo 1 block, chèn theo tỉ lệ x, y, z rồi explode , tiếp đó là purge cái block đó.
Tuy nhiên còn 1 vài điểm thiếu sót là :
- Chưa kiểm xem block này đã có sẵn trong bản vẽ hay chưa.
- Purg rồi mà vẫn chèn được block đó vào bản vẽ (purge chưa hết), chắc phải repeat purge cho chắc ăn.
  • 0

#28 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 30 July 2008 - 07:18 AM

Dùng lisp để giảm thao tác khi dùng cad, được ví như "đuờng chim bay" là thời gian ngắn nhất để thực hiện 1 công việc.
Còn phương án như bạn đề ra thì ai cũng biết, được ví như " đường chim đi xe đạp".

Tui nghĩ là ý tưởng Scale đối tượng một chiều của Vndesperados là phương án tốt nhất. (cho đến Cad 2004)

Bạn có thể giới thiệu một phương án khác ? Đối với dân lập trình : Ý tưởng mới là quan trọng, Coding là chuyện nhỏ.
  • 0

#29 khaosat2009

khaosat2009

    biết lệnh offset

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

Đã gửi 25 September 2010 - 05:51 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)
)

Anh Hoành ơi, làm ơn giúp mình một Lisp dùng trong công tác nắn bản vẽ Ảnh.
Ví dụ như mình có một tờ bản đồ ảnh trên đó thể hiện các hình thể địa hình tự nhiên, sau khi đo đạc vào các điểm chuẩn trên ảnh tương ứng ngoài thực tế có tọa độ có tọa độ các điểm, chuyển điểm lên Cad.
Mình muốn nhờ anh giúp lisp : yêu cầu load ảnh vào, chọn điểm trên ành chỉ vảo điểm cần nắn đến, ... chọn nhiều điểm càng tốt.
Khi thực hiện thì lisp kéo ra hoặc thu lại các điểm của ảnh vào đúng vị trí các điểm trên cad.
Mong được anh giúp
  • 0

#30 ngocthanh_2010

ngocthanh_2010

    biết vẽ line

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

Đã gửi 30 September 2011 - 09:08 PM

Lisp scale đối tượng một chiều rất hữu ích, rất mong các bác trên diễn đàn có thể phát triển Lisp này để dùng trong công tác nắn ảnh như bác Khaosat2009 mô tả để mỗi khi anh em trắc địa thực hiện công tác nắn ảnh không phải dùng đến phần mềm khác mà thao tác lại phức tạp.
Xin cảm ơn các bác món quà Lisp !
  • 0

#31 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 01 October 2011 - 03:55 PM

Lisp scale đối tượng một chiều rất hữu ích, rất mong các bác trên diễn đàn có thể phát triển Lisp này để dùng trong công tác nắn ảnh như bác Khaosat2009 mô tả để mỗi khi anh em trắc địa thực hiện công tác nắn ảnh không phải dùng đến phần mềm khác mà thao tác lại phức tạp.
Xin cảm ơn các bác món quà Lisp !

Hề hề hề,
Vì trên diễn đàn có rất nhiều người ngoại ngạch chuyện môn của các bác nên không hiểu hết ý tưởng của các bác. Rất mong các bác gửi file ảnh và file CAD mà các bác muốn nắn cái ảnh vô đó, đồng thời nếu không quá bí mật quân sự các bác có thể gửi một phần file mẫu đã được nắn xong để mọi người ngâm cứu thử.
Nếu không được vậy thì có nhẽ các bác sẽ phải tự cứu thôi chứ khó có người hiểu hết nhu cầu của các bác để mà làm lisp cho đúng được.
Hề hề hề, mong các bác lưu tâm.....
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#32 ngocthanh_2010

ngocthanh_2010

    biết vẽ line

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

Đã gửi 03 October 2011 - 12:21 AM

Mình gửi các bác ảnh và bản vẽ để nắn ảnh

http://www.cadviet.c...les/3/vd_14.rar

Trong quá trình nắn ảnh việc lựa chọn nhiều điểm trên ảnh dùng để nắn vào các điểm trên bản vẽ là rất quan trọng vì nó liên quan đến độ chính xác.

Lưu ý : Cho đến nay thì chưa có chương trình nào nắn ảnh chính xác một cách tuyệt đối cả, tất cả mới chỉ là tương đối.

Rất mong các bác trên diễn đàn có thể phát triển Lisp Scale đối tượng thành lisp có thể phục vụ cho công việc nắn ảnh để anh em trắc địa đỡ vất vả trong công việc này.
Xin cảm ơn !
  • 0

#33 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 03 October 2011 - 07:46 AM

Xem file kết quả hổng hiểu chi cả :D Sao mình thấy nó giống công việc của 2 lệnh Pa và Align nhỉ :)
  • 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


#34 ngocthanh_2010

ngocthanh_2010

    biết vẽ line

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

Đã gửi 03 October 2011 - 07:27 PM

Xem file kết quả hổng hiểu chi cả :D Sao mình thấy nó giống công việc của 2 lệnh Pa và Align nhỉ :)


Để thực hiện được việc nắn ảnh trên thì
- Load ảnh vào vị trí bất kỳ trên bản vẻ (Như VD mình gửi )
- Dùng lệnh Aligin để đưa 1,2 hoặc 3 điểm trên ảnh trùng với điểm trên bản vẽ
- Dùng Lisp Scale để nắn chỉnh ( n điểm) trên ảnh trùng với ( n điểm ) trên bản vẽ.
  • 0

#35 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 04 October 2011 - 10:05 AM

Mình gửi các bác ảnh và bản vẽ để nắn ảnh

http://www.cadviet.c...les/3/vd_14.rar

Trong quá trình nắn ảnh việc lựa chọn nhiều điểm trên ảnh dùng để nắn vào các điểm trên bản vẽ là rất quan trọng vì nó liên quan đến độ chính xác.

Lưu ý : Cho đến nay thì chưa có chương trình nào nắn ảnh chính xác một cách tuyệt đối cả, tất cả mới chỉ là tương đối.

Rất mong các bác trên diễn đàn có thể phát triển Lisp Scale đối tượng thành lisp có thể phục vụ cho công việc nắn ảnh để anh em trắc địa đỡ vất vả trong công việc này.
Xin cảm ơn !

Hi Ngocthanh_2010,
Cad Overlay chạy trên nền Cad tương ứng, có thể nắn ảnh lại rất tốt. Bạn nên tìm trên mạng tải về dùng. Học sử dụng phần mềm này cũng rất nhanh thôi mà. Ngoài nắn ảnh, Cad Overlay cũng có thể cắt ảnh, số hóa tự động, ....
Chúc bạn vui.
  • 0

#36 ngocthanh_2010

ngocthanh_2010

    biết vẽ line

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

Đã gửi 09 October 2011 - 06:54 PM

Hi Ngocthanh_2010,
Cad Overlay chạy trên nền Cad tương ứng, có thể nắn ảnh lại rất tốt. Bạn nên tìm trên mạng tải về dùng. Học sử dụng phần mềm này cũng rất nhanh thôi mà. Ngoài nắn ảnh, Cad Overlay cũng có thể cắt ảnh, số hóa tự động, ....
Chúc bạn vui.


Thật sự mà nói đến khi bạn nói có Cad Overlay thì mình nói biết chứ từ xưa đến nay mình chỉ biết Cad thôi,
Mình sẽ tìm hiểu về Cad Overlay, nếu có j chưa rõ mong bạn chỉ giáo. Hi
Cảm ơn bạn rất nhiều !
  • 0

#37 chaudinhphuc

chaudinhphuc

    Edu level: no10, to10

  • Advance Member
  • PipPipPipPip
  • 210 Bài viết
Điểm đánh giá: 2 (bình thường)

Đã gửi 04 June 2015 - 05:30 AM

Lệnh Scale trong Lisp này rất hay, nhưng mà có một điều bất lợi là, mình không cần biết tỷ lệ Scale bao nhiêu, chỉ cần click chọn đối tượng Scale 1 chiều này đến vị trí mình muốn thì làm như thế nào. Các anh chỉ dùm, hay có thể sửa Lisp


  • -2

Học nữa, học mãi.       Không thầy đố mày làm nên


#38 hoan2182

hoan2182

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2646 Bài viết
Điểm đánh giá: 832 (rất tốt)

Đã gửi 04 June 2015 - 02:15 PM

Lệnh Scale trong Lisp này rất hay, nhưng mà có một điều bất lợi là, mình không cần biết tỷ lệ Scale bao nhiêu, chỉ cần click chọn đối tượng Scale 1 chiều này đến vị trí mình muốn thì làm như thế nào. Các anh chỉ dùm, hay có thể sửa Lisp

 

Cách đây 6 năm tính thêm cả tuổi mụ nữa là bẩy năm, chắc chắn là anh đã biết Scale với sự lựa chọn tham số R, khi anh viết bài trong chủ đề lày: http://www.cadviet.c...ong-lenh-scale/

 

Phải chăng anh đang "luyện chiêu" : http://chinhem.com/h...i-khi-bi-bo-da/??? :) :) :)


  • 0

Gió đưa cây cải về trời

Rau răm ở lại chịu lời đắng cay...


#39 bucky

bucky

    biết zoom

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

Đã gửi 27 August 2016 - 06:10 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)

)

Mình dùng nó bị thế này khi chọn điểm gốc là sao vậy bạn?154746_20160827.png


  • 0

 Sống là điều hiếm hoi nhất trên thế giới này. Phần lớn mọi người chỉ đang tồn tại  :ph34r:  :ph34r: