QUẢNG CÁO ĐẦU TRANG

Collapse

Thông báo

Collapse
No announcement yet.

scale đối tượng theo 1 chiều(X or Y)

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • scale đối tượng theo 1 chiều(X or Y)

    ai có lips hay có cách nào để scale đối tượng theo 1 chiều thì send cho mình với nhé.Đang rất cần.Thanksss nhiều

  • #2
    Ðề: scale đối tượng theo 1 chiều(X or Y)

    Nguyên văn bởi loisude
    cách dể dàng nhất là tạo thành block sao đó insert lại. Bạn xem trong phần insert block co tỉ lệ theo 2 phương đó. Rất dễ. Thân chào
    mình cũng nghĩ tới cách này và đã làm thử nhưng nghe nói có lips scale 1 chiều nên muốn nhờ mọi người giúp.Tiếc quá nhỉ...!!!không ai có

    Ghi chú


    • #3
      Ðề: scale đối tượng theo 1 chiều(X or Y)

      Scale đối tượng theo 1 chiều là thế nào nhỉ? Chưa hiểu ý "đằng ấy"!!!

      Ghi chú


      • #4
        Ðề: scale đối tượng theo 1 chiều(X or Y)

        Nguyên văn bởi kết cấu sư
        Scale đối tượng theo 1 chiều là thế nào nhỉ? Chưa hiểu ý "đằng ấy"!!!
        ví dụ đợn giản như hcn (a.b) thì thành (2a.b) đó mà

        Ghi chú


        • #5
          Ðề: scale đối tượng theo 1 chiều(X or Y)

          Nguyên văn bởi casper
          ví dụ đợn giản như hcn (a.b) thì thành (2a.b) đó mà
          ;Nếu bạn chỉ cần Scale_xy một PLINE hay một đối tượng đơn giản thì ;dễ thôi.
          ;- Tâm sclale p0 (x0 y0 z0)
          ;- mx; my là tỉ lệ theo x; y
          ;- p1 là một điểm có (x1 y1 z1)
          ;- sau khi scale p1 sẽ có tọa độ là X1=x0+(x1-x0)*mx
          ; Y1=y0+(y1-y0)*my
          ; Z= z1
          ;đối với PLINE thì Z được bỏ qua,còn các đối tượng khác thì cần
          ;Ví dụ sau sẽ scale thep x=3.0, y=2.0

          (setq mx 3.0
          my 2.0)
          (setq ent (car (entsel "\nChon PLINE:"))) ;chọn một đường PLINE
          (setq ent1 (entget ent)) ;Lấy dữ liệu DXF của nó
          (setq n (length ent1)) ;lấy chiều lài list
          (setq p0 (getpoint "\nTam scale:")) ;Tâm scale
          (setq px0 (car p0) ;Lấy tọa độ x0
          py0 (cadr p0)) ;lấy tọa độ y0
          (setq dlist (list)) ; tạo list rỗng
          (setq i 0) ;thành phần thứ nhất của list

          (while (< i n) ;nếu chưa hết các thành phần
          (if (/= (car (nth i ent1)) 10) ;duyệt danh sách nếu
          ;thành phần không phải là tọa độ thì dừng lại (tọa độ điểm trong pline là (10 x y)) và gắn vào danh sách
          (setq dlist (append (list (nth i ent1)) dlist))
          (setq dlist (append (list (list 10
          (+ px0 (*(- (cadr (nth i ent1)) px0) mx))
          (+ py0 (*(- (caddr (nth i ent1)) py0) my))
          )
          ) dlist)) ;nếu là tọa độ thì đổi luôn x;y
          ) ; end if
          (setq i (1+ i)) ; duyệt thành phần tiếp
          ) ; end while
          (setq dlist (reverse dlist)) ; đảo ngược danh sách
          (entmod dlist) ;cập nhật lại DXF
          (entupd ent) ; cập nhật lại PLINE

          ;các bạn có thể gom các câu lệnh này thành 1 hàm, đặt tham số, biến cục bộ, xử lý thêm phần nhập PLINE để thành 1 hàm hoàn chỉnh,
          ; VD (defun scale_pline (ent mx my p0 / ent1 i n dlist px0 py0)
          ..........)

          Ghi chú


          • #6
            Ðề: scale đối tượng theo 1 chiều(X or Y)

            muốn scale theo một chiều dễ thui ah, không cần phải lập lis cho mệt chỉ cần block lại nhưng phải chọn điểm làm mốc khi Block sau đó vào phần Properties(ctrl+1) kéo danh sách xuống chọn phần scalex,y,z chọn chiều nào thì đánh tỉ lệ vào chiều đó là ok

            Ghi chú


            • #7
              Ðề: scale đối tượng theo 1 chiều(X or Y)

              Nguyên văn bởi 3dnow
              muốn scale theo một chiều dễ thui ah, không cần phải lập lis cho mệt chỉ cần block lại nhưng phải chọn điểm làm mốc khi Block sau đó vào phần Properties(ctrl+1) kéo danh sách xuống chọn phần scalex,y,z chọn chiều nào thì đánh tỉ lệ vào chiều đó là ok
              Bạn theo cách đó cũng được nhưng phá khối rồi thì đối tượng cũng bị explode thêm một lần nữa

              Ghi chú


              • #8
                Ðề: scale đối tượng theo 1 chiều(X or Y)

                Bên cv có mà bạn.
                ;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)
                )
                (princ "\nfree lisp from www.cadviet.com")
                (princ)

                Ghi chú

                Working...
                X