Đến nội dung


Hình ảnh
- - - - -

[ Yêu Cầu ] LISP xuất các text trong vùng kín


  • Please log in to reply
9 replies to this topic

#1 whatcholingon

whatcholingon

    biết lệnh break

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

Đã gửi 06 January 2014 - 10:36 AM

Mong mọi người viết giùm mình lisp như sau: ( mình đang cần gấp, mọi người bỏ chút thời gian giúp mình với)

    -trong bản vẽ của mình có các thửa đất, trong các thửa đất này có các layer:

       số thửa

       diện tích

       loại đất

       tên chủ hộ

       địa chỉ

(các text này đều nằm trong vùng kín của từng ô)

Giờ mình muốn xuất các text này ra file csv nếu qua excel được thì càng tốt.

cứ mỗi 1 thửa đất thì xuất ra một dòng như sau:

file csv:
1,83.5,ONT, Nguyễn Thị Liên, thôn a, xã b. tỉnh c

2...

3...

4...

...

(mỗi một thửa là một dòng)

đây là file của mình;

http://www.cadviet.c...57_drawing1.dwg

Thanks all!


  • 0

#2 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 06 January 2014 - 11:53 AM

Một chủ đề tương tự y như của bạn ở đây:

http://www.cadviet.c...ad-sang-excell/


  • 1

#3 whatcholingon

whatcholingon

    biết lệnh break

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

Đã gửi 06 January 2014 - 12:55 PM

Rất cám ơn bạn. mình có xem chủ trên và có dow 1lisp về chạy thử thì báo lỗi sau:

Command: ; error: malformed list on input

bạn kiểm tra giùm mình xem là lỗi gì ah?

đây là lsp :

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.c...ad-sang-excell/
(defun c:CTE(/ ss ent sht dtich cthua gchu i L lst fname);copyright by Tue_NV(defun checkss (sset)    (if (null sset) 	(acet-list-to-ss (list (entmakex (list (cons 0 "TEXT") (cons 1 "") (cons 10 (list 0 0 0)) (cons 40 2) ) ) ))    ))(IF (ACET-UTIL-VER)(PROGN(iF (setq ss (ssget '((0 . "*POLYLINE") (70 . 1))))(pROGN (setq i -1 lst '())  (while (setq ent (ssname ss (setq i (1+ i))))    (setq L (acet-geom-vertex-list ent))    (if (null (setq sht (ssget "CP" L '((0 . "*TEXT") (8 . "Sothua") (1 . "~*[~0-9]*")))) ) 	(setq sht (checkss sht)) )    (if (null (setq dtich (ssget "CP" L '((0 . "*TEXT") (8 . "Dientich") (1 . "*#.#*,*#,#*")))) )	(setq dtich (checkss dtich)) )    (if (null (setq cthua (ssget "CP" L '((0 . "*TEXT") (8 . "Text") (1 . "*@*")))) ) 	(setq cthua (checkss cthua)) )    (if (null (setq gchu (ssget "CP" L '((0 . "*TEXT") (8 . "Dientich") (1 . "@@@")))) )	(setq gchu (checkss gchu)) )       (setq lst (vl-sort 	           (append lst    		     (list		 	 (mapcar '(lambda(x) 			   		(acet-dxf 1 (entget x))				   )	    			(apply 'append			       		(mapcar 'acet-ss-to-list				       			(list sht sht cthua dtich gchu)			       		)				)    		   	)		     )	          );append		 '(lambda (x1 x2) (< (atoi (car x1)) (atoi (car x2))))		);vl-sort    	)  );while  ;;;;;;;;;;;;;;(if (setq fName (getfiled "Ten file xuat " (getvar "dwgprefix") "xls" 1))   (progn	(setq fName (open fName "w"))	(write-line "STT\tSO HIEU THUA\tCHU THUA\tDIEN TICH\tGHI CHU" fname)	(foreach pt lst	   (write-line (strcat (nth 0 pt) "\t" (nth 1 pt) "\t" (nth 2 pt) "\t"			       (nth 3 pt) "\t" (nth 4 pt)) fName)	)       (close fName)   ))  ))));PROGN_IF(setvar "modemacro" "Chuc ban lam viec hieu qua - tue_nvcc@yahoo.com") (princ))

Thanks!


  • 0

#4 whatcholingon

whatcholingon

    biết lệnh break

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

Đã gửi 06 January 2014 - 02:24 PM

Mr Tue_NV ơi xem giùm mình cái lisp xem bị lỗi gì vậy.

mình đang cần gấp lắm!

Thanks!


  • 0

#5 whatcholingon

whatcholingon

    biết lệnh break

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

Đã gửi 06 January 2014 - 04:06 PM

mọi người ơi, giúp mình  cái nào. :( :( :( :( :(


  • 0

#6 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 06 January 2014 - 04:14 PM

Hình như là cái này:

;; free lisp from cadviet.com ;copyright by Tue_NV; this lisp was downloaded from http://www.cadviet.c...?showtopic=3107
(defun C:CTE(/ ss ent sht dtich cthua gchu lst i fname)
 (if (acet-util-ver)
  (progn
   (if (setq ss (ssget '((0 . "*POLYLINE") (70 . 1))))
   (progn 
    (setq i -1 lst '())
    (while (setq ent (ssname ss (setq i (1+ i))))
     (setq L (acet-geom-vertex-list ent))
     (if
      (and
       (setq sht (ssget "CP" L '((0 . "*TEXT") (8 . "Sothua") (1 . "~*[~0-9]*"))))   ;text lµ sè nguyªn
       (setq dtich (ssget "CP" L '((0 . "*TEXT") (8 . "Dientich") (1 . "*#.#*,*#,#*")))) ;text lµ sè thùc
       (setq cthua (ssget "CP" L '((0 . "*TEXT") (8 . "Chu SD") (1 . "*@*")))) ;text că chøa kư tù trèng ë ®Çu/gi÷a/cuèi
       (setq gchu (ssget "CP" L '((0 . "*TEXT") (8 . "Dientich") (1 . "@@@"))))) ;text chøa ®óng 3 kư tù ???
      (setq lst (vl-sort (append lst (list (mapcar '(lambda (x) (acet-dxf 1 (entget x)))
                       (apply 'append (mapcar 'acet-ss-to-list (list sht sht cthua dtich gchu))))))
'(lambda (x1 x2) (< (atoi (car x1)) (atoi (car x2))))))))
    (if (setq fName (getfiled "Ten file xuat " (getvar "dwgprefix") "xls" 1))
     (progn
      (setq fName (open fName "w"))
      (write-line "STT\tSO HIEU THUA\tCHU THUA\tDIEN TICH\tGHI CHU" fname)
      (foreach pt lst
       (write-line (strcat (nth 0 pt) "\t" (nth 1 pt) "\t" (nth 2 pt) "\t" (nth 3 pt) "\t" (nth 4 pt)) fName))
       (close fName)))))));PROGN_IF
 (setvar "modemacro" "Chuc ban lam viec hieu qua - tue_nvcc@yahoo.com")
 (princ))
 

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

whatcholingon

    biết lệnh break

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

Đã gửi 06 January 2014 - 04:31 PM

Cám ơn bạn rất nhiều.

Lisp chạy được nhưng lại không lấy text trong vùng kín được bạn ạ.

lisp chỉ lấy được text trong vùng kín là đường pline bao quanh thửa thôi, chứ vùng kín là line thì không lấy được.


  • 0

#8 whatcholingon

whatcholingon

    biết lệnh break

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

Đã gửi 06 January 2014 - 04:37 PM

trong bản vẽ của mình thì vùng kìn đều là Line cả,

bạn xem file của mình rồi viết theo bản vẽ của mình với

Thanhks!


  • 0

#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 06 January 2014 - 04:51 PM

trong bản vẽ của mình thì vùng kìn đều là Line cả,

bạn xem file của mình rồi viết theo bản vẽ của mình với

Thanhks!

 

Nếu là Line thì chỉ còn cách bạn sử dụng lệnh Boundary để tạo thành Polyline kín mới được. 

Và tất nhiên sẽ chỉnh sửa Lisp cho phù hợp với y/c của bạn

Để lúc rảnh mình mần Lisp này cho tổng quát, để trong trường hợp Pline kín thế nào chăng nữa cũng sử dụng được. 

Giờ cũng hơi bận ^_^


  • 1

#10 whatcholingon

whatcholingon

    biết lệnh break

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

Đã gửi 06 January 2014 - 05:01 PM

Cám ơn bạn,trong bản vẽ có cả trăm thửa lớn và nhỏ , ngồi bo từng thửa thì mất nhiều thời gian quá.

hy vọng sẽ nhận được lisp của bạn sớm.

Thanks!


  • 0