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ị

Trong lisp hide_show dùng để ẩn,hiện đối tượng,có cách nào để lưu các đối tượng đã ẩn không?Tức là khi e thực hiện lệnh ẩn,thì các đối tượng này ẩn đi.Lúc cần hiện thì gọi lệnh hiện.Sau 1 số thao tác,e lại muốn những đối tượng trước ẩn đi,hoặc thêm vài đối tượng khác nữa mà không phải chọn lại các đối tượng này không ?? (vì hiện giờ khi thao tác lại,lại phải chọn lại đối tượng -> rất rườm rà)

Ban Sử dụng lệnh Group để nhóm các đối tượng về 1 nhó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

Hic hic...Em thực sự không biết sử dụng lệnh này...Kick đối tượng,->group,nhưng sau đó k hiện ra tên Group....

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 các bác ạ, tình hình là em đang làm đường ống cấp nước mà ốp mặt cắt ngang nản quá, gần 5000 mặt cắt, nên em muốn hỏi các bác có làm được lisp ốp các mặt cắt vào địa hình như sau:

- chọn mặt cắt mẫu

- chọn điểm đặt mặt cắt

---> lisp tự động trim các đường vượt qua đường mặt đất tự nhiên, hatch vật liệu, cho ra cao độ đáy, khối lượng đào đắp...tóm lại là 1 mặt cắt hoàn chỉnh được không. Ảnh minh hoạ đây ạScreenHunter_01Aug311837.gif

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
Hic hic...Em thực sự không biết sử dụng lệnh này...Kick đối tượng,->group,nhưng sau đó k hiện ra tên Group....

có 2 loại đối tuợng group đuơc tạo ra bởi lệnh group. một là group có tên (mặc đinh, bạn fải nhập tên truớc rồi chọn đối tuợng) và một loại đối tuợng group không tên, loại này cad tự đặt tên.

nếu muốn chỉnh sửa 1 đối tượng con trong group thì bạn bấm Ctrl+shift+A để tắt liên kết giữa các đối tượng của group.

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
Hic hic...Em thực sự không biết sử dụng lệnh này...Kick đối tượng,->group,nhưng sau đó k hiện ra tên Group....

Bạn có thể Tim kiếm theo từ khoá Group trên diễn đàn

Lệnh Group có thể tạo nhóm đối tượng. Thêm đối tượng vao 1 nhóm và có thể loại đối tượng ra khỏi nhóm. Bật/ tắt nhóm đối tượng Group bằng tổ hợp phím Ctrol+Shift+A

Chọn đối tượng Group có thể Pick chuột vào 1 đối tượng trong Group -> Các đối tượng trong Group sẽ được chọn

Bạn có thể nhấn phím G ở dòng Select object -> Sau đó gõ tên Group (nếu bạn nhớ tên) nếu không bạn cứ chọn theo cách Pick chuột

Select objects: G

Enter group name:

-Có cách nào khóa 1 đối tượng giống như đóng băng không ạ ? (k phải đóng băng layer chứa đối tượng đó)

Em thấy chức năng này rất cần thiết nhưng hình như chưa có

E nghĩ có cách là copy đối tượng sang 1 layer temp,layer này có tính chất giống layer của đối tượng,nhưng bị khóa.Sau khi unlock thì trả đối tượng về layer cũ và (có thể) xóa layer temp đi.Nhưng lại có vấn đề là nếu có nhiều đối tượng thuộc nhiều layer khác nhau thì phải tạo ra nhiều layer temp,hoặc phải lưu giữ thông tin của nhiều đối tượng trước khi bị khóa.Nhưng kể cả như vậy thì có thể thực hiện được không ạ ??Em k biết lập trình nên không triển khai được ý đồ,mong các bác giúp đỡ ..

Truớc mắt thì Tue_NV không biết cách để khoá 1 đối tượng (Object) nữa. Nhưng với cách của bạn thì có thể thực hiện được

- Chọn các đối tượng

- Duyệt qua các đối tượng lấy tên Layer, màu sắc, đường nét. Sau khi lấy tên Layer (ví dụ tên là "duongbao") ta thêm 1 layer mới tên là "duongbaoLock" có các tính chất giống Layer "duongbao" nhưng bị khóa. Gán đối tượng cho Layer "duongbaoLock" này. Đương nhiên với các đối tượng khác nhau sẽ phát sinh thêm nhiều "LayerLock" -> Đây là cách khóa

 

- Về mở khóa : Duyệt qua các đối tượng thuộc Layer có tên là "*Lock" (* là kí tự đại diện) Ví dụ là "duongbaoLock" -> gán các đối tượng này cho Layer "duongbao" ("duongbaoLock" bỏ bớt 4 kí tự cuối) -> Sau đó delete cái Layer "duongbaoLock" . Các Layer "*Lock" khác làm tương tự

Trên đây là ý kiến của mình, các bác có ý kiến khác hay, xin chỉ giúp ạ. Xin cảm ơn mọi ý kiến đóng góp :D

 

có bác nào viết lại được code của lệnh Ironpat của video giới thiệu này không

.....

Chào bạn phamngoctu

Cái này có khác chi mấy so với lệnh Align đâu bạn?

Tue_NV thấy có khi dùng Align còn tiện hơn. Mất công khỏi đo đạc và nhớ tên lệnh Lisp nưar

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 phamngoctu

Cái này có khác chi mấy so với lệnh Align đâu bạn?

Tue_NV thấy có khi dùng Align còn tiện hơn. Mất công khỏi đo đạc và nhớ tên lệnh Lisp nưar

Chào bạn Tue_NV cái đó không giống lệnh align đâu bạn ạ. Nó giống như là stretch block.

Theo mình để xây dựng code của lệnh Ironpat như sau:

1. copy đối tượng được chọn sang vị trí mới

2. Rotate đối tượng mới với một góc là : a

3. Tạo block đối tượng mới đó

4. Chèn block vừa tạo với các hệ số scale theo trục x là: x, théo trục y là: y

5. rotate block sao cho một cạnh của block trùng với trục y

làm như vậy ta sẽ được một đối tượng mới với độ chéo là b.

Vấn đề đặt ra là a, x, y tỷ lệ như thế nào để độ chéo b theo ý muốn và một cạnh của đối tượng mới bằng với đối tượng ban đầu.

Đây là cách tư duy để xây dựng code của mình thôi. Bác nào có ý kiến khác thì góp ý cho mình.

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 bác viết giúp em cái Líp này với. :D :D

#1672

Trong khi chờ đợi hoàn thiện bạn thử dùng cái lisp này coi sao nhé. Lisp sẽ yêu cầu bạn chọn block chứa các text nguồn và dim nguồn. Thực tế bản vẽ bạn post chưa có cái block này, mình phải tự tạo ra cái block có chứa các text và dim mẫu của bạn. Lisp mới chỉ thực hiện được việc đổi chiều cao của các text và các dim có cùng style với các text và dim có trong block mẫu. Còn việc đổi các text và dim có trong các block hơi loằng ngoằng hơn nên mình chưa làm hoàn chỉnh được, bạn hãy chờ thêm chút nữa nhé.

Lisp cũng mới chỉ đổi các text trong dim về chiều cao của text trong dim mẫu chứ chưa thay đổi chiều dài đường kích thước được, vì thế sẽ có thể xảy ra việc các đường kích thước này hở khá lớn khi thu nhỏ text của dim hoặc đè lên text khi phóng lớn text của dim. Bạn chờ thêm chút nữa để mình hoàn thiện thêm nhé.

(defun c:chsize ( / bng ebl stlst htlst sdlst hdlst bln ent els stl ht bld sd ent1
                         els1 std hd sdlst hdlst sst n i et el st bl e1 s1 el1)
(command "undo" "be")
(setq bng (car (entsel " \n Chon doi tuong block nguon "))
       ebl (entget bng)
       stlst (list)
       htlst (list)
       sdlst (list)
       hdlst (list)
)
(if (= (cdr (assoc 0 ebl)) "INSERT")       
   (progn
            (setq  bln (cdr (assoc 2 ebl))
                     ent (cdr (assoc -2 (tblsearch "block"  bln)))         
             )
    )
)
(while ent
        (setq els (entget ent))
        (if  (= (cdr (assoc 0 els)) "TEXT" )
            (progn
                    (setq stl (cdr (assoc 7 els))
                            ht (cdr (assoc 40 els))
                            stlst (append stlst (list stl))
                            htlst (append htlst (list(append stlst (list ht))))
                            stlst (list)
                    )
              )
         )
         (if (= (cdr (assoc 0 els )) "DIMENSION")
            (progn 
                   (setq bld (cdr (assoc 2 els))
                           sd (cdr (assoc 3 els))
                           ent1 (cdr (assoc -2 (tblsearch "block" bld)))
                   )
                   (while ent1
                            (setq els1 (entget ent1))
                            (if (= (cdr (assoc 0 els1)) "MTEXT")
                                (progn
                                      (setq std (cdr (assoc 7 els1))
                                              hd (cdr(assoc 40 els1))
                                              sdlst (append sdlst (list sd))
                                              sdlst (append sdlst (list std))
                                              hdlst (append hdlst (list (append sdlst (list hd))))
                                              sdlst (list)
                                       )
                                   )
                               )
                               (setq ent1 (entnext ent1))
                    )
              )
           )

         (setq ent (entnext ent))
)
(alert "\n Chon tap doi tuong dich")
(setq sst (ssget (list (cons 0 "TEXT,DIMENSION,INSERT")))
       n (sslength sst)
       i 0
)
(while (         (setq et (ssname sst i)
                el (entget et)
        )
        (if (= (cdr (assoc 0 el)) "TEXT")
            (progn
                (setq  st (cdr (assoc 7 el)))
                (foreach ls htlst
                      (if (= (car ls) st)
                         (setq el (subst (cons 40 (cadr ls)) (assoc 40 el) el))
                      ) 
                      (entmod el)
                )
             )
         )

         (If (= (cdr(assoc 0 el)) "DIMENSION")
             (progn
                   (setq bl (cdr (assoc 2 el))
                           s1 (cdr (assoc 3 el))
                           e1 (cdr (assoc -2 (tblsearch "block" bl)))
                   )
                   (foreach ls1 hdlst
                           (if (= (car ls1) s1)
                               (progn
                                       (while e1
                                                (setq el1 (entget e1))
                                                (if (= (cdr (assoc 0 el1)) "MTEXT")
                                                    (setq el1 (subst (cons 40 (caddr ls1)) (assoc 40 el1) el1))
                                                )
                                                (entmod el1)
                                                (entupd e1)
                                                (setq e1 (entnext e1))
                                       )
                                )
                             )
                     )
                     (command "regen")

               )
            )




         (setq i (1+ i))
)


(command "undo" "e")
(princ)

)

  • 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

:D Trước hết E xin cảm ơn bác thanhbinh nhiều lắm.

 

E cũng vừa test thử líp bác vừa viết và có một vài chỗ mong bác hoàn thiện hộ E với nhé.

 

1. KHi thực hiện lísp. Đối với các text nếu có thể bác thêm hộ em với cả cái Mtext với nhé. ^^! (lúc em yêu cầu chưa có cái này, hehee, mới phát sinh )

2. Về đường Dim:

- Em thường để cái text dim nằm trên đường dim, nên cái khoảng hở của đường dim sẽ không có ( hjx, tại em vẽ cai file minh họa láu quá, nếu bác không sửa cái này cũng đã quá tốt cho em rồi).

- Khi tỉ lệ cái TEXT của dim nguồn và dim đích quá chênh lệch nhau thì cái điểm gốc của text nó vẫn bị giữ nguyên

......VD: Khi text của dim đích to gấp khoảng 10 hoặc 20 lần text của dim nguồn thì khi chạy lệnh xong, vị trí TEXT của dim đích là rất xa đường dim. Và ngược lại nếu TEXT của dim đích quá nhỏ so với TEXT của dim nguồn thì nó sẽ đè lên đường đim ( mong bác fix lại cho khoảng cách của TEXTđường đim luôn nằm trong khoảng 1/3 chiều cao của TEXT).

3. Bác giúp em bỏ cái alert đi được không, tại nó làm mình phải thêm 1 thao tác bấm OK ( he, em lười quá, nhưng khi làm với nhiều bản vẽ cũng khá mệt )

 

EM cảm ơn bác rất nhiều !!! *****

 

:D Chúc mọi ngươi một quốc khánh vui vẻ :D

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
:D Trước hết E xin cảm ơn bác thanhbinh nhiều lắm.

 

E cũng vừa test thử líp bác vừa viết và có một vài chỗ mong bác hoàn thiện hộ E với nhé.

 

1. KHi thực hiện lísp. Đối với các text nếu có thể bác thêm hộ em với cả cái Mtext với nhé. ^^! (lúc em yêu cầu chưa có cái này, hehee, mới phát sinh )

2. Về đường Dim:

- Em thường để cái text dim nằm trên đường dim, nên cái khoảng hở của đường dim sẽ không có ( hjx, tại em vẽ cai file minh họa láu quá, nếu bác không sửa cái này cũng đã quá tốt cho em rồi).

- Khi tỉ lệ cái TEXT của dim nguồn và dim đích quá chênh lệch nhau thì cái điểm gốc của text nó vẫn bị giữ nguyên

......VD: Khi text của dim đích to gấp khoảng 10 hoặc 20 lần text của dim nguồn thì khi chạy lệnh xong, vị trí TEXT của dim đích là rất xa đường dim. Và ngược lại nếu TEXT của dim đích quá nhỏ so với TEXT của dim nguồn thì nó sẽ đè lên đường đim ( mong bác fix lại cho khoảng cách của TEXTđường đim luôn nằm trong khoảng 1/3 chiều cao của TEXT).

3. Bác giúp em bỏ cái alert đi được không, tại nó làm mình phải thêm 1 thao tác bấm OK ( he, em lười quá, nhưng khi làm với nhiều bản vẽ cũng khá mệt )

 

EM cảm ơn bác rất nhiều !!! *****

 

:D Chúc mọi ngươi một quốc khánh vui vẻ :D

Chào bạn nguyentuyen6,

Bạn xài thử cái này, đã bổ sung đối với Mtext và với các đối tượng block.

Tuy nhiên yêu cầu 2 của bạn cũng tương tự như vấn đề mình nêu ở bài trước mình vẫn chưa giải quyết được . Thực ra với mình điều này cũng rất không ưng nhưng vì dốt nên đành chịu bó tay bạn ạ.

Việc bạn muốn bỏ đi cái alert theo mình là không nên vì đó là cái cảnh báo để người dùng không bị nhầm lẫn giữa việc chọn nguồn và đích. Tuy nhiên theo yêu cầu của bạn mình đã bỏ, nhưng nếu bạn muốn phục hồi chỉ cần xóa đi các dấu chấm phẩy (:D phía trước dòng code này.

rất mong bạn thông cảm với cái sự dốt của mình và chờ thêm ít nữa, có thể có người sẽ có cách giải quyết khác để giúp bạn.

Chúc bạn vui.

(defun c:chsize ( / bng ebl stlst htlst sdlst hdlst bln ent els stl ht bld sd ent1
                         els1 std hd sdlst hdlst sst n i et el st bl e1 s1 el1 e2 e3)
(command "undo" "be")
(setq bng (car (entsel " \n Chon doi tuong block nguon "))
       stlst (list)
       htlst (list)
       sdlst (list)
       hdlst (list)
)
(while bng
(setq ebl (entget bng))
(if (= (cdr (assoc 0 ebl)) "INSERT")       
   (progn
            (setq  bln (cdr (assoc 2 ebl))
                     ent (cdr (assoc -2 (tblsearch "block"  bln)))         
             )
    )
   (progn
          (alert "\n Doi tuong chon khong phai la block, hay chon lai block chua cac doi tuong nguon")
          (setq bng (car (entsel "\n Chon block chua cac doi tuong nguon")))
    )
)
(setq bng nil)
)
(while ent
        (setq els (entget ent))
        (if  (= (cdr (assoc 0 els)) "TEXT" )
            (progn
                    (setq stl (cdr (assoc 7 els))
                            ht (cdr (assoc 40 els))
                            stlst (append stlst (list stl))
                            htlst (append htlst (list(append stlst (list ht))))
                            stlst (list)
                    )
              )
         )
         (if (= (cdr (assoc 0 els )) "DIMENSION")
            (progn 
                   (setq bld (cdr (assoc 2 els))
                           sd (cdr (assoc 3 els))
                           ent1 (cdr (assoc -2 (tblsearch "block" bld)))
                   )
                   (while ent1
                            (setq els1 (entget ent1))
                            (if (= (cdr (assoc 0 els1)) "MTEXT")
                                (progn
                                      (setq std (cdr (assoc 7 els1))
                                              hd (cdr(assoc 40 els1))
                                              sdlst (append sdlst (list sd))
                                              sdlst (append sdlst (list std))
                                              hdlst (append hdlst (list (append sdlst (list hd))))
                                              sdlst (list)
                                       )
                                   )
                               )
                               (setq ent1 (entnext ent1))
                    )
              )
           )

         (setq ent (entnext ent))
)

;;;;;; (alert "\n Chon tap doi tuong dich")
(setq sst (ssget (list (cons 0 "TEXT,MTEXT,DIMENSION,INSERT")))
       n (sslength sst)
       i 0
)
(while (         (setq et (ssname sst i)
                el (entget et)
        )
        (if (or (= (cdr (assoc 0 el)) "TEXT") (= (cdr (assoc 0 el)) "MTEXT"))
            (progn
                (setq  st (cdr (assoc 7 el)))
                (foreach ls htlst
                      (if (= (car ls) st)
                         (setq el (subst (cons 40 (cadr ls)) (assoc 40 el) el))
                      ) 
                      (entmod el)
                )
             )
         )

         (If (= (cdr(assoc 0 el)) "DIMENSION")
             (progn
                   (setq bl (cdr (assoc 2 el))
                           s1 (cdr (assoc 3 el))
                           e1 (cdr (assoc -2 (tblsearch "block" bl)))
                           e2 (entnext (entnext e1))
                           e3 (entnext e2)
                   )
                   (foreach ls1 hdlst
                           (if (= (car ls1) s1)
                               (progn
                                       (while e1
                                                (setq el1 (entget e1))
                                                (if (= (cdr (assoc 0 el1)) "MTEXT")
                                                    (setq el1 (subst (cons 40 (caddr ls1)) (assoc 40 el1) el1))
                                                )
                                                (entmod el1)
                                                (entupd e1)
                                                (setq e1 (entnext e1))
       ;;;;;;;;;; (command "scale" e2 "" (cdr (assoc 10 (entget e2))) (/ (cdr (assoc 40 el1)) (caddr ls1)))
       ;;;;;;;;;; (command "scale" e3 "" (cdr (assoc 10 (entget e3))) (/ (cdr (assoc 40 el1)) (caddr ls1)))
                                       )
                                )
                             )
                     )
                     (command "regen")
               )
            )
            (if (= (cdr (assoc 0 el)) "INSERT")
                (upwb et htlst hdlst)
            )

         (setq i (1+ i))
)


(command "undo" "e")
(princ)

)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun UPWB (blk lst1 lst2 / e el s st bl e1 s1 el1 )
(setq s (cdr (assoc 2 (entget blk))))
(setq e (cdr (assoc -2 (tblsearch "BLOCK" s))))
(while e
(setq el (entget e))
(if (wcmatch (cdr (assoc 0 el)) "INSERT")
(UPWB e)
)
(if (or (= (cdr (assoc 0 el)) "TEXT") (= (cdr (assoc 0 el)) "MTEXT"))
            (progn
                (setq  st (cdr (assoc 7 el)))
                (foreach ls lst1
                      (if (= (car ls) st)
                         (setq el (subst (cons 40 (cadr ls)) (assoc 40 el) el))
                      ) 
                      (entmod el)
                )
             )
         )

(If (= (cdr(assoc 0 el)) "DIMENSION")
   (progn
           (setq bl (cdr (assoc 2 el))
                   s1 (cdr (assoc 3 el))
                   e1 (cdr (assoc -2 (tblsearch "block" bl)))
           )
           (foreach ls1 lst2
                   (if (= (car ls1) s1)
                       (progn
                              (while e1
                                       (setq el1 (entget e1))
                                       (if (= (cdr (assoc 0 el1)) "MTEXT")
                                           (setq el1 (subst (cons 40 (caddr ls1)) (assoc 40 el1) el1))
                                        )
                                        (entmod el1)
                                        (entupd e1)
                                        (setq e1 (entnext e1))
                               )
                          )
                      )
           )
           (command "regen")

    )
)

(setq e (entnext e))
)
)        

  • 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

Sau khi tham khảo ý kiến của bác Vbao, mình post lên đây cái lisp đã viết giúp bác Vbao, hy vọng có thể sẽ có người cần dùng.

 

 

Nhờ anh Bình viết hộ cái lisp theo file đính kèm dưới đây. Chân thành cảm ơn anh.

 

http://www.cadviet.com/upfiles/3/t2e.dwg

 

Chào bác VBao,

Gửi bác cái củ sâm này, hy vọng nó chữa được cái bệnh của bác. Cái này sau khi mót lại của bác ndtvn trên diễn đàn, mình chế lại một chút cộng với cái lisp t2e.lsp và cho nó ra đời.

Cái này khắc phục được cái vụ explode ờ lisp trước và tránh được sự nhầm lẫn nếu như trong vùng chọn của bác có thằng cu Mtext nào lạc vào đó. Và do đó nó túm được chính xác hơn cái bác cần. Cũng nhờ nó mà mình bỏ luôn được mấy thằng undo cho đỡ rối bác ạ.

Chúc bác luôn khỏe và vui.

 

(defun c:xt2ex ( / p1 p2 ss0 ss1 i n m dtlist dtlst1 j ent pt dt ent1 ss2 mt len dt1)
(vl-load-com)
(setq p1 (getpoint "\n Chon diem thu nhat cua vung chon")
p2 (getcorner p1 "\n Chon diem thu hai cua vung chon")
ss0 (ssget "w" p1 p2 (list (cons 0 "text")))
ss1 (ssget "w" p1 p2 (list (cons 0 "dimension")))
i 0
n (sslength ss0)
m (sslength ss1)
dtlist (list)
dtlst1 (list)
)
(While ((setq ent (ssname ss0 i)
pt (cdr (assoc 10 (entget ent)))
dt (cdr (assoc 1 (entget ent)))
dtlist (append dtlist (list (list pt dt)))
i (1+ i)
)
)
(setq dtlist (vl-sort dtlist '(lambda (e1 e2) (
(setq j 0)
(while (;;;;;;(command "undo" "be")
(setq ent (ssname ss1 j)
p1 (car (ACET-GEOM-SS-EXTENTS-FAST (ssadd ent)))
p2 (cadr (ACET-GEOM-SS-EXTENTS-FAST (ssadd ent)))
els (entget ent)
bln (cdr (assoc 2 els))
ent1 (cdr (assoc -2 (tblsearch "block" bln)))
els1 (entget ent1)
)
;;;;;; (command "explode" ent "")
;;;;;; (setq ss2 (ssget "w" p1 p2 (list (cons 0 "Mtext")))
;;;;;;; ent1 (ssname ss2 0)
;;;;;; mt (cdr (assoc 1 (entget ent1)))
;;;;;; len (strlen mt)
;;;;;; dt1 (substr mt (- len 3) 4)
;;;;;; )
(while ent1
(setq els1 (entget ent1))
(if (= (cdr (assoc 0 els1)) "MTEXT")
(progn
(setq mt (cdr (assoc 1 els1))
len (strlen mt)
dt1 (substr mt (- len 3) 4)
)
)
)
(setq ent1 (entnext ent1))
)
;;;;;;;;; (command "undo" "e")
(setq dtlst1 (append dtlst1 (list (list p1 dt1))))
(setq j (1+ j))
)
;;;;;;;;(command "undo" j)
(setq dtlst1 (vl-sort dtlst1 '(lambda (e1 e2) (dtlst1 (append (list (list "0" "0")) dtlst1)
)
(WriteToExcel dtlist dtlst1)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;;;;;;;;;;;;
(defun WriteToExcel (lst_data1 lst_data2 / col row x xlApp xlCells)
(setq xlApp (vlax-get-or-create-object "Excel.Application")
xlCells (vlax-get-property
(vlax-get-property
(vlax-get-property
(vlax-invoke-method
(vlax-get-property xlApp "Workbooks")
"Add")
"Sheets")
"Item" 1)
"Cells"))
(setq row (getint "\n Chon hang nhap du lieu: "))
(setq col 3)
(foreach dt lst_data1
(vlax-put-property xlCells 'Item row col (cadr dt))
(setq col (1+ col)))
(setq row (1+ row)
col 3)
(foreach dt lst_data2
(vlax-put-property xlCells 'Item row col (cadr dt))
(setq col (1+ col)))
(vla-put-visible xlApp :vlax-true)
(mapcar
(function (lambda (x)
(vl-catch-all-apply
(function (lambda ()(if x (vlax-release-object x)))))))
(list xlCells xlApp))
(gc) (gc) )

 

Bravo bác Bình, đúng là củ sâm tốt hơn củ chuối hột, lisp chạy tốc độ hơn. Vâng bác cứ post lên diễn đàn (lisp này dùng trích số liệu trắc dọc để nộp bài cho cơ quan). Thanks 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ảm ơn bác thanhbinh rất nhiều về cái lisp e đã yêu cầu. E cũng mong được dốt như bác đấy.hehe,

E cũng vừa tét xong và thấy rằng, khi chạy lệnh xong thì: TEXT của dim đích có thay đổi lại thật, nhưng nó chỉ là hiển thị thôi, chứ bản chất thì CAD vẫn hiểu nó là TEXT có chiều cao y nguyên lúc chưa dùng lệnh. Bằng chứng là chỉ cần di chuyển cái TEXT đó là nó lại bị quay về chiều cao ban đầu. hoặc là sau khi chạy líp, bật Ctrl+1 thì cái TEXT HIGHT của dim vẫn chả thay đổi so với ban đầu cả. Vậy theo em nghĩ chỉ cần làm sao thay đổi được TEXT HIGHT = cách giống như bật Ctrl+1 lên rồi đổi là không bị lỗi như thế nữa ( đổi tận gốc ). Hix em nói là nói vậy thôi chứ về líp thì em hoàn toàn mù tịt. Mong các bác sớm khắc phục được giúp e . Cảm ơn bạn tbinh và mọi người nhiều

  • 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
:D Trước hết E xin cảm ơn bác thanhbinh nhiều lắm.

 

E cũng vừa test thử líp bác vừa viết và có một vài chỗ mong bác hoàn thiện hộ E với nhé.

 

1. KHi thực hiện lísp. Đối với các text nếu có thể bác thêm hộ em với cả cái Mtext với nhé. ^^! (lúc em yêu cầu chưa có cái này, hehee, mới phát sinh )

2. Về đường Dim:

- Em thường để cái text dim nằm trên đường dim, nên cái khoảng hở của đường dim sẽ không có ( hjx, tại em vẽ cai file minh họa láu quá, nếu bác không sửa cái này cũng đã quá tốt cho em rồi).

- Khi tỉ lệ cái TEXT của dim nguồn và dim đích quá chênh lệch nhau thì cái điểm gốc của text nó vẫn bị giữ nguyên

......VD: Khi text của dim đích to gấp khoảng 10 hoặc 20 lần text của dim nguồn thì khi chạy lệnh xong, vị trí TEXT của dim đích là rất xa đường dim. Và ngược lại nếu TEXT của dim đích quá nhỏ so với TEXT của dim nguồn thì nó sẽ đè lên đường đim ( mong bác fix lại cho khoảng cách của TEXTđường đim luôn nằm trong khoảng 1/3 chiều cao của TEXT).

3. Bác giúp em bỏ cái alert đi được không, tại nó làm mình phải thêm 1 thao tác bấm OK ( he, em lười quá, nhưng khi làm với nhiều bản vẽ cũng khá mệt )

 

EM cảm ơn bác rất nhiều !!! *****

 

:D Chúc mọi ngươi một quốc khánh vui vẻ :D

Chào bạn nguyentuyen6,

Đây là lisp mình bổ sung đoạn chỉnh sửa khoảng cách giữa đường kích thước và text kích thước. Do dimension có cấu tạo rất phức tạp mà mình chưa đủ khả năng giải quyết nên lisp này chỉ có tác dụng với cái dim style mà bạn đã post nhưng trước khi chạy lisp bạn phải modìy nó thành dạng text above đường kích thước.

Bạn có thể so sánh sự khác nhau giữa hai đoạn lisp trước và sau khi sửa để thấy rõ cách làm của mình. Từ đó bạn có thể tùy chỉnh lisp cho các dim style khác của bạn.

Do trình độ có hạn nên chưa thể giải quyết triệt để vấn đề của bạn, mong bạn thông cảm.

(defun c:chsize ( / bng ebl stlst htlst sdlst hdlst bln ent els stl ht bld sd ent1
                         els1 std hd sdlst hdlst sst n i et el st bl e1 s1 el1 e2 e3 k m pt)
(command "undo" "be")
(setq bng (car (entsel " \n Chon doi tuong block nguon "))
       stlst (list)
       htlst (list)
       sdlst (list)
       hdlst (list)
)
(while bng
(setq ebl (entget bng))
(if (= (cdr (assoc 0 ebl)) "INSERT")       
   (progn
            (setq  bln (cdr (assoc 2 ebl))
                     ent (cdr (assoc -2 (tblsearch "block"  bln)))         
             )
    )
   (progn
          (alert "\n Doi tuong chon khong phai la block, hay chon lai block chua cac doi tuong nguon")
          (setq bng (car (entsel "\n Chon block chua cac doi tuong nguon")))
    )
)
(setq bng nil)
)
(while ent
        (setq els (entget ent))
        (if  (= (cdr (assoc 0 els)) "TEXT" )
            (progn
                    (setq stl (cdr (assoc 7 els))
                            ht (cdr (assoc 40 els))
                            stlst (append stlst (list stl))
                            htlst (append htlst (list(append stlst (list ht))))
                            stlst (list)
                    )
              )
         )
         (if (= (cdr (assoc 0 els )) "DIMENSION")
            (progn 
                   (setq bld (cdr (assoc 2 els))
                           sd (cdr (assoc 3 els))
                           ent1 (cdr (assoc -2 (tblsearch "block" bld)))
                   )
                   (while ent1
                            (setq els1 (entget ent1))
                            (if (= (cdr (assoc 0 els1)) "MTEXT")
                                (progn
                                      (setq std (cdr (assoc 7 els1))
                                              hd (cdr(assoc 40 els1))
                                              sdlst (append sdlst (list sd))
                                              sdlst (append sdlst (list std))
                                              hdlst (append hdlst (list (append sdlst (list hd))))
                                              sdlst (list)
                                       )
                                   )
                               )
                               (setq ent1 (entnext ent1))
                    )
              )
           )

         (setq ent (entnext ent))
)

;;;;;; (alert "\n Chon tap doi tuong dich")
(setq sst (ssget (list (cons 0 "TEXT,MTEXT,DIMENSION,INSERT")))
       n (sslength sst)
       i 0
)
(while (         (setq et (ssname sst i)
                el (entget et)
        )
        (if (or (= (cdr (assoc 0 el)) "TEXT") (= (cdr (assoc 0 el)) "MTEXT"))
            (progn
                (setq  st (cdr (assoc 7 el)))
                (foreach ls htlst
                      (if (= (car ls) st)
                         (setq el (subst (cons 40 (cadr ls)) (assoc 40 el) el))
                      ) 
                      (entmod el)
                )
             )
         )

         (If (= (cdr(assoc 0 el)) "DIMENSION")
             (progn
                   (setq bl (cdr (assoc 2 el))
                           s1 (cdr (assoc 3 el))
                           e1 (cdr (assoc -2 (tblsearch "block" bl)))
                           e2 (entnext (entnext e1))
                           e3 (entnext e2)
                   )
                   (foreach ls1 hdlst
                           (if (= (car ls1) s1)
                               (progn
                                       (while e1
                                                (setq el1 (entget e1))
                                                (if (= (cdr (assoc 0 el1)) "MTEXT")
                                                    (progn
                                                    (setq  k (cdr (assoc 40 el1))
                                                             m (caddr ls1)
                                                             pt (cdr (assoc 10 el1))
                                                             pt (list (car pt) (+ (- (cadr pt) (/ k 2))  m ) (caddr pt))
                                                             el1 (subst (cons 10 pt) (assoc 10 el1) el1)
                                                             el1 (subst (cons 40 (caddr ls1)) (assoc 40 el1) el1)
                                                    )                                                     
                                                    )
                                                )
                                                (entmod el1)
                                                (entupd e1)
                                                (setq e1 (entnext e1))
       ;;;;;;;;;; (command "scale" e2 "" (cdr (assoc 10 (entget e2))) (/ (cdr (assoc 40 el1)) (caddr ls1)))
       ;;;;;;;;;; (command "scale" e3 "" (cdr (assoc 10 (entget e3))) (/ (cdr (assoc 40 el1)) (caddr ls1)))
                                       )
                                )
                             )
                     )
                     (command "regen")
               )
            )
            (if (= (cdr (assoc 0 el)) "INSERT")
                (upwb et htlst hdlst)
            )

         (setq i (1+ i))
)


(command "undo" "e")
(princ)

)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun UPWB (blk lst1 lst2 / e el s st bl e1 s1 el1 k m pt )
(setq s (cdr (assoc 2 (entget blk))))
(setq e (cdr (assoc -2 (tblsearch "BLOCK" s))))
(while e
(setq el (entget e))
(if (wcmatch (cdr (assoc 0 el)) "INSERT")
(UPWB e)
)
(if (or (= (cdr (assoc 0 el)) "TEXT") (= (cdr (assoc 0 el)) "MTEXT"))
            (progn
                (setq  st (cdr (assoc 7 el)))
                (foreach ls lst1
                      (if (= (car ls) st)
                         (setq el (subst (cons 40 (cadr ls)) (assoc 40 el) el))
                      ) 
                      (entmod el)
                )
             )
         )

(If (= (cdr(assoc 0 el)) "DIMENSION")
   (progn
           (setq bl (cdr (assoc 2 el))
                   s1 (cdr (assoc 3 el))
                   e1 (cdr (assoc -2 (tblsearch "block" bl)))
           )
           (foreach ls1 lst2
                   (if (= (car ls1) s1)
                       (progn
                              (while e1
                                       (setq el1 (entget e1))
                                       (if (= (cdr (assoc 0 el1)) "MTEXT")
                                           (progn
                                           (setq  k (cdr (assoc 40 el1))
                                                    m (caddr ls1)
                                                    pt (cdr (assoc 10 el1))
                                                    pt (list (car pt) (+ (- (cadr pt) (/ k 2))  m ) (caddr pt))
                                                    el1 (subst (cons 10 pt) (assoc 10 el1) el1)
                                                    el1 (subst (cons 40 (caddr ls1)) (assoc 40 el1) el1)
                                           )
                                           )
                                        )
                                        (entmod el1)
                                        (entupd e1)
                                        (setq e1 (entnext e1))
                               )
                          )
                      )
           )
           (command "regen")

    )
)

(setq e (entnext e))
)
)        

  • 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

Hi`. em đã xoá hết các dòng co liên quan đến Dim thì được cái này. (chỉ dùng cho text)

 

 

;; free lisp from cadviet.com

(defun c:chsize ( / bng ebl stlst htlst sdlst hdlst bln ent els stl ht bld sd ent1
                         els1 std hd sdlst hdlst sst n i et el st bl e1 s1 el1 e2 e3 k m pt)
(command "undo" "be")
(setq bng (car (entsel " \n Chon doi tuong block nguon "))
       stlst (list)
       htlst (list)
       sdlst (list)
       hdlst (list)
)
(while bng
(setq ebl (entget bng))
(if (= (cdr (assoc 0 ebl)) "INSERT")       
   (progn
            (setq  bln (cdr (assoc 2 ebl))
                     ent (cdr (assoc -2 (tblsearch "block"  bln)))         
             )
    )
   (progn
          (alert "\n Doi tuong chon khong phai la block, hay chon lai block chua cac doi tuong nguon")
          (setq bng (car (entsel "\n Chon block chua cac doi tuong nguon")))
    )
)
(setq bng nil)
)
(while ent
        (setq els (entget ent))
        (if  (= (cdr (assoc 0 els)) "TEXT" )
            (progn
                    (setq stl (cdr (assoc 7 els))
                            ht (cdr (assoc 40 els))
                            stlst (append stlst (list stl))
                            htlst (append htlst (list(append stlst (list ht))))
                            stlst (list)
                    )
              )
         )


         (setq ent (entnext ent))
)

;;;;;; (alert "\n Chon tap doi tuong dich")
(setq sst (ssget (list (cons 0 "TEXT,MTEXT,INSERT")))
       n (sslength sst)
       i 0
)
(while (< i n)
        (setq et (ssname sst i)
                el (entget et)
        )
        (if (or (= (cdr (assoc 0 el)) "TEXT") (= (cdr (assoc 0 el)) "MTEXT"))
            (progn
                (setq  st (cdr (assoc 7 el)))
                (foreach ls htlst
                      (if (= (car ls) st)
                         (setq el (subst (cons 40 (cadr ls)) (assoc 40 el) el))
                      ) 
                      (entmod el)
                )
             )
         )


            (if (= (cdr (assoc 0 el)) "INSERT")
                (upwb et htlst hdlst)
            )

         (setq i (1+ i))
)


(command "undo" "e")
(princ)

)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun UPWB (blk lst1 lst2 / e el s st bl e1 s1 el1 k m pt )
(setq s (cdr (assoc 2 (entget blk))))
(setq e (cdr (assoc -2 (tblsearch "BLOCK" s))))
(while e
(setq el (entget e))
(if (wcmatch (cdr (assoc 0 el)) "INSERT")
(UPWB e)
)
(if (or (= (cdr (assoc 0 el)) "TEXT") (= (cdr (assoc 0 el)) "MTEXT"))
            (progn
                (setq  st (cdr (assoc 7 el)))
                (foreach ls lst1
                      (if (= (car ls) st)
                         (setq el (subst (cons 40 (cadr ls)) (assoc 40 el) el))
                      ) 
                      (entmod el)
                )
             )
         )



(setq e (entnext e))
)
)        

 

 

Tuy nhiên khi chọn block nguồn thì phải chọn 2 lần, chọn 1 lần không được. bác tbinh sửa giúp em với,he.

àh còn về phần dim thì em đã ko nghĩ ký để bác phải suy nghĩ nhiều. hjx. Ý em định là khi scale khung tên mỗi khung tên sẽ có 1 block nguồn. Tuy nhiên e đã quên mà không nghĩ ra rằng: dùng lệnh scale đối với dim thì tet hight không thay đổi. Vì cái nguồn của em ở đây nó là block nên khi scale nó lên thì nó cũng chỉ là hiển thị thôi, chứ nếu vào blockeditor thì thấy ngay được là text hight không đổi. Có lẽ đây chính là vấn đề..he

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
Hi`. em đã xoá hết các dòng co liên quan đến Dim thì được cái này. (chỉ dùng cho text)

;; free lisp from cadviet.com

(defun c:chsize ( / bng ebl stlst htlst sdlst hdlst bln ent els stl ht bld sd ent1
                         els1 std hd sdlst hdlst sst n i et el st bl e1 s1 el1 e2 e3 k m pt)
(command "undo" "be")
(setq bng (car (entsel " \n Chon doi tuong block nguon "))
       stlst (list)
       htlst (list)
       sdlst (list)
       hdlst (list)
)
(while bng
(setq ebl (entget bng))
(if (= (cdr (assoc 0 ebl)) "INSERT")       
   (progn
            (setq  bln (cdr (assoc 2 ebl))
                     ent (cdr (assoc -2 (tblsearch "block"  bln)))         
             )
    )
   (progn
          (alert "\n Doi tuong chon khong phai la block, hay chon lai block chua cac doi tuong nguon")
          (setq bng (car (entsel "\n Chon block chua cac doi tuong nguon")))
    )
)
(setq bng nil)
)
(while ent
        (setq els (entget ent))
        (if  (= (cdr (assoc 0 els)) "TEXT" )
            (progn
                    (setq stl (cdr (assoc 7 els))
                            ht (cdr (assoc 40 els))
                            stlst (append stlst (list stl))
                            htlst (append htlst (list(append stlst (list ht))))
                            stlst (list)
                    )
              )
         )


         (setq ent (entnext ent))
)

;;;;;; (alert "\n Chon tap doi tuong dich")
(setq sst (ssget (list (cons 0 "TEXT,MTEXT,INSERT")))
       n (sslength sst)
       i 0
)
(while (         (setq et (ssname sst i)
                el (entget et)
        )
        (if (or (= (cdr (assoc 0 el)) "TEXT") (= (cdr (assoc 0 el)) "MTEXT"))
            (progn
                (setq  st (cdr (assoc 7 el)))
                (foreach ls htlst
                      (if (= (car ls) st)
                         (setq el (subst (cons 40 (cadr ls)) (assoc 40 el) el))
                      ) 
                      (entmod el)
                )
             )
         )


            (if (= (cdr (assoc 0 el)) "INSERT")
                (upwb et htlst hdlst)
            )

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

)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun UPWB (blk lst1 lst2 / e el s st bl e1 s1 el1 k m pt )
(setq s (cdr (assoc 2 (entget blk))))
(setq e (cdr (assoc -2 (tblsearch "BLOCK" s))))
(while e
(setq el (entget e))
(if (wcmatch (cdr (assoc 0 el)) "INSERT")
(UPWB e)
)
(if (or (= (cdr (assoc 0 el)) "TEXT") (= (cdr (assoc 0 el)) "MTEXT"))
            (progn
                (setq  st (cdr (assoc 7 el)))
                (foreach ls lst1
                      (if (= (car ls) st)
                         (setq el (subst (cons 40 (cadr ls)) (assoc 40 el) el))
                      ) 
                      (entmod el)
                )
             )
         )

(setq e (entnext e))
)
)        

Tuy nhiên khi chọn block nguồn thì phải chọn 2 lần, chọn 1 lần không được. bác tbinh sửa giúp em với,he.

àh còn về phần dim thì em đã ko nghĩ ký để bác phải suy nghĩ nhiều. hjx. Ý em định là khi scale khung tên mỗi khung tên sẽ có 1 block nguồn. Tuy nhiên e đã quên mà không nghĩ ra rằng: dùng lệnh scale đối với dim thì tet hight không thay đổi. Vì cái nguồn của em ở đây nó là block nên khi scale nó lên thì nó cũng chỉ là hiển thị thôi, chứ nếu vào blockeditor thì thấy ngay được là text hight không đổi. Có lẽ đây chính là vấn đề..he

Chào bạn nguyentuyen6,

Việc bạn phải chọn hai lần là do lần đầu tiên bạn chọn vào đối tượng không phải là block, có thể là do khi chọn bạn không chú ý. Thực chất đó là do mình đã cẩn thận đề phòng bằng một bước kiểm tra xem đối tượng chọn có phải là block hay không. Việc này là do bạn có yêu cầu là các text nguồn và dim nguồn đều nằm trong block.

Bạn hãy cẩn thận làm lại thử xem nhé chứ đoạn lisp đó không có sai sót gì đâu.

Chúc bạn vui.

  • 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

Em có việc này nhờ các cao thủ, em đã search trên diễn đàn và biết được bác NguyenHoanh có viết một đoạn code mà khi pick chọn một DIM sẽ xuất ra text các thông số của DIM đó, ví dụ DIMSCALE........... nhưng giờ em muốn thay vì xuất ra text như thế các bác có thể viết giúp em một lisp mà sau khi pick chọn DIM đó sẽ ra một dòng nhắc người dùng các giá trị hiện tại (cụ thể em chỉ cần giá trị Dim scale overal) và yêu cầu nhập giá trị mới cần thay đổi. sau khi người dùng nhập thì sẽ áp dụng giá trị đó cho DIM.

Cảm ơn các bác rât 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
Em có việc này nhờ các cao thủ, em đã search trên diễn đàn và biết được bác NguyenHoanh có viết một đoạn code mà khi pick chọn một DIM sẽ xuất ra text các thông số của DIM đó, ví dụ DIMSCALE........... nhưng giờ em muốn thay vì xuất ra text như thế các bác có thể viết giúp em một lisp mà sau khi pick chọn DIM đó sẽ ra một dòng nhắc người dùng các giá trị hiện tại (cụ thể em chỉ cần giá trị Dim scale overal) và yêu cầu nhập giá trị mới cần thay đổi. sau khi người dùng nhập thì sẽ áp dụng giá trị đó cho DIM.

Cảm ơn các bác rât nhiều.

 

Cái líp đó ở đây. http://www.cadviet.com/forum/index.php?showtopic=2423

 

Trong đó cái text hight dc quy đinh mã là :140. Qua líp này không biết bac thanhbinh có thể giúp em nốt cái líp kia không?. chỉ áp dụng cho dim. Chỉ khác tý là nguồn của dim bây h là 1 DTEXT (Có style giống style textdim và khác style của các TEXT nguồn )để khi scale thì text hight cũng thay đổi theo. Cảm ơn bác nhiêu. Hy vọng là em nghĩ đú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

có 1 mong muốn nho nhỏ, mong các bác giúp đỡ.

- em có 3 cột text toàn là số, các bac giúp em nhân 2 cột đó với nhau, kết quả được xuất ra cột thứ 3, với 1 số sau dấu phẩy.

- em muốn nhân nhiều số với 1 số, kết quả trả lại đúng vị trí của text cấn nhâ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

tất nhiên là em biết nó ở đâu nhưng nó mới chỉ xuất ra được giá trị Dim scale overal ra dạng text thôi, ở đây em muốn lisp có thể thay đổi và áp dụng giá trị Dim scale overal mới cho Dim đó mà. các cao thủ giúp em chỉnh sửa đi nào., Thanks

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íp đó ở đây. http://www.cadviet.com/forum/index.php?showtopic=2423

 

Trong đó cái text hight dc quy đinh mã là :140. Qua líp này không biết bac thanhbinh có thể giúp em nốt cái líp kia không?. chỉ áp dụng cho dim. Chỉ khác tý là nguồn của dim bây h là 1 DTEXT (Có style giống style textdim và khác style của các TEXT nguồn )để khi scale thì text hight cũng thay đổi theo. Cảm ơn bác nhiêu. Hy vọng là em nghĩ đúng

Bạn hãy gửi một bản vẽ có chứa Dtext và các dimension cần thay đổi nhé. Thực sự mình chưa hiểu lắm về cái đối tượng Dtext mà bạn nói, nó có nằm trong block như lần trước bạn yêu cầu hay không hay nó là một đối tượng độc lập trên bản vẽ. Vấn đề thay đổi chiều cao của text trong dimesion theo mình nghĩ là có thể, song còn cái vụ thay đổi khoảng cách giữa text và đường kích thước nữa bạn ạ. Mình chưa biết Cad quản lý cái này ra sao, chắc chắn là trong dímtyle nhưng còn nó là biến nào thì còn đang mò mẫm bạn ạ. Rất mong bạn thông cảm nhé. Bạn cứ gửi file mẫu lên, mình sẽ ngâm cứu thử coi sao. Có thể qua đây mình sẽ vỡ ra nhiều điều hay hơn về đối tượng dimesion này.

Chúc bạn vui.

PS; Mình cũng đả mò tới các biến trong dimension Style rồi nhưng nó rậm như rừng chả biết xoay xở ra sao nên mới đành làm cái cách củ chuối như bạn đã biết. Nghĩa là đổi kích cỡ của text trong thể hiện để mà in ra thôi chứ còn chưa đổi được trong dímtyle bạn ạ. Với gợi ý của bạn có thể mình sẽ mò thêm được chút gì chăng, Cám ơn bạn trước nhé.

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 mong muốn nho nhỏ, mong các bác giúp đỡ.

- em có 3 cột text toàn là số, các bac giúp em nhân 2 cột đó với nhau, kết quả được xuất ra cột thứ 3, với 1 số sau dấu phẩy.

- em muốn nhân nhiều số với 1 số, kết quả trả lại đúng vị trí của text cấn nhân.

Chào bạn hdg2318,

Hình như bạn cũng là một thành viên có hạng của Cadviet rồi mà. Sao bạn không post một file mẫu cái bạn có và một file mẫu cái bạn cần lên cho mọi người dễ hình dung nhỉ???? Còn cách nói của bạn thì khó hình dung quá, đã có 3 cột rồi lại còn xuất kết quả vào cột thứ 3 là sao nhỉ????

Rồi muốn nhân nhiều số với 1 số, trả kết quả về đúng vị trí của text cần nhân là text nào vậy bạn.....

Đừng nghĩ rằng là ma cũ thì nói sao mọi người cũng phải hiểu, mà ngược lại nên cẩn trọng trong cách trình bày vấn đề bạn nhé.

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
Cái líp đó ở đây. http://www.cadviet.com/forum/index.php?showtopic=2423

 

Trong đó cái text hight dc quy đinh mã là :140. Qua líp này không biết bac thanhbinh có thể giúp em nốt cái líp kia không?. chỉ áp dụng cho dim. Chỉ khác tý là nguồn của dim bây h là 1 DTEXT (Có style giống style textdim và khác style của các TEXT nguồn )để khi scale thì text hight cũng thay đổi theo. Cảm ơn bác nhiêu. Hy vọng là em nghĩ đúng

Hề hề hề,

Loay hoay cả buổi chiều mà chả ăn thua gì, cái thằng Dímtyle này khó chơi quá, dùng lisp vật nó mãi chả được > nó chỉ chịu phép cái thằng CAD thôi. Mà mình định dùng lệnh CAD trong lisp nó cũng không cho. Tệ quá. Chắc là phải dùng tới VBA để xử nó mà mình thì mít đặc về VBA.

Ấy là mình cũng đoán vậy chứ chả biết có được không nữa. Thôi thì bạn đành chịu khó chờ các cao thủ khác giở võ ra vậy. chớ với cái lá mít rách của mình thì thua nó rồi bạn ạ.

Hề hề hề. Thực tế thì khi modìy nó bằng lisp nó toàn trả về nil không à, nghĩa là nó bảo đếch thèm chơi với lisp bạn ạ. khổ thế.

  • 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

Hì, cảm ơn Bác Tbinh nhiều, vì em mà bác vất vả nhiều quá. hjx. E chỉ biết nói cảm ơn tới bác rất nhiều thôi . heheee. CHúc bác s khỏe, thành đạt để ae cadviet còn nhờ bác nhiều :undecided:

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.

×