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

Bảng toạ độ các đỉnh thửa đất

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

Góp ý với nhoclangbat là hạn chế dùng command, thứ nhất là tốc độ chậm, thứ hai là dễ bị sai khi để chế độ bắt điểm (như thế setvar "OSMODE" 0), lại phải cài đặt chế độ bắt điểm.

Góp ý với nhoclangbat là hạn chế dùng command, thứ nhất là tốc độ chậm, thứ hai là dễ bị sai khi để chế độ bắt điểm (như thế setvar "OSMODE" 0), lại phải cài đặt chế độ bắt điểm.

Khi tạo boudary thì nó sẽ tạo 1 Polyline và chiều của nó bao giờ cũng là ngược chiều kim đồng hồ. Có thể dùng Lisp đảo chiều Polyline để cho nó theo chiều kim đồng hồ.

(defun dch (ent / eo el len)
(vl-load-com)
(setq eo ent)
(setq el (list(assoc 210 ent)))
(while (member (assoc 10 ent) ent)
  (if (= 0.0 (assoc 42 ent))
(setq el (cons (assoc 42 ent) el))
(setq el (cons (cons 42 (- (cdr (assoc 42 ent)))) el))
  )
  (setq el (cons (assoc 41 ent) el))
  (setq el (cons (assoc 40 ent) el))
  (setq el (cons (assoc 10 ent) el))
  (setq ent (member (assoc 10 ent) ent))
  (setq ent (cdr ent))
)
(setq len(- (LENGTH eo) (LENGTH (member (assoc 10 eo) eo)) 1))
(while (>= len 0)
  (setq el (cons (nth len eo) el))
  (setq len (- len 1))
)
(setq ent el)
(entmod ent)
(princ)
)

Mình test nó lỗi font nên ko chạy.

Góp ý với nhoclangbat là hạn chế dùng command, thứ nhất là tốc độ chậm, thứ hai là dễ bị sai khi để chế độ bắt điểm (như thế setvar "OSMODE" 0), lại phải cài đặt chế độ bắt điểm.
Khi tạo boudary thì nó sẽ tạo 1 Polyline và chiều của nó bao giờ cũng là ngược chiều kim đồng hồ. Có thể dùng Lisp đảo chiều Polyline để cho nó theo chiều kim đồng hồ.
 
Khi tạo boudary thì nó sẽ tạo 1 Polyline và chiều của nó bao giờ cũng là ngược chiều kim đồng hồ. Có thể dùng Lisp đảo chiều Polyline để cho nó theo chiều kim đồng hồ.

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
Vào lúc 18/12/2007 tại 13:10, ssg đã nói:

 

Chương trình hôm nọ vẽ bảng gọi là "cho vui" thôi, chỉ có thể dùng với các bảng ngắn ngắn, số lượng dữ liệu ít. Trường hợp của bạn số lượng dữ liệu khá nhiều. Cách thức bài bản hơn là xuất tọa độ các điểm cũng như tên điểm sang Excel, sau đó tùy ý xử lý và insert lại vào Cad. Cách này có ưu điểm nổi bật là bạn có thể dùng các công cụ Excel để xử lý dữ liệu cho nhiều mục đích khác nhau.

Tên lệnh là EP (Export Points). Sau khi export, chương trình sẽ tự khởi động Excel và open file.

 

Các điểm lưu ý:

- Text ghi thứ tự điểm phải có tọa độ x, y (của điểm insert) trùng với x, y của point (có thể khác z). Nếu không, chương trình tìm không thấy text sẽ mặc định gán số thứ tự là 0! Bản vẽ bạn gởi có vài điểm như vậy.

- Lisp không có khả năng can thiệp vào cầu trúc file của *.xls. Mặc dù lưu ở dạng *.xls nhưng bản chất của nó vẫn là text file, các field được phân biệt bằng 1 dấu tab. Tuy vậy, trình Excel vẫn hiểu và open được loại file này.

- Khi save, Excel sẽ hỏi "Do you want keep the workbook in this format?”. Nếu bạn muốn file được chuyển thành “*.xls thật sự” thì phải trả lời “No”, sau đó save đè lên file có hiện có là xong.

 

 


;;;**********************************************************
;;;This program export coordinate of points and ordinal numbers to Excel
;;;Each ordinal number must be the same x, y as correlative point_
;;;otherwise it is assigned "0" value.
;;;The file save as *.xls but data structure still are text file.
;;;If you want convert them to actual *.xls file, when save Excel ask:_
;;;"Do you want keep the workbook in this format?", you must answer "No".
;;;Written by Ssg - December 2007 - www.cadviet.com
;;;**********************************************************


;;;--------------------------------------------------------------------
(defun ss2Lp(ssp / Lp i e p) ;;;Convert ss of points to list of 3Dpoints
(setq i 0 Lp nil)
(repeat (sslength ssp) 
   (setq
       e (ssname ssp i)
       p (cdr (assoc 10 (entget e)))
       Lp (append Lp (list p))
       i (1+ i)
   )
)
Lp
)
;;;-------------------------------------------------------------------------------
(defun C:EP(/ ssp Lp Ld fn f p sst txt rec L1) ;;;Export Points
(setq
   ssp (ssget '((0 . "POINT")))
   Lp (ss2Lp ssp)
   Ld nil
   fn (getfiled "title" "" "xls" 1)
   f (open fn "w")
)
(princ "TT\tX\tY\tZ" f)
(foreach p Lp
   (if (setq sst (ssget "x" (list (cons 0 "TEXT") (cons -4 "=,=,*") (cons 10 p))))
       (setq txt (cdr (assoc 1 (entget (ssname sst 0)))))
       (setq txt "0")
   )
   (setq
       rec (cons (atoi txt) p)
       Ld (append Ld (list rec))
   )
)
(setq Ld (vl-sort Ld '(lambda (x y) (< (car x) (car y)))))
(foreach L1 Ld
   (princ (strcat "\n" (rtos (car L1)) "\t" (rtos (cadr L1)) "\t"
                       (rtos (caddr L1)) "\t" (rtos (cadddr L1))) f) 
)
(close f)
(alert "Finish export! Program will start Excel and open data file...")
(command "start" (strcat "excel " fn))  
)
;;;-------------------------------------------------------------------------------
 

 

bác nào sửa tự đánh số thứ tự vào cad lẫn exel dc 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

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

×