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. Sau khi em vẽ một hình bất kì và em muốn delete nó ,em chọn toàn bộ nó và gõ delete nhưng không được .Phải bấm erase rồi chọn lại nó thì mới được .Tương tự em chọn hết nó rồi gõ move thì nó cũng bắt em phải select obiject lại.Làm sao đây giúp em với ...Chân thành cảm ơn

    Bạn làm thế này

     

    Command: pickfirst

    Enter new value for PICKFIRST <0>: 1

     

    sẽ giải quyết được vấn đề của bạn


  2. Và mỗi lần muốn xài cái lisp này, lại fải mở code của nó ra để thay đổi đoạn ký tự muốn thay thế?

    ý bạn là vậy?

     

    đúng vậy ! bởi vì mình phải làm việc với số lượng bản vẽ có nội dung giống nhau, làm các công việc giống nhau rất là lớn cho nên ko cần các bước trung gian cho phức tạp việc viết Lisp !

     

    mỗi lần muốn thay đổi là mỗi lần phải mở file lisp lên sửa thì ...

    nếu làm thế này:

    Command: (Replaceall "Diễn Đàn CAD VIET " "CAD VIET ") enter

    sẽ tự động thay thế luôn những chữ có nội dung là CADVIET nằm trong bản vẽ thành Diễn Đàn CAD VIET

    thì sao nhỉ :D

     

    Bạn tham khảo thêm ở đây:

    http://www.cadviet.com/forum/index.php?sho...amp;#entry75960

    để có thể thay thế ở các bản vẽ khác

     

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

    P/S: có gì nhờ Thaistreetz viết cho :tongue2:


  3. Tôi có xin được 1 bản vẽ mang về chỉnh sửa, nhưng đến khi in thì nó lại hiện lên một dòng chữ "PROĐUCE BY AN AUTODÉK EDUCATION PRODUCT" . Bình thường thì không nhìn thấy dòng chữ này đâu. Khi copy bất kỳ đối tượng nào trong bản vẽ ra vị trí khác cũng vẫn bị như thế. Nếu copy sang file khác thì nó yêu cầu phải chấp nhận dòng chữ trên. Có ai biết cách xoá dòng chữ trên thì chỉ cho tôi với. Xin cám ơn

     

    bạn gõ dòng 'produced by an autodesk educational product' vào mục tìm kiếm,sẽ có kết wa ngay đó

    :tongue2:

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

     

    sử dụng chức năng tìm kiếm của diễn đàn đi bạn ơi


  4. Các pác cho e hỏi tí: khi thiết lập 1 bản vẽ mới nên vẽ theo tỷ lệ nào (trong model)

    Cái vụ này trên diễn đàn nhiều lắm. Bạn nên sử dụng chức năng tìm kiếm của diễn đàn. Cái nào không giải quyết được thì hòi, lúc đó sẽ có nhiều người giúp bạn

     

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

    Mình đoán: sẽ có rất ít người trả lời bạn câu hỏi này.

    • Vote tăng 1

  5. pác có thể chỉ rõ hơn không. cad em cũng hơi kém, mục oblique angle ở đâu zậy? nằm trong lệnh nào hay trong tool. Còn làm theo cách của pác TUE vn thì ko đc. các pác xem hình vẽ ý của em nha.

    http://www.cadviet.com/upfiles/2/cadviet_4.dwg

     

    cách làm thủ công:

    Xoay text --> Chọn text --> Ctrl+1 (or _properties) --> trong tab TEXT bạn tìm xem Rotation là bao nhiêu thì điền giá trị đó vào Obliquing

    sẽ đúng như ý bạn

     

    Bạn sử dụng LISP này thử:

    (defun C:ORT (/ SS TXTLST TEXT)
    (setq SS (ssget '((0 . "TEXT"))))
    (setq TXTLST (vl-remove-if 'listp (mapcar 'cadr (ssnamex SS))))
    (foreach TEXT TXTLST
     (entmod (subst (cons 51 (cdr (assoc 50 (entget TEXT)))) (assoc 51 (entget TEXT)) (entget TEXT)))
    );_ end foreach
    );_ end defun

     

    text phải xoay trước khi thực hiện lênhh lisp nầy

    • Vote tăng 1

  6. Các bác cho em hỏi là sau khi em dùng lệnh layiso ẩn đi các layer không cần thiết để dễ nhìn (Trong layout) sau đó em dùng lệnh layon thì nó không hiện layer mình đã ẩn.Em đã đọc trên diễn đàn đã có lisp viết ẩn và hiện đối tượng chọn nhưng em muốn chọn theo layer chẳng lẽ trong cad không có lệnh hiện lại layer đã ẩn trong layout à?(em cung biết lệnh vplayer nhưng lệnh đó cần nhập tên layer -nếu có nhiều layer thì bó tay hix).Mong các bác giúp nha !(do' bac' giup e voi)

     

    LAYISO thì ngược với nó là LAYUNISO bạn thử xem được không

    • Vote tăng 3

  7. Để xác định một đối tượng là reactor bạn dùng hàm vlr-owners

    trong ví dụ của bạn, gọi (vlr-owners OBJ-REACTOR) sẽ trả về các đối tuợng VLA, trong t/hợp này là IAcadText .

     

    Cho em hỏi thêm chút nữa là: hàm (vlr-owners OBJ-REACTOR) trả về các đối tuợng VLA, nếu ngược lại thì sử dụng hàm gì? (hàm??? VLA-OBJ) trả về OBJ-REACTOR


  8. mọi người cho t hỏi về cách chuyển từ phông đen sang màu trằng trong Model mới>

    thanks

     

    Nếu giống vậy:

    Hôm qua mình cài Cad 2010 trên Windown 7, nhưng ko hiểu sao vùng làm việc ( vùng mình vẽ ý ) nó ko phải là màu đen mà lại là màu trắng. Ai biết chuyển nó về màu đen thì giúp mình với.

    huhu.jpg

     

    thì bạn làm thế này

     

    bạn làm thế này xem sao:

    Command: op

    --> Display --> Color --> Context --> 2D Model space --> Color --> Black --> Apply and save -->>

    • Vote tăng 1

  9. tại sao "FILLMODE" = 1 mà khi chuyển sang layout các solid lai không được fill (bên model thì ok). ai biết chỉ giúp với

    Thank!

     

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

    04/11/2009:sao không ai ghé thăm topic này nhỉ?

    08/11/2009: không lẽ mình post nhằm topic nên không ai trả lời?????? :tongue2:

    12/11/2009: không biết nên post câu hỏi này ở đâu nhỉ??? :D

    28/11/2009: gần 1 tháng rồi mà không thấy ai ghé thăm nhà???


  10. Em cài eDrawing vào máy thì các file Auto CAD có trong máy đều chuyển sang biểu tượng eDrawing.

     

    Em không muốn như thế vì khi mở lại phải dùng Open with...

     

    Nhờ các anh chỉ giúp

     

    open with autocad rồi đánh dấu chọn "Always use the selected program to open this kind of file" thì các file Auto CAD sẽ lại là Auto CAD thôi


  11. Cái lisp kia, dòng thông báo lỗi đó xuất hiện sau khi chọn đối tượng nguồn.

    Có phải sau khi chọn xong đối tượng nguồn bạn nhấn enter không??? nếu đúng thì đừng nhấn enter mà tiếp tục chọn luôn đới tượng muốn chỉnh sửa, còn không thì minh2 bó tay rồi.

     

    ...Lisp mới này ko chạy được với Dim ạ ???.

    "*Text,*Attribute" --> "*Text,*Attribute,*Dimension"

    (0 . "*TEXT") --> (0 . "*TEXT,DIMENSION")

     

    chưa test với các đối tuong la2 DIMENSION


  12. Em đã đổi tên biến, dùng tính năng thay thế trong Word cho khỏi nhầm nhưng vẫn lỗi:

    CODE

    (defun c:mat (/ donvi ddd DT K6 K K1 k7 k3 k4 k5 xx L M DTs K6s K)

     

    Select objects: ; error: bad argument type: lselsetp nil

    Nhờ các cao thủ giúp đỡ !

     

    còn ddd và xx kìa đổi thử luôn xem sao

     

    bạn lỗi lúc nào: ngay lúc gõ lệnh hay sau khi chọn đối tượng muốn chỉnh

     

    không được thì bạn sử dụng tam cái này:

    (defun C:MATCH-TEXT (/ RESOBJS BJS SS OLDVARS STR SLST ELE)
    (setq *ERROR* (defun MATCH-TEXT-ERR (MSG)
    			(cond ((wcmatch MSG "Function cancelled") (princ " User abort"))
    				  ((wcmatch MSG "quit / exit abort") (princ " exit command!"))
    				  (t (progn (princ MSG) (princ)))
    			);_ end cond
    			(setq OLDCMD (getvar "CMDECHO"))
    			(setvar "CMDECHO" 0)
    			(command ".undo" "end" ".undo" "")
    			(setvar "CMDECHO" OLDCMD)
    			(if OBJS
    			 (redraw OBJS 4)
    			);_ end if
    			(if OLDVARS
    			 (mapcar 'setvar '("CMDECHO") OLDVARS)
    			);_ end if
    			(setq *ERROR* NIL)
    		   );_ end defun
    );_ end setq
    (if (not vlax-ename->vla-object)
     (vl-load-com)
    );_ end if
    (setq OLDVARS (mapcar 'getvar '("CMDECHO")))
    (setvar "CMDECHO" 0)
    (command ".undo" "begin")
    (setq RESOBJS t)
    (while RESOBJS
     (while (null (setq OBJS (car (nentsel "\nSelect source text: ")))) (princ "\n Nothing selected!"))
     (if (wcmatch (vla-get-objectname (vlax-ename->vla-object OBJS)) "*Text,*Attribute")
      (progn (setq STR (vla-get-textstring (vlax-ename->vla-object OBJS))) (setq RESOBJS NIL))
      (progn (alert "Select Text/Mtext/Attribute") (setq RESOBJS t))
     );_ end if
    );_ end while
    (redraw OBJS 3)
    (princ "\nSelect destination text: ")
    (while (null (setq SS (ssget '((0 . "*TEXT"))))) (princ "\nSelect destination text: "))
    (setq SLST (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex SS)))))
    (foreach ELE SLST (vla-put-textstring ELE STR))
    (redraw OBJS 4)
    (setq *ERROR* NIL)
    (command ".undo" "end")
    (mapcar 'setvar '("CMDECHO") OLDVARS)
    (princ)
    );_ end defun


  13. huhu ! lisp của anh duy hay thật nhưng em ko thể dùng được, Ko phải là sai code mà chẳng bit làm sao ý. Nó vẫn báo lỗi

    Select objects: ; error: bad argument type: lselsetp nil

    bạn thử sửa lại:

    (defun c:mat (/ donvi ddd DT DTM NOIDUNG DIEMCHENMAU diemvt1 diemvt2 diemvt3 diemvt4 xx L M DTs DTMs NOIDUNG)

    ....

    );_ end defun


  14. Ý mình là muốn trừ đi tất cả các số đuợc chọn một giá trị nào đó (cũng gần tuơng tự như đánh số thứ tự)

    ví dụ: có các sô : 45.24 ; 55.67 ;78.53

    giờ mình muốn trừ đi các số trên một giá trị là 0.2:

    kết quả cuối cùng các số đuợc chọn là: 45.04 ; 55.47 ; 78.33

    Nếu dùng lisp đánh số thứ tự thì chỉ tính đuợc cho các số nguyên thôi.

    bạn dùng thử lisp này

    (defun C:TRU (/ OLDDIMZIN SS SOTRU DSSBT SBT)
     (vl-load-com)
     (setq OLDIMZIN (getvar "DIMZIN"))
     (setvar "DIMZIN" 0)
     (princ "\nChon cac so bi tru")
     (setq SS (ssget '((0 . "TEXT"))))
     (if _SOTRU
    (progn
      (initget 4)
      (if (null (setq SOTRU (getreal (strcat "\nNhap so tru: <" (rtos _SOTRU) "> "))))
    (setq SOTRU _SOTRU)
      ) 
    ) 
    (progn
      (initget (+ 1 4))
      (setq SOTRU (getreal "\nNhap so tru: "))
    ) 
     ) 
     (setq DSSBT (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex SS)))))
     (foreach SBT DSSBT (vla-put-textstring SBT (rtos (- (atof (vla-get-textstring SBT)) SOTRU))))
     (setq _SOTRU SOTRU)
     (setvar "DIMZIN" OLDIMZIN)
     (princ)
    )

    • Vote tăng 1

  15. (defun C:L2T (/ OBJLINE SS OBJLST OBJ;|OBJ-REACTOR|;)
    (vl-load-com)
    (setq OBJLINE (vlax-ename->vla-object (car (entsel "\nChon duong thang nguon: "))))
    (while	(/= (vla-get-objectname OBJLINE) "AcDbLine")
     (setq OBJLINE (vlax-ename->vla-object (car (entsel "\nChon duong thang nguon: "))))
    )
    (princ "\nChon cac text dich: ")
    (setq SS (ssget '((0 . "TEXT"))))
    (setq OBJLST (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex SS)))))
    (foreach OBJ OBJLST
     (vla-put-textstring OBJ (rtos (* (vla-get-length OBJLINE) (getvar "DIMLFAC"))))
    )
    (setq OBJLST (append OBJLST (list OBJLINE)))
    (if (and OBJ-REACTOR (vlr-added-p OBJ-REACTOR))
     (vlr-remove OBJ-REACTOR)
    )
    (setq OBJ-REACTOR
       (vlr-pers
    (vlr-object-reactor OBJLST
    			NIL
    			'((:vlr-modified . UPDATETEXT)
    			  (:vlr-erased . ERASEENT)
    			 )
    ) 
       )
    ) 
    (princ (strcat "\nDa link duong thang voi " (itoa (sslength SS)) " text"))
    (princ)
    ) 
    (defun UPDATETEXT (NOTIFIER-OBJECT OBJ-REACTOR PARAMETER-LIST / OBJLST OBJ)
    (setq *ERROR* REACTOR-ERR)
    (if (= (vla-get-objectname NOTIFIER-OBJECT) "AcDbLine")
     (progn
      (princ (strcat "\nTy le 1/" (rtos (getvar "DIMLFAC"))))
      (setq OBJLST (vlr-owners OBJ-REACTOR))
      (foreach OBJ	OBJLST
    (if	(= (vla-get-objectname OBJ) "AcDbText")
     (vla-put-textstring OBJ (rtos (* (vla-get-length NOTIFIER-OBJECT) (getvar "DIMLFAC"))))
    ) 
      )
     ) 
    )
    (setq *ERROR* NIL)
    )
    (defun ERASEENT	(NOTIFIER-OBJECT OBJ-REACTOR PARAMETER-LIST / OBJLST)
    (alert "Ban da thuc hien lenh Erase tu doi tuong REACTOR.\nCac doi tuong khong con link voi nhau!")
    (vlr-owner-remove OBJ-REACTOR NOTIFIER-OBJECT)
    (vlr-remove OBJ-REACTOR)
    (princ)
    )
    (defun REACTOR-ERR (MSG)
    (cond ((= MSG "Automation Error. Object was open for undo") (princ "\nObject was open for undo"))
       ((= MSG "Automation Error. Object was erased") (princ "\nObject was erased"))
       ((= MSG "quit / exit abort") (princ "\t\texit"))
       (t (progn (princ MSG) (princ)))
    )
    (setq *ERROR* NIL)
    (princ)
    )

     

    tiền bối gia_bach từ các hướng dẫn của tiền bối, em viết cái lisp này

    tiền bối cho em hỏi thêm chút nha

    - PARAMETER-LIST sử dụng làm gì?

    - mình có thể thêm đối số cho các hàm callback không?

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

    26/10/2009

    có cách nào xác định một đối tượng là reactor (an object from the list of owners of an object reactor)


  16. Lisp rất hay, nhưng cho mình hỏi tý, Gia_bach có thể chỉnh lại như lệnh "field" của cad được không? (cụ thể là: đối tượng nguồn thay đổi thì đối tượng đích thay đổi theo nhưng thêm "background color" làm mờ đối tượng đích bằng lớp màu trắng sữa phủ lên đối tượng để khỏi nhầm lẫn). Cảm ơn gia_ bach

    trong lisp nay: các đối tượng này được liên kết với nhau một đối tựơng đổi thì các đối tựơng khác cùng đổi theo (không có nguồn và đích)

     

     

    Tiền bối gia_bach cho em hỏi có cách nào để không cho edit trực tiếp một đối tượng không(để dùng làm đối tượng đích)

    hiện tại em chỉ xác định đối tựong đích rồi đặt dkiện để cac đối tượng khác không bị thay đổi khi tựong đích bị thay đổi thôi :bigsmile:


  17. Chào các bạn

    Nhân đọc bài Ánh xạ giá trị đối tượng text, nguồn đổi giá trị, đích bị sửa của bác Hoành,

    xin gửi các bạn LISP : Ánh xạ giá trị đối tượng gồm

    1 . LinkT : Ánh xạ giá trị Text

    2 . LinkA : Ánh xạ giá trị Diện tích

    chú ý : khi sửa giá trị ở đối tượng nguồn, đối tượng đích (text) chỉ update sau khi sử dụng lệnh REGEN, SAVE, PLOT, ...

    (defun c:LinkA (/ ss_ent ent ss e cmd sole tile Suff Pref);Link Area

    -----

    (setq Pref "S=")

    (setq Suff " mm2")

    ------

     

    có thể thêm Pref và Suff vào chuổi đích vậy có cách nào chỉ lấy ra một đoạn chuổi nguồn không?

    ví dụ

    nguồn: 15 dia8 a=20

    đích thứ nhất lấy số lượng 15

    đích thứ hai lấy đường kính 8

    đích thứ ba lấy khoảng cách 20

     

    Thanks!

×