Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] Lisp lấy giá trị của dimenson, text và xuất ra file text


  • Please log in to reply
48 replies to this topic

#41 xuanhuy2011

xuanhuy2011

    biết zoom

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

Đã gửi 04 July 2015 - 11:24 AM

Em hiện phải vẽ triển khai bản vẽ chi tiết và tổng hợp khối lượng các cấu kiện đc vẽ sẵn trên 1 bản vẽ layout
Do đó em cần thống kê lại trên excel các thông số như dimesion, text đã đc ghi sẵn trên từng cấu kiện trong bản vẽ layout đó.
Công việc này rất nhàm chán, và dễ sai sót vì mất công phải xem, đọc, Alt+tab qua excel, ....
Vậy bác nào có thể viết cho em 1 cái lisp mà em chỉ cần pick vào các text, dimension và Enter là nó xuất ra các giá trị của text, dimension đó ra 1 file text (csv hay txt)

Quan trọng là trong file text đó, các giá trị đc sắp xếp theo thứ tự mà em đã pick trên bản vẽ

Cảm ơn các bác
Chúc các bác một cuối tuần vui vẻ!

 Để lấy hết thuộc tính đối tượng bất ky bạn vào Tools - Data Extra tion là có thể xuất ra excell hoac txt và có thể chỉnh sửa cập nhật trở lại
 
 
 
 
 

 


  • 0

#42 nguyenbd1

nguyenbd1

    biết lệnh text

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

Đã gửi 08 January 2016 - 11:59 AM

Bạn dùng cái này xem ưng bụng không?

(defun C:HA()	;Doan Van Ha Cadviet.com
 (princ "\nChon cac Text/Mtext/Dimension can xuat ra file...")
 (setq lst (acet-ss-to-list (ssget '((0 . "*TEXT,DIMENSION"))))
       	fn (getfiled "Chon file de save" "" "csv" 1)
       	fw (open fn "w"))
 (foreach n lst
  (cond
   ((= (cdr (assoc 0 (entget n))) "TEXT") (setq txt (cdr (assoc 1 (entget n)))))
   ((= (cdr (assoc 0 (entget n))) "MTEXT") (setq txt (cdr (assoc 1 (entget n)))))
   ((= (cdr (assoc 0 (entget n))) "DIMENSION")
	(if (= (cdr (assoc 1 (entget n))) "")
 	(setq txt (rtos (cdr (assoc 42 (entget n)))))
 	(setq txt (cdr (assoc 1 (entget n)))))))
  (princ (strcat txt "\n") fw))
 (close fw))

sao em load và gõ lệnh nó báo lỗi vậy"Select objects:  ; error: no function definition: ACET-SS-TO-LIST" bạc hà giúp em với ạ


  • 0

#43 Chym Code

Chym Code

    biết vẽ arc

  • Members
  • PipPip
  • 46 Bài viết
Điểm đánh giá: -10 (hơi kém)

Đã gửi 13 April 2016 - 04:37 PM

Bạn dùng cái này xem ưng bụng không?

(defun C:HA()	;Doan Van Ha Cadviet.com
 (princ "\nChon cac Text/Mtext/Dimension can xuat ra file...")
 (setq lst (acet-ss-to-list (ssget '((0 . "*TEXT,DIMENSION"))))
       	fn (getfiled "Chon file de save" "" "csv" 1)
       	fw (open fn "w"))
 (foreach n lst
  (cond
   ((= (cdr (assoc 0 (entget n))) "TEXT") (setq txt (cdr (assoc 1 (entget n)))))
   ((= (cdr (assoc 0 (entget n))) "MTEXT") (setq txt (cdr (assoc 1 (entget n)))))
   ((= (cdr (assoc 0 (entget n))) "DIMENSION")
	(if (= (cdr (assoc 1 (entget n))) "")
 	(setq txt (rtos (cdr (assoc 42 (entget n)))))
 	(setq txt (cdr (assoc 1 (entget n)))))))
  (princ (strcat txt "\n") fw))
 (close fw))

Bác Hà có thể sửa giúp em chút được không, giả sử đối tượng được chọn có 2 kích thước ( CD & CR ), bác phân 2 kích thước đó thành 2 cột được  không. Bác giúp em chút nhé !


  • -1

#44 hoainam1

hoainam1

    biết vẽ arc

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

Đã gửi 13 April 2016 - 10:16 PM

từ list này xin nhờ các bác giúp em nâng cấp thêm :

1. lấy giá trị tiền tố trước giá trị DIM (VD: dim = -3 có thể xuất ra -3)

2. lấy được định dạng bold nếu bên dim có khai báo (vd: dim = 3 thì xuất text là 3

3. lấy được định dạng chữ nghiêng nếu bên Dim có khai báo

rất cảm ơn các bác.

 

(defun C:HA1(/ lst fn fw i j) ;Doan Van Ha Cadviet.com
(princ "\nChon cac Text/Mtext/Dimension can xuat ra file...")
(setq lst (mapcar 'entget (acet-ss-to-list (ssget '((0 . "*TEXT,DIMENSION")))))
    fn (getfiled "Chon file de save" "" "csv" 1)
    fw (open fn "w") i 0 j 0)
(foreach n lst
(princ
(cond
((wcmatch (cdadr n) "*TEXT")(strcat (acet-dxf 1 n) ";Text" (itoa (setq i (1+ i))) "\n"))
((= (cdadr n) "DIMENSION")(strcat (if (= (acet-dxf 1 n) "")(rtos (acet-dxf 42 n))(acet-dxf 1 n)) ";Dim" (itoa (setq j (1+ j))) "\n"))
)
fw
)
)
(close fw))


  • 0

#45 linhtu90protb

linhtu90protb

    Chưa sử dụng CAD

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

Đã gửi 20 June 2016 - 09:07 AM

Đây bạn:



(defun C:HA( / lst fn fw index x y z txt)	;Doan Van Ha Cadviet.com

 (princ "\nChon cac Text/Mtext/Dimension can xuat ra file...")

 (setq lst (acet-ss-to-list (ssget '((0 . "*TEXT,DIMENSION"))))

       	fn (getfiled "Chon file de save" "" "csv" 1)

       	fw (open fn "w")

       	index 0 x 1 y 1 z 1)

 (repeat (length lst)

  (cond

   ((= (cdr (assoc 0 (entget (nth index lst)))) "TEXT") (setq txt (strcat (cdr (assoc 1 (entget (nth index lst)))) "," "text" (itoa x)) x (1+ x)))

   ((= (cdr (assoc 0 (entget (nth index lst)))) "MTEXT") (setq txt (strcat (cdr (assoc 1 (entget (nth index lst)))) "," "mtext" (itoa y)) y (1+ y)))

   ((= (cdr (assoc 0 (entget (nth index lst)))) "DIMENSION")

	(if (= (cdr (assoc 1 (entget (nth index lst)))) "")

 	(setq txt (strcat (rtos (cdr (assoc 42 (entget (nth index lst))))) "," "dim" (itoa z)) z (1+ z))

 	(setq txt (strcat (cdr (assoc 1 (entget (nth index lst)))) "," "dim" (itoa z)) z (1+ z)))))

  (princ (strcat txt "\n") fw)

  (setq index (1+ index)))

 (close fw))


Sao e không dùng đc lisp này nhỉ. ko dùng đc lệnh HA


  • 0

#46 hoan3666

hoan3666

    biết pan

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

Đã gửi 09 November 2016 - 08:14 PM

chào mọi người cho em đào mộ tý, có ai sửa lips này thay vì xuất ra csv thì ghi vào clipbroad giúp em đc không

giống như lips này http://www.cadviet.c...lieu-kieu-text/

nhưng thay nhưng chọn được 1 vùng dữ liệu giống của bác hà

Bạn dùng cái này xem ưng bụng không?

(defun C:HA()	;Doan Van Ha Cadviet.com

 (princ "\nChon cac Text/Mtext/Dimension can xuat ra file...")

 (setq lst (acet-ss-to-list (ssget '((0 . "*TEXT,DIMENSION"))))

       	fn (getfiled "Chon file de save" "" "csv" 1)

       	fw (open fn "w"))

 (foreach n lst

  (cond

   ((= (cdr (assoc 0 (entget n))) "TEXT") (setq txt (cdr (assoc 1 (entget n)))))

   ((= (cdr (assoc 0 (entget n))) "MTEXT") (setq txt (cdr (assoc 1 (entget n)))))

   ((= (cdr (assoc 0 (entget n))) "DIMENSION")

	(if (= (cdr (assoc 1 (entget n))) "")

 	(setq txt (rtos (cdr (assoc 42 (entget n)))))

 	(setq txt (cdr (assoc 1 (entget n)))))))

  (princ (strcat txt "\n") fw))

 (close fw))

xi

  • 0

#47 Bee

Bee

    biết lệnh extend

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

Đã gửi 09 November 2016 - 09:14 PM

chào mọi người cho em đào mộ tý, có ai sửa lips này thay vì xuất ra csv thì ghi vào clipbroad giúp em đc không

giống như lips này http://www.cadviet.c...lieu-kieu-text/

nhưng thay nhưng chọn được 1 vùng dữ liệu giống của bác hà

Ghi vào xong xuất sang đâu vậy ? Ghi chung chung thế này thì mở béng nó file cvs xong copy data vào clipboard là xong :D


  • 0

#48 hoan3666

hoan3666

    biết pan

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

Đã gửi 09 November 2016 - 09:19 PM

Ghi vào xong xuất sang đâu vậy ? Ghi chung chung thế này thì mở béng nó file cvs xong copy data vào clipboard là xong :D

mình muốn xuất ra excel nhưng mỗi lần coppy nó chỉ được 1 cột
 nên mình phải coppy nhiều lần. Nhưng mình coppy nhiều lần mà dùng lips bác Hà thì mỗi lần nó lại tạo thêm 1 file nên mình muốn lips đơn giản chỉ ghi vào rồi mình tự paste ra excel

cám ơn bác trả lời mình nha


  • 0

#49 Bee

Bee

    biết lệnh extend

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

Đã gửi 09 November 2016 - 10:15 PM

mình muốn xuất ra excel nhưng mỗi lần coppy nó chỉ được 1 cột
 nên mình phải coppy nhiều lần. Nhưng mình coppy nhiều lần mà dùng lips bác Hà thì mỗi lần nó lại tạo thêm 1 file nên mình muốn lips đơn giản chỉ ghi vào rồi mình tự paste ra excel

cám ơn bác trả lời mình nha

Xem phim hợp đồng hôn nhân xong thấy hài hài, code cho bạn nhé.

 

Đã chỉnh sửa chút xíu. CAD thế nào nó copy y nguyên, sang excel phải format cho đúng font nhé. ^_^

(defun C:HA1 (/ lst str txt 2ClipB)

  (vl-load-com)

  (princ "\nChon cac Text/Mtext/Dimension can copy..."
  )

  (setq lst (acet-ss-to-list (ssget '((0 . "*TEXT,DIMENSION")))))

  (setq str "")

  (foreach n lst

    (cond

      ((= (cdr (assoc 0 (entget n))) "TEXT")
       (setq txt (cdr (assoc 1 (entget n))))
      )

      ((= (cdr (assoc 0 (entget n))) "MTEXT")
       (setq txt (cdr (assoc 1 (entget n))))
      )

      ((= (cdr (assoc 0 (entget n))) "DIMENSION")

       (if (= (cdr (assoc 1 (entget n))) "")

	 (setq txt (rtos (cdr (assoc 42 (entget n)))))

	 (setq txt (cdr (assoc 1 (entget n))))
       )
      )
    )

    (setq str (strcat str txt "\n"))
  )
  
  (vlax-invoke
    (vlax-get
      (vlax-get	(setq 2ClipB (vlax-create-object "htmlfile"))
		'ParentWindow
      )
      'ClipBoardData
    )
    'SetData
    "Text"
    str
  )
  (vlax-release-object 2ClipB)
)


  • 1