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. Dùng 

     

    (setq ss (ssget '((-4 . "<AND")(0 . "DIMENSION")(-4 . "<NOT")(1 . ",*<>*")(-4 . "NOT>")(-4 . "AND>"))))

     

    để chọn các đường kích thước đã bị chỉnh sửa 

     

    trong file lisp bên dưới:

     

    layer MW-NOT_PLOT là không in.

    các đường kích thước đã ở layer này sẽ không được chọn

     

    file Lisp:

    (defun c:ktd (/ ss cmdecho)
      (if (setq ss (ssget '((-4 . "<AND")
                            (0 . "DIMENSION")
                            (-4 . "<NOT")
                            (1 . ",*<>*")
                            (-4 . "NOT>")
                            (-4 . "<NOT")
                            (8 . "MW-NOT_PLOT")
                            (-4 . "NOT>")
                            (-4 . "AND>")
                           )
                   )
          )
        (progn
          (princ (strcat "co " (itoa (sslength ss)) " duong kich thuoc da bi thay doi."))
          (or (tblsearch "LAYER" "MW-NOT_PLOT")
              (entmake (list '(0 . "LAYER")
                             '(100 . "AcDbSymbolTableRecord")
                             '(100 . "AcDbLayerTableRecord")
                             '(70 . 0)
                             (cons 2 "MW-NOT_PLOT")
                             (cons 62 203)
                             (cons 6 "Continuous")
                             (cons 290 0)
                       )
              )
          )
          (setq cmdecho (getvar 'cmdecho))
          (setvar 'cmdecho 0)
          (command "._change" ss "" "P" "LA" "MW-NOT_PLOT" "C" "BYLAYER" "")
          (setvar 'cmdecho cmdecho)
          (princ " cac doi tuong nay da duoc chuyen sang layer MW-NOT_PLOT")
        )
      )
      (princ)
    )
    

     

    (if (setq ss (ssget '((-4 . "<AND")
                            (0 . "DIMENSION")
                            (-4 . "<NOT")
                            (1 . ",*<>*")
                            (-4 . "NOT>")
                            (-4 . "<NOT")
                            (8 . "MW-NOT_PLOT")
                            (-4 . "NOT>")
                            (-4 . "AND>")
                           )
                   )
          )
        (progn
          (princ (strcat "co " (itoa (sslength ss)) " duong kich thuoc da bi thay doi."))
          (or (tblsearch "LAYER" "MW-NOT_PLOT")
              (entmake (list '(0 . "LAYER")
                             '(100 . "AcDbSymbolTableRecord")
                             '(100 . "AcDbLayerTableRecord")
                             '(70 . 0)
                             (cons 2 "MW-NOT_PLOT")
                             (cons 62 203)
                             (cons 6 "Continuous")
                             (cons 290 0)
                       )
              )
          )
          (setq cmdecho (getvar 'cmdecho))
          (setvar 'cmdecho 0)
          (command "._change" ss "" "P" "LA" "MW-NOT_PLOT" "C" "BYLAYER" "")
          (setvar 'cmdecho cmdecho)
          (princ " cac doi tuong nay da duoc chuyen sang layer MW-NOT_PLOT")
        )
      )
      (princ)
     
    (defun c:ktd (/ ss cmdecho)
      (if (setq ss (ssget '((-4 . "<AND")
                            (0 . "DIMENSION")
                            (-4 . "<NOT")
                            (1 . ",*<>*")
                            (-4 . "NOT>")
                            (-4 . "<NOT")
                            (8 . "MW-NOT_PLOT")
                            (-4 . "NOT>")
                            (-4 . "AND>")
                           )
                   )
          )
        (progn
          (princ (strcat "co " (itoa (sslength ss)) " duong kich thuoc da bi thay doi."))
          (or (tblsearch "LAYER" "MW-NOT_PLOT")
              (entmake (list '(0 . "LAYER")
                             '(100 . "AcDbSymbolTableRecord")
                             '(100 . "AcDbLayerTableRecord")
                             '(70 . 0)
                             (cons 2 "MW-NOT_PLOT")
                             (cons 62 203)
                             (cons 6 "Continuous")
                             (cons 290 0)
                       )
              )
          )
          (setq cmdecho (getvar 'cmdecho))
          (setvar 'cmdecho 0)
          (command "._change" ss "" "P" "LA" "MW-NOT_PLOT" "C" "BYLAYER" "")
          (setvar 'cmdecho cmdecho)
          (princ " cac doi tuong nay da duoc chuyen sang layer MW-NOT_PLOT")
        )
      )
      (princ)
    )
    (defun c:ktd (/ ss cmdecho)
      (if (setq ss (ssget '((-4 . "<AND")
                            (0 . "DIMENSION")
                            (-4 . "<NOT")
                            (1 . ",*<>*")
                            (-4 . "NOT>")
                            (-4 . "<NOT")
                            (8 . "MW-NOT_PLOT")
                            (-4 . "NOT>")
                            (-4 . "AND>")
                           )
                   )
          )
        (progn
          (princ (strcat "co " (itoa (sslength ss)) " duong kich thuoc da bi thay doi."))
          (or (tblsearch "LAYER" "MW-NOT_PLOT")
              (entmake (list '(0 . "LAYER")
                             '(100 . "AcDbSymbolTableRecord")
                             '(100 . "AcDbLayerTableRecord")
                             '(70 . 0)
                             (cons 2 "MW-NOT_PLOT")
                             (cons 62 203)
                             (cons 6 "Continuous")
                             (cons 290 0)
                       )
              )
          )
          (setq cmdecho (getvar 'cmdecho))
          (setvar 'cmdecho 0)
          (command "._change" ss "" "P" "LA" "MW-NOT_PLOT" "C" "BYLAYER" "")
          (setvar 'cmdecho cmdecho)
          (princ " cac doi tuong nay da duoc chuyen sang layer MW-NOT_PLOT")
        )
      )
      (princ)
    )

  2. mình có 1 bản vẽ mb kiến trúc, có rất nhiều layer khác nhau, mình đã dùng lệnh MA chuyển hết tất cả sang layer 0(mình đã phá nát block) để xuất sang 3d dựng hình, nhưng khi pu xóa sạch thì nó vẫn còn tồn tại khá nhiều layer vd như:kí hiệu, hatch, kich thước,....mình tìm nát bản vẽ mà ko biết nó còn tồn tại chỗ nào, mình sử dụng layiso lun nó cũng ko hiện ra, bạn nào có thể giải thích dùm mình dc ko và làm sao để tìm ra nó ở chỗ nào mà xóa sạch, sẵn tiện cho mình hỏi có lệnh nào 1 phát 1 đổi hết sang layer 0 mà ko cần phá block ko?

    Dùng lệnh laymrg thử xem sao

    • Vote tăng 1

  3. Em xin trình bày rõ hơn về yêu cầu của mình:

    Bên model có một khung REC tỷ lệ với một khung MV bên layout, làm thế nào để đưa khung REC bên model trùng khít với khung MV bên layout? Với câu hỏi trên thì làm theo cách sau:" Z enter\ shift + chuột phải chọn Endpoint\ click điểm 1\ shift + chuột phải chọn Endpoint\ click điểm 2 " . Và vấn đề đặt ra ở đây là bên model có nhiều khung REC chứa nhiều nội dung khác nhau trong đó cần đưa sang bên layout tương tự nhau. Nhờ các pro viết dùm em cái lisp này với ạ. Thanks rất nhiều!

     

    Express -> layout tools -> align space

     

     

    Command: <Switching to: Layout1>

    Regenerating layout.

    Regenerating model - caching viewports.

    Command:

    Command:

    Command: alignspace

    FIRST alignment point in MODEL space:

    SECOND point in MODEL space or <Return> for none:

    FIRST alignment point in PAPER space:

    SECOND alignment point in PAPER space:

    Paper space = Model space

    ..........


  4. Chào các bác quản trị viên của diễn đàn và cả nhà.

    Các bác giúp em với. Em chưa biết làm cách nào để tạo ra các đường kích thước giống như trong bản vẽ đính kèm của em dưới đây.

    Các bác nào biết chỉ cho em với ạ.

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

     

    http://www.cadviet.c...pfiles/3/01.dwg

     

    Command: DIMORDINATE

     

    Specify feature location:

    Non-associative dimension created.

    ...


  5. Em thấy trong đó tác giả có viết các biến đó : ON/OFF mà, mình cho đối số : 1 và 0 nó có nghĩa gì vậy bác, khi thay thì em đã làm ddc roay.

    Và bác chỉ giúp em biến : chọn khoảng hở từ chân Dim tới đối tượng đo.

    tác giả có viết các biến đó : ON/OFF cho dễ hiểu thôi. còn kiểu dữ liệu của biến đó là số nguyên, nên phải là 0 và 1

    biến khoảng hở từ chân Dim tới đối tượng đo DIMEXO

     

     

    PS: bạn tạo 2 dimstyle giống nhau rồi giữ 1 cái làm chuẩn, sửa cái còn lại (cái cần xác định biến gì?) rồi chọn so sánh 2 dimstyle này sẽ rõ hơn về các biến này

    (khi bạn gõ lệnh dimstyle sẽ thấy có Compare)

    • Vote tăng 1

  6. làm sao để cho dòng chữ bên dưới hiện lên trên hình chữ nhật .

    sử dụng lệnh " draworder "

    các huynh hưỡng dẫn em với em xin chân thành cảm ơn.

    http://www.cadviet.c...drawing1_85.dwg

    dùng lệnh draworder chọn text -> Above objects -> chọn hatch

    đổi text or hatch sao cho khong cùng màu sẽ thấy text trên hatch

     

    bạn có thể sử dụng lệnh textmask

    hoặc ghi text trước khi hatch

    • Vote tăng 1

  7. Em hay phải chỉnh sửa bản vẽ cho chuẩn ISO, hay phải chỉnh font của text style. Em đang cần 1 lisp làm nhiệm vụ như sau. Khi e đánh lệnh và tích vào 1 text thuộc 1 style nào đó. Thì font của style đó được chuyển sang font .VNAVANTH (chế độ regular). Mong các bác biết về lisp giúp đỡ em ạ !

     

    Nếu bạn còn cần, thì thử cái này xem

     

    (defun c:TENLENH (/ text style ename asslst) ;; sua lai ten lenh
     (setq text (entsel "\nPick a text or Mtext"))
     (setq style (cdr (assoc 7 (entget (car text)))))
     (setq ename (tblobjname "style" style))
     (setq asslst (entget ename))
     (entmod (subst (cons 3 "FONT-MOI") (assoc 3 asslst) asslst)) ;; sua lai font
     (command "_.regen")
     (princ)
    ) ;_ end defun
    


  8. ai chỉ giúp mình cách tắt cái này với

     

     

    thử xem sao (cad2010)

    Command: (vl-load-com)

    Command: (vl-registry-write (strcat "HKEY_CURRENT_USER\\" (vlax-product-key)"\\InfoCenter")"InfoCenterOn" 0)

    hoặc vào Registry Editor (run -> regedit)

    HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R18.0\ACAD-8001:409\InfoCenter

    chỉnh lại giá trị "InfoCenterOn" thành 0

    • Vote tăng 1

  9. Gửi các anh, chị trong diễn đàn

    Em mới tham gia diễn đàn mong nhờ các cao thủ chỉ giáo. Em hay làm bản vẽ và thường phải copy 1 đối tượng gốc thành nhiều đối tượng (ví dụ n)với 1 khoảng cách cho trước (Ví dụ a) theo trục x hoặc y. Cách thông thường là dùng lệnh array nhập số hàng, số cột, khoảng cách nhưng cách này rất bất tiện và mất thời gian khi số hàng =1 hoặc số cột =1. Vì vậy em muốn có 1 lisp dùng như lệnh copy chỉ cần nhập số lượng copy và khoảng cách giữa các đối tượng là ra kết quả. Ngoài ra nếu được thì viết lisp với nội dung tương tự nhưng với lệnh DIM đề tạo nhiều đoạn kích thước bằng nhau cùng một lúc.

    Xin cám ơn các anh, chị trước.

    Em Hoàng.

    Nếu cad của bạn có Express bạn có thể tham khảo lệnh COPYM

    • Vote tăng 1

  10. CÁC BẠN ƠI GIÚP MÌNH HIỂU VỀ TỈ LỆ HƠN NHÉ.

    chuyện là như thế này, mình quy hoạch khu đất 300ha, mình vẽ ở tỉ lệ 1:1 ở hệ mét cho dễ, VD: chiều rộng 500m mình bấm 500 và vẽ thôi chứ vẽ mm rất là dài, không thấy được điểm cuối. Vẽ xong giờ mình muốn bỏ vào khung A0 và cho nó thành tỉ lệ 1/2000, thì mình vẽ 1 khung A0 (1189x841) cũng ở hệ mét lun. rồi mình scale khung len 2000 thay vì sacle bản vẽ xuống 2000, nhưng mà hỡi oi cái khung nó bự wa, mình sợ sai tỉ lệ quá, bạn nào đọc được hãy góp ý, hướng dẫn và chia sẻ kinh nghiệm cho mình với. cám ơn nhiều nhiều lắm lắm.

    1189x2000/1000 = 2378

    841x2000/1000 = 1682

    vẽ 1 khung có kích thước: (2378 x 1682)


  11. Các bạn có thể cho mình biết tại sao đường Pline có Width>0 bị rỗng ruột k ?( cả mũi tên của dims cũng bị )

    Cách khắc phục như thế nào giúp mình với.

    Thử làm thế này xem

     

    Command: FILLMODE

    Enter new value for FILLMODE <0>: 1

    Command: re

    REGEN Regenerating model.


  12. Em đang cần cái lisp cộng tăng dần cụ thể thế này.

    Chọn số bắt đầu (trên màn hình)

    nhập số cộng thêm (số có thể là số thập phân vd 1.25 hay 0.25 ...)

    sau đó copy cộng thêm nó giống lệnh OC trong lisp này nhưng ở lisp này không cho số cộng thêm là giá trị thập phân chỉ cho số nguyên. ai giúp e sửa lại với ạ

    Tạm thời làm thế này:

    (defun c:+c (/ b p1 p2 cong value dimzin)
    (defun *error* (msg) (and dimzin (setvar "dimzin" dimzin)) (setq *error* nil) (princ))
    (while (null (setq b (ssget ":S" '((0 . "TEXT") (1 . "~*[~0-9]*,~*[~0-9`.0-9]*")))))
     (princ "\nKhong phai so. Chon lai.")
    );_ end while
    (setq dimzin (getvar "dimzin"))
    (setvar "dimzin" 0)
    (setq b	 (ssname b 0)
       value (cdr (assoc 1 (entget b)))
    );_ end setq
    (or *cong* (setq *cong* 1.0))
    (or (setq cong (getreal (strcat "\nNhap so cong them: <" (rtos *cong* 2 2) ">")))
     (setq cong *cong*)
    );_ end or
    (setq *cong* cong)
    (setq p1 (getpoint "\nDiem moc: "))
    (while (setq p2 (getpoint p1 "\nDiem tiep theo: "))
     (command "copy" b "" p1 p2)
     (setq value (rtos (+ cong (atof value)) 2 2))
     (entmod (subst (cons 1 value) (assoc 1 (entget (entlast))) (entget (entlast))))
    );_ end while
    (setvar "dimzin" dimzin)
    (setq *error* nil)
    (princ)
    );_ end defun

    • Vote tăng 1

  13. Mong mọi người giúp dùm với:

    Trong cùng một khung vẽ layout các khối hình được sắp xếp đúng vị trí nhưng khi mở qua model thì một số khối bị nhảy sang vị trí khác. khi sắp xếp chúng lại đúng vị trí bên model thì bên layout lại bị nhảy. Không hiểu là vì sao ?

    Có thể là do bạn sử dụng lệnh move để sắp xếp đúng vị trí các khối hình trong "một khung vẽ layout".

    Khi thực hiện các lệnh trong "một khung vẽ layout" thì cũng như thực hiện lệnh trong model

    • Vote tăng 1

  14. Chào bác SSG,

    Dựa trên cái lisp và sư gợi ý của bác mình viết thêm phần đổi ngược một chuỗi ký tự biểu diễn số trong các hệ cơ số đếm khác nhau thành giá tị số nguyên trong hệ thập phân. Nhờ bác và các bác khác kiểm tra lại giùm mình nhé.

    Bác sửa dòng này: (setq n (strlen (strcase str))val 0i 0 )

    thành: (setq n (strlen (setq str (strcase str))) val 0 i 0 )

    là tạm ổn vì (- (ascii "a") 55) = 42 /= (- (ascii "A") 55) = 10

    với lại nếu có 1 ký tự không phải là A, B, C, D, E, F thì sao!? - không cần lắm nhưng ...

    nếu có thể thì sửa vị trí các đối số lại cho giống hàm base

    (defun con (bas str / n i )

    • Vote tăng 2

  15. Mình dựa theo cái líp của bác tbinh viết thử cái líp sửa chiều cao của Text trong Dim, mà không đc, hjx.

    Các bác xem giúp em vơi nhé:

     

    Thay đoạn này: (setq ssd (ssget '(0 . "DIMENSION"))); loc dim

    bằng đoạn này: (setq ssd (ssget '((0 . "DIMENSION"))))

    Thay đoạn này:

    (while (< i (sslength ssd))

    (setq en (ssname ssd i));;lay ten

    ;el (entget en);;lay list thong tin

    ;e (cdr (assoc 3 el))

    (vlax-ename->vla-object en);;chuyen sang vla obj

    (vlax-put-property 'textheight caodim);; nhap caodim vao texthight

    (setq i (1+ i))

    );endwhile

    bằng đoạn này:

    (while (< i (sslength ssd))

    (setq en (ssname ssd i))

    (vlax-put-property (vlax-ename->vla-object en) 'textheight caodim)

    (setq i (1+ i))

    ) ;_ end while

    • Vote tăng 1

  16. Mình có phần hatch của 1 đa giác (đa giác trước đó đã bị xóa) , nhờ các bạn giúp mình viết lisp ghi ra tọa độ đỉnh của đa giác (theo thứ tự tạo thành đa giác) . VD: hình chữ nhật được tạo thành bởi A B C D => thự tự là A B C D hoặc B C D A .. không thể là A C B D

    Bạn sang đây xem thử

    http://www.cadviet.com/forum/index.php?showtopic=18&st=0


  17. Chào cả nhà!!!

    em có một thắc mắc muốn hỏi toàn bộ anh em, nếu ai biết xin cho em câu trả lời. Em xin chân thành cám ơn!!!

    Nguyên là em đang làm bản vẽ hoàn công, và làm hồ sơ. Một số cái em dùng cad. Ví dụ như bản vẽ, bìa hồ sơ... em dùng Cad làm .

    Nhưng em làm dựa trên một số file xin được của anh làm cùng công ty, khi copy file đó về máy tính em để sửa để nguyên thì font chữ tiếng việt vẫn đọc được, nhưng khi em kích vào text để sửa thì không sửa được!!! mà nếu có sửa được thì chữ đánh cũng không đọc được

    Em biết đó là do lỗi font của máy tính em, nhưng em không biết là thiếu lỗi font nào!!!

    (*** chú ý: em đã dùng phần mềm vietkey khi đánh chữ trong cad, đã cài các bộ font unicode, abc ...)

    anh nào có cao kiến gì để file đó sửa được không cho em xin câu trả lời !!!

    Cái này hình như là CAD2005.


  18. Lisp thay thế các đường tròn có sẵn bằng Block.

    Tương tự các lisp trên, có bổ sung hộp thoại chọn Block : với tùy chọn xóa Circle.

     

    To Lisper : Mới "mót" đuợc điệu nhảy Lam-ba-da (lambda)

    Điệu nhảy này "quay cuồng" ra phết đấy!

    Sử dụng thành thạo điệu nhảy Lam-ba-da sẽ giúp code gọn gàng hơn.

    ...
    ((lambda (i / ent pt)
     (while (setq ent (ssname ss (setq i (1+ i))))
       (setq pt (cdr (assoc 10 (entget ent))))
       (entmake (list (cons 0 "INSERT")(cons 2 BlkNam) (cons 10 pt)))
       (entmake (list (cons 0 "SEQEND")))
       (if (= delCir 1) (entdel ent)))) -1)
    ...

    Em thấy có cũng có gọn hơn chút nào đâu chỉ khác là tự động gán i = -1 thôi mà!? :(

    • Vote tăng 1
×