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

Viết lisp theo yêu cầu [phần 2]

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

Chào các bác.

các bác có thể viết cho em một file lisp với nội dung như sau:

+ copy hoặc move các đối tượng với thứ tự được chọn tương ứng với khoảng cách mình nhập tọa độ

+ chọn lần lượt các đối tượng 1,2,3,...n-1,n. Sau đó nhập tọa độ lần lượt tương ứng với vị trí cần dời đến.

Chào bạn muoild,

Bạn dùng thử cái này xem sao, nếu cần bổ sung gì thì hãy pót lên nhé.

(defun c:mulmov ()
(setq ss (ssget)
     n (sslength ss)
     i 0
     lstd (list)
     lstg (list))
(while (      (setq d (getdist "\n Nhap khoang cach di chuyen: ")
           g (getangle "\n Nhap goc di chuyen theo do: ")
           lstd (append lstd (list d))
           lstg (append lstg (list g))
           i (1+ i)
     )
)
(command "undo" "be")
(setq i 0 p (getpoint "\n Chon diem bat ky"))
(while ((command "move" (ssname ss i) "" p (polar p (nth i lstg) (nth i lstd)))
(setq i (1+ i))
)
(command "undo" "e")
(princ)
)

Chúc bạn vui.

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
Mình có file cad mà sẽ gửi dưới đây rất muốn các bạn trong diễn đàn giúp đỡ. Mình muốn copy đối tượng với công sai n=1

http://www.cadviet.com/upfiles/2/new_block_9.dwg

Hề hề hề,

Cái này hình như có rồi, bác chịu khó tìm kiếm một tí, nha.

Cái bản vẽ bác gửi mình không mở được, vậy nên chả thể giúp gì bác ạ.

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
Các ban trong diễn đàn cho hỏi khi thực hiện lisp thi Cad báo lỗi "bad argument type: lselsetp nil" là lỗi như thế nào?

Cái lỗi này là do trong lisp của bạn có chứa một biến nào đó, mà biến này không thể nhận giá trị là nil. Do vậy khi bạn chạy, vì lý do nào đó, có thể do bạn đã chạy một lisp khác có biến trùng tên với lisp này và sau khi chạy xong nó trả về nil, cũng có thể do việc khai báo biến của bạn,.......

Ở đây cái argument của hàm số mình cũng gọi là biến.

Tỷ như hàm (/ a b ) thì b không thể là nil bạn ạ.

  • 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
Cái lỗi này là do trong lisp của bạn có chứa một biến nào đó, mà biến này không thể nhận giá trị là nil. Do vậy khi bạn chạy, vì lý do nào đó, có thể do bạn đã chạy một lisp khác có biến trùng tên với lisp này và sau khi chạy xong nó trả về nil, cũng có thể do việc khai báo biến của bạn,.......

Ở đây cái argument của hàm số mình cũng gọi là biến.

Tỷ như hàm (/ a b ) thì b không thể là nil bạn ạ.

Cảm ơn bạn nhé, mình sẽ kiểm tra lại xem sao.

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

Các cao thủ CadViet cho mình hỏi thế này: Mình có 1 đa giác kín, muốn chọn các đối tượng năm trong đa giác đó thì khi viết lisp sẽ dùng lựa chọn đối tượng theo cách "CP" hoặc "WP" với danh sách điểm là các đỉnh của đa giác đó. Tuy nhiên nếu đa giác đó là đa giác lồi thì không có vân đề gì, còn với đa giác lõm có hình phức tạp thì thường bị lỗi. Đấy là theo suy nghĩ của mình, bác nào có cách nào hay hoặc khắc phục nhược điểm trên của mình chỉ giúp với nhé. Xin cảm ơn.

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
Công nhận gia_bach viết LISP quá ghê!

Để tạo ra Pid.lsp chắc phải tốn rất nhiều công phu

 

Sau khi Test có vài nhận xét sau:

- Việc đặt tên Point có lẽ nên định hướng lại

Từ trái sang phải thì phải từ trên xuống dưới (theo quy luật đọc văn bản)

- Chỉnh sửa tí xíu về khoảng cách Text trong Table so với đường ngang bên dưới (hơi sát quá)

 

Ngoài lề một chút (làm khó tác giả tí)

- Lisp trên chạy tốt rồi nhưng vẫn còn những giới hạn

- Nếu sau khi đặt tên và xuất Table cho Point nếu có một chỉnh sửa nhỏ xảy ra ví dụ di chuyển Point chẳng hạn thì sẽ xuất hiện những lố bịch ngay

Lúc đó người dùng sẽ phải gọi lệnh lại vừa phải xoá đi table và Tên point đã đánh

Tác giả nghiên cứu thêm có thể update table sau khi modify được k? (xem ra việc này hơi khó nhỉ!!!)

Cám ơn các lời nhận xét của bác trinhvqh. (do chủ quan của nguời viết nên 1 số chi tiết chưa hoàn chỉnh)

 

Gửi bác Lisp đã cập nhật theo các yêu cầu ở trên.

 

về ý kiến : khoảng cách Text trong Table so với đường ngang bên dưới (hơi sát quá)

- tương tự Text và dimension, CAD cung cấp TABLE STYLE để quản lý các đối tuợng Table. Do đó khoảng cách Text trong Table (do LISP tạo ra) chỉ là tạm thời, tùy theo chủ quan và quy định mỗi nguời (cty) sẽ tự tạo TABLE STYLE theo ý mình.

 

Quản lý đối tuợng CAD theo các xì-tin (Style) cũng đuợc xem là một "PRỒ" chứ nhỉ ?! :(

(defun c:Pid(/ cen doc i h height lst msp ov pt row str stt tblobj vl width x y) ;Point ID out
;;  By : Gia Bach, Copyrightゥ December 2009                    ;;
;;  Contact : gia_bach @  www.CadViet.com                      ;;
 (if (> (atof (substr (getvar "ACADVER") 1 4)) 16.0) (progn
 (princ "\nChon cac POINT de xuat ra Bang toa do :")
 (if (ssget '((0 . "POINT")))
   (progn
     (vl-load-com)
     (setq doc (vla-get-ActiveDocument (vlax-get-Acad-Object))
    msp (vla-get-modelspace doc))
     (vlax-for e (vla-get-ActiveSelectionSet doc)
(setq cen (vlax-safearray->list (variant-value (vla-get-Coordinates e)))
      lst (cons (list e cen )lst))
);vlax-for
     (setq lst (vl-sort lst '(lambda (x y) (or	(< (car (cadr x)) (car (cadr y)));Check X
					(and (> (cadr (cadr x)) (cadr (cadr y)));Check Y
					     (= (car (cadr x)) (car (cadr y)));Equal X
					     )	) ) )
    str (cadr (last lst))
    lst (append (mapcar 'car lst) ) )      
     (setq vl '("dimzin" "cmdecho")    ; Sys Var list  
    ov  (mapcar 'getvar vl))    ; Get Old values
     (mapcar 'setvar vl '(0 0))
     (or *h* (setq *h* 175))
     (initget 6)
     (setq h (getreal (strcat "\nChieu cao chu <" (rtos *h*) "> :")))
     (if h (setq *h* h) (setq h *h*) )
     (if (> (car str)(cadr str) )
(setq str (car str))
(setq str (cadr str)))
     (setq width (* 2(TxtWidth (rtos str) h msp))
    width1 (* 2 (TxtWidth "STT" h msp))
    height (* 2 h))
     (if (> h 3)
(setq width (* (fix (/ width 10))10)
      width1 (* (fix (/ width1 10))10)
      height (* (fix (/ height 5))5)))
     (setq i 1
    row 2
    pt (getpoint "\nDiem dat Bang :")
    TblObj (vla-addtable msp (vlax-3d-point pt) (+ (length lst) 2) 3 height width))
     (vla-put-vertcellmargin TblObj (/ h 4))
     (vla-SetColumnWidth TblObj 0 width1)
     (mapcar '(lambda (x)(vla-setTextHeight TblObj x h))
      (list acTitleRow acHeaderRow acDataRow) )
     (mapcar '(lambda (x)(vla-setAlignment TblObj x 8))
      (list acTitleRow acHeaderRow acDataRow))
     (vla-setText TblObj 0 0 "Bang toa do")
     (vla-setText TblObj 1 0 "STT")
     (vla-setText TblObj 1 1 "X")
     (vla-setText TblObj 1 2 "Y")
     (foreach e lst
(setq stt (itoa i)
      pt (vlax-safearray->list (variant-value (vla-get-Coordinates e)))
      obj_id (rtos (vla-get-objectid e))) 
(vla-AddText msp stt (vlax-3d-point (polar pt (/ pi 4) (/ h 4))) h)
(vla-setText TblObj row 0 stt)
(vla-setText TblObj row 1 (strcat "%<\\AcObjProp Object(%<\\_ObjId " obj_id ">%).Coordinates \\f \"%lu6%pt1\">%"))
(vla-setText TblObj row 2 (strcat "%<\\AcObjProp Object(%<\\_ObjId " obj_id ">%).Coordinates \\f \"%lu6%pt2\">%"))
(setq row (1+ row) i (1+ i))
)
     (vlax-release-object TblObj)
     (mapcar 'setvar vl ov)                     ;reset Sys Vars
     (princ)      
     )
   )
 )
 (alert "\nPhien ban Cad cua ban khong ho tro tao Bang (TABLE)")
 )
 )

(defun TxtWidth (val h msp / txt minp maxp)
 (setq	txt (vla-AddText msp val (vlax-3d-point '(0 0 0)) h))
 (vla-getBoundingBox txt 'minp 'maxp )
 (vla-Erase txt)
 (-(car(vlax-safearray->list maxp))(car(vlax-safearray->list minp)))
 )

  • Vote tăng 2

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

mấy anh giúp em viết lisp về đồ thị đường xicloit và đồ thị đường thân khai cái ,em đag rất cần mong các anh giúp đỡ,thanks mấy anh 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
Chào bạn ohay102,

Bạn có thể post một file bản vẽ dwg mẫu định làm và file hiển thị kết quả mong muốn được không? Ví mình không phải có chuyên môn như bạn nên việc tạo ra một bản vẽ mẫu sợ không đúng với cái bạn cần.

Yêu cầu của bạn theo mình là lisp có thể giải quyết được bạn ạ.

Rất cảm ơn bác binh đã quan tâm, đây là file mẫu nhờ bác giúp http://www.mediafire.com/?newwzddamzm

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
Chào bác Tue_NV,

Đúng như bác nói, vì mình chỉ học mót từ Help nên kiến thức nó lôm côm lắm, có cái mình hiểu đúng nhưng cũng có cái mình hiểu sai, vì vậy mình mới post cái bản gốc tiếng Anh lên để mọi người xem giùm.

Mình cũng đã thử cái associated list với nhiều hơn hai phần tử thì không được mà chả hiểu tại sao. Theo bản gốc tiếng anh thì định nghĩa của associated list chỉ cần có 1 phần tử tương tác (association) và một dữ lịêu tương tác (the data) được ngăn cách bởi dấu chấm (dotted pair). Nhưng cái dữ liệu này ra sao thì mình chưa rõ lắm. Nó có thể là một list hay không (tức là nhiều phần tử đó)????

Cũng theo định nghĩa về hàm assoc thì cái list mà mình tìm kiếm trong đó (alist ) là một association list , nó có phải là associated list hay không ???

Hề hề hề, cái dốt nó nằm ở chỗ này bác ạ, vì thế mình mới hiểu nó lôm côm, mong bác đừng giận.

Rất cám ơn bác đã chỉ cho mình những chỗ mà mình còn đang ngớ ngẩn bác à.

Thực tế trong quá trình mót , mình copy của mọi người là nhiều chứ còn hiểu cho thật cặn kẽ thì chưa nên cái sai sót là tất yếu. Đó cũng là lý do để mình tham gia vào topic này hòng mót được nhiều hơn mà bác. Đừng giận mình khi mình có những cái sai ngớ ngẫn như vậy.

Chào bác và chúc bác luôn mạnh khỏe.

 

 

Mình rất cảm ơn mọi người đã giúp đỡ nhiệt thành như vậy! Ai chả có những sai sót, nhưng quan trọng nhất là biết sửa những sai sót như vậy là mới tốt! Diễn đàn là nơi mọi người học hỏi và giao lưu, và đúc rút kinh nghiệm cho bản thân mình! mình thấy diễn đàn này rất hay cho những ai đam mê lập trình autolisp đó! Chúc mọi người thành công và vui vẻ trong dịp năm mới!

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

Chào bác gia_bach và anh em trên diến đàn!

Em tham gia vào diễn đàn nhưng chỉ đọc lips của các bác thôi, chứ em chẳng biết viết. Thấy bác gia_bach và mọi người rất đỉnh cao trong công nghệ này, nên em nhờ bác và anh em viết giúp em 1 lips có nội dung như sau: Em làm san nền, thể hiện khối lượng bằng 1 vòng tròn có text bên trong. 1 ô san nền có thể có đến hàng mấy trăm vòng tròn như thế. Bây giờ em muốn quay tất cả các đối tượng đi 1 góc, nhưng quay tại chính tâm của mỗi vòng tròn đó. Mong bác và anh em giúp đỡ, vì làm tay vo nên vất vả quá. Xinh chân thành cảm ơn bác và mọi người!

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
Chào bác bach_gia và anh em trên diến đàn!

Em tham gia vào diễn đàn nhưng chỉ đọc lips của các bác thôi, chứ em chẳng biết viết. Thấy bác bach_gia và mọi người rất đỉnh cao trong công nghệ này, nên em nhờ bác viết giúp em 1 lips có nội dung như sau: Em làm san nền, thể hiện khối lượng bằng 1 vòng tròn có text bên trong. 1 ô san nền có thể có đến hàng mấy trăm vòng tròn như thế. Bây giờ em muốn quay tất cả các đối tượng đi 1 góc, nhưng quay tại chính tâm của mỗi vòng tròn đó. Mong bác và anh em giúp đỡ, vì làm tay vo nên vất vả quá. Xinh chân thành cảm ơn bác và mọi người!

hề hề ... ai là bác bach_gia thì giơ tay lên nào ...

chẳng lẽ lại là tui : gia_bach đây. gia_bach là nguời nuớc nào mà bị đảo lộn tên nhỉ ?

hay bạn là nguời ngoài nuớc ?

 

"em muốn quay tất cả các đối tượng đi 1 góc, nhưng quay tại chính tâm của mỗi vòng tròn đó."

có phải yêu cầu của bạn như sau : quay tất cả các đối tượng trong 1 vòng tròn 1 góc nào đó với tâm quay là tâm của vòng tròn đó?

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

Em xin lỗi vì viết lộn tên bác gia_bach.

Ý em là em có rất nhiều vòng tròn, trong mỗi vòng tròn lại có text. Giờ em muốn quay tất cả các vòng tròn ấy đồng thời cả text bên trong đó đi 1 góc, nhưng với tâm quay là tâm của các vòng tròn đó.( Quay tại chính tâm mỗi vòng tròn)

Em cảm ơn bác nhiều nhiều lắm

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
Em xin lỗi vì viết lộn tên bác gia_bach.

Ý em là em có rất nhiều vòng tròn, trong mỗi vòng tròn lại có text. Giờ em muốn quay tất cả các vòng tròn ấy đồng thời cả text bên trong đó đi 1 góc, nhưng với tâm quay là tâm của các vòng tròn đó.( Quay tại chính tâm mỗi vòng tròn)

Em cảm ơn bác nhiều nhiều lắm

vòng tròn quay quanh tâm của nó thì có khác gì lúc chưa quay ko? túm lại bạn chỉ cần quay text thôi sao ko dùng lệnh TORIENT đi.

  • Vote tăng 2

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
Rất cảm ơn bác binh đã quan tâm, đây là file mẫu nhờ bác giúp http://www.mediafire.com/?newwzddamzm

Chào bạn ohay102,

Rất tiếc là mình dùng cad2004 nên không mở được file bạn gửi. Bạn có thể gửi lại file ở dạng cad2004 được 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
mấy anh giúp em viết lisp về đồ thị đường xicloit và đồ thị đường thân khai cái ,em đag rất cần mong các anh giúp đỡ,thanks mấy anh nhiều

Chào bạn goku250908,

Cái lisp vẽ đồ thị đường xycloid thì trên diễn đàn đã có của bác SSG, bạn chịu khó tìm kiếm một chút sẽ thấy, ngoài ra còn có lisp vẽ đồ thị các hàm số của bác Nguyenhoanh. Nếu bạn có thể có hàm số của đường thân khai thì bạn có thể sử dụng lisp của bác Nguyen hoanh để vẽ ngon lành mà.

Cái lisp đó đây nè: http://www.cadviet.com/forum/index.php?showtopic=9238

Và đây là cái biên dạng răng cycloid của bác SSG:

http://www.cadviet.com/forum/index.php?sho...amp;#entry21095

Chúc bạn thành cô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
Mình có file cad mà sẽ gửi dưới đây rất muốn các bạn trong diễn đàn giúp đỡ. Mình muốn copy đối tượng với công sai n=1

http://www.cadviet.com/upfiles/2/new_block_9.dwg

Chào KTS dlong, yêu cầu này hình như bạn đã đăng 1 lần rồi thì phải, nó là đối tượng leader torence, chứ không phải block reference. dlong dùng lisp này thử, Thiep viết gần được 98%, lisp yêu cầu người dùng chọn gia số, số đầu tiên, Suffix [+/-], chiều cao text, người dùng pick 3 điểm để tạo 1 leader với text là torence. 2% còn lại chưa được là hình ảnh leader khi pick 3 điểm không hiện cùng thời khi pick. Lisp nó đây:

(defun c:addleader (/ Lpo ano po PntArr obj)
 (setq	ActDoc	(vla-get-ActiveDocument (vlax-get-acad-object))
*Model*	(vla-get-ModelSpace ActDoc)
Lpo nil
 )
 (setvar "osmode" 0)
 (setq	n     (getint "\nSo dau tien: ")
giaso (getint "\nGia so: ")
 )
 (setq	bit (cond (bit)
	  ("+")
    )
 )
 (initget "+ -")
 (setq	tmp (strcat "\nSuffix [+/-] <" bit ">: ")
bit    (cond ((getkword tmp))
	     (bit)
       )
 )
 (setq	hei (cond	(hei)
		(1)
	  )
 )
 (setq oldhei hei)
 (setq	hei (getreal (strcat "\nChon chieu cao chu <"
			   (rtos oldhei 2 1)
			   "> : "

		   )
	  )
 )
 (if (null hei)
   (setq hei oldhei)
 )
 (setq n (+ n giaso))
 (while (setq po (getpoint "\npick a point: "))
   (setq Lpo (append Lpo
	      (list (car po))
	      (list (cadr po))
	      (list (caddr po))
      )
   )
   (repeat 2
     (setq po (getpoint po "\nPick a point continuous: "))
     (setq Lpo	(append	Lpo
		(list (car po))
		(list (cadr po))
		(list (caddr po))
	)
     )
   )
   (setq PntArr (vlax-make-safearray
	   vlax-vbDouble
	   (cons 0 (1- (length Lpo)))
	 )
   )
   (setq str (strcat "%%v" (itoa n) bit "%%v%%v%%v%%v"))
   (vlax-safearray-fill PntArr Lpo)
   (setq obj (vla-AddTolerance
	*Model*
	str
	(vlax-3d-point po)
	(vlax-3d-point (list 1 0 0))
      )
   )
   (vla-put-TextHeight obj hei)
   (setq objle (vla-AddLeader *Model* PntArr obj acLineWithArrow))
   (vla-put-ArrowheadSize objle 1)
   (vla-put-VerticalTextPosition objle acAbove)
   (vla-put-ArrowheadType objle acArrowOpen)
   (setq n (+ n giaso))
   (setq Lpo nil)
 )
 (vla-put-Comments
   (vla-get-SummaryInfo ActDoc)
   (setq ok "Thank you for use addleader.lsp! THIEP 0918841230")
   )
 (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
Em xin lỗi vì viết lộn tên bác gia_bach.

Ý em là em có rất nhiều vòng tròn, trong mỗi vòng tròn lại có text. Giờ em muốn quay tất cả các vòng tròn ấy đồng thời cả text bên trong đó đi 1 góc, nhưng với tâm quay là tâm của các vòng tròn đó.( Quay tại chính tâm mỗi vòng tròn)

Em cảm ơn bác nhiều nhiều lắm

Chào bạn ngt266,

Yêu cầu này của bạn gần giống với yêu cầu của bạn muoild, bạn có thể tham khảo cái lisp mình đã gửi bạn muoild để xử lý cho yêu cầu của bạn nếu như bạn có cái vốn lưng lủng về lisp. Hãy mạnh dạn thử làm, rồi post lên mọi người sẽ giúp bạn hoàn thiện nó và bạn sẽ thu được một kết quả ngoài sự mong đợi của bạn.

Trường hợp bạn không thể tự chỉnh sửa cũng không sao, sau khi bạn ngấm cái lisp trên thì đọc cái lisp mới sẽ nhanh hơn nhiều bạn ạ. Mình sẽ tranh thủ lúc rảnh sửa lại cái lisp trên cho bạn.

Chúc bạn thành công

  • Vote tăng 2

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
Chào bạn ngt266,

Yêu cầu này của bạn gần giống với yêu cầu của bạn muoild,

.....................

Em xin lỗi vì viết lộn tên bác gia_bach.

Ý em là em có rất nhiều vòng tròn, trong mỗi vòng tròn lại có text. Giờ em muốn quay tất cả các vòng tròn ấy đồng thời cả text bên trong đó đi 1 góc, nhưng với tâm quay là tâm của các vòng tròn đó.( Quay tại chính tâm mỗi vòng tròn)

Em cảm ơn bác nhiều nhiều lắm

Hình như bác phamthanhbinh nhầm với yêu cầu của bạn khác ?!

Trên CadViet chưa có Lisp : quay tất cả các text bên trong vòng tròn 1 góc nào đó, với tâm quay là tâm của vòng tròn đó.

(không cần quay vòng tròn - vòng tròn quay đều quay mãi ... vẫn là .... vòng tròn)

Bạn thử Lisp này :

(defun c:rot(/ ang axss cen lst ov ss_txt vl);Rotate text in Circle
;;  By : Gia Bach, Copyrightゥ December 2009                      ;;
;;  Contact : gia_bach @  www.CadViet.com                        ;;
 (defun TraceCIRCLE (obj / sp ep inc pt ptlst)
   (setq sp 0
  ep (* 2 pi)
  inc (/ ep 72) )
   (while (< sp ep)
     (setq pt (vlax-curve-getPointAtParam obj sp)
    ptlst (cons pt ptlst)
    sp (+ inc sp)) )
   (reverse ptlst)
   )

 (vl-load-com)
 (setq vl '("osmode" "orthomode" "cmdecho")    ; Sys Var list
ov  (mapcar 'getvar vl))                ; Get Old values
 (mapcar 'setvar vl '(0 0 0))
 (or *ang* (setq *ang* (/ pi 4)))
 (setq ang (getangle (strcat "\nNhap goc muon quay <" (angtos *ang*) ">: ")))
 (if ang (setq *ang* ang))
 (setq ang (/ (* *ang* 180.0) pi))
 (princ "\nChon vong tron de quay Text : ")
 (if (ssget (list (cons 0 "CIRCLE")))
   (vlax-for e (vla-get-activeSelectionSet (vla-get-activedocument(vlax-get-acad-object)))
     (setq lst (TraceCIRCLE e)
    cen (vlax-safearray->list (variant-value (vla-get-Center e))))
     (if (setq ss_txt (ssget "_cp" lst (list(cons 0  "TEXT") ) ) );chi chon Txt
(vl-cmdf "_rotate" ss_txt "" cen ang) )	) )
 (mapcar 'setvar vl ov) ; reset Sys Vars
 (princ)
 )

  • Vote tăng 3

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

Em cảm ơn bác gia_bach nhiều lắm. Lips bác viết cho em gần đúng với yêu cầu của em rồi. Tuy nhiên có một vấn đề là: Trong vòng tròn đó em thể hiện 2 dòng text, ngăn cách nhau bởi 1 đường line, đường line này là đối tượng của vòng tròn, có nghĩa là 1 vòng tròn được chia đôi bởi 1 đường line, trong vòng tròn đó có 2 dòng text , trên và dưới đường line, và em muốn quay cả luôn đường line đó cùng góc với text. Rất mong nhận được giúp đỡ từ bác và anh em trên diễn đàn

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
Khách
Chủ đề này bây giờ đã bị đóng lại để trả lời thêm.

×