Đến nội dung


Hình ảnh
- - - - -

Làm sao để xoay trục 180 độ mà text không bị ngược?


  • Please log in to reply
28 replies to this topic

#21 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 22 January 2015 - 09:59 AM

Bạn thử cái này.

 
(defun c:qq( / get-x get-y oce xp yp rwc )
(setq oce (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setvar "luprec" 4)
(main)
(setvar "cmdecho" oce)
)
 
;;;----------------------------- Leader Placement Routine ---------------------
;;; Here is where the leaders are actually written to the database
;;; based upon the value of coordinates passed from module "MAIN" .
;;; Null points are ignored.
 
(defun do_put_leader( xyp / en eg)
(setq en (entlast)) 
(command "_.leader" rwc pause "" xyp "") 
(while (setq en (entnext en))
(if (= "MTEXT" (cdr (assoc 0 (entget en))))
(setq eg (entget en)
eg (entmod (subst (cons 210 '(0 0 1)) (assoc 210 eg) eg))) 
 )
)
)
 
;;;----------------------------- xyz coordinate breakdown ----------------------
;;; This routine accepts a point from the calling function and breaks it down
;;; into X,Y values.
 
(defun get_xyz ( pt )
 (strcat "(" (rtos (* 0.001 (car pt)) 2 3) ";" (rtos (* 0.001 (cadr pt)) 2 3) ")"))
 
 
;;;-------------------Secondary main module------------------------------------
;;; Accepts the user input and allows the user to select many objects in
;;; succession.
 
(defun main()
(setq olddim (getvar "dimstyle") 
a (getreal "\n Input Text Height for Annotation : <2.5> "))
(if (null a) (setq a 2.5))
(setvar "dimtxt" a)
 
(while (setq rwc (getpoint "\nSelect point: "))
(do_put_leader (get_xyz rwc))
)
(command "dimstyle" "restore" olddim)
)
 

  • 1

#22 phanthanh536

phanthanh536

    biết vẽ circle

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

Đã gửi 22 January 2015 - 10:12 AM

File của bạn đây:

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

 

Có điều mình muốn nói thêm ở đây:

Cái máy toàn đạc của bạn định nghĩa các trục hơi bị lạ đấy, thường thì mình thấy mặc định hê tọa độ của nó là NE (Bắc - Đông) mà

chuẩn rồi đó bác, bác làm thế nào chỉ giúp e với ạ


  • 0

#23 phanthanh536

phanthanh536

    biết vẽ circle

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

Đã gửi 22 January 2015 - 10:18 AM

Bạn thử cái này.

 

 
(defun c:qq( / get-x get-y oce xp yp rwc )
(setq oce (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setvar "luprec" 4)
(main)
(setvar "cmdecho" oce)
)
 
;;;----------------------------- Leader Placement Routine ---------------------
;;; Here is where the leaders are actually written to the database
;;; based upon the value of coordinates passed from module "MAIN" .
;;; Null points are ignored.
 
(defun do_put_leader( xyp / en eg)
(setq en (entlast)) 
(command "_.leader" rwc pause "" xyp "") 
(while (setq en (entnext en))
(if (= "MTEXT" (cdr (assoc 0 (entget en))))
(setq eg (entget en)
eg (entmod (subst (cons 210 '(0 0 1)) (assoc 210 eg) eg))) 
 )
)
)
 
;;;----------------------------- xyz coordinate breakdown ----------------------
;;; This routine accepts a point from the calling function and breaks it down
;;; into X,Y values.
 
(defun get_xyz ( pt )
 (strcat "(" (rtos (* 0.001 (car pt)) 2 3) ";" (rtos (* 0.001 (cadr pt)) 2 3) ")"))
 
 
;;;-------------------Secondary main module------------------------------------
;;; Accepts the user input and allows the user to select many objects in
;;; succession.
 
(defun main()
(setq olddim (getvar "dimstyle") 
a (getreal "\n Input Text Height for Annotation : <2.5> "))
(if (null a) (setq a 2.5))
(setvar "dimtxt" a)
 
(while (setq rwc (getpoint "\nSelect point: "))
(do_put_leader (get_xyz rwc))
)
(command "dimstyle" "restore" olddim)
)
 

chuẩn cơm mẹ nấu rồi bác ạ. e cám ơn bác rất nhiều ak. mà bác có ở hà nội ko vậy


  • 0

#24 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1431 Bài viết
Điểm đánh giá: 1425 (rất tốt)

Đã gửi 22 January 2015 - 10:28 AM

Bạn thử cái này.

chuẩn cơm mẹ nấu rồi bác ạ. e cám ơn bác rất nhiều ak. mà bác có ở hà nội ko vậy

Bác Tot không ở Hà nội, nhưng nếu bạn gửi vé máy bay khứ hồi HCM-HN, tui nghĩ là bác í sẽ ra ...

 

Tạm thời bạn cứ click Like là được.


  • 1

#25 phanthanh536

phanthanh536

    biết vẽ circle

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

Đã gửi 22 January 2015 - 12:44 PM

E ko có ý đòi hỏi nhiều nhưng e thấy nó cũng hơi bất tiện, bác có thể giúp e cho chót đc ko ạ, khi e pick ra tọa độ cái đường line nó nhảy ra ngoài bác ak126423_111_1.png


  • 0

#26 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 22 January 2015 - 01:46 PM

 Thử cái này nữa.

 
(defun c:qq( / get-x get-y oce xp yp rwc )
(setq oce (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setvar "luprec" 4)
(main)
(setvar "cmdecho" oce)
)
 
;;;----------------------------- Leader Placement Routine ---------------------
;;; Here is where the leaders are actually written to the database
;;; based upon the value of coordinates passed from module "MAIN" .
;;; Null points are ignored.
 
(defun do_put_leader( xyp / en eg)
(setq en (entlast)) 
(command "_.leader" rwc pause "" xyp "") 
(while (setq en (entnext en))
(if (= "MTEXT" (cdr (assoc 0 (entget en))))
(progn 
 (setq eg (entget en)
eg (subst (cons 210 '(0 0 1)) (assoc 210 eg) eg)
eg (subst (cons 71 7) (assoc 71 eg) eg)
)
(entmod eg)
)
 )
)
)
 
;;;----------------------------- xyz coordinate breakdown ----------------------
;;; This routine accepts a point from the calling function and breaks it down
;;; into X,Y values.
 
(defun get_xyz ( pt )
 (strcat "(" (rtos (* 0.001 (car pt)) 2 3) ";" (rtos (* 0.001 (cadr pt)) 2 3) ")"))
 
 
;;;-------------------Secondary main module------------------------------------
;;; Accepts the user input and allows the user to select many objects in
;;; succession.
 
(defun main()
(setq olddim (getvar "dimstyle") 
a (getreal "\n Input Text Height for Annotation : <2.5> "))
(if (null a) (setq a 2.5))
(setvar "dimtxt" a)
 
(while (setq rwc (getpoint "\nSelect point: "))
(do_put_leader (get_xyz rwc))
)
(command "dimstyle" "restore" olddim)
)
 

  • 1

#27 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 22 January 2015 - 03:18 PM

Cái này đúng hơn.

(defun c:qq( / get-x get-y oce xp yp rwc )
(setq oce (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setvar "luprec" 4)
(main)
(setvar "cmdecho" oce)
)
 
;;;----------------------------- xyz coordinate breakdown ----------------------
;;; This routine accepts a point from the calling function and breaks it down
;;; into X,Y values.
 
(defun get_xyz ( pt )
 (strcat "(" (rtos (* 0.001 (car pt)) 2 3) ";" (rtos (* 0.001 (cadr pt)) 2 3) ")"))
 
 
;;;-------------------Secondary main module------------------------------------
;;; Accepts the user input and allows the user to select many objects in
;;; succession.
 
(defun main()
(setvar 'dimzin 8)
(setq olddim (getvar "dimstyle") 
a (getreal (strcat "\n Input Text Height for Annotation <"
(if txtheight (rtos txtheight) (rtos (setq txtheight 2.5))) "> :"))
)
(if a (setq txtheight a))
(setvar 'dimtxt txtheight)
 
(while (setq rwc (getpoint "\nSelect point: "))
(setq xyp (get_xyz rwc)
rwc (trans rwc 1 0))
(command "ucs" "w")
 (command "_.leader" rwc pause "" xyp "")
 (command "ucs" "p")
)
(command "dimstyle" "restore" olddim)
)
 

  • 1

#28 phanthanh536

phanthanh536

    biết vẽ circle

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

Đã gửi 22 January 2015 - 05:15 PM

bác Tot ơi e không hiểu tại sao lúc sang cái lip bác viết cho e trước ý. rõ ràng là ngon rồi mà chả hiểu sao giờ nó trở về như cũ rồi, e sợ nhầm file nên e download lại về nhưng vẫn ko đc. bác xem giúp e với ak


  • 0

#29 phanthanh536

phanthanh536

    biết vẽ circle

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

Đã gửi 22 January 2015 - 05:21 PM

Cái này đúng hơn.

 

(defun c:qq( / get-x get-y oce xp yp rwc )
(setq oce (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setvar "luprec" 4)
(main)
(setvar "cmdecho" oce)
)
 
;;;----------------------------- xyz coordinate breakdown ----------------------
;;; This routine accepts a point from the calling function and breaks it down
;;; into X,Y values.
 
(defun get_xyz ( pt )
 (strcat "(" (rtos (* 0.001 (car pt)) 2 3) ";" (rtos (* 0.001 (cadr pt)) 2 3) ")"))
 
 
;;;-------------------Secondary main module------------------------------------
;;; Accepts the user input and allows the user to select many objects in
;;; succession.
 
(defun main()
(setvar 'dimzin 8)
(setq olddim (getvar "dimstyle") 
a (getreal (strcat "\n Input Text Height for Annotation <"
(if txtheight (rtos txtheight) (rtos (setq txtheight 2.5))) "> :"))
)
(if a (setq txtheight a))
(setvar 'dimtxt txtheight)
 
(while (setq rwc (getpoint "\nSelect point: "))
(setq xyp (get_xyz rwc)
rwc (trans rwc 1 0))
(command "ucs" "w")
 (command "_.leader" rwc pause "" xyp "")
 (command "ucs" "p")
)
(command "dimstyle" "restore" olddim)
)
 

OK rồi bác ạ. e ngàn lần cám ơn bác, cơ mà cho e hỏi tại sao e ko bấm đc nút like nữa ak. 


  • 0