Chuyển đến nội dung
Diễn đàn CADViet
xaydung

lisp chuyển region sang pline!!

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

bác tot77 a. nếu xoay như bác em nghĩ là được, nhưng bản vẽ của em đang chỉ bị dịch chuyển thôi chứ chưa xoay gì đâu.em nghĩ bác đang xoay gốc toạ độ rồi thì phải.

các bác cho em hỏi là tại sao toạ độ của việt nam mình cứ phải thêm số 23 vào toạ độ của x nhỉ các bác

mà em thấy cái list coorn ý nó cho toạ độ x thành y và y thành x các bác có ai viết lại list đó được khô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

1.Tôi dựa trên toạ độ hai điểm M1,M2 của bản vẽ, nếu giữ nguyên vị trí của 2 điểm đó thì hệ trục phải xiên như vậy, và cả bản vẽ phải xoay như thế mơi khớp toạ độ. Tôi có vẽ thêm hệ trục oxy (bạn zoom all sẽ thấy), nếu bạn muốn xoay cho ox nằm ngang thì xoay cả bản vẽ (cả m1,m2).

2.Cái vụ thêm 23 thì tôi không biết, chắc là dựa vào hệ toạ độ quốc gia so với thế giới chăng?

3.Lisp coorn là lisp gì, bạn post lên xem.

 

Có lần tôi thấy có người dùng chữ E (east-hướng đông) thay cho X và N (north- hướng bắc) thay cho y. Chắc là so với điểm chuẩn trong hệ toạ độ quốc gia.

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

Woa! Thử lại cái này chắc ổn rồi.


; Doan Van Ha - CadViet.com - Ngay 14/6/2014
; Lisp: chuyen cac doi tuong thanh Region, sao do chuyen qua Pline.
(defun C:HA( / ssnho sslon ss i ent objArr)
 (vl-load-com) (setq cmd (getvar 'cmdecho)) (setvar 'cmdecho 0) (command "undo" "be")
 (setq ssnho (ssget "_X" '((0 . "REGION"))))
 (princ "\nChon cac doi tuong muon chuyen thanh Region...")
 (command "region" (ssget '((0 . "ARC,*LINE"))) "")
 (setq sslon (ssget "_X" '((0 . "REGION"))))
 (if ssnho
  (repeat (setq i (sslength ssnho))
   (ssdel (ssname ssnho (setq i (1- i))) sslon)))
 (while (setq ent (ssname sslon 0))
  (setq ss (ssadd)
        obj (vlax-ename->vla-object ent)
        objArr (vlax-safearray->list (vlax-variant-value (vla-Explode obj))))
  (foreach memb objArr
   (setq ss (ssadd (vlax-vla-object->ename memb) ss)))
  (command "_.PEDIT" (ssname ss 0) "_YES" "_JOIN" ss "" "")
  (ssdel ent sslon))
 (setvar 'cmdecho cmd) (command "undo" "e") 
 (princ))
 

 anh Hà ơi, cho em hỏi sao nó cứ tạo 1 pline close thành 2 đối tượng region chồng đè lên nhau anh nhỉ?

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

lisp này của anh hà là chuyển Line sang Region và sau đó là chuyện chúng về Pline Close phải không ạ?

nếu đúng vậy thì cái file em đính kèm đây lúc đầu là các thửa đất bằng các đường Line, sau đó mình dùng cái code của anh Hà để chuyển chúng về Pline Close đóng cho từng thửa đất (mục đích để chạy số thửa và diện tích bằng code của anh elleHCSC) nhưng kết quả nó ra 2 Pline close trong cùng 1 thửa đất nhi? mượn tạm file trên diễn đàn để ví dụ nhờ các anh coi giúp

http://www.cadviet.com/upfiles/5/103752_1.dwg

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

Bản edit:

 

; Doan Van Ha - CadViet.com - Ngay 14/6/2014, edit 15/7/2015
; Lisp: chuyen cac doi tuong *Line,Arc thanh Region, sao do chuyen tu Region qua Pline.
(defun C:HA( / cmd dob ssnho sslon ss i ent obj) 
 (vl-load-com) (setq cmd (getvar 'cmdecho) dob (getvar 'delobj)) (setvar 'cmdecho 0) (setvar 'delobj 1) (command "undo" "be")
 (setq ssnho (ssget "_X" '((0 . "REGION"))))
 (princ "\nChon cac doi tuong muon chuyen thanh Region...")
 (command "region" (ssget '((0 . "ARC,*LINE"))) "")
 (setq sslon (ssget "_X" '((0 . "REGION"))))
 (if ssnho
  (repeat (setq i (sslength ssnho))
   (ssdel (ssname ssnho (setq i (1- i))) sslon)))
 (while (setq ent (ssname sslon 0))
  (setq ss (ssadd) obj (vlax-ename->vla-object ent))
  (foreach obj (vlax-safearray->list (vlax-variant-value (vla-Explode obj)))
   (setq ss (ssadd (vlax-vla-object->ename obj) ss)))
  (command "_.PEDIT" (ssname ss 0) "_YES" "_JOIN" ss "" "")
  (ssdel ent sslon)
  (command "erase" ent ""))
 (setvar 'cmdecho cmd) (setvar 'delobj dob) (command "undo" "e") 
 (princ))
  • Vote tăng 1

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

×