Đến nội dung


Hình ảnh

scale theo trục x và y


  • Please log in to reply
41 replies to this topic

#21 anpha3

anpha3

    biết vẽ arc

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

Đã gửi 24 April 2014 - 12:37 PM

Khi em scale mặt cắt dọc theo 1 chiều x (1/10) thì các text của mặt cắt giãn ra cụ thể:

Text cũ có height : 10 ; width factor: 0.75. sau khi scale theo chiều x: 10 thì Text mới có height : 100 ; width factor: 0.075. Nhờ Bác Chỉ hộ lisp để text có chiều cao height  và width factor như lúc đầu. Cám ơn Bác..

https://www.mediafir...v560rbo6pslrra8


  • 0

#22 jzuoglee

jzuoglee

    biết vẽ arc

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

Đã gửi 24 April 2014 - 04:17 PM

Khi em scale mặt cắt dọc theo 1 chiều x (1/10) thì các text của mặt cắt giãn ra cụ thể:

Text cũ có height : 10 ; width factor: 0.75. sau khi scale theo chiều x: 10 thì Text mới có height : 100 ; width factor: 0.075. Nhờ Bác Chỉ hộ lisp để text có chiều cao height  và width factor như lúc đầu. Cám ơn Bác..

https://www.mediafir...v560rbo6pslrra8

bạn dùng lisp của bác tot77 đi, tớ thấy dùng đúng yêu cầu của bạn rồi đấy!


  • 0

#23 anpha3

anpha3

    biết vẽ arc

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

Đã gửi 24 April 2014 - 05:07 PM

Lisp của Bác tot77 text bị giãn cũng giống như lisp của bác Tue mình muốn sau khi scale theo 1 chiều thì text không bị giãn.Cám ơn Bạn... 


  • 0

#24 jzuoglee

jzuoglee

    biết vẽ arc

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

Đã gửi 24 April 2014 - 05:15 PM

Lisp của Bác tot77 text bị giãn cũng giống như lisp của bác Tue mình muốn sau khi scale theo 1 chiều thì text không bị giãn.Cám ơn Bạn... 

tớ thử dùng như bác ấy nói : tỷ lệ X : 10  đặt tỷ lệ Y : 1  text k bị giãn đâu mà


  • 0

#25 anpha3

anpha3

    biết vẽ arc

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

Đã gửi 25 April 2014 - 09:11 AM

Sao em dùng lisp của Bác Tot77 mà vẫn bị như vậy nhỉ?..

 

https://www.mediafir...xbb8aq6c966hiyv


  • 0

#26 jzuoglee

jzuoglee

    biết vẽ arc

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

Đã gửi 25 April 2014 - 10:03 AM

Sao em dùng lisp của Bác Tot77 mà vẫn bị như vậy nhỉ?..

 

https://www.mediafir...xbb8aq6c966hiyv

vẫn file của bạn, mình dùng k bị như bạn nói mà

 

http://www.mediafire...CAT DOC (1).dwg


  • 0

#27 anpha3

anpha3

    biết vẽ arc

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

Đã gửi 25 April 2014 - 10:18 AM

Nếu  như file Bác gửi thì đúng Ý em rồi.Sao file của em chạy lisp đó mà không được nhỉ. Em sử dụng cad2008


  • 0

#28 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 25 April 2014 - 10:28 AM

Khổ với cái bác anpha3 này quá, nhớ tên lệnh là SC2 nghe bạn !! nhiều khi bác down file về , load bằng lệnh ap, sau đó đánh tên lệnh trật thì cũng như không!!

Lệnh SC2 sẽ hỏi mấy câu như sau bằng tiếng Việt không dấu:

 

Chon doi tuong de scale :

Diem goc:

Ty le scale phuong X:

Ty le scale phuong Y:

 

SC2 nghĩa là scale theo 2 phương XY khác nhau.

Còn nếu bạn quen dùng tên khác thì cứ vào file lsp sửa tên SC2 theo ý bạn, ok?


  • 0

#29 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 25 April 2014 - 11:29 AM

Tôi có lisp scale theo 2 phương nhưng vẫn giữ chiều cao và bề rộng text như cũ. Nhưng chưa làm được với Mtext.

Có điều là tôi không biết thuật toán biến hình dạng ma trận, nên lisp chỉ đúng với text nằm ngang hoặc thẳng đứng thôi, còn text nằm xiên thì chưa được. Bác nào giỏi toán (như bác DOAN VAN HA chẳng hạn, vì thấy có lần làm giải phương trình gì đó) biết thuật toán này thì post lên thì sửa lisp sẽ hoàn thiện hơn.

 

http://www.mediafire...slfwlcb/sc2.LSP

 

Lisp này không giữ giá trị cũ của dim text vì làm như vậy là fake dim rồi.

Có lẽ lưu lại chiều cao, with factor, obliqing của text sau đó khôi phục lại sau khi explode.

 

@anpha3: Bạn xem lại biến EXPLMODE, cho =1 rồi thử lại lisp xem sao


  • 0

#30 anpha3

anpha3

    biết vẽ arc

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

Đã gửi 25 April 2014 - 11:59 AM

Em thử làm rồi vẫn không được Bác Ạ..


  • 0

#31 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 25 April 2014 - 12:03 PM

@ndtnv : Lưu cũng chẳng có ích gì vì sau khi explode, đối tượng sẽ mang tên (code -1) khác hoàn toàn, thậm chí sau khi scale chưa nổ nó cũng mang tên khác, chỉ có thể edit ngay khi nó còn trong block thôi.

 

@anpha3 : botay.com


  • 0

#32 jzuoglee

jzuoglee

    biết vẽ arc

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

Đã gửi 25 April 2014 - 04:07 PM

Em thử làm rồi vẫn không được Bác Ạ..

Lisp tớ dùng đây :

(defun C:sc2(/ ss p tlx tly btp tenbl)
  (defun BlockText (v tlx tly  / blks name def)
    (setq blks (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
   name (vla-get-effectivename (vlax-ename->vla-object v)))
 
    (if (not (vl-catch-all-error-p (setq def (vl-catch-all-apply 'vla-item (list blks name)))))
      (vlax-for obj def
(if (= "AcDbText" (vla-get-objectname obj))
   (progn 
     (cond ((zerop (vla-get-Rotation obj))
            (vla-put-Height obj (/ (vla-get-Height obj) tly 1.0))
     (vla-put-ScaleFactor obj (* tly (/ (vla-get-ScaleFactor obj) tlx 1.0))))
 
    ((equal (* 0.5 pi) (vla-get-Rotation obj) 0.001)
            (vla-put-Height obj (/ (vla-get-Height obj) tlx 1.0))
     (vla-put-ScaleFactor obj (* tlx (/ (vla-get-ScaleFactor obj) tly 1.0))))
       ))))
    )
    (vla-Regen (vla-get-activedocument (vlax-get-acad-object)) :vlax-true)
    (princ) 
  )
  ;;;
  (prompt "\nChon doi tuong de scale :")
  (setq ss  (ssget)
p   (getpoint "\nDiem goc:")
   tlx (getreal "\nTy le scale phuong X:")
tly (getreal "\nTy le scale phuong Y:"))
  (if (not btp) (setq btp -1))
  (while (tblsearch "block" (setq tenbl (strcat "btmp" (itoa (setq btp (1+ btp)))))))
  (command "-block" tenbl p ss "")
  (command "-insert" tenbl p tlx tly 0)
  (BlockText (entlast) tlx tly)
  (command "explode" (entlast))
  (princ)
)


  • 0

#33 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 25 April 2014 - 05:19 PM

@ndtnv : Lưu cũng chẳng có ích gì vì sau khi explode, đối tượng sẽ mang tên (code -1) khác hoàn toàn, thậm chí sau khi scale chưa nổ nó cũng mang tên khác, chỉ có thể edit ngay khi nó còn trong block thôi.

 

@anpha3 : botay.com

Sau khi explode, thứ tự đối tượng sẽ không đổi.
Tôi sửa tạm như sau:
( Chưa test nhiều để chắc chắn thứ tự trong (ssget "p") có thay đổi hay không.
An toàn hơn thì nên sort ss theo dxf 5 )

(defun C:sc2(/ ss p tlx tly btp tenbl data obj)
  (defun BlockText (v tlx tly  / blks name def i)
    (setq blks (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
      name (vla-get-effectivename (vlax-ename->vla-object v)) i 0)
 
    (if (not (vl-catch-all-error-p (setq def (vl-catch-all-apply 'vla-item (list blks name)))))
      (vlax-for obj def
    (if (= "AcDbText" (vla-get-objectname obj))
        (setq data (cons  (list (vla-get-Height obj)(vla-get-ScaleFactor obj)(vla-get-ObliqueAngle obj) i )data)))
        (setq i (1+ i))
  )))
  ;;;
  (prompt "\nChon doi tuong de scale :")
  (setq ss  (ssget)
    p   (getpoint "\nDiem goc:")
      tlx (getreal "\nTy le scale phuong X:")
    tly (getreal "\nTy le scale phuong Y:"))
  (if (not btp) (setq btp -1))
  (while (tblsearch "block" (setq tenbl (strcat "btmp" (itoa (setq btp (1+ btp)))))))
    (command ".undo" "be")
  (command "-block" tenbl p ss "")
  (command "-insert" tenbl p tlx tly 0)
  (BlockText (entlast) tlx tly)
  (command "explode" (entlast))
    (setq ss (ssget "p"))
    (foreach e data
        (setq obj(vlax-ename->vla-object (ssname ss (last e))))
        (vla-put-Height obj (car e))
        (vla-put-ScaleFactor obj (cadr e))
        (vla-put-ObliqueAngle obj (caddr e))
    )
    (command ".undo" "e")
  (princ)
)

  • 0

#34 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 25 April 2014 - 07:02 PM

Thứ tự trước và sau khi explode cũng khác nhau, dxf -1 và 5 đều khác, xem như cad đã xoá các vật thể trước trong kho dữ liệu và tạo ra vật thể hoàn toàn mới. Làm 1 "thí nghiệm" như sau, chọn khoảng 10 vật khác nhau tẽt pline,line, circle ... rồi chạy lisp sau:

 

(defun c:test()
  (setq ss (ssget)
i -1 data nil data1 nil data2 nil
p   (getpoint "\nDiem goc:"))
  
  (repeat (sslength ss)
    (setq obj (vlax-ename->vla-object (ssname ss (setq i (1+ i))))
 data (append data (list (list (vla-get-objectname obj) i )))))
  
  (if (not btp) (setq btp -1))
  (while (tblsearch "block" (setq tenbl (strcat "btmp" (itoa (setq btp (1+ btp)))))))
  
  (command ".undo" "be")
  (command "-block" tenbl p ss "")
  (command "-insert" tenbl p 1 1 0)
 
  (setq blks (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
        name (vla-get-effectivename (vlax-ename->vla-object (entlast))) i 0)
 
    (if (not (vl-catch-all-error-p (setq def (vl-catch-all-apply 'vla-item (list blks name)))))
      (vlax-for obj def
        (setq data1 (append data1 (list (list (vla-get-objectname obj) i)))
     i (1+ i))))
 
  (command "explode" (entlast))
  (setq ss (ssget "p"))
  (foreach e data
        (setq obj (vlax-ename->vla-object (ssname ss (last e)))
     data2 (append data2 (list (list (vla-get-objectname obj) (last e)))))       
  )
  
  (princ data) (princ data1) (princ data2) (princ)
)

 

Tôi thấy nếu thay (setq ss (ssget "p")) bằng (setq ss (ssget)) và  thì 2 cái list trước và sau sẽ giống nhau, nhưng như vậy hơi phiền vì phải bắt 2 lần. Như vậy thì có vẻ hơi "lẩm cẩm"!!  :blink:  :blink:


  • 0

#35 anpha3

anpha3

    biết vẽ arc

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

Đã gửi 29 April 2014 - 10:15 AM

Chào Bác Tot77 Em sử dụng lisp của Bác rồi song không được và báo như sau:

Command:error: no function definition: VLAX-GET-ACAD-OBJECT.

Am không biết nguyên nhân là sao.Bác xem lại giùm em với nhé.


  • 0

#36 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5449 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 29 April 2014 - 11:08 AM

Thêm dòng này vào đầu hoặc cuối lisp:

(vl-load-com)


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#37 anpha3

anpha3

    biết vẽ arc

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

Đã gửi 29 April 2014 - 11:15 AM

Ô được rồi Bác Hà Ạ. Cám ơn Các Bác..


  • 0

#38 lethanhtung

lethanhtung

    Chưa sử dụng CAD

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

Đã gửi 07 September 2015 - 06:10 PM

mình có hình chữ nhật kích thước a(mm)xb(mm). mình muốn scale thành hình chữ nhật kích thước a+2 (mm) x b+5 (mm)thì làm sao các bác. mình đang học cad
Cách của mình là tạo block rồi bấm Ctrl +1, vào properties để scale trong x và y., nhưng đó là scale tỷ lệ. mình muốn đưa kích thươc vào ấy

 

minh cung thac mac muon hoi, minh co 2 hinh giong con ech dang ngoi. mot file hinh lon va 1 file hinh nho. minh muon scale cho 2 hinh khop voi nhau. ai biet chi giup minh voi


  • 0

#39 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 08 September 2015 - 06:06 AM

Gỏ lệnh al
  • 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


#40 nguyenbaquang

nguyenbaquang

    Edu level: to10

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

Đã gửi 20 July 2016 - 01:45 PM

Down file đó về rùi bỏ nó vào đâu vậy bạn

xin hỏi. mình đến bước nó hỏi chọn gốc là không đk nữa


  • 0