Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
minhtu2004

[Nhờ Chỉnh Sửa] Nhờ Mọi Người Xem Dùm Code Lấy Text Xung Quanh Điểm.

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

- Mình có viết đoạn code nhờ mọi xem dùm và chỉnh dùm đoạn code lấy text xung quanh điểm và convert thành số. Mình có gửi file cad. Mong mọi người giúp. Có thể thêm dùm mình doạn code nâng độ cao Z của toàn bộ điểm. Bản vẽ có khoảng vài chục ngàn điểm. Thank mọi người.http://www.cadviet.com/upfiles/6/35974_new_block.dwg

(defun ss2ent (ss / i Le e) ;;;Convert ss to list of ename
(setq i 0)
(repeat (sslength ss)     
(setq e (ssname ss i)        
Le (append Le (list e))        
i (1+ i)    ))
Le)
;///////////////////////////////////////
(defun c:Z0(/ ss etype)
  (setq ss (ssget '((0 . "POINT"))))
  (if ss
    (progn
      (setq ds_line (ss2ent ss))
      (repeat (1- (length ds_line))
	(setq ds_line (vl-remove (setq e0 (car ds_line)) ds_line))
	(foreach e ds_line (setq Lp (append Lp (ds_line e0 e))))
	)
      (foreach k Lp
	(setq pdau (mapcar '+ k '(0.1 0.1 0.0)) pcuoi (mapcar '+ k '(-0.1 -0.1 0.0)))
	(if  (setq ssk   (ssget "_C" pcuoi pdau '((0 . "TEXT"))))
	  (progn
	    (setq ss1 (ss2ent ssk))
	    (foreach u ss1
	      (if (= (cdr (assoc 8 (entget u))) "S-BMK-SRVR")
		(setq te1 (distof (cdr (assoc 1 (entget u))))))
	      )
	    )
	  )
	)
      )
    )
;////////////
(defun chDXF (dxf val ent) (entmod (subst (cons dxf val) (assoc dxf (entget ent)) (entget ent))))
(defun dxf (dxf ent) (cdr (assoc dxf (entget ent))))
  (setq ss (acet-ss-to-list ss))
  (foreach e ss
    (setq etype (dxf 0 e))
    (cond
      ((or (= etype "POINT"))
       (chdxf 10 (subst te1 (caddr (dxf 10 e)) (dxf 10 e)) e)
       )
      )
    )
(princ)
)

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

Đi ngang & nhiều chuyện xíu :D :D :D

 

Trong BV của bạn đã có sẵn point và text tương ứng có điểm chèn cách point 0.05 đơn vị theo phương Oy.

Kết quả bạn mong muốn là từ 2 thứ đó >>>>> Đưa cao độ (Z) của point bằng giá trị của text ?

 

Nếu đúng vậy thì sao bạn không xóa béng thằng point kia đi & từ text đã có ta make thằng point như yêu cầu nhỉ ?!

 

p/s: Code của bạn có cái cóp nhặt (OK ! cũng như mình & bao kẻ khác :D ) nhưng không có sự chọn lọc gây nên sự rối rắm rất khó chịu cho người đọc.

Có lẻ vì thế mà mọi người ngại can thiệp ^^, VD: Vừa ss2ent và vừa acet-ss-to-list

  • 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

Đăng nhập để thực hiện theo  

×