Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
hhhhgggg

Hàm lấy giá trị Zoom hiện thởi của layout ?

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

hhhhgggg    30

Lúc trước em có post bài yêu cầu lisp xoay bản vẽ trong layout, em đã tự viết được rùi, nhưng hiện giờ em muốn xoay bản vẽ 1 góc A độ và vẫn giữ nguyên độ zoom cũ. Em không biết cái hàm để lấy độ Zoom của layout.xin được chỉ giáo. Đây là code của lisp xoay bản vẽ trong layout theo 1 line

CODE

( defun c:xx ()

(setq ss (ssget) )

(command "UCS" "e" ss)

(command "plan" "" "" )

(setq hs (getreal "Scale factor: "))

( Command "Zoom" hs)

)

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
master_worse    87
Lúc trước em có post bài yêu cầu lisp xoay bản vẽ trong layout, em đã tự viết được rùi, nhưng hiện giờ em muốn xoay bản vẽ 1 góc A độ và vẫn giữ nguyên độ zoom cũ. Em không biết cái hàm để lấy độ Zoom của layout.xin được chỉ giáo. Đây là code của lisp xoay bản vẽ trong layout theo 1 line

CODE

( defun c:xx ()

.....

)

không biết có hàm để lấy độ Zoom của layout không??? :cheers:

nhưng hy vọng cái này có thể giúp bạn

The ZOOM XP factor is calculated with the following formula: group_41 / group_45 (or pspace_height / mspace_height).

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
hhhhgggg    30
không biết có hàm để lấy độ Zoom của layout không??? :cheers:

nhưng hy vọng cái này có thể giúp bạn

The ZOOM XP factor is calculated with the following formula: group_41 / group_45 (or pspace_height / mspace_height).

Hic ! thế túm lại, cụ thể là mình phải làm thế nào ? Hjx ! :gun: :D :blink:

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
nataca    553
Hic ! thế túm lại, cụ thể là mình phải làm thế nào ? Hjx ! :cheers: :blink: :D

Bạn xem thử Code này để biết cách lấy vị trí view và độ zoom:

(setq Nowpos1 (getvar "VIEWCTR")

Sizev1 (getvar "VIEWSIZE")

)

(vl-cmdf "zoom" "C" Nowpos Sizev)

 

Chúc mừng bạn đã bắt tay vào viết lisp. Chúc thành cô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
hhhhgggg    30
Bạn xem thử Code này để biết cách lấy vị trí view và độ zoom:

(setq Nowpos1 (getvar "VIEWCTR")

Sizev1 (getvar "VIEWSIZE")

)

(vl-cmdf "zoom" "C" Nowpos Sizev)

 

Chúc mừng bạn đã bắt tay vào viết lisp. Chúc thành công

E chỉ hiểu được những cái đơn giản thôi. Bác gợi ý khó thế thì em xin dơ hai tay ra hà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
master_worse    87
E chỉ hiểu được những cái đơn giản thôi. Bác gợi ý khó thế thì em xin dơ hai tay ra hàng !

bạn dùng thử hàm này để lấy zoom XP của "VIEWPORT"

(defun GET-ZXP (ENAME / ZXP)
(defun DXF (CODE ENAME) (cdr (assoc CODE (entget ENAME))))
(if (= (DXF 0 ENAME) "VIEWPORT")
 (setq ZXP (/ (DXF 41 ENAME) (DXF 45 ENAME)))
 (progn (setq ZXP NIL) (princ "ham chi su ly \"viewport\""))
)
ZXP
)

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
hhhhgggg    30
bạn dùng thử hàm này để lấy zoom XP của "VIEWPORT"

(defun GET-ZXP (ENAME / ZXP)
(defun DXF (CODE ENAME) (cdr (assoc CODE (entget ENAME))))
(if (= (DXF 0 ENAME) "VIEWPORT")
 (setq ZXP (/ (DXF 41 ENAME) (DXF 45 ENAME)))
 (progn (setq ZXP NIL) (princ "ham chi su ly \"viewport\""))
)
ZXP
)

Em đã sử lại và sử dụng cái đọan CODE lấy giá trị Zoom XP đó, nhưng mà chưa biết cách dùng hàm Zoom để zoom đúng giá trị XP đó. Em tạm thời sửa code như thế này, hiện tại thì nó đang làm giảm đi giá trị Zoom của bản vẽ. Bác nào sửa cho em với !

CODE

( defun c:xyx ()

(defun GET-ZXP (ENAME / ZXP)

(defun DXF (CODE ENAME) (cdr (assoc CODE (entget ENAME))))

(if (= (DXF 0 ENAME) "VIEWPORT")

(setq ZXP (/ (DXF 41 ENAME) (DXF 45 ENAME)))

(progn (setq ZXP NIL) (princ "ham chi su ly \"viewport\""))

)

ZXP

)

(setq G (getreal "goc quay: "))

( Command "ucs" "z" G)

(command "plan" "" "" )

( Command "zoom" zxp)

)

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
master_worse    87
Em đã sử lại và sử dụng cái đọan CODE lấy giá trị Zoom XP đó, nhưng mà chưa biết cách dùng hàm Zoom để zoom đúng giá trị XP đó. Em tạm thời sửa code như thế này, hiện tại thì nó đang làm giảm đi giá trị Zoom của bản vẽ. Bác nào sửa cho em với !

CODE

( defun c:xyx ()

(defun GET-ZXP (ENAME / ZXP)

(defun DXF (CODE ENAME) (cdr (assoc CODE (entget ENAME))))

(if (= (DXF 0 ENAME) "VIEWPORT")

(setq ZXP (/ (DXF 41 ENAME) (DXF 45 ENAME)))

(progn (setq ZXP NIL) (princ "ham chi su ly \"viewport\""))

)

ZXP

)

(setq G (getreal "goc quay: "))

( Command "ucs" "z" G)

(command "plan" "" "" )

( Command "zoom" zxp)

)

 

cú pháp của hàm get-zxp là (get-zxp ename) và hàm sẽ trả về giá trị zoom XP của "VIEWPORT" (bạn nhớ cung cấp tham số cho hàm get-zxp)

bạn thêm dòng (setq zxp (strcat (rtos(get-zxp ename) ) "XP"))

trước ( Command "zoom" zxp)

hy vọng giúp được 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
hhhhgggg    30
cú pháp của hàm get-zxp là (get-zxp ename) và hàm sẽ trả về giá trị zoom XP của "VIEWPORT" (bạn nhớ cung cấp tham số cho hàm get-zxp)

bạn thêm dòng (setq zxp (strcat (rtos(get-zxp ename) ) "XP"))

trước ( Command "zoom" zxp)

hy vọng giúp được bạn

Em đã thêm rùi nhưng kết quả là độ Zoom vẫn bị thay đổi, nó vẫn bé đi. Bác Test sẽ thấy KQ ?

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

Đăng nhập để thực hiện theo  

×