Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
8 replies to this topic

#1 hhhhgggg

hhhhgggg

    biết dimedit

  • Members
  • PipPipPipPipPip
  • 393 Bài viết
Điểm đánh giá: 30 (tàm tạm)

Đã gửi 30 November 2009 - 12:55 PM

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)
)
  • 0
Hoàng Giang

#2 master_worse

master_worse

    biết lệnh offset

  • Advance Member
  • PipPipPip
  • 170 Bài viết
Điểm đánh giá: 87 (tàm tạm)

Đã gửi 30 November 2009 - 02:24 PM

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

Ngu dốt không đáng thẹn bằng thiếu ý chí học hỏi


Tri thức làm người ta khiêm tốn, ngu si làm người ta kiêu ngạo (Ngạn ngữ Anh)


#3 hhhhgggg

hhhhgggg

    biết dimedit

  • Members
  • PipPipPipPipPip
  • 393 Bài viết
Điểm đánh giá: 30 (tàm tạm)

Đã gửi 30 November 2009 - 03:00 PM

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:
  • 0
Hoàng Giang

#4 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 30 November 2009 - 03:10 PM

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

#5 hhhhgggg

hhhhgggg

    biết dimedit

  • Members
  • PipPipPipPipPip
  • 393 Bài viết
Điểm đánh giá: 30 (tàm tạm)

Đã gửi 30 November 2009 - 03:27 PM

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 !
  • 0
Hoàng Giang

#6 master_worse

master_worse

    biết lệnh offset

  • Advance Member
  • PipPipPip
  • 170 Bài viết
Điểm đánh giá: 87 (tàm tạm)

Đã gửi 30 November 2009 - 03:47 PM

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
)

  • 0

Ngu dốt không đáng thẹn bằng thiếu ý chí học hỏi


Tri thức làm người ta khiêm tốn, ngu si làm người ta kiêu ngạo (Ngạn ngữ Anh)


#7 hhhhgggg

hhhhgggg

    biết dimedit

  • Members
  • PipPipPipPipPip
  • 393 Bài viết
Điểm đánh giá: 30 (tàm tạm)

Đã gửi 01 December 2009 - 11:29 AM

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)
)
  • 0
Hoàng Giang

#8 master_worse

master_worse

    biết lệnh offset

  • Advance Member
  • PipPipPip
  • 170 Bài viết
Điểm đánh giá: 87 (tàm tạm)

Đã gửi 01 December 2009 - 01:40 PM

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

Ngu dốt không đáng thẹn bằng thiếu ý chí học hỏi


Tri thức làm người ta khiêm tốn, ngu si làm người ta kiêu ngạo (Ngạn ngữ Anh)


#9 hhhhgggg

hhhhgggg

    biết dimedit

  • Members
  • PipPipPipPipPip
  • 393 Bài viết
Điểm đánh giá: 30 (tàm tạm)

Đã gửi 01 December 2009 - 02:19 PM

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 ?
  • 0
Hoàng Giang