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

Xin lisp chuyển từ Text 2d sang 3d và ngược lại

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

Bác nào có lisp này cho mình xin nhé. Lần trước mình đã thấy có người xài lisp này roài, giờ có việc cần qua. Thanks các bác nhiều............

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

Ngồi rảnh mò mẫm lại mấy cái lisp cũ và mò lại topic có trong diễn đàn thấy có nhưng không có ai trả lời nên mạo muội gửi cho bạn. Những ai cần dùng thì ô sờ kê.

Lisp chuyển text 2D sang 3D. Còn ngược lại thì dùng lệnh flattend của Cad.

(defun Diemchuan (ent)
 (setq Ma10  (cdr (assoc 10 (entget ent))))
 (setq Ma11  (cdr (assoc 11 (entget ent))))
 (setq X11 (car Ma11))
 (setq Ma71  (cdr (assoc 71 (entget ent))))
 (setq Ma72  (cdr (assoc 72 (entget ent))))
 (if (or (and (= Ma71 0) (= Ma72 0) (= X11 0))
     (and (= Ma71 0) (= Ma72 3) )
     (and (= Ma71 0) (= Ma72 5) )
 	)
Ma10
Ma11
  )

(defun C:CVT3D (/ ss item temp Tdo Caodo h Pnt )
 (command "undo" "be")
 (command "osnap" "off")
  (setq ss (ssget (list (cons 0  "TEXT"))))
 	(setq ss (vl-remove-if-not '(lambda (x) (= (type x) 'ENAME)) (mapcar 'cadr (ssnamex ss))))
 	(foreach item ss
   (setq temp  (entget item))
  	(setq   Tdo (Diemchuan item ))
   	(setq  Caodo (cdr (assoc 1 temp))
       	h (cdr (assoc 40 temp))
    		Pnt   (list (car Tdo)
  	     	(cadr Tdo)
  	     	(atof caodo)
         	)
		)
   (entdel item)
;;;    (command "text" Pnt h 0 Caodo)
;;;    (command "text" "J" "MC" Pnt h 0 Caodo)
   (entmake (list (cons 0 "TEXT")  (cons 1  Caodo) (cons 10 Pnt) (cons 40 h)))
 	)
 (command "undo" "end")
 (princ)

)


)

 

P/s: Ngồi thử từng kiểu justify nên làm theo cách ấy. Ai có ý kiến thì xin chỉ giáo. :mellow:

  • 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

Ngồi rảnh mò mẫm lại mấy cái lisp cũ và mò lại topic có trong diễn đàn thấy có nhưng không có ai trả lời nên mạo muội gửi cho bạn. Những ai cần dùng thì ô sờ kê.

Lisp chuyển text 2D sang 3D. Còn ngược lại thì dùng lệnh flattend của Cad.

(defun Diemchuan (ent)
 (setq Ma10  (cdr (assoc 10 (entget ent))))
 (setq Ma11  (cdr (assoc 11 (entget ent))))
 (setq X11 (car Ma11))
 (setq Ma71  (cdr (assoc 71 (entget ent))))
 (setq Ma72  (cdr (assoc 72 (entget ent))))
 (if (or (and (= Ma71 0) (= Ma72 0) (= X11 0))
     (and (= Ma71 0) (= Ma72 3) )
     (and (= Ma71 0) (= Ma72 5) )
 	)
Ma10
Ma11
  )

(defun C:CVT3D (/ ss item temp Tdo Caodo h Pnt )
 (command "undo" "be")
 (command "osnap" "off")
  (setq ss (ssget (list (cons 0  "TEXT"))))
 	(setq ss (vl-remove-if-not '(lambda (x) (= (type x) 'ENAME)) (mapcar 'cadr (ssnamex ss))))
 	(foreach item ss
   (setq temp  (entget item))
  	(setq   Tdo (Diemchuan item ))
   	(setq  Caodo (cdr (assoc 1 temp))
       	h (cdr (assoc 40 temp))
			Pnt   (list (car Tdo)
           	(cadr Tdo)
           	(atof caodo)
         	)
	)
   (entdel item)
;;;    (command "text" Pnt h 0 Caodo)
;;;    (command "text" "J" "MC" Pnt h 0 Caodo)
   (entmake (list (cons 0 "TEXT")  (cons 1  Caodo) (cons 10 Pnt) (cons 40 h)))
 	)
 (command "undo" "end")
 (princ)

)


)

 

P/s: Ngồi thử từng kiểu justify nên làm theo cách ấy. Ai có ý kiến thì xin chỉ giáo. :mellow:

Hề hề hề,

Thực tình đọc tiếng Việt mà mình chả hiểu mô tê răng rứa chi cả??? Thế nào text 2D và thế nào là text 3D hè??? Nó khác nhau ở cái chi chi??? và tại sao lại phải chuyển đi chuyển lại cho nó .... bác học vậy????

Hề hề 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

hề hề hề. Đó là text có cao độ và text ko có cao độ. Các text trong đó có số ý bác, toàn là số. Hề hề. Convert cái text có toàn số nhưng độ cao bằng 0 thành cái text có độ cao khác 0. Hiii

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

 

Hề hề hề,

Thực tình đọc tiếng Việt mà mình chả hiểu mô tê răng rứa chi cả??? Thế nào text 2D và thế nào là text 3D hè??? Nó khác nhau ở cái chi chi??? và tại sao lại phải chuyển đi chuyển lại cho nó .... bác học vậy????

Hề hề hề....

bác chọc quê em roài. Hic. Em toàn làm các vấn đề bác học thui.

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ác chọc quê em roài. Hic. Em toàn làm các vấn đề bác học thui.

Hề hề hề,

Vậy có nghĩa là text 3D là text 2D được vác từ mặt đất lên tầng nào đó có cao độ của cái point à???

Mình cứ tưởng là phải extrude cái text thành cái mặt hay cái khối chi chi đó có kích thước cả 3 chiều chớ???

Việc mang vác này quả có nặng nhọc thiệt, vậy nên bác mới chọn cái cách viết thằng khác giống thằng cũ cho đỡ mất công vác, nhưng mà phí của giời lắm bác ạ.

Sao bác không sai cái thằng move nó làm hộ nhỉ??? Nước sông, công .... nó mừ.

Hề hề hề,...

  • 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

Hay! Trong trường hợp này thì dùng MU gọn nhỉ! Khỏi lằng nhằng thằng điểm chuẩn, code đơn giản, chỉ mỗi xác định cái (assoc 1) là coi như xong.

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

Ngồi rảnh mò mẫm lại mấy cái lisp cũ và mò lại topic có trong diễn đàn thấy có nhưng không có ai trả lời nên mạo muội gửi cho bạn. Những ai cần dùng thì ô sờ kê.

Lisp chuyển text 2D sang 3D. Còn ngược lại thì dùng lệnh flattend của Cad.

(defun Diemchuan (ent)  (setq Ma10  (cdr (assoc 10 (entget ent))))  (setq Ma11  (cdr (assoc 11 (entget ent))))  (setq X11 (car Ma11))  (setq Ma71  (cdr (assoc 71 (entget ent))))  (setq Ma72  (cdr (assoc 72 (entget ent))))  (if (or (and (= Ma71 0) (= Ma72 0) (= X11 0))      (and (= Ma71 0) (= Ma72 3) )      (and (= Ma71 0) (= Ma72 5) )  	)	Ma10	Ma11   ) (defun C:CVT3D (/ ss item temp Tdo Caodo h Pnt )  (command "undo" "be")  (command "osnap" "off")   (setq ss (ssget (list (cons 0  "TEXT"))))  	(setq ss (vl-remove-if-not '(lambda (x) (= (type x) 'ENAME)) (mapcar 'cadr (ssnamex ss))))  	(foreach item ss    (setq temp  (entget item))   	(setq   Tdo (Diemchuan item ))    	(setq  Caodo (cdr (assoc 1 temp))        	h (cdr (assoc 40 temp))     		Pnt   (list (car Tdo)   	     	(cadr Tdo)   	     	(atof caodo)          	) 		)    (entdel item);;;    (command "text" Pnt h 0 Caodo);;;    (command "text" "J" "MC" Pnt h 0 Caodo)    (entmake (list (cons 0 "TEXT")  (cons 1  Caodo) (cons 10 Pnt) (cons 40 h)))  	)  (command "undo" "end")  (princ) )  )
P/s: Ngồi thử từng kiểu justify nên làm theo cách ấy. Ai có ý kiến thì xin chỉ giáo. :mellow:

 

Em đã load lisp nhưng sao chạy không được lệnh anh ạ.

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

×