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

master_worse

Nhà quảng cáo
  • Số lượng nội dung

    168
  • Đã tham gia

  • Lần ghé thăm cuối

  • Ngày trúng

    1

Bài đăng được đăng bởi master_worse


  1. Nếu đối tượng là 1 tập hợp thì phải chọn trước = các lệnh qselect hay ssx sau đó dùng lệnh.

    Ví dụ muôn xóa 100 đường pline thuộc lớp 0 bạn gõ SSX enter, chọn 1 pline lớp 0 enter, enter

    gõ e enter gõ p enter là xóa xong 100 pline đã chọn.

     

    cũng có thể gõ lệnh trước sau đó

    tại dòng nhắc Select objects: 'fi -> sử dụng hộp thoại filters để chọn (có bài của ai đó chỉ cái này mà kiếm không ra)

    hoặc Select objects: 'ssx

    • Vote tăng 1

  2. Chào bạn jacsonchuong, tucdrom, master_worse

    Tue_Nv vẫn bảo lưu phương án là không nổ MTEXT vì sẽ làm mất đii định dạng ban đầu ngay. Trường hợp MTEXT sử dụng font Symbol để viết -> nếu như nổ ra thì sẽ tan tành ngay.

     

    Tue_NV đã tìm hiểu nguyên nhân mà vấn đề bạn jacsonchuong đưa ra : các MTEXT như số 312 thì ta không thể thay màu được, cũng không thể MA thay đổi nó.

    Mình có viết 1 đoạn Code có tác dụng -> đổi các số 312 từ số không đổi màu được, không MA được trở thành số 312 đổi màu được, không MA được

    Lisp đó đây. Các bạn sử dụng thử xem sao.

     

    (defun c:cmtext(/ ss ans vitri skt i n e chuoicu tachdau tachcuoi chunoi)

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

    (setq st "\\C2")

    -------------------

    Tue_VN có thể xem lại không nếu vậy chỉ đổi được màu vàng thôi

    Tue_VN có thể bỏ chuổi "\\C*;" bằng một hàm thay thế nào đó ra khỏi chuỗi giá trị của mtext thì áp dụng được cho nhiều màu hơn.


  3. Các bác cho mình hỏi các bác :

    1- Chọn đối tượng trước - chọn lệnh sau

    2- chọn lệnh trước - chọn đối tượng sau

     

    Trong hai cách trên, cách nào có lợi về thời gian?

    Theo tôi thì chọn trước hay chọn sau gì thì cũng lệnh cũng phải xử lý số đối tượng như nhau nên không có gì khác về mặt thời gian cả.

    • Vote tăng 1

  4. Bạn ơi nó nhiều lắm (khoản 1000 số như vậy đó), mình đã thử làm được rồi nhưng nếu làm hết chắc mình chặt tay mình mất :bigsmile: . Có cách này chuyển tất cả (số lượng nhiều) 1 lần được không bạn

     

    còn cách dùng lệnh EXPLODE chuyển mtext --> text (nếu không cần phải sử dụng mtext):bigsmile:

    • Vote tăng 1

  5. Chào các bạn! Cho mình hỏi một chút về vấn đề sau:

    Mình đã tạo 2 số và 2 vòng tròn bao quanh 2 số đó và đều có màu vàng (1 số tạo trước và 1 số tạo sau). Bây giờ mình muốn đổi màu của cả 2 số sang màu đỏ nhưng chỉ đổi được màu của số 311 còn số 312 thì không đổi được - File ví dụ tải tại đây

    Mấy anh, mấy chị làm ơn chỉ các đổi màu bên số 312 dùm em với, em muốn điên với vụ này lun. :bigsmile:

     

    Bạn nhấp đúp vào text 312 rối bôi đen nó - chuyển màu sang ByLayer - thoát ra

    bây giờ có thể đổi sang màu khác rồi đó


  6. Giới thiệu với các bạn đọan LISP (vừa sưu tầm đuợc) lưu và lấy dữ liệu kiểu Text từ ClipBoard

    Hàm SetClipBoardText By XShrimp : lưu dữ liệu kiểu Text vào ClipBoard

    Hàm GetClipBoardText By Patrick_35 : lấy dữ liệu kiểu Text từ ClipBoard

     

    Ứng dụng :

    Trong CAD

    - trên bản vẽ A gọi lệnh copy2 -> chọn Text nguồn,

    - trên bản vẽ B, C ... gọi lệnh paste2 -> chọn các đối tựong đích >enter :bigsmile:

     

    Có cách nào gộp 2 lệnh copy2paste2 thành một không nhỉ??? :bigsmile:

     

    ---------


  7. bác có lisp nào mà vẽ vuông góc với đường thẳng bất kỳ không cho em xin với ,em đang rất cần chứ chuyển toạ độ ucs thì lâu lắm,em hay phải vẽ đường thẳng vuông góc với 1 đường thẳng bấtd kỳ mà( các bác save lại hình mà nhìn cho rõ ) CÁm ơn các bác ạ

    Khi vẽ bấm Shift+chuột phải --> chọn Perpendicular --> chọn đường cần vuông góc là được rồi.


  8. Tiện đây cho mình hỏi luôn. Đối với Insert một Block khung tên có chứa thuộc tính thì không có gì bàn nhiều, mình vẫn băn khoăn không hiểu tại sao khi mình tham khảo ngoài 1 bản vẽ khung tên thì nếu khung tên đó có chứa các thuộc tính thì những thuộc tính đó không còn sử dụng được nữa nhỉ. Mình muốn làm tham khảo ngoài bởi lẽ một công trình (gồm nhiều bản vẽ) nhưng chỉ cần dùng 1 khung tên. Nếu Insert Block thì không thể ưu việt bằng tham khảo ngoài. Tuy nhiên cái cần thay đổi ở mỗi bản vẽ: tên bản vẽ, số thứ tự, ký hiệu, tỷ lệ... thì tham khảo ngoài bó tay. Ai biết khắc phục cái này giúp mình với.

    Nếu vậy thì những gì thay đổi (tên bản vẽ, số thứ tự, ký hiệu, tỷ lệ...) đừng cho vào Block khung tên, chỉ là text bình thường thôi


  9. PS: mình edit xong thì nội dung text chưa đổi ngay mà fải Regen bản vẽ một lần. master_worse nên thêm lệnh này vào lisp thì sẽ trực quan hơn.

    cái này mình cũng bị vậy nhưng hình như chỉ bị với các font không phải .shx thôi hay sao ấy.

    mình đã sử dụng hàm entupd nhưng không được.

    Còn nếu thêm lệnh regen mỗi lần ok màn hình lại chớp một cái.

    bạn có cách nào không??

    • Vote tăng 1

  10. Trong block có sử dụng nhiều text attribute thì việc gõ ed để sửa nội dung hơi vất vả một chút.

    Đây là đoạn code em viết để edit trực tiếp vào các text attribute do ta chọn bằng cách pick chuột.

     

    bạn sử dụng thử lisp này xem

    (defun C:EDITTEXT (/ DCLEDITTEXT CURCMD ATT OLDVAL TEXT EDITEXT.DCL FILE_DCL LL)
    (setq *ERROR* (defun MY-ERR (MSG)
    	(cond ((= MSG "Function cancelled") (princ "\t\tUser abort"))
    	      (t (progn (princ MSG) (princ)))
    	) ;_ end cond
    	(setq *ERROR* NIL)
    	(princ)
           ) ;_ defun
    ) ;_ end setq
    (defun GET-GC (GROUP ENTITY) (cdr (assoc GROUP (entget ENTITY))))
    (defun	PUT-GC (VALUE GROUP ENTITY / PROPERTIES)
     (setq PROPERTIES (entget ENTITY))
     (setq PROPERTIES (subst (cons GROUP VALUE) (assoc GROUP PROPERTIES) PROPERTIES))
     (entmod PROPERTIES)
    ) ;_ end defun
    (vl-load-com)
    (setq DCLEDITTEXT
          (list "EDIT: dialog {label = \"Edit text\";initial_focus = \"text\";"
         ":edit_box {label = \"Text:\"; allow_accept = true; edit_width = 60; key = \"text\";}"
         "spacer_1;"
         "ok_cancel;}"
          ) ;_ end list
    ) ;_ end setq
    (setq CURCMD (getvar "CMDECHO"))
    (setvar "CMDECHO" 0)
    (while	(/= (setq ATT (car (nentselp "\nSelect Attribute for edit: "))) NIL)
     (if (or (= (GET-GC 0 ATT) "ATTRIB")
      (= (GET-GC 0 ATT) "TEXT")
      (= (GET-GC 0 ATT) "MTEXT")
      (= (GET-GC 0 ATT) "DIMENSION")
         ) ;_ end or
      (progn
       (setq OLDVAL (GET-GC 1 ATT))
       (setq EDITEXT.DCL (vl-filename-mktemp "EditText.dcl")
      FILE_DCL    (open EDITEXT.DCL "w")
       ) ;_ end setq
       (foreach LL DCLEDITTEXT (write-line LL FILE_DCL))
       (close FILE_DCL)
       (if	(> 0 (setq DCL_ID (load_dialog EDITEXT.DCL)))
        (progn (alert "not found file EditText.DCL") (exit))
       ) ;_ if
       (if	(not (new_dialog "EDIT" DCL_ID))
        (progn (alert "not found EDIT dialog") (exit))
       ) ;_ if
       (set_tile "text" OLDVAL)
       (action_tile "accept" "(setq TEXT (get_tile \"text\"))(done_dialog)")
       (action_tile "cancel" "(setq TEXT OLDVAL)")
       (start_dialog)
       (unload_dialog DCL_ID)
       (PUT-GC TEXT 1 ATT)
      ) ;_ end progn
      (princ "Select ATTRIB/TEXT/MTEXT/DIMENSION")
     ) ;_ end if
    ) ;_ end while
    (setvar "CMDECHO" CURCMD)
    (vl-file-delete EDITEXT.DCL)
    (setq *ERROR* NIL)
    (princ)
    ) ;_ end defun
    
    

     

    sữa đựơc ATTRIB/TEXT/MTEXT/DIMENSION

     

    -------------------

    P/S:

    Cái vụ tạo hộp thoại này em học trong file lisp vẽ đồ thị của tiều bối Nguyen Hoanh

    Ai xem giúp em cái chữ ký

    • Like 1
    • Vote tăng 1

  11. Cảm ơn bạn đã quan tâm. Nhưng khi sửa như bạn thì lisp càng tồi tệ hơn (đâu giúp ích được gì cho mình). Nếu bạn muốn giúp thì bạn phải đọc kỹ nội dung mình gửi chứ. Dù sao cũng cảm ơn bạn.

    Vậy chắc thế này:

    (setq Tln (getint "\nTy le ngang 1/x (100, 200, 500, 1000); x=")

    Tld (getint "\nTy le dung 1/y (100, 200); y=")

    Tn(/ 1000.0 TLN)

    Td(/ 1000.0 TLD)

    )

    (command "text" "j" "ml" Pta5 2.5 0.0 (strcat "TYÛ LEÄ NGANG: 1/" (rtos TLN)))

    (command "text" "j" "ml" Pta6 2.5 0.0 (strcat "TYÛ LEÄ ÑÖÙNG: 1/" (rtos TLD)))

     

    (Pta5 và Pta6 bạn đã có)

    --------------------------------------------------------------------------------------------

    P/S:

    Bạn viết khó hiểu quá !

    Cần trình bày sao cho nguời đọc hiểu thì mới giúp bạn đuợc.


  12. Mình muốn khi nhập giá trị tỷ lệ ngang và tỷ lệ đứng (khi thực hiện lệnh tại dòng command) thì lisp lấy giá trị nhập tự kết nối chuỗi (hàm strcat) và ghi ra màn hình (cụ thể ở đây là: tỷ lệ ngang: 1/500 hoặc 1/1000; tỷ lệ đứng : 1/100 hoặc 1/200)

    Bạn có thể xem thêm lisp mình gửi kèm và hướng dẫn thêm giúp mình. Cảm ơn bạn nhiều

    Nếu chỉ muốn ghi ra màn hình thì bạn làm thế này

    (princ (strcat "\nTY LE NGANG: 1/" (rtos Tln)))

    (princ (strcat "\nTY LE DUNG: 1/" (rtos Tld)))

    Hy vọng đúng ý bạn

    -------------------------------------------------------------------------------------

    P/S: Các tiền bối xem dùm em chữ ký


  13. ...nên khi vẽ em đã làm lẫn lộn màu của các layer,nghĩa là màu layer gốc ko phát huy tác dụng...

    bạn muốn bây giờ đổi màu các đối tượng đã vẽ về màu của layer phải không?

    bạn có thể dùng lệnh của cad để làm việc này:

    - layiso -->chọn đối tượng --> đổi màu --> layuniso

    ....

    or

    (defun C:C2BL () (command "chprop" (ssget "X") "" "C" "ByLayer" "")(princ))

    • Vote tăng 1

  14. Khi chúng ta vẽ tay 1 đoạn thẳng dài 5m

    với các tỷ lệ khác nhau ta sẽ vẽ ra giấy đoạn thẳng khác nhau

    ví dụ:

    tỷ lệ 1/50 thì đoạn thẳng sẽ:

    là 5000/50 nếu thể hiện theo mm

    là 500/50 nếu thể hiện theo cm

    là 50/50 nếu thể hiện theo dm

    là 5/50 nếu thể hiện theo m

    Khi chúng ta vẽ trên cad đoạn thẳng dài 5m,

    Bạn có thể sử dụng như cách vẽ tay,

    cũng có thể làm theo cách khác

    Ví dụ như:

    5m vẽ 5 (1m = 1du - drawing unit)

    với tỷ lệ 1/50 thì scale khổ giấy xuống 50 bên model

    or

    bạn vào Layout và dàn trang để in. Tạo viewport theo tỷ lệ bạn muốn in ra

    Tóm lại: tùy theo thói quen và cách hiểu của mọi từng người mà có cách làm khác nhau-làm nhiều sẽ quen thôi.


  15. 2 đường đi khác nhau nhưng về cùng một chổ mà bạn:

    Cùng bật hộp thoại Dimension Style Manage

    ...nhưng muốn sử dụng một trong các kiểu Style 1, hoặc Style 2 để ghi kích thước lại không được

    bạn chon kiểu dim rồi dim bình thường or dim xong rồi chọn các đường dim rồi chọn kiểu dim thế thôi

×