Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
16 replies to this topic

#1 CUONG20051982

CUONG20051982

    biết lệnh extend

  • Members
  • PipPipPip
  • 196 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 17 August 2012 - 10:08 AM

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

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 17 August 2012 - 10:50 AM

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


#3 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5684 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 17 August 2012 - 11:47 AM

Bài viết đã được di chuyển vào đúng mục
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#4 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 17 August 2012 - 01:55 PM

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.
  • 2
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#5 CUONG20051982

CUONG20051982

    biết lệnh extend

  • Members
  • PipPipPip
  • 196 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 17 August 2012 - 04:01 PM

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 đó.
  • 0

#6 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 17 August 2012 - 04:14 PM

Nếu chỉ có vậy thì bạn scale từng nhóm đối tượng cho nó khỏe.
  • 1

* 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.


#7 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 17 August 2012 - 04:33 PM

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))

  • 2

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


#8 sgcq

sgcq

    Hội Hai Lúa

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

Đã gửi 17 August 2012 - 04:34 PM

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

12728974_230210507314169_718723558582070 HỘI HAI LÚA

           fanpage: https://www.facebook.com/HoiHaiLua/

 

 

 

 

 

 


#9 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 17 August 2012 - 04:39 PM

Scale như bạn thì nên cần lisp, nhưng scale như ý chủ topic thì tôi thấy lisp cũng chả nhanh gì.
  • 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.


#10 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 17 August 2012 - 04:42 PM

Đề 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
  • 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


#11 CUONG20051982

CUONG20051982

    biết lệnh extend

  • Members
  • PipPipPip
  • 196 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 17 August 2012 - 05:00 PM

Đề 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 đó.
  • 0

#12 CUONG20051982

CUONG20051982

    biết lệnh extend

  • Members
  • PipPipPip
  • 196 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 17 August 2012 - 05:00 PM

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

ở đâu vậy bạn?
  • 0

#13 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 17 August 2012 - 05:04 PM

Không hiểu nỗi chủ topic đang muốn gì?
  • 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.


#14 CUONG20051982

CUONG20051982

    biết lệnh extend

  • Members
  • PipPipPip
  • 196 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 17 August 2012 - 06:44 PM

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

#15 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 17 August 2012 - 07:12 PM

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


#16 CUONG20051982

CUONG20051982

    biết lệnh extend

  • Members
  • PipPipPip
  • 196 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 17 August 2012 - 07:30 PM

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

#17 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 17 August 2012 - 08:31 PM

Đọc nội quy ở chữ ký của ketxu thì biết liền.
  • 1

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