Đến nội dung


Hình ảnh

Đổi điểm chèn sau khi đã chèn block khắp nơi


  • Please log in to reply
40 replies to this topic

#1 ldrt2004

ldrt2004

    biết zoom

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

Đã gửi 02 June 2009 - 09:31 AM

Hôm nay mình mới biết là khi tạo block cần phải đặt tâm của block thì khi stretch, block đó sẽ dịch chuyển theo. Nhưng mà bây giờ trong bản vẽ, cùng một block mà mình đã insert khắp nơi thì có cách nào giúp mình chuyển tâm block đó về gần với block được không? Nhân tiện cũng xin cảm ơn 2 bạn PH168XD và QP14 đã giải đáp giúp mình câu hỏi về stretch block!!!
  • 0

#2 haanh

haanh

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2875 Bài viết
Điểm đánh giá: 1554 (rất tốt)

Đã gửi 02 June 2009 - 11:12 AM

Hôm nay mình mới biết là khi tạo block cần phải đặt tâm của block thì khi stretch, block đó sẽ dịch chuyển theo. Nhưng mà bây giờ trong bản vẽ, cùng một block mà mình đã insert khắp nơi thì có cách nào giúp mình chuyển tâm block đó về gần với block được không? Nhân tiện cũng xin cảm ơn 2 bạn PH168XD và QP14 đã giải đáp giúp mình câu hỏi về stretch block!!!

Cái ấy đơn giản thôi anh cứ Explode một block rồi tiến hành Block lại, Chọn đối tượng => chọn điểm chèn theo yêu cầu => Vẫn gữi nguyên tên cũ => Xong. (lưu ý ko được đặt tên khác). Một Block bị thay đổi điểm chèn , các block khác thấy thế buồn quá thương bạn cũng thay đổi theo

Anh hỏi ở mục câu hỏi thường gặp đúng chỗ hơn
  • 0

“Sống trong đời sống cần có một tấm lòng / Để làm gì em biết không ? / Để gió cuốn đi, để gió cuốn đi...”


#3 xuantran15

xuantran15

    biết lệnh ddedit

  • Members
  • PipPipPipPip
  • 295 Bài viết
Điểm đánh giá: 112 (tàm tạm)

Đã gửi 02 June 2009 - 11:20 AM

Cái ấy đơn giản thôi anh cứ Explode một block rồi tiến hành Block lại, Chọn đối tượng => chọn điểm chèn theo yêu cầu => Vẫn gữi nguyên tên cũ => Xong. (lưu ý ko được đặt tên khác). Một Block bị thay đổi điểm chèn , các block thấy thế buồn quá thương bạn cũng thay đổi theo

Nếu làm cách haanh thì các block này tha hồ nhảy múa, bởi khi đó thì block sẽ nhảy theo tâm block, chứ không phải tâm Block nhảy theo block nữa rồi (Mình nghĩ là ý tác giả muốn tâm BL về gần BL nhưng vị trí đặt BL không đổi) :s_big: AI có cách giải quyết vấn đề này thì cho mình học hỏi với :s_big:
  • 1
Hình đã gửi
Thu đi cho lá vàng bay
Lá rơi cho đám cưới về......

#4 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 02 June 2009 - 12:04 PM

Nếu làm cách haanh thì các block này tha hồ nhảy múa, bởi khi đó thì block sẽ nhảy theo tâm block, chứ không phải tâm Block nhảy theo block nữa rồi (Mình nghĩ là ý tác giả muốn tâm BL về gần BL nhưng vị trí đặt BL không đổi) :s_big: AI có cách giải quyết vấn đề này thì cho mình học hỏi với :s_big:

Bạn đọc bài viết này sẽ tìm ra lời giải cho mình :
Dời điểm Insert Block
  • 1

#5 haanh

haanh

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2875 Bài viết
Điểm đánh giá: 1554 (rất tốt)

Đã gửi 02 June 2009 - 12:42 PM

Nếu làm cách haanh thì các block này tha hồ nhảy múa, bởi khi đó thì block sẽ nhảy theo tâm block, chứ không phải tâm Block nhảy theo block nữa rồi (Mình nghĩ là ý tác giả muốn tâm BL về gần BL nhưng vị trí đặt BL không đổi) :s_big: AI có cách giải quyết vấn đề này thì cho mình học hỏi với :s_big:


Em sơ suất không nghĩ là block nó nhảy múa lung tung lên vì mừng vui!
Đây cũng là bài học kinh nghiệm quý đáng suy ngẫm rút ra từ... CADViet để mang ra thực nghiệm trong cuộc sống!
  • 1

“Sống trong đời sống cần có một tấm lòng / Để làm gì em biết không ? / Để gió cuốn đi, để gió cuốn đi...”


#6 ldrt2004

ldrt2004

    biết zoom

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

Đã gửi 02 June 2009 - 02:29 PM

Cảm ơn các bạn. Mình làm được rồi nhưng cũng phải qua một số bước trung gian. Nhưng mình lại gặp phải một trường hợp là: có nhiều block khác nhau, được chèn khắp nơi trên bản vẽ mà bây giờ muốn đưa các tâm block nào thì về lại gần vị trí của block đó thì chịu.
  • 0

#7 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 02 June 2009 - 02:33 PM

Bạn đọc bài viết này sẽ tìm ra lời giải cho mình :
Dời điểm Insert Block

-Bên topic đó vấn đề cũng chưa giải quyết xong!
-Mình đang lên 1 cái giàn bài để giải quyết thử (không biết thành công hay không và bao lâu mới xong) và cần kiến thức sau bạn nào giúp mình với:
+Lấy thông tin từ 1 block và tạo block mới (tên khác) cùng nội dung chỉ khác điểm chèn. (vui lòng không dùng các hàm vl giúp mình).
-Cám ơn!

À mình đưa giàn bài lên coi có bạn nào hứng thú thì thử xem biết đâu nhanh hơn mình làm đấy:
-Hỏi chọn block đã tồn tại trên bản vẻ:
+Lấy thông tinvề block gồm:
++Tỉ lệ.
++Góc quay.
++Điểm chèn.
-Hỏi điểm chèn mới xo với block vừa chọn.
+Tính khoảng cách giữa điểm chèn cũ và mới. (cộng trừ nhân chia với góc và tỉ lệ chèn của block để ra khaỏng cách khi block là x=1, y=1)
-Tạo block mới với tên cũ + thêm cái gì đó tùy mình.
-Đọc tất cả bản vẽ tìm block cũ lấy thông tin, xóa nó đi và chèn block mới vào.
  • 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


#8 xuantran15

xuantran15

    biết lệnh ddedit

  • Members
  • PipPipPipPip
  • 295 Bài viết
Điểm đánh giá: 112 (tàm tạm)

Đã gửi 02 June 2009 - 03:46 PM

Hôm nay mình mới biết là khi tạo block cần phải đặt tâm của block thì khi stretch, block đó sẽ dịch chuyển theo. Nhưng mà bây giờ trong bản vẽ, cùng một block mà mình đã insert khắp nơi thì có cách nào giúp mình chuyển tâm block đó về gần với block được không? Nhân tiện cũng xin cảm ơn 2 bạn PH168XD và QP14 đã giải đáp giúp mình câu hỏi về stretch block!!!

MÌnh nghĩ có một cách này có thể dùng tạm thời:

Trước hết tạo 1 block giống như block của bạn(Đặt tên khác nhé) nhưng tâm thì đưa về điểm cần đặt, Sau đó dùng lệnh match prop block trong bộ ACV của diễn đàn để thay đổi cho những Block còn lại.

Cách này chỉ dùng được cho những block giống nhau mà thôi. :s_big: còn nếu bạn muốn tốt hơn chắc phải chờ dự án của bác Duy ra đời :s_big:
  • 0
Hình đã gửi
Thu đi cho lá vàng bay
Lá rơi cho đám cưới về......

#9 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 03 June 2009 - 08:52 AM

-Bên topic đó vấn đề cũng chưa giải quyết xong!
-Mình đang lên 1 cái giàn bài để giải quyết thử (không biết thành công hay không và bao lâu mới xong) và cần kiến thức sau bạn nào giúp mình với:
+Lấy thông tin từ 1 block và tạo block mới (tên khác) cùng nội dung chỉ khác điểm chèn. (vui lòng không dùng các hàm vl giúp mình).
-Cám ơn!

À mình đưa giàn bài lên coi có bạn nào hứng thú thì thử xem biết đâu nhanh hơn mình làm đấy:
-Hỏi chọn block đã tồn tại trên bản vẻ:
+Lấy thông tinvề block gồm:
++Tỉ lệ.
++Góc quay.
++Điểm chèn.
-Hỏi điểm chèn mới xo với block vừa chọn.
+Tính khoảng cách giữa điểm chèn cũ và mới. (cộng trừ nhân chia với góc và tỉ lệ chèn của block để ra khaỏng cách khi block là x=1, y=1)
-Tạo block mới với tên cũ + thêm cái gì đó tùy mình.
-Đọc tất cả bản vẽ tìm block cũ lấy thông tin, xóa nó đi và chèn block mới vào.

Đây là đoạn Code mà Tue_NV xây dựng dựa trên dàn ý của Anh Duy782006

(defun c:DB(/ n i str snn mau tencu diemcu diemmoi Trx Try Trz ss sn ent
TLX TLY TLZ tam gocquay pointX pointY pointZ pointmoi)

(setq snn (car(entsel "\n Chon Block can doi diem chen :")))

(setq tenmoi (getstring "\n Nhap ten block moi :"))
(while (tblsearch "block" tenmoi)
(princ "\n Ten Block da co :")
(setq tenmoi (getstring "\n Nhap lai ten block moi :"))
)
(setq mau (entget snn))

(setq tencu (cdr(assoc 2 mau)))
(setq diemcu (cdr(assoc 10 mau)))
(setq diemmoi (getpoint "\n Chon diem chen moi cho Block nay :"))
(setq Trx (- (car diemmoi) (car diemcu)))
(setq Try (- (cadr diemmoi) (cadr diemcu)))
(setq Trz (- (caddr diemmoi) (caddr diemcu)))

(setq TLXc (cdr(assoc 41 mau)))
(setq TLYc (cdr(assoc 42 mau)))
(setq TLZc (cdr(assoc 43 mau)))

(setq gocquayc (/ (* (cdr(assoc 50 mau)) 180) pi))

(Command "Block" tenmoi diemmoi snn "")
(Command "Insert" tenmoi diemmoi TLXc TLYc gocquayc)

(setq ss (ssget "X" (list( cons 0 "INSERT") (cons 2 tencu))))

(setq n (sslength ss) i 0)

(while (< i n)

(setq sn (ssname ss i))
(setq ent (entget sn))
(setq TLX (cdr(assoc 41 ent)))
(setq TLY (cdr(assoc 42 ent)))
(setq TLZ (cdr(assoc 43 ent)))
(setq tam (cdr(assoc 10 ent)))
(setq gocquay (/ (* (cdr(assoc 50 ent)) 180) pi))

(setq pointX (+ (car tam) Trx))
(setq pointY (+ (cadr tam) Try))
(setq pointZ (+ (caddr tam) Trz))
(setq pointmoi (list pointX pointY pointZ))

(Command "Block" tenmoi "y" pointmoi sn "")
(Command "Insert" tenmoi pointmoi TLX TLY gocquay)
(setq i (1+ i))
)
(princ)
)


@ anh Duy782006 :
Cứ mỗi lần tạo block mới (tên khác) cùng nội dung chỉ khác điểm chèn. thì mình lại phải đặt lại cho nó 1 cái tên mới. Vậy thì nhiều tên lắm. Đây là điều mà Code chưa được hoàn thiện lắm.
Mọi người góp ý thêm để Tue_NV hoàn thiện Code

@Ban quản trị : Xin Ban quản trị dời bài viết này vào mục topic thích hợp. Cứ như vầy thì khó tìm lắm.

@ldrt2004 : Tue_NV góp ý với bạn : nên post bài vào đúng chủ đề
  • 1

#10 xuantran15

xuantran15

    biết lệnh ddedit

  • Members
  • PipPipPipPip
  • 295 Bài viết
Điểm đánh giá: 112 (tàm tạm)

Đã gửi 03 June 2009 - 09:46 AM

Mình đã test thử thì thấy có mấy vấn đề sau:

1/ khi chèn tâm block mới thì các block nhảy loạn xạ. (yêu cầu của đề bài là muôn tâm block thay đổi nhưng vị trí block không đổi)
2/ Nó đưa các đối tượng trong block về layer hiện hành (Việc này đôi khi không tiện với những block trước đó có nhiều layer)
3/ Nếu bản vẽ có quá nhiều block thì nó chạy rất lâu (Cái này có lẽ phải chấp nhận :s_big: )


Mình có mấy ý như trên bác xem lại nhé. :s_big:
  • 0
Hình đã gửi
Thu đi cho lá vàng bay
Lá rơi cho đám cưới về......

#11 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 03 June 2009 - 09:58 AM

@ anh Duy782006 :
Cứ mỗi lần tạo block mới (tên khác) cùng nội dung chỉ khác điểm chèn. thì mình lại phải đặt lại cho nó 1 cái tên mới. Vậy thì nhiều tên lắm. Đây là điều mà Code chưa được hoàn thiện lắm.
Mọi người góp ý thêm để Tue_NV hoàn thiện Code

@Ban quản trị : Xin Ban quản trị dời bài viết này vào mục topic thích hợp. Cứ như vầy thì khó tìm lắm.

@ldrt2004 : Tue_NV góp ý với bạn : nên post bài vào đúng chủ đề

Tue đừng hỏi tên làm gì cứ mặc định tên cũ + thêm cái gì đó cho khỏe. Mình không nghỉ được cách khác tue cứ nghỉ xem. Cũng chưa test thử lisp của tue nửa bận quá.
  • 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


#12 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 03 June 2009 - 10:13 AM

Mình đã test thử thì thấy có mấy vấn đề sau:

1/ khi chèn tâm block mới thì các block nhảy loạn xạ. (yêu cầu của đề bài là muôn tâm block thay đổi nhưng vị trí block không đổi)
2/ Nó đưa các đối tượng trong block về layer hiện hành (Việc này đôi khi không tiện với những block trước đó có nhiều layer)
3/ Nếu bản vẽ có quá nhiều block thì nó chạy rất lâu (Cái này có lẽ phải chấp nhận :s_big: )
Mình có mấy ý như trên bác xem lại nhé. :s_big:

1-Để giải quyết cái này tue cần thêm 1 đoạn move block trên cơ sở tính toán điểm đặt cũ và mới thên góc quay và tỉ lệ cái này cần lấy ngay từ bước đầu và tính toán ra thông số chuẩn sau đó áp dụng cho từng block với từng hệ số.
2-Không xó block và ínẻt lại mà chỉnh sửa thông tin thay hết tên block cũ bằng tên block mới
*Hai ý trên mình nghỉ giải quyết như vậy là xong
3-Ừ
  • 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


#13 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 03 June 2009 - 10:25 AM

Mình đã test thử thì thấy có mấy vấn đề sau:

1/ khi chèn tâm block mới thì các block nhảy loạn xạ. (yêu cầu của đề bài là muôn tâm block thay đổi nhưng vị trí block không đổi)
2/ Nó đưa các đối tượng trong block về layer hiện hành (Việc này đôi khi không tiện với những block trước đó có nhiều layer)
Mình có mấy ý như trên bác xem lại nhé. :s_big:

Ý 1 : Code của Tue_NV không bị lỗi này.

Ý 2 : Tue_NV đã chỉnh lại theo ý của bạn xuantran

Các bạn thử test lại xem. Có vấn đề gì thì Tue_NV sẽ hoàn thiện code này :


(defun c:DB(/ n i tenmoi snn mau tencu diemcu diemmoi Trx Try Trz ss sn ent
TLXc TLYc TLZc gocquayc TLX TLY TLZ tam gocquay pointX pointY pointZ pointmoi lay)
(command "undo" "be")
(setq lay (getvar "clayer"))
(setq snn (car(entsel "\n Chon Block can doi diem chen :")))

(setq tenmoi (getstring "\n Nhap ten block moi :"))
(while (tblsearch "block" tenmoi)
(princ "\n Ten Block da co :")
(setq tenmoi (getstring "\n Nhap lai ten block moi :"))
)
(setq mau (entget snn))
(Command "clayer" (cdr(assoc 8 mau)))
(setq tencu (cdr(assoc 2 mau)))
(setq diemcu (cdr(assoc 10 mau)))
(setq diemmoi (getpoint "\n Chon diem chen moi cho Block nay :"))
(setq Trx (- (car diemmoi) (car diemcu)))
(setq Try (- (cadr diemmoi) (cadr diemcu)))
(setq Trz (- (caddr diemmoi) (caddr diemcu)))

(setq TLXc (cdr(assoc 41 mau)))
(setq TLYc (cdr(assoc 42 mau)))
(setq TLZc (cdr(assoc 43 mau)))

(setq gocquayc (/ (* (cdr(assoc 50 mau)) 180) pi))

(Command "Block" tenmoi diemmoi snn "")
(Command "Insert" tenmoi diemmoi TLXc TLYc gocquayc)

(setq ss (ssget "X" (list( cons 0 "INSERT") (cons 2 tencu))))

(setq n (sslength ss) i 0)

(while (< i n)

(setq sn (ssname ss i))
(setq ent (entget sn))
(setq TLX (cdr(assoc 41 ent)))
(setq TLY (cdr(assoc 42 ent)))
(setq TLZ (cdr(assoc 43 ent)))
(setq tam (cdr(assoc 10 ent)))
(setq gocquay (/ (* (cdr(assoc 50 ent)) 180) pi))

(setq pointX (+ (car tam) Trx))
(setq pointY (+ (cadr tam) Try))
(setq pointZ (+ (caddr tam) Trz))
(setq pointmoi (list pointX pointY pointZ))

(Command "Block" tenmoi "y" pointmoi sn "")
(Command "Insert" tenmoi pointmoi TLX TLY gocquay)
(setq i (1+ i))
)
(setvar "clayer" lay)
(command "undo" "end")
(princ)
)

:s_big:
  • 0

#14 xuantran15

xuantran15

    biết lệnh ddedit

  • Members
  • PipPipPipPip
  • 295 Bài viết
Điểm đánh giá: 112 (tàm tạm)

Đã gửi 03 June 2009 - 10:37 AM

Ý 1 : Code của Tue_NV không bị lỗi này.

Các bạn thử test lại xem. Có vấn đề gì thì Tue_NV sẽ hoàn thiện code này :

Vấn đề nằm ở chổ khi các Block này bị quay những góc khác nhau thì lisp không còn đúng nữa bác ạ. Trường hợp các Block không bị thay đổi góc quay thì nó tót rồi. :s_big:
  • 0
Hình đã gửi
Thu đi cho lá vàng bay
Lá rơi cho đám cưới về......

#15 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 04 June 2009 - 05:50 AM

Vấn đề nằm ở chổ khi các Block này bị quay những góc khác nhau thì lisp không còn đúng nữa bác ạ. Trường hợp các Block không bị thay đổi góc quay thì nó tót rồi. :s_big:

Quả thật là Tue_NV chưa test trường hợp góc quay của Block khác 0. Tue_NV đã chỉnh Code lại. Bạn chạy thử nhé :

(defun c:DB(/ lay snn tenmoi mau tencu diemcu diemmoi Trx Try Trz TLXc TLYc TLZc
gocquayc ssg j nn entt ss n i sn ent TLX TLY TLZ tam gocquay pointX pointY pointZ pointmoi)
(command "undo" "be")
(setq lay (getvar "clayer"))
(setq snn (car(entsel "\n Chon Block can doi diem chen :")))

(setq tenmoi (getstring "\n Nhap ten block moi :"))
(while (tblsearch "block" tenmoi)
(princ "\n Ten Block da co :")
(setq tenmoi (getstring "\n Nhap lai ten block moi :"))
)
(setq mau (entget snn))
(Command "clayer" (cdr(assoc 8 mau)))
(setq tencu (cdr(assoc 2 mau)))
(setq diemcu (cdr(assoc 10 mau)))
(setq diemmoi (getpoint "\n Chon diem chen moi cho Block nay :"))
(setq Trx (- (car diemmoi) (car diemcu)))
(setq Try (- (cadr diemmoi) (cadr diemcu)))
(setq Trz (- (caddr diemmoi) (caddr diemcu)))

(setq TLXc (cdr(assoc 41 mau)))
(setq TLYc (cdr(assoc 42 mau)))
(setq TLZc (cdr(assoc 43 mau)))

(setq gocquayc (/ (* (cdr(assoc 50 mau)) 180) pi))

(Command "Block" tenmoi diemmoi snn "")
(Command "Insert" tenmoi diemmoi TLXc TLYc 0)

(setq ssg (ssget "X" (list( cons 0 "INSERT") (cons 2 tencu))) j 0 nn (sslength ssg))

(while (< j nn)
(setq entt (entget(ssname ssg 0)))
(setq entt (subst (cons 50 0) (assoc 50 entt) entt))
(entmod entt)
(setq j (1+ j))
)

(setq ss (ssget "X" (list( cons 0 "INSERT") (cons 2 tencu))))
(setq n (sslength ss) i 0)

(while (< i n)

(setq sn (ssname ss i))
(setq ent (entget sn))
(setq TLX (cdr(assoc 41 ent)))
(setq TLY (cdr(assoc 42 ent)))
(setq TLZ (cdr(assoc 43 ent)))
(setq tam (cdr(assoc 10 ent)))
(setq gocquay (/ (* (cdr(assoc 50 ent)) 180) pi))

(setq pointX (+ (car tam) Trx))
(setq pointY (+ (cadr tam) Try))
(setq pointZ (+ (caddr tam) Trz))
(setq pointmoi (list pointX pointY pointZ))

(Command "Block" tenmoi "y" pointmoi sn "")
(Command "Insert" tenmoi pointmoi TLX TLY 0)
(setq i (1+ i))
)
(setvar "clayer" lay)
(command "undo" "end")
(princ)
)

Các bạn hãy chạy thử và góp ý thêm để Tue_NV hoàn thiện code :s_big:
  • 2

#16 xuantran15

xuantran15

    biết lệnh ddedit

  • Members
  • PipPipPipPip
  • 295 Bài viết
Điểm đánh giá: 112 (tàm tạm)

Đã gửi 04 June 2009 - 06:31 AM

Nó vẫn bị lỗi đấy Bác Tue à (Các Block bị xoay sau khi đổi tâm BL thì nó lại xoay lại như BL gốc -> Block sẽ bị thay đổi vị trí ). Bác đi làm sớm thế. :s_big:
  • 0
Hình đã gửi
Thu đi cho lá vàng bay
Lá rơi cho đám cưới về......

#17 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 04 June 2009 - 07:19 AM

Nói thì bao giờ cũng dể hơn làm nhưng mình cũng nhiều chuyện chút:
-Lấy góc quay của block được chọn = gocquaychon
-Lấy góc tạo bởi điểm chèn mới và điểm chèn cũ tạo với trục x = gocquaytam
-Góc quay chẩn: gocquaychuan= gocquaychon - gocquaytam
-Dùng hàm polar tạo điểm đến diemden từ khoảng cách và góc quay
-Thay đổi block cũ bằng block mới và move tới điểm đế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


#18 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 04 June 2009 - 08:06 AM

Nó vẫn bị lỗi đấy Bác Tue à (Các Block bị xoay sau khi đổi tâm BL thì nó lại xoay lại như BL gốc -> Block sẽ bị thay đổi vị trí ). Bác đi làm sớm thế. :s_big:

Bạn đã thử test kỹ lại chưa? Tue_NV đã test kỹ lại rồi. Các block gốc có góc xoay khác 0 sẽ không bị xoay nữa và không bị thay đổi vị trí khi ta Chọn điểm chèn mới cho Block này.

Bạn có thể nói rõ ý trên của bạn được không?

@ Anh Duy : Anh có thể nói rõ dùm em 2 ý này được không?

-Góc quay chẩn: gocquaychuan= gocquaychon - gocquaytam
-Dùng hàm polar tạo điểm đến diemden từ khoảng cách góc quay
-Thay đổi block cũ bằng block mới và move tới điểm đến
  • 0

#19 xuantran15

xuantran15

    biết lệnh ddedit

  • Members
  • PipPipPipPip
  • 295 Bài viết
Điểm đánh giá: 112 (tàm tạm)

Đã gửi 04 June 2009 - 09:22 AM

Bạn đã thử test kỹ lại chưa? Tue_NV đã test kỹ lại rồi. Các block gốc có góc xoay khác 0 sẽ không bị xoay nữa và không bị thay đổi vị trí khi ta Chọn điểm chèn mới cho Block này.

Bạn có thể nói rõ ý trên của bạn được không?

Đây là hình ảnh minh hoạ khi em test lisp của bác, Hy vọng có thể giúp bác hoàn thiện nó. :s_big:

http://www.cadviet.c...files/Block.bmp
  • 0
Hình đã gửi
Thu đi cho lá vàng bay
Lá rơi cho đám cưới về......

#20 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 04 June 2009 - 02:09 PM

Bạn đã thử test kỹ lại chưa? Tue_NV đã test kỹ lại rồi. Các block gốc có góc xoay khác 0 sẽ không bị xoay nữa và không bị thay đổi vị trí khi ta Chọn điểm chèn mới cho Block này.

Bạn có thể nói rõ ý trên của bạn được không?

@ Anh Duy : Anh có thể nói rõ dùm em 2 ý này được không?

-Góc quay chẩn: gocquaychuan= gocquaychon - gocquaytam
-Dùng hàm polar tạo điểm đến diemden từ khoảng cách góc quay
-Thay đổi block cũ bằng block mới và move tới điểm đến

Mình diển đạt rất tệ nhưng cũng cố coi sao nếu khó hiểu quá thì mình xin cái lisp của bạn rồi hôm nào test và viết theo ý mình xem.
Hình đã gửi
Giả sử block chọn ban đầu có góc quay trong đó:
N: điểm chèn cũ của block.
M: điểm chèn mới của block.
A: góc quay của block.
B: góc giữa mn và trục x.
L: khoảng cách giữa n và m.
Đối với bolck có qúc quay khác A điểm M xác định bằng điểm N khoàng cách L góc B.
Góc B bằng góc A + C, nếu a thay đổi B thay đổi theo do đó mình cần có giá trị C để tính.
Ở trường hợp bước đầu C=B-A.
  • 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