Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
nhocbabi

nhập các text đi theo các block để làm ký hiệu

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

Mình đang phải nhập các text đi theo các block để làm ký hiệu cho block ấy. Mà các block này nằm dọc trên đường pline. Bạn có cách nào để làm việc này mà mất ít thời gian không. Chỉ giúp mình với, cám ơn bạn 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
Mình đang phải nhập các text đi theo các block để làm ký hiệu cho block ấy. Mà các block này nằm dọc trên đường polyline. Bạn có cách nào để làm việc này mà mất ít thời gian không. Chỉ giúp mình với, cám ơn bạn nhiều!

Chưa hiểu mục đích và khó khăn trong công việc của bạn.

 

Bạn hãy nói rõ hơn, nên có file dwg minh họa.

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ưa hiểu mục đích và khó khăn trong công việc của bạn.

 

Bạn hãy nói rõ hơn, nên có file dwg minh họa.

Đây là bản vẽ mình đang làm. Các block này là các đèn, và việc của mình là phải đánh số thứ tự cho các đèn ấy. Mình ko biết phải làm thế nào cho nhanh cả, bạn có cách nào không chỉ mình với!

http://www.cadviet.com/upfiles/banve.jpg

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
Đây là bản vẽ mình đang làm. Các block này là các đèn, và việc của mình là phải đánh số thứ tự cho các đèn ấy. Mình ko biết phải làm thế nào cho nhanh cả, bạn có cách nào không chỉ mình với!

http://www.cadviet.com/upfiles/banve.bmp

Xin hỏi thêm bạn các thông tin:

 

- Toạ độ của TEXT có liên quan như thế nào với toạ độ của block?

- giá trị của text theo quy luật nào?

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
Đây là bản vẽ mình đang làm. Các block này là các đèn, và việc của mình là phải đánh số thứ tự cho các đèn ấy. Mình ko biết phải làm thế nào cho nhanh cả, bạn có cách nào không chỉ mình với!

http://www.cadviet.com/upfiles/banve.bmp

Sao bạn không dùng Tcount xem ?

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
Xin hỏi thêm bạn các thông tin:

 

- Toạ độ của TEXT có liên quan như thế nào với toạ độ của block?

- giá trị của text theo quy luật nào?

- Thực ra toạ độ của Text so với toạ độ của block ko cần chính xác lắm. Nhưng để có thể mặc định cho một loạt các text khác nhau thì mình định sẽ xác định toạ độ của text như sau:

http://www.cadviet.com/upfiles/toadotext.jpg

- Còn giá trị của block sẽ tăng dần theo dãy block bố trí trên đường pline. Ví dụ đèn đầu tiên là 2/1, các đèn tiếp theo là 2/2, 2/3...(Hiện tại mình đang dùng lệnh tcount để làm việc này)

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
- Thực ra toạ độ của Text so với toạ độ của block ko cần chính xác lắm. Nhưng để có thể mặc định cho một loạt các text khác nhau thì mình định sẽ xác định toạ độ của text như sau:

http://www.cadviet.com/upfiles/toadotext.bmp

- Còn giá trị của block sẽ tăng dần theo dãy block bố trí trên đường pline. Ví dụ đèn đầu tiên là 2/1, các đèn tiếp theo là 2/2, 2/3...(Hiện tại mình đang dùng lệnh tcount để làm việc này)

Bạn đang dùng TCOUNT thì gặp khó khăn gì không?

 

bạn mong muốn lisp mới hơn TCOUNT ở điểm gì?

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ạn đang dùng TCOUNT thì gặp khó khăn gì không?

 

bạn mong muốn lisp mới hơn TCOUNT ở điểm gì?

Khó khăn của mình không phải là ở lệnh tcount mà ở việc phải đi copy từng text một đến các vị trí của block ấy. Có đến khoảng 40block nằm trên một đường pline. Nếu dùng lệnh copy các text thì sẽ mất nhiều thời gian.

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ó khăn của mình không phải là ở lệnh tcount mà ở việc phải đi copy từng text một đến các vị trí của block ấy. Có đến khoảng 40block nằm trên một đường pline. Nếu dùng lệnh copy các text thì sẽ mất nhiều thời gian.

 

Đề nghị bạn (các bạn) khi post ảnh lên diễn đàn thì hãy dùng đuôi *.jpg cho nhanh, dễ đọc, up cũng nhanh

Bạn up cái duoi bmp làm tôi chăng muốn đọc! (không đọc nổi, lâu quá)

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
Đề nghị bạn (các bạn) khi post ảnh lên diễn đàn thì hãy dùng đuôi *.jpg cho nhanh, dễ đọc, up cũng nhanh

Bạn up cái duoi bmp làm tôi chăng muốn đọc! (không đọc nổi, lâu quá)

Sorry mọi người. Mình vội quá nên ko để ý. Mình đã up lại ảnh rồi đấy! Bạn xem lại giúp mình nhé! Thank

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ó khăn của mình không phải là ở lệnh tcount mà ở việc phải đi copy từng text một đến các vị trí của block ấy. Có đến khoảng 40block nằm trên một đường pline. Nếu dùng lệnh copy các text thì sẽ mất nhiều thời gian.

Hãy sử dụng tính năng của block, cộng thêm một chút sáng tạo trong cách dùng. Phương án giải quyết như sau:

Cách 1: dùng Tcount

- Gọi tên block bóng đèn là A, bạn hãy tạo một block với tên B chứa block A + text đánh số cột

- Thay vì chèn block A như thường lệ, hãy chèn block B

- Sau khi chèn xong, hãy chọn tất cả các block B và explode. Chỉnh sửa tất cả các text tên cột cho đúng ý (nên dùng filter hoặc ssx để chỉnh cho đồng bộ).

- Bạn đã có các text như ý để sử dụng với Tcount

 

Cách 2: dùng lisp với thuật toán:

- Chọn text đầu tiên

- Chọn điểm gốc copy

- Chọn điểm chèn cột tiếp theo (+ options (đánh số tự động hay thay đổi)

Đây là lisp đánh số cột điện tôi sưu tầm và sửa lại, bạn có thể tham khảo:

**Danh so cot den:
;;;=====Increasing copy=====
(defun c:dsc (/ ang x y ent tg tg1tg2 num_r num_c num_inc dis_r dis_c num top idnum
              dx dy bottom inc tgnum attr attr_ent t_base b_base locat value 
              deci stnum loca1 loca2 tt count inctg inctg1 bpoint mx my nx ny bx by)
 (setq idnum 0)
 (while (/= idnum 1)
   (setq ent (entsel "\nHay lua chon so ma ban muon copy : "))
   (if ent
     (progn
       (setq e (car ent))
       (setq tg (entget e))
       (if (= (cdr (assoc 0 tg)) "TEXT") (setq idnum 1))
     )
     (princ)
   )
 )

 (setq num_inc (getreal "\nHay nhap he so tang giam <1> : "))
 (if (= num_inc nil) (setq num_inc 1))

 (setq bpoint (getpoint "\nChon diem goc de copy : "))
 (setq x (car bpoint))
 (setq y (car(cdr bpoint)))

 (if (and (= (cdr (assoc 72 tg)) 0) (= (cdr (assoc 73 tg)) 0))
   (progn
     (setq bx (car (cdr (assoc 10 tg))))
     (setq by (car (cdr (cdr (assoc 10 tg)))))
   )
   (progn
     (setq bx (car (cdr (assoc 11 tg))))
     (setq by (car (cdr (cdr (assoc 11 tg)))))
   )
 )

 (setq attr (cdr tg))	;attr chua cac thuoc tinh cua Entity nguon
 (setq tg (cdr (assoc 1 tg)))
 (setq inc 0)
 (setq tg1 "")
 (setq t_base "")
 (setq b_base "")
 (setq idnum 0)
 (setq top 0)
 (setq bottom 0)
 (setq stnum "") 
 (setq deci 0) 
 (repeat  (strlen tg)    
   (if  (or (and (> (ascii (setq tgnum (substr tg (- (strlen tg) inc) 1))) 47) 
                   (< (ascii (setq tgnum (substr tg (- (strlen tg) inc) 1))) 58))
                   (= (ascii (setq tgnum (substr tg (- (strlen tg) inc) 1))) 32)
                   (= (ascii (setq tgnum (substr tg (- (strlen tg) inc) 1))) 46))
     (progn  
         (if  (= (ascii (setq tgnum (substr tg (- (strlen tg) inc) 1))) 46) (setq deci inc))      
         (if (= inc 0)
            (progn
              (setq idnum 1)
              (if  (= (ascii (setq tgnum (substr tg (- (strlen tg) inc) 1))) 46) 
                 (setq b_base (strcat "." b_base)))               
            )
         )
         (if (= bottom 1) (progn (setq bottom 0) (setq idnum 1) (setq top 1)))
         (if (and (= idnum 0) (= top 1)) (setq t_base (strcat tgnum t_base)))
         (if (= idnum 1) 
           (progn    
             (if (and (= tgnum "0") (> inc 0)) (setq stnum (strcat stnum "0")) (setq stnum ""))
             (setq tg1 (strcat tgnum tg1))
           )
         )
     )
     (if (= inc 0) 
       (progn
         (setq b_base (strcat tgnum b_base))
         (setq bottom 1)
       )
       (if (= bottom 1)
         (setq b_base (strcat tgnum b_base))
         (progn
           (setq top 1)
           (setq t_base (strcat tgnum t_base))
           (if (= idnum 1) (setq idnum 0))
         )
       )
     )
   )
   (setq inc (+ inc 1))
 )

 (if (= tg1 "") (exit))
 (setq num (atof tg1))
 (setq count 1)

 (while (setq bpoint (getpoint "\nChon diem copy tiep theo : "))
    (setq num (+ num num_inc))
   (if (>= (strlen b_base) 3)
     (cond
   ( (or (= "A" (strcase (substr b_base 2 1))
     )
     (= "B" (strcase (substr b_base 2 1))
	)
  )
    (setq b_base (strcat (substr b_base 1 1) (chr (1+ (ascii (substr b_base 2 1))) ) (substr b_base 3)
		  )
   )
    )
   ((= "C" (strcase (substr b_base 2 1)))
(setq b_base (strcat (substr b_base 1 1) "A") )
)
   )
     (cond
   ( (or (= "A" (strcase (substr b_base 2 1))
     )
     (= "B" (strcase (substr b_base 2 1))
	)
  )
    (setq b_base (strcat (substr b_base 1 1) (chr (1+ (ascii (substr b_base 2 1))) ) (substr b_base 3)
		  )
   )
    )
   ((= "C" (strcase (substr b_base 2 1)))
(setq b_base (strcat (substr b_base 1 1) "A") )
)
   )
     )
    (setq value (strcat t_base (strcat stnum (rtos num 2 deci)) b_base))
    (setq nx (car bpoint))
    (setq ny (car(cdr bpoint)))
    (setq dx (- nx x))
    (setq dy (- ny y))
    (setq mx (car (getvar "ucsxdir")))
    (setq my (car (cdr (getvar "ucsxdir"))))
    (setq loca1 (+ bx (* mx dx)))
    (setq loca2 (+ by (* my dx)))
    (setq mx (car (getvar "ucsydir")))
    (setq my (car (cdr (getvar "ucsydir"))))
    (setq loca1 (+ loca1 (* mx dy)))
    (setq loca2 (+ loca2 (* my dy)))
    (setq attr_ent (subst (cons 1 value) (assoc 1 attr) attr))
    (if (and (= (cdr (assoc 72 attr_ent)) 0) (= (cdr (assoc 73 attr_ent)) 0))
      (setq attr_ent (subst (list 10 loca1 loca2 0) (assoc 10 attr_ent) attr_ent))
      (setq attr_ent (subst (list 11 loca1 loca2 0) (assoc 11 attr_ent) attr_ent))
    )
    (entmake attr_ent)
    (setq count (+ count 1))
 )	 ;end while
 (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
Hãy sử dụng tính năng của block, cộng thêm một chút sáng tạo trong cách dùng. Phương án giải quyết như sau:

Cách 1: dùng Tcount

- Gọi tên block bóng đèn là A, bạn hãy tạo một block với tên B chứa block A + text đánh số cột

- Thay vì chèn block A như thường lệ, hãy chèn block B

- Sau khi chèn xong, hãy chọn tất cả các block B và explode. Chỉnh sửa tất cả các text tên cột cho đúng ý (nên dùng filter hoặc ssx để chỉnh cho đồng bộ).

- Bạn đã có các text như ý để sử dụng với Tcount

 

Cách 2: dùng lisp với thuật toán:

- Chọn text đầu tiên

- Chọn điểm gốc copy

- Chọn điểm chèn cột tiếp theo (+ options (đánh số tự động hay thay đổi)

Đây là lisp đánh số cột điện tôi sưu tầm và sửa lại, bạn có thể tham khảo:

**Danh so cot den:
;;;=====Increasing copy=====
(defun c:dsc (/ ang x y ent tg tg1tg2 num_r num_c num_inc dis_r dis_c num top idnum
              dx dy bottom inc tgnum attr attr_ent t_base b_base locat value 
              deci stnum loca1 loca2 tt count inctg inctg1 bpoint mx my nx ny bx by)
 (setq idnum 0)
 (while (/= idnum 1)
   (setq ent (entsel "\nHay lua chon so ma ban muon copy : "))
   (if ent
     (progn
       (setq e (car ent))
       (setq tg (entget e))
       (if (= (cdr (assoc 0 tg)) "TEXT") (setq idnum 1))
     )
     (princ)
   )
 )

 (setq num_inc (getreal "\nHay nhap he so tang giam <1> : "))
 (if (= num_inc nil) (setq num_inc 1))

 (setq bpoint (getpoint "\nChon diem goc de copy : "))
 (setq x (car bpoint))
 (setq y (car(cdr bpoint)))

 (if (and (= (cdr (assoc 72 tg)) 0) (= (cdr (assoc 73 tg)) 0))
   (progn
     (setq bx (car (cdr (assoc 10 tg))))
     (setq by (car (cdr (cdr (assoc 10 tg)))))
   )
   (progn
     (setq bx (car (cdr (assoc 11 tg))))
     (setq by (car (cdr (cdr (assoc 11 tg)))))
   )
 )

 (setq attr (cdr tg))	;attr chua cac thuoc tinh cua Entity nguon
 (setq tg (cdr (assoc 1 tg)))
 (setq inc 0)
 (setq tg1 "")
 (setq t_base "")
 (setq b_base "")
 (setq idnum 0)
 (setq top 0)
 (setq bottom 0)
 (setq stnum "") 
 (setq deci 0) 
 (repeat  (strlen tg)    
   (if  (or (and (> (ascii (setq tgnum (substr tg (- (strlen tg) inc) 1))) 47) 
                   (< (ascii (setq tgnum (substr tg (- (strlen tg) inc) 1))) 58))
                   (= (ascii (setq tgnum (substr tg (- (strlen tg) inc) 1))) 32)
                   (= (ascii (setq tgnum (substr tg (- (strlen tg) inc) 1))) 46))
     (progn  
         (if  (= (ascii (setq tgnum (substr tg (- (strlen tg) inc) 1))) 46) (setq deci inc))      
         (if (= inc 0)
            (progn
              (setq idnum 1)
              (if  (= (ascii (setq tgnum (substr tg (- (strlen tg) inc) 1))) 46) 
                 (setq b_base (strcat "." b_base)))               
            )
         )
         (if (= bottom 1) (progn (setq bottom 0) (setq idnum 1) (setq top 1)))
         (if (and (= idnum 0) (= top 1)) (setq t_base (strcat tgnum t_base)))
         (if (= idnum 1) 
           (progn    
             (if (and (= tgnum "0") (> inc 0)) (setq stnum (strcat stnum "0")) (setq stnum ""))
             (setq tg1 (strcat tgnum tg1))
           )
         )
     )
     (if (= inc 0) 
       (progn
         (setq b_base (strcat tgnum b_base))
         (setq bottom 1)
       )
       (if (= bottom 1)
         (setq b_base (strcat tgnum b_base))
         (progn
           (setq top 1)
           (setq t_base (strcat tgnum t_base))
           (if (= idnum 1) (setq idnum 0))
         )
       )
     )
   )
   (setq inc (+ inc 1))
 )

 (if (= tg1 "") (exit))
 (setq num (atof tg1))
 (setq count 1)

 (while (setq bpoint (getpoint "\nChon diem copy tiep theo : "))
    (setq num (+ num num_inc))
   (if (>= (strlen b_base) 3)
     (cond
   ( (or (= "A" (strcase (substr b_base 2 1))
     )
     (= "B" (strcase (substr b_base 2 1))
	)
  )
    (setq b_base (strcat (substr b_base 1 1) (chr (1+ (ascii (substr b_base 2 1))) ) (substr b_base 3)
		  )
   )
    )
   ((= "C" (strcase (substr b_base 2 1)))
(setq b_base (strcat (substr b_base 1 1) "A") )
)
   )
     (cond
   ( (or (= "A" (strcase (substr b_base 2 1))
     )
     (= "B" (strcase (substr b_base 2 1))
	)
  )
    (setq b_base (strcat (substr b_base 1 1) (chr (1+ (ascii (substr b_base 2 1))) ) (substr b_base 3)
		  )
   )
    )
   ((= "C" (strcase (substr b_base 2 1)))
(setq b_base (strcat (substr b_base 1 1) "A") )
)
   )
     )
    (setq value (strcat t_base (strcat stnum (rtos num 2 deci)) b_base))
    (setq nx (car bpoint))
    (setq ny (car(cdr bpoint)))
    (setq dx (- nx x))
    (setq dy (- ny y))
    (setq mx (car (getvar "ucsxdir")))
    (setq my (car (cdr (getvar "ucsxdir"))))
    (setq loca1 (+ bx (* mx dx)))
    (setq loca2 (+ by (* my dx)))
    (setq mx (car (getvar "ucsydir")))
    (setq my (car (cdr (getvar "ucsydir"))))
    (setq loca1 (+ loca1 (* mx dy)))
    (setq loca2 (+ loca2 (* my dy)))
    (setq attr_ent (subst (cons 1 value) (assoc 1 attr) attr))
    (if (and (= (cdr (assoc 72 attr_ent)) 0) (= (cdr (assoc 73 attr_ent)) 0))
      (setq attr_ent (subst (list 10 loca1 loca2 0) (assoc 10 attr_ent) attr_ent))
      (setq attr_ent (subst (list 11 loca1 loca2 0) (assoc 11 attr_ent) attr_ent))
    )
    (entmake attr_ent)
    (setq count (+ count 1))
 )	 ;end while
 (princ)
)

Cám ơn bạn rất nhiều. Mình đang áp dụng cách thứ 2 của bạn. Cũng rất hay, không phải sử dụng tcount và không phải chỉnh sửa text. Mình không biết về cách viết lisp, chỉ biết sử dụng thôi :cheers: . Nhưng bạn cho mình mạo muội hỏi một chút nhé, liệu mình có thể phát triển đoạn lisp này lên để khi sử dụng mình chỉ việc thực hiện các thao tác sau:

- chọn block đầu tiên mình chèn text

- chọn toạ độ chèn tương đối của text so với toạ độ của block (chỉ xác định trong lần đầu tiên với block đầu tiên), có thể thông qua hình thức click chuột từ điểm A(trên block) đến điểm B(điểm chèn text)

- chọn hình thức tăng, giảm hay không đổi số thứ tự của text (như trong tcount ấy)

- cuối cùng sẽ chọn tất cả các block mà mình muốn chèn text

Kết quả là chương trình sẽ tự động chèn text vào các block mà không cần phải click chuột vào từng điểm chèn của block!

Hihi, trình bày lủng củng quá mà không biết mình có đòi hỏi quá không nhỉ :s_big:

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ỉ chi tiết cách làm được ko ah? Em làm như vậy rồi mà vẫn ko được :(

 

Hãy sử dụng tính năng của block, cộng thêm một chút sáng tạo trong cách dùng. Phương án giải quyết như sau:
Cách 1: dùng Tcount
- Gọi tên block bóng đèn là A, bạn hãy tạo một block với tên B chứa block A + text đánh số cột
- Thay vì chèn block A như thường lệ, hãy chèn block B
- Sau khi chèn xong, hãy chọn tất cả các block B và explode. Chỉnh sửa tất cả các text tên cột cho đúng ý (nên dùng filter hoặc ssx để chỉnh cho đồng bộ).
- Bạn đã có các text như ý để sử dụng với Tcount

Cách 2: dùng lisp với thuật toán:
- Chọn text đầu tiên
- Chọn điểm gốc copy
- Chọn điểm chèn cột tiếp theo (+ options (đánh số tự động hay thay đổi)
Đây là lisp đánh số cột điện tôi sưu tầm và sửa lại, bạn có thể tham khảo:


**Danh so cot den:;;;=====Increasing copy=====(defun c:dsc (/ ang x y ent tg tg1tg2 num_r num_c num_inc dis_r dis_c num top idnum               dx dy bottom inc tgnum attr attr_ent t_base b_base locat value                deci stnum loca1 loca2 tt count inctg inctg1 bpoint mx my nx ny bx by)  (setq idnum 0)  (while (/= idnum 1)    (setq ent (entsel "\nHay lua chon so ma ban muon copy : "))    (if ent      (progn        (setq e (car ent))        (setq tg (entget e))        (if (= (cdr (assoc 0 tg)) "TEXT") (setq idnum 1))      )      (princ)    )  )  (setq num_inc (getreal "\nHay nhap he so tang giam <1> : "))  (if (= num_inc nil) (setq num_inc 1))  (setq bpoint (getpoint "\nChon diem goc de copy : "))  (setq x (car bpoint))  (setq y (car(cdr bpoint)))  (if (and (= (cdr (assoc 72 tg)) 0) (= (cdr (assoc 73 tg)) 0))    (progn      (setq bx (car (cdr (assoc 10 tg))))      (setq by (car (cdr (cdr (assoc 10 tg)))))    )    (progn      (setq bx (car (cdr (assoc 11 tg))))      (setq by (car (cdr (cdr (assoc 11 tg)))))    )  )  (setq attr (cdr tg))	;attr chua cac thuoc tinh cua Entity nguon  (setq tg (cdr (assoc 1 tg)))  (setq inc 0)  (setq tg1 "")  (setq t_base "")  (setq b_base "")  (setq idnum 0)  (setq top 0)  (setq bottom 0)  (setq stnum "")   (setq deci 0)   (repeat  (strlen tg)        (if  (or (and (> (ascii (setq tgnum (substr tg (- (strlen tg) inc) 1))) 47)                     (< (ascii (setq tgnum (substr tg (- (strlen tg) inc) 1))) 58))                    (= (ascii (setq tgnum (substr tg (- (strlen tg) inc) 1))) 32)                    (= (ascii (setq tgnum (substr tg (- (strlen tg) inc) 1))) 46))      (progn            (if  (= (ascii (setq tgnum (substr tg (- (strlen tg) inc) 1))) 46) (setq deci inc))                (if (= inc 0)             (progn               (setq idnum 1)               (if  (= (ascii (setq tgnum (substr tg (- (strlen tg) inc) 1))) 46)                   (setq b_base (strcat "." b_base)))                            )          )          (if (= bottom 1) (progn (setq bottom 0) (setq idnum 1) (setq top 1)))          (if (and (= idnum 0) (= top 1)) (setq t_base (strcat tgnum t_base)))          (if (= idnum 1)             (progn                  (if (and (= tgnum "0") (> inc 0)) (setq stnum (strcat stnum "0")) (setq stnum ""))              (setq tg1 (strcat tgnum tg1))            )          )      )      (if (= inc 0)         (progn          (setq b_base (strcat tgnum b_base))          (setq bottom 1)        )        (if (= bottom 1)          (setq b_base (strcat tgnum b_base))          (progn            (setq top 1)            (setq t_base (strcat tgnum t_base))            (if (= idnum 1) (setq idnum 0))          )        )      )    )    (setq inc (+ inc 1))  )    (if (= tg1 "") (exit))  (setq num (atof tg1))  (setq count 1)  (while (setq bpoint (getpoint "\nChon diem copy tiep theo : "))     (setq num (+ num num_inc))    (if (>= (strlen b_base) 3)      (cond    ( (or (= "A" (strcase (substr b_base 2 1))	     )	     (= "B" (strcase (substr b_base 2 1))		)	  )     (setq b_base (strcat (substr b_base 1 1) (chr (1+ (ascii (substr b_base 2 1))) ) (substr b_base 3)			  )	   )     )    ((= "C" (strcase (substr b_base 2 1)))	(setq b_base (strcat (substr b_base 1 1) "A") )	)    )      (cond    ( (or (= "A" (strcase (substr b_base 2 1))	     )	     (= "B" (strcase (substr b_base 2 1))		)	  )     (setq b_base (strcat (substr b_base 1 1) (chr (1+ (ascii (substr b_base 2 1))) ) (substr b_base 3)			  )	   )     )    ((= "C" (strcase (substr b_base 2 1)))	(setq b_base (strcat (substr b_base 1 1) "A") )	)    )      )     (setq value (strcat t_base (strcat stnum (rtos num 2 deci)) b_base))     (setq nx (car bpoint))     (setq ny (car(cdr bpoint)))     (setq dx (- nx x))     (setq dy (- ny y))     (setq mx (car (getvar "ucsxdir")))     (setq my (car (cdr (getvar "ucsxdir"))))     (setq loca1 (+ bx (* mx dx)))     (setq loca2 (+ by (* my dx)))     (setq mx (car (getvar "ucsydir")))     (setq my (car (cdr (getvar "ucsydir"))))     (setq loca1 (+ loca1 (* mx dy)))     (setq loca2 (+ loca2 (* my dy)))     (setq attr_ent (subst (cons 1 value) (assoc 1 attr) attr))     (if (and (= (cdr (assoc 72 attr_ent)) 0) (= (cdr (assoc 73 attr_ent)) 0))       (setq attr_ent (subst (list 10 loca1 loca2 0) (assoc 10 attr_ent) attr_ent))       (setq attr_ent (subst (list 11 loca1 loca2 0) (assoc 11 attr_ent) attr_ent))     )     (entmake attr_ent)     (setq count (+ count 1))  )	 ;end while  (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

Bác chỉ chi tiết cách làm được ko ah? Em làm như vậy rồi mà vẫn ko được :(

 

Bác Snowman đã chỉ cho bạn rất chi tiết rồi còn gì........

 

Hãy sử dụng tính năng của block, cộng thêm một chút sáng tạo trong cách dùng. Phương án giải quyết như sau:

Cách 1: dùng Tcount

- Gọi tên block bóng đèn là A, bạn hãy tạo một block với tên B chứa block A + text đánh số cột

- Thay vì chèn block A như thường lệ, hãy chèn block B

- Sau khi chèn xong, hãy chọn tất cả các block B và explode. Chỉnh sửa tất cả các text tên cột cho đúng ý (nên dùng filter hoặc ssx để chỉnh cho đồng bộ).

- Bạn đã có các text như ý để sử dụng với Tcount

 

 

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  

×