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. Bạn phải viết chính xác là :100/250

     

    Yêy cầu của bạn ấy là "Em có một hình chữ nhật có tỉ lệ là 1/250, em muốn chuyển về tỉ lệ 1/100 thì làm như thế nào.Mong các anh, chị chỉ giúp em.Thank's!" vì vậy chỉ có cách Scale khung tên thì kích thước hình vẽ luôn đúng với mọi tỷ lệ in

     

    Cái này mình hiểu là: hình chữ nhật của bạn ấy đang vẽ ở tỷ lệ 1/250 bây giờ bạn ấy muốn chuyển sang tỷ lệ 1/100

    --> hình chữ nhật ở tỷ lệ 1/100 sẽ lớn hơn hình chữ nhật ở tỷ lệ 1/250 nên phải là 250/100


  2. Mình đang dùng Cad2010, bữa trước cài lại win nên giờ những bản vẽ cũ font chữ nhảy tùm lum

    bị mất dấu, ko đọc được mặc dù trong máy có font đó, mình gõ bằng mã VNI-Times (font này cũng có nhưng ko đọc được)

    giờ phải ngồi chuyển từng dòng sang font khác (VNI-Aptima) thật cực quá, bác nào biết cách chỉnh hàng loạt chỉ dùm mình với!

    Thanks các bác nhiều nhiều!!!

     

    bạn dùng lệnh fi (FILTER)

     

    Command: fi

    FILTER

    --> Add Selected object < --> Delete hết chi để lại Object = text --> Apply --> chon toàn bộ

    Select object: Applying filter to selection.

    Select objects: Specify opposite corner: 2237 found

     

    chon textstyle

    • Vote tăng 1

  3. ..............

    Bạn master_worse có thể xem lại code trên của bạn 1 chút được không? Khi chạy Lisp thì biến Gridunit không chịu nhận giá trị mới do User nhập vào. Bạn xem lại dùm Tue_NV 1 chút nhé.

    Anh sửa lại chổ này (action_tile "accept" "(done_dialog 1)") thành

    (action_tile "accept"

    "(setq EDX (get_tile \"edit_X\")

    EDY (get_tile \"edit_Y\"))

    (setvar \"gridunit\" (list (atof EDX) (atof EDY)))

    (done_dialog 1)")

     

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

     

    .......

    Tiện thể bạn cho mình hỏi về chổ này :

     

    (action_tile

    "radio_off"

    "(mode_tile \"edit_X\" 1) (mode_tile \"edit_Y\" 1) (setq off t)(done_dialog 3)"

    );_ end action_tile

    (action_tile

    "radio_on"

    "(mode_tile \"edit_X\" 0) (mode_tile \"edit_Y\" 0) (setq off nil)(done_dialog 4)"

    );_ end action_tile

     

    Bạn Nataca có giải thích về dấu \ trong hàm mode_tile nhưng thực sự là mình chưa hiểu lắm về nó. Hay là cú pháp của nó phải vậy và ta phải ghi như thế. Mình chưa sử dụng dấu \ này trong code bao giờ nên lọ mọ còn chổ chưa thông? Mong bạn master_worse, anh gia bach và các bác trên diễn đàn có thể chi tiết cho chổ này với.

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

     

    ....

     

    ví dụ thế này nhé: in chuổi anh "Tue_VN" khong biet su dung dau \ ra màn hình :cheers: :D

    anh không thể viết

    (setq chuoi "anh "Tue_VN" khong biet su dung dau \")

    (princ chuoi)

    mà phài viết

    (setq chuoi "anh \"Tue_VN\" khong biet su dung dau \\")

    (princ chuoi)

    • Vote tăng 1

  4. ............................................

     

    Dựa trên code của bạn master_worse thì Tue_NV đã viết thêm code lấy được giá trị hiện thời của biến Gridunit và cho vào hộp box Edit_X Edit_Y. Và mình cũng đã viết code để lấy giá trị của của hộp Edit_X Edit_Y do User nhập vào và gán lại cho biến Gridunit để biến Gridunit nhận giá trị mới do User nhập vào nhưng chưa thành công. Tue_NV không biết code mà mình đã viết bị lỗi ở chổ nào mà biến Gridunit không chịu nhận giá trị mới do User nhập vào

     

    Mong mọi người chỉ giúp.

    Tue_NV xin chân thành cảm ơn.

    Em sửa lại đoạn code của anh rồi, anh xem thừ:

    (defun C:EX6 (/ DCL_ID PHEPCHON CUR_GRID)
    
     (setq CUR_GRID (mapcar 'getvar '("gridmode" "Gridunit")))
    
     (setq DCL_ID (load_dialog "ex18-6.DCL"))
     (setq PHEPCHON 5)
     (while (< 2 PHEPCHON)
    (if (not (new_dialog "ex6" DCL_ID))
      (exit)
    );_ end  if
    
    (setq EDX (rtos (car (getvar "Gridunit"))))
    (setq EDY (rtos (cadr (getvar "Gridunit"))))
    
    (if OFF
      (progn (set_tile "radio_off" "1")
    		 (set_tile "radio_on" "0")
    		 (mode_tile "edit_X" 1)
    		 (mode_tile "edit_Y" 1)
    
    		 (set_tile "edit_X" EDX)
    		 (set_tile "edit_Y" EDY)
    
    		 (setvar "gridmode" 0)
    
      );_ end  progn
      (progn (set_tile "radio_off" "0")
    		 (set_tile "radio_on" "1")
    		 (mode_tile "edit_X" 0)
    		 (mode_tile "edit_Y" 0)
    		 (set_tile "edit_X" EDX)
    		 (set_tile "edit_Y" EDY)
    
    		 (setvar "gridmode" 1)
      );_ end  progn
    );_ end  if
    (action_tile
      "radio_off"
      "(mode_tile \"edit_X\" 1) (mode_tile \"edit_Y\" 1) (setq off t)(done_dialog 3)"
    );_ end  action_tile
    (action_tile
      "radio_on"
      "(mode_tile \"edit_X\" 0) (mode_tile \"edit_Y\" 0) (setq off nil)(done_dialog 4)"
    );_ end  action_tile
    (action_tile "edit_X" "(setq EDX $value)"); lay gia tri
    (action_tile "edit_Y" "(setq EDY $value)")
    (action_tile "accept" "(done_dialog 1)")
    (action_tile "cancel" "(done_dialog 0)")
    (setq PHEPCHON (start_dialog))
    (cond ((= PHEPCHON 0) (mapcar 'setvar '("gridmode" "Gridunit") CUR_GRID))
    	  ((= PHEPCHON 3) (GRIDOFF))
    	  ((= PHEPCHON 4) (GRIDON))
    );_ end  cond
     );_ end  while
     (start_dialog)
     (unload_dialog DCL_ID)
     (princ)
    );_ end  defun
    					;		;
    (defun GRIDON () (setvar "gridmode" 1) (setvar "gridunit" (list (atof EDX) (atof EDY))))
    (defun GRIDOFF () (setvar "gridmode" 0) (setvar "gridunit" (list (atof EDX) (atof EDY))))

     

    hoặc anh sử dụng đoạn code này, em sửa lại của lão tiền bối gia_bach, tiền bối xem góp ý cho em luôn nha!

    (defun C:EX6 (/ DCL_ID PHEPCHON GRID GRID_X GRID_Y)
    
     (setq CUR_GRID (mapcar 'getvar '("gridmode" "Gridunit")));_[b]em thêm chổ này[/b]
    
     (setq DCL_ID (load_dialog "ex18-6.DCL"))
     (if (not (new_dialog "ex6" DCL_ID))
    (alert "\nKhong tim duoc file ex18-6.DCL.")
     )					 ; khoi dong
     (setq GRID (getvar "gridmode")); lay bien he thong gridmode  
     (setq GRID_X (rtos (car (getvar "Gridunit"))))
     (setq GRID_Y (rtos (cadr (getvar "Gridunit"))))
     (cond				 ;gan nut Grid va k/cach Grid
    ((= GRID 0) (set_tile "radio_off" "1") (mode_tile "edit_X" 1) (mode_tile "edit_Y" 1))
    ((= GRID 1)
     (set_tile "radio_on" "1")
     (mode_tile "edit_X" 0)
     (mode_tile "edit_Y" 0)
     (set_tile "edit_X" GRID_X)
     (set_tile "edit_Y" GRID_Y)
    )
     )					 ;main
     (action_tile "radio_off" "(Tat_Grid)")
     (action_tile "radio_on" "(Bat_Grid)")
     (action_tile "edit_X" "(setq grid_X $value)"); lay gia tri
     (action_tile "edit_Y" "(setq grid_Y $value)")
     (action_tile "accept" "(done_dialog 1)")
     (action_tile "cancel" "(done_dialog 0)")
     (setq PHEPCHON (start_dialog))
     (unload_dialog DCL_ID)
     (if (= PHEPCHON 1)
    (cond ((= GRID 0) (GRIDOFF))
    	  ((= GRID 1) (GRIDON))
    );_ end  cond
    (mapcar 'setvar '("gridmode" "Gridunit") CUR_GRID);;_[b]em thêm chổ này[/b]
     );_ end  if
     (princ)
    );_ end  defun
    
    (defun GRIDON () (setvar "gridmode" 1) (setvar "Gridunit" (list (atof GRID_X) (atof GRID_Y))))
    
    (defun GRIDOFF () (setvar "gridmode" 0))
    
    (defun TAT_GRID ()
     (setq GRID 0)  
     (mode_tile "edit_X" 1)
     (mode_tile "edit_Y" 1)
    
     (setvar "gridmode" 0);_[b]em thêm chổ này[/b]
    
    );_ end  defun
    
    (defun BAT_GRID ()
     (setq GRID 1)
     (mode_tile "edit_X" 0)
     (mode_tile "edit_Y" 0)
     (set_tile "edit_X" GRID_X)
     (set_tile "edit_Y" GRID_Y)
    
     (setvar "gridmode" 1);_[b]em thêm chổ này[/b]
    
    );_ end  defun


  5. Nếu mọi thứ không hoạt động như tôi đã nói thì hãy quay lại môi trường authoring block ở bước trên và sửa lại theo các bước ở trên hoặc tải một bản mà tôi đã vẽ và thiết lập sẵn ở link đầu bài (được lưu theo định dạng CAD 2007).Chúc bạn có một block linh hoạt để tích hợp các phép đo Vàng vào các bản vẽ của bạn.

     

    không thấy


  6. Em đã sử lại và sử dụng cái đọan CODE lấy giá trị Zoom XP đó, nhưng mà chưa biết cách dùng hàm Zoom để zoom đúng giá trị XP đó. Em tạm thời sửa code như thế này, hiện tại thì nó đang làm giảm đi giá trị Zoom của bản vẽ. Bác nào sửa cho em với !

    CODE

    ( defun c:xyx ()

    (defun GET-ZXP (ENAME / ZXP)

    (defun DXF (CODE ENAME) (cdr (assoc CODE (entget ENAME))))

    (if (= (DXF 0 ENAME) "VIEWPORT")

    (setq ZXP (/ (DXF 41 ENAME) (DXF 45 ENAME)))

    (progn (setq ZXP NIL) (princ "ham chi su ly \"viewport\""))

    )

    ZXP

    )

    (setq G (getreal "goc quay: "))

    ( Command "ucs" "z" G)

    (command "plan" "" "" )

    ( Command "zoom" zxp)

    )

     

    cú pháp của hàm get-zxp là (get-zxp ename) và hàm sẽ trả về giá trị zoom XP của "VIEWPORT" (bạn nhớ cung cấp tham số cho hàm get-zxp)

    bạn thêm dòng (setq zxp (strcat (rtos(get-zxp ename) ) "XP"))

    trước ( Command "zoom" zxp)

    hy vọng giúp được bạn


  7. Tue_NV đã thử viết lại Code của bạn hungfrank (ON/OFF chế độ Grid). Nhưng khi mình tick vào Grid ON hoặc GRID OFF trong hộp thoại Grid setup thì lệnh được thực thi luôn đồng thời hộp thoại Grid setup đóng lại luôn.

     

    Mình muốn tick vào Grid ON hoặc GRID OFF trong hộp thoại Grid setup và nhấn OK thì lệnh mới được thực thi nhưng chưa biết làm cách nào? Mong bạn Nataca và các bác trên diễn đàn chỉ giúp.

    em sửa đoạn code của anh lại thế này:

    (defun C:EX6 (/ DCL_ID PHEPCHON)
    (setq CUR_GRID (getvar "gridmode"))
     (setq DCL_ID (load_dialog "ex18-6.DCL"))
    
     (setq PHEPCHON 5)
     (while (< 2 PHEPCHON)
    
    (if	(not (new_dialog "ex6" DCL_ID))
      (exit)
    );_ end  if
    (if	OFF
      (progn (set_tile "radio_off" "1")
    	 (set_tile "radio_on" "0")
    	 (mode_tile "edit_X" 1)
    	 (mode_tile "edit_Y" 1)
      );_ end  progn
      (progn (set_tile "radio_off" "0")
    	 (set_tile "radio_on" "1")
    	 (mode_tile "edit_X" 0)
    	 (mode_tile "edit_Y" 0)
      );_ end  progn
    );_ end  if
    (action_tile
      "radio_off"
      "(mode_tile \"edit_X\" 1) (mode_tile \"edit_Y\" 1)"
    );_ end  action_tile
    (action_tile
      "radio_off"
      "(mode_tile \"edit_X\" 1) (mode_tile \"edit_Y\" 1)(setq off t)(done_dialog 3)"
    );_ end  action_tile
    (action_tile
      "radio_on"
      "(mode_tile \"edit_X\" 0) (mode_tile \"edit_Y\" 0) (setq off nil)(done_dialog 4)"
    );_ end  action_tile
    (action_tile "accept" "(done_dialog 1)")
    (action_tile "cancel" "(done_dialog 0)")
    (setq PHEPCHON (start_dialog))
    (cond
      ((= PHEPCHON 0) (setvar "gridmode" CUR_GRID))
      ((= PHEPCHON 3) (GRIDOFF))
      ((= PHEPCHON 4) (GRIDON))
    );_ end  cond
     );_ end  while
     (start_dialog)
     (unload_dialog DCL_ID)
     (princ)
    );_ end  defun
    		;
    (defun GRIDON ()
     (setvar "gridmode" 1)
    );_ end  defun
    (defun GRIDOFF ()
     (setvar "gridmode" 0)
    );_ end  defun

    anh xem thử nhé

     

    nếu có sách autolisp của TS.Nguyễn Hữu Lộc - KS. Nguyễn Thành Trung thì anh tham khảo thêm "Chương trình vẽ biên dạng răng Spurhear.lsp" trang 310

    • Vote tăng 1

  8. E chỉ hiểu được những cái đơn giản thôi. Bác gợi ý khó thế thì em xin dơ hai tay ra hàng !

    bạn dùng thử hàm này để lấy zoom XP của "VIEWPORT"

    (defun GET-ZXP (ENAME / ZXP)
    (defun DXF (CODE ENAME) (cdr (assoc CODE (entget ENAME))))
    (if (= (DXF 0 ENAME) "VIEWPORT")
     (setq ZXP (/ (DXF 41 ENAME) (DXF 45 ENAME)))
     (progn (setq ZXP NIL) (princ "ham chi su ly \"viewport\""))
    )
    ZXP
    )


  9. Lúc trước em có post bài yêu cầu lisp xoay bản vẽ trong layout, em đã tự viết được rùi, nhưng hiện giờ em muốn xoay bản vẽ 1 góc A độ và vẫn giữ nguyên độ zoom cũ. Em không biết cái hàm để lấy độ Zoom của layout.xin được chỉ giáo. Đây là code của lisp xoay bản vẽ trong layout theo 1 line

    CODE

    ( defun c:xx ()

    .....

    )

    không biết có hàm để lấy độ Zoom của layout không??? :cheers:

    nhưng hy vọng cái này có thể giúp bạn

    The ZOOM XP factor is calculated with the following formula: group_41 / group_45 (or pspace_height / mspace_height).


  10. Mình đang gặp sự cố trong quá trình dùng Cad. Tự nhiên hôm nay mình mởi máy ra để vẽ thì thấy các lệnh : Line, EXtrim, EXPLODE . . . không dùng được. mình đã thử một vài cách nhưng không được. các chương trình khác của mình vẫn dùng bình thường chỉ có Cad la như vậy. Mình cũng thử cài lại nhưng ko được.Bác nào có cao kiến mách dùm mình với. Thanks

    Bạn vào đây xem

    http://www.cadviet.com/forum/index.php?showtopic=9088

    có thể giải quyết được vấn đề của bạn.

    • Vote tăng 1

  11. Mong các bác chỉ giáo!

    Em có một bản vẽ trên model hình vẽ và chữ đều bị ngược nhưng trên layout các bác thiết kế dùng chiêu tạo ra viewport để nhìn 1phần nào đó trên bản vẽ thì lại đúng chiều. Và còn tạo ra các viewport nhìn xoay đi 1 góc tuỳ ý để nhìn các phần bản vẽ có góc khác nhau.

    Mong các bác sớm trả lời! Thank!

    bạn vào đây xem thử nhé:

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

    hoắc sử dụng chức năng tìm kiếm của diễn dàn với từ khóa "layout"


  12. chào các anh em trên diễn đàn. em lâu rồi không sử dụng phím tắt các lệnh đóng băng, tan băng, khoá và mở khoá trong layer. Nay em có việc cần dùng đến mà kô nhớ rõ tên lệnh của nó, em phải mở cả layer để tích vào từng lớp. làm như vậy lâu quá các bác ạ có bác nào còn nhớ các phím tắt này thì giúp em với. cám ơn các bác trước nhé

    laylck <> layulk - khoá và mở khoá

    layfrz <> laythw - đóng băng và tan băng

     

    layiso <>layuniso

    layoff <> layon

    • Vote tăng 3

  13. ... Và mình dùng không quen ribbon bạn cho hỏi cách chuyển về classic nhanh nhất với.

    Bác làm thế này:

    Command: WORKSPACE

    Enter workspace option [setCurrent/SAveas/Edit/Rename/Delete/SEttings/?]

    <setCurrent>: enter

    Enter name of workspace to make current [?] <3D Modeling>: AutoCAD Classic

     

    hoặc

    ... nó nằm ngay trên status bar....

  14. phần vertical làm gì có below bác.bác kiếm giúp e cái.kích thước ghi như thế là sai kỹ thuật rồi.nhưng vì bác ấy muốn ghi nên tìm cách.chứ sai thì trong cad không có chức năng thế âu.em dùng cad2007.mấy cái mới thì không biết chứ làm gì có below????? :cheers:
    bây giờ bạn làm thế này nhé:

    command: UCS

    Current ucs name: *WORLD*

    Specify origin of UCS or [Face/NAmed/OBject/Previous/View/World/X/Y/Z/ZAxis]

    <World>: ob

    Select object to align UCS: chọn đối tượng cần đo để xoay hệ trục

    Bây giờ bạn dùng lệnh dim.

    sau khi dim xong muốn trả về hệ trục cũ thì

    command: UCS

    Specify origin of UCS or [Face/NAmed/OBject/Previous/View/World/X/Y/Z/ZAxis]

    <World>: P hoặc enter


  15. không được bác ơi.bác hướng dẫn rõ tí đi.em không biết dùng lệnh này

    bây giờ bạn làm thế này nhé:

    command: UCS

    Current ucs name: *WORLD*

    Specify origin of UCS or [Face/NAmed/OBject/Previous/View/World/X/Y/Z/ZAxis]

    <World>: ob

    Select object to align UCS: chọn đối tượng cần đo để xoay hệ trục

    Bây giờ bạn dùng lệnh dim.


  16. chào mọi người, mình có vấn đề về dim style trong cad mà không biết diễn tả như thế nào. mọi người xem hình rồi chỉ mình nhé

    đây là hình đầu mỗi lúc mình sử dụng dim

     

    và mình muốn chỉnh sửa dim theo hình sau

     

    khác biệt là ở cái hướng của chữ đó. mọi người giúp mình nhé. thanks

     

    bạn thử nổ kích thước ra bằng lệnh explode sao đó dùng lệnh rotate(ro) xoay 180 rồi đưa về bên kia.trong cad không có tiêu chuẩn như bạn muốn.Mình phải làm thế thôi.đúng không các anh em??? :cheers:

     

     

    Bạn tìm hiểu lệnh UCS để giải quyết vấn đề này


  17. Cái lisp dải thép của em nó bị mất bắt điểm khi chạy. Các a thêm júp em vào để nó ko mất bắt điểm với !

    CODE

    bạn dùng thử:

    (DEFUN C:33 ()

    ;;;(Command "undo" "begin")

    ;;;(SETQ CMD (GETVAR "CMDECHO"))

    ;;;(SETQ OSM (GETVAR "OSMODE"))

    (progn

     

    (SETQ CMD (GETVAR "CMDECHO"))

    (SETQ OSM (GETVAR "OSMODE"))

    (SETVAR "CMDECHO" 0)

    (SETVAR "OSMODE" 15359)

    (PROMPT "\nArray object!")

    (SETQ SLT (SSGET))

    (initget 7)

     

    (PROMPT "\nStart point:")

    (SETQ SPT (GETPOINT))

    (PROMPT "\nEnd point:")

    (SETQ EPT (GETPOINT SPT))

    (SETVAR "OSMODE" 0)

    (SETQ GC (ANGLE SPT EPT)) ;_ gc là 1 hàm của lisp không sử dụng làm biến.

     

    (if ot1 (setq ot2 (getreal (strcat "\na= <" (rtos ot1) ">:")))

    (setq ot1 (getreal "\na=:" )))

    (if ot2 (setq ot1 ot2))

     

    ( Setq NET ot1)

    (SETQ DST (DISTANCE SPT EPT))

    (SETQ NET1 (/ dst net))

     

    (SETQ NET2 (+ net1 0.5))

    (SETQ NET3 (fix net2))

    (SETQ DST1 (/ DST NET3 ))

    (SETQ DEM 1)

    WHILE (< DEM NET3 )

    (SETQ BDT (* DEM DST1))

    (SETQ PT1 (POLAR SPT GC BDT))

    (COMMAND "COPY" SLT "" SPT PT1)

    (SETQ DEM (+ DEM 1))

    )

    (SETVAR "CMDECHO" CMD)

    (SETVAR "OSMODE" OSM)

    ;|(command "OSMODE" "15359")|;)

     

    (PRINC)

    )


  18. Bác Tue_NV ơi, sao em sửa Lsp trên thành

     

    d (getangle "10")

    ed (subst (cons 51 d) (assoc 51 ed) ed)

    như vậy thì nó lại ko chạy nữa vậy bác. Vì em muốn mặc định luôn độ nghiêng của Text là 10 luôn. Và "DXF = 50 : mã quy định góc quay của Text (text Rotation)" mã 50 hay là 51 vậy Bác. Vì em thấy đoạn code bác viet cho em là mã 51.

     

    Nếu là 10 độ thì chuyển sang radian bằng hàm (cvunit 10 "DEGREE" "RADIAN")

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

     

    d (cvunit 10 "DEGREE" "RADIAN")

    ed (subst (cons 51 d) (assoc 51 ed) ed)

    • Vote tăng 1

  19. nét trục của em sử dụng iso 10,net đứt sử dụng hiden2,mọi lần vẫn bình thường,nhưng ko hiểu sao lần này khi vẽ nét trục và nét đứt nó liền nhau như nét continue ấy,trước kia em cũng bít lệnh để dãn dài nó ra nhưng giờ quên mất.em mong bác nào bít chỉ dùm em,em dùng cad 207.thanks

     

    bạn chỉnh lại linestyle scale là được

×