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

Mọi người có cách gì để chuyển các cao độ trong bản vẽ này về dạng text dc ko?

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

http://www.mediafire.com/?d5a6ugv36cu839o

mọi người xem giúp các cao độ trong bản vẽ này như thế nào mà ko sửa được?

Chào bạn thuyengt,

Mình đã xem bản vẽ của bạn, các "text" cao độ của bản vẽ này thực chất là một ACAD_PROXY_ENTITY chứ không phải là một text. Nó bao gồm hai MTEXT và một vòng tròn bán kinh 0.05

Để sửa nó bạn cần lưu ý như sau: 1/- vị trí tâm vòng tròn chính là điểm trên mặt bằng mà bạn muốn ghi cao độ

2/- MTEXT phía trước chỉ phần nguyên của cao độ

3/- MTEXT phía sau chỉ phần thập phân của cao độ được làm tròn tới hai chữ số.

Bạn chỉ cần explore các ACAD_PROXY_ENTITY này là có thể sửa được.

Nếu mình nhớ không nhầm thì trên diễn đàn đã có lisp để làm cái việc chỉnh sữa này.

Do mình không phải dân giao thông hay trắc địa bản đồ gì cả nên không quan tâm lắm tới nó, bạn chịu khó tìm kiếm một chút sẽ thấy.

Khi dùng lisp, nếu thấy có gì bất cập hãy post lên mọi người sẽ giúp bạn.

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
http://www.mediafire.com/?d5a6ugv36cu839o

mọi người xem giúp các cao độ trong bản vẽ này như thế nào mà ko sửa được?

Chào bạn thuyengt,

Bạn thử sử dụng đoạn lisp dưới đây xem sao nhé. Lisp này giúp bạn đổi các đối tượng ACAD_PROXY_ENTITY thành các MTEXT và vẫn đặt tại vị trí của point.

Nếu có gì chưa phù hợp, hãy post lên mình sẽ xem lại.

Lisp này chỉ phù hợp với cấu trúc của Acad_proxy_entity trên bản vẽ bạn đã post. Nếu Acad_proxy_entity có cấu trúc khác sẽ không còn phù hợp nữa. Bạn hãy lưu ý nhé.

(defun c:acpr2t (/ ss n i en ssc pls p1 p2 ssp m j enp els strp lth str )
(vl-load-com)
(command "undo" "be")
(setq ss (ssget '((0 . "ACAD_PROXY_ENTITY"))))
(setq n (sslength ss)
        i 0)
(while (< i n)
      (setq en (ssname ss i)
              ssc (ssadd en)
              pls (acet-geom-ss-extents-fast ssc)
              p1 (car pls)
              p2 (cadr pls)
       )
      (command "explode" en)
      (setq ssp (ssget "w" p1 p2)
               m (sslength ssp)
               j 0
      )
      (while (< j m)
              (setq enp (ssname ssp j)
                      els (entget enp))
              (if (= (cdr (assoc 0 els)) "CIRCLE")
                 (progn
                 (setq p0 (cdr (assoc 10 els)))
                 (entdel enp)
                 )
              )
             (setq j (1+ j))
       )
      (setq enp (ssname ssp 0)
                     els (entget enp))
       (setq strp (cdr(assoc 1 els))
                lth (strlen strp)
                strp (substr strp (1- lth) 2))
       (entdel enp)
              (setq enp (ssname ssp 1)
                      els (entget enp))
                 (setq els (subst (cons 71 8) (assoc 71 els) els)
                         els (subst (cons 10 p0) (assoc 10 els) els)
                         str (cdr (assoc 1 els))
                         str (strcat str "." strp)
                        els (subst (cons 1 str) (assoc 1 els) els))
              (entmod els)

(setq i (1+ i))
)
(command "undo" "e")
(princ)
)

 

Sau khi đã chuyễn các đối tượng này thành MTEXT thì việc bạn muốn thay đổi nó hoàn toàn đơn giản đúng không????

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

Chào bạn thuyengt,

Bạn thử sử dụng đoạn lisp dưới đây xem sao nhé. Lisp này giúp bạn đổi các đối tượng ACAD_PROXY_ENTITY thành các MTEXT và vẫn đặt tại vị trí của point.

Nếu có gì chưa phù hợp, hãy post lên mình sẽ xem lại.

Lisp này chỉ phù hợp với cấu trúc của Acad_proxy_entity trên bản vẽ bạn đã post. Nếu Acad_proxy_entity có cấu trúc khác sẽ không còn phù hợp nữa. Bạn hãy lưu ý nhé.

 

Sau khi đã chuyễn các đối tượng này thành MTEXT thì việc bạn muốn thay đổi nó hoàn toàn đơn giản đúng không????

Chúc bạn vui.....

 

Sao mình sử dụng nó báo lỗi như thế này error: no function definition: ACET-GEOM-SS-EXTENTS-FAST

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ề,

Bạn đã cài express tools chưa????

Lisp của bạn rất hay nhưng khi mình dùng còn bị lỗi, không thể chuyển đổi một lượng proxy->text nhiều đc, hoặc một số vẫn chuyển đổi được nhưng một số thì không, bạn có thể sửa lại líp để khi chuyển từ proxy sang text thì cái nào được chuyển sẽ bị xóa proxy đi, như vậy mình sẽ dùng nhiều lần lisp của bạn và chuyển hết các đối tượng. 

 
Command: ACPR2T
 
Select objects: Specify opposite corner: 79 found
 
Select objects:  bad argument type: lselsetp nil; error: An error has occurred 
 
 
Command: ACPR2T
 
Select objects: Specify opposite corner: 79 found
 
Select objects:  bad argument type: lselsetp nil; error: An error has occurred 
 
 
Command: ACPR2T
 
Select objects: Specify opposite corner: 79 found
 
Select objects:  bad argument type: lselsetp nil; error: An error has occurred 
 
 
Command: ACPR2T
 
Select objects: Specify opposite corner: 79 found
 
Select objects:  bad argument type: lselsetp nil; error: An error has occurred 

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ó 1 cách hay nhất là bạn gởi bản vẽ "sự cố" ấy lên để bác PTB test, may ra sửa lisp được, chứ không thấy mặt mũi thì e khó.

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ề,

File thì có thấy nhưng chả thấy có đối tượng  ACAD_PROXY_ENTITY. Vậy nên chịu thua rồi.

Layon lên và đối tượng proxy là cao độ địa hình mà 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

Chào bạn thuyengt,

Bạn thử sử dụng đoạn lisp dưới đây xem sao nhé. Lisp này giúp bạn đổi các đối tượng ACAD_PROXY_ENTITY thành các MTEXT và vẫn đặt tại vị trí của point.

Nếu có gì chưa phù hợp, hãy post lên mình sẽ xem lại.

Lisp này chỉ phù hợp với cấu trúc của Acad_proxy_entity trên bản vẽ bạn đã post. Nếu Acad_proxy_entity có cấu trúc khác sẽ không còn phù hợp nữa. Bạn hãy lưu ý nhé.

 

(defun c:acpr2t (/ ss n i en ssc pls p1 p2 ssp m j enp els strp lth str )
(vl-load-com)
(command "undo" "be")
(setq ss (ssget '((0 . "ACAD_PROXY_ENTITY"))))
(setq n (sslength ss)
i 0)
(while (< i n)
(setq en (ssname ss i)
ssc (ssadd en)
pls (acet-geom-ss-extents-fast ssc)
p1 (car pls)
p2 (cadr pls)
)
(command "explode" en)
(setq ssp (ssget "w" p1 p2)
m (sslength ssp)
j 0
)
(while (< j m)
(setq enp (ssname ssp j)
els (entget enp))
(if (= (cdr (assoc 0 els)) "CIRCLE")
(progn
(setq p0 (cdr (assoc 10 els)))
(entdel enp)
)
)
(setq j (1+ j))
)
(setq enp (ssname ssp 0)
els (entget enp))
(setq strp (cdr(assoc 1 els))
lth (strlen strp)
strp (substr strp (1- lth) 2))
(entdel enp)
(setq enp (ssname ssp 1)
els (entget enp))
(setq els (subst (cons 71 8) (assoc 71 els) els)
els (subst (cons 10 p0) (assoc 10 els) els)
str (cdr (assoc 1 els))
str (strcat str "." strp)
els (subst (cons 1 str) (assoc 1 els) els))
(entmod els)

(setq i (1+ i))
)
(command "undo" "e")
(princ)
)

Sau khi đã chuyễn các đối tượng này thành MTEXT thì việc bạn muốn thay đổi nó hoàn toàn đơn giản đúng không????

Chúc bạn vui.....

Cái này rất hay!cảm ơn pro!nhưng cho mình hỏi mỗi lần dùng lệnh chỉ chọn được 1 đối tượng không thể quét hết cùng lúc được ak?thứ 2 là những điểm có độ cao dưới 0 ví dụ như 0,45 thì nó nhẩy thành 45,45!mong sự giúp đỡ của pro!

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

Ai bảo với bạn là chỉ chọn được 1 đối tượng? Bạn thử chọn nhiều hơn chưa? 

Mình chọn nhiều đối tượng rồi!mà chỉ được 1 cái!cư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

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  

×