Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
CUONG20051982

Nhờ viết giùm lisp Scan nhiều nhóm đối tượng mà giữ nguyên gốc

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

Có bác nào viết giúp cái lisp Scan nhiều nhóm đối tượng mà giữ nguyên gốc như sau:

-Chọn lần lượt các nhóm đối tượng.

- Chọn lần lượt gốc từng đối tượng.

Sau khi Scan các nhóm đối tượng này thay đổi tỉ lệ mà vẫn giữ nguyên vị trí gốc đã chọn.

 

Nếu có thể em nhờ viết hộ thêm cái lisp Scan các đối tượng như Rectang, Polygon khi chọn điểm bất kỳ vẫn cứ lấy trọng tâm của hình làm tâm Scan.

 

Thanks các bác!!!!!!!

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

1). Scan hay Scale?

2). Giữ nguyên gốc có phải là giữ nguyên điểm gốc?

Viết lisp thì không quá khó nhưng sẽ dài dòng vì khái niệm điểm gốc. Nhưng điểm gốc của 1 object là điểm gì trên nó? Bạn phải định nghĩa hết điểm gốc của tất cả các kiểu đối tượng thì may ra mới mần lisp được, VD:

Text/Mtext

Curve

Block

Hatch

Point

Dim

V.v và V.v...

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

Có bác nào viết giúp cái lisp Scan nhiều nhóm đối tượng mà giữ nguyên gốc như sau:

-Chọn lần lượt các nhóm đối tượng.

- Chọn lần lượt gốc từng đối tượng.

Sau khi Scan các nhóm đối tượng này thay đổi tỉ lệ mà vẫn giữ nguyên vị trí gốc đã chọn.

 

Nếu có thể em nhờ viết hộ thêm cái lisp Scan các đối tượng như Rectang, Polygon khi chọn điểm bất kỳ vẫn cứ lấy trọng tâm của hình làm tâm Scan.

 

Thanks các bác!!!!!!!

Hề hề hề,

Yêu cầu 1 bạn hãy đọc bài trả lời của bác DoanVanHa.

Yêu cầu 2: dùng thử cái này coi đã ưng ý chưa nhé.


;;; Lisp scale cac lwpolyline kin (ma dxf 70 là 1) tai trong tam cua moi lwpolyline
(defun c:scl (/ en obj k tt del oldos ssp)
(vl-load-com)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq del (getvar "delobj"))
(command "undo" "be")
(setq k (getreal "\n nhap ty le scale: ")
        ssp (acet-ss-to-list (ssget (list (cons 0 "lwpolyline") (cons 70 1)))) )
(setvar "delobj" 0)
(foreach en ssp
        (command "region" en "")
        (setq obj (vlax-ename->vla-object (entlast))
                  tt (vlax-safearray->list (vlax-variant-value (vlax-get-property obj 'centroid)))  )
        (command "erase" (entlast) "")
        (command "scale" en "" tt k )
)
(command "undo" "e")
(setvar "osmode" oldos)
(setvar "delobj" del)
(princ)
)

Chúc bạn vui.

  • Vote tăng 2

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

1). Scan hay Scale?

2). Giữ nguyên gốc có phải là giữ nguyên điểm gốc?

Viết lisp thì không quá khó nhưng sẽ dài dòng vì khái niệm điểm gốc. Nhưng điểm gốc của 1 object là điểm gì trên nó? Bạn phải định nghĩa hết điểm gốc của tất cả các kiểu đối tượng thì may ra mới mần lisp được, VD:

Text/Mtext

Curve

Block

Hatch

Point

Dim

V.v và V.v...

1. Ah, mình nhầm đó Scale chứ kgoong phải Scan. hi.

2. Giữ nguyên gốc của từng nhóm đối với tượng đó gồm

Text/Mtext

Curve

Block

Hatch

Point

Dim

V.v và V.v...

Gốc của mỗi nhóm đối tượng là do mình chọn điểm bất kỳ tùy ý trêm một đối tượng trong nhóm đó.

Mỗi nhóm đối tượng khi Scale ta sẽ chọn một gốc riêng cho nhóm đối tượ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

Viết 1 đoạn để bạn thấy ko cải thiện tốc độ mấy so với dùng lệnh cad cả.

 
(defun c:xxx ()
(setq tlsc (getstring "\nTi le: "))
(while (setq scc (ssget))
(command "scale" scc "" pause tlsc)
)
(princ))

  • Vote tăng 2

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ài này hay, thỉnh thoảng em hay gặp các trường hợp cần scale, giống như việc thay đổi kích cở chữ vậy. Đổi cỡ chữ thì dễ, nhưng scale đối tượng thì phải làm từng cái 1, mặc dù tất cả các đối tượng bất kỳ đều có điểm mốc nội tại riêng. Bài toán đặt ra là scale giữ nguyên mốc (Tâm đường tròn, điểm giữa line, điểm đầu spline, điểm gốc block...)

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ài này hay, thỉnh thoảng em hay gặp các trường hợp cần scale, giống như việc thay đổi kích cở chữ vậy. Đổi cỡ chữ thì dễ, nhưng scale đối tượng thì phải làm từng cái 1, mặc dù tất cả các đối tượng bất kỳ đều có điểm mốc nội tại riêng. Bài toán đặt ra là scale giữ nguyên mốc (Tâm đường tròn, điểm giữa line, điểm đầu spline, điểm gốc block...)

có líp này rồi. Của két đấy

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ài này hay, thỉnh thoảng em hay gặp các trường hợp cần scale, giống như việc thay đổi kích cở chữ vậy. Đổi cỡ chữ thì dễ, nhưng scale đối tượng thì phải làm từng cái 1, mặc dù tất cả các đối tượng bất kỳ đều có điểm mốc nội tại riêng. Bài toán đặt ra là scale giữ nguyên mốc (Tâm đường tròn, điểm giữa line, điểm đầu spline, điểm gốc block...)

Ý mình cũng giống như vậy đó.

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

Không hiểu nỗi chủ topic đang muốn gì?

Ý mình là khi chọn nhóm đối tượng chẳng hạn bao gồm Rectang, Polygon, Mtext,... để scale thì sau khi scale các đối tượng này giữ nguyên điểm mốc chính giữa và phóng to tỉ lệ ra xung quanh chứ không phóng lên theo một 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

Tôi đã nói ở trên rồi, viết lisp này không khó lắm, nhưng khó là ở chỗ định nghĩa điểm mốc của người yêu cầu. Bạn hãy liệt kê tất cả các đối tượng có thể scale, kèm theo định nghĩa điểm mốc cho từng kiểu đối tượng đó thì sẽ viết được thôi. VD:

Rectangle: trọng tâm

Polygon: trọng tâm

Text: điểm chèn (hay điểm chính giữa text?)

v.v...

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ôi đã nói ở trên rồi, viết lisp này không khó lắm, nhưng khó là ở chỗ định nghĩa điểm mốc của người yêu cầu. Bạn hãy liệt kê tất cả các đối tượng có thể scale, kèm theo định nghĩa điểm mốc cho từng kiểu đối tượng đó thì sẽ viết được thôi. VD:

Rectangle: trọng tâm

Polygon: trọng tâm

Text: điểm chèn (hay điểm chính giữa text?)

v.v...

 

Mình muốn Scale tất cả các đối tượng của CAD có thể được và ở chính giữa ra xung quanh như:

Rectangle: trọng tâm

Polygon: trọng tâm

Text: điểm chính giữa text

- Sau khi chọn tất cả các đối tượng trên và thực hiện lệnh sẽ Scale tính từ điểm giữa, trọng tâm nội tại của nó ra xung quanh hoặc thu lại chính giữa.

 

Ps: Không hiểu sao bài viết của mình lại cứ bị vào mục thùng rác chứ?

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  

×