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

tambat

Thành viên
  • Số lượng nội dung

    17
  • Đã tham gia

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

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


  1. Thực ra không phải tạo dim cho mỗi khung nhìn. chẳng hạn trong một bản vẽ công trình ta có thể tạo hai layer là "dim mặt bằng" và "dim chi tiết". như vậy ở khung nhìn hiển thị mặt bằng thì ta freeze layer "dim chi tiết" và ở khung nhìn hiển thị chi tiết thì ta lại freeze layer "dim mặt bằng". chỉ đơn giản vậy thôi. quan trọng là phải dùng "freeze in current viewport" như vậy sẽ không ảnh hưởng đến các khung nhìn khác. bạn có thể xem ví dụ ở đây nhé!

     

    http://www.cadviet.com/upfiles/vp.dwg

     

    Tai sao trong bản vẽ trên minh dim thi phần text không lơn như dim_ct hay dim_mb cả ? Bác có thể hướng dẫn thêm hay không !!

     

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

    • Vote tăng 6

  2. 1. Vẽ Line

    2. Vẽ Rectang đè lên line

    3. WipeOut/P/Chọn Rectang

    Lệnh Wipeout sẽ tạo ra một miền trùng với Rectang để che đường Line

    Tương tự với XCLIP. Nhưng XCLIP chỉ cho chọn đối tượng bị che phủ là BLOCK.

     

    Minh gặp sự cố nan giải qúa các bác ơi!

    Khi sử dụng wipeout để che đi các phần text không cần thiết trong layout không thấy phần text (Wipeout tao trong layout) nhưng khi in thi nó vô tác dụng.

    Mong các bác chi giáo nhé, chứ mình xử lý bằng cách lưu ra file mới, trên mỗi file mở ra phần nào cần che đi thì mình lại xóa, phần xóa đi lại in ở file khác. bản vẽ của mình vẽ mặt bằng tổng thể nhưng khi in ra thi mình phải trích ra các bản vẽ nhỏ.


  3. Các bác cho hỏi : có cách nào để xoay chiều đối tượng in trong khung nhìn paper space của layout mà trong bị ảnh hưởng trong model .

    Ví dụ : Có 1 mb hình chữ nhật được vẽ theo chiều đứng , khi qua layout để in thì bảng vẽ khung tên nằm ngang , thì làm sao để xoay đối tượng in theo chiều ngang để cho vừa khổ giấy ( không muốn xoay chiều khung bản vẽ trên layout) mà không ảnh hưởng đến chiều của model . Cám ơn

     

    Bạn sử dụng lệnh mvsetup/align/rotate view/ click chuột vào vị trí trong viewport / nhập giá trị góc xoay cần thiết vào là ok.

     

    chú ý khi sư dụng lệnh mvsetup thì chúng ta click chuột vào cửa sổ viewport cần thiết xoay mà thôi, các cửa sổ khác không cần thiết thì vẫn giữ nguyên.

    • Vote tăng 1

  4. Các bác ơi sữa giùm mình đoạn lisp sau này nhé.

     

    (defun C:cg()
     (setvar "CMDECHO" 0)
     (setq pre (getint "\nSo chu so sau dau phay?"))
     (command "luprec" pre)
     (setq tong 0)
     (SETQ TH (SSGET))
    (SETQ QUANT (SSLENGTH TH))
    (SETQ INDEX 0)
    (WHILE (< INDEX QUANT)
     (IF 
      (AND(= "TEXT" (CDR (ASSOC 0 (SETQ A (ENTGET (SSNAME TH INDEX)))))))      
        (PROGN
    	 (setq s (entget (SSNAME TH INDEX)))
    	   (setq otext (assoc 1 s))
    	   (setq ot (cdr otext))
    	   (setq ot (read (substr ot 1 )))
    	   (setq tong (+ ot tong))
          )
     	)
     (setq index (+ index 1))
    )
    (prompt "\n Chon gia tri can thay the")
    (SETQ TT (SSGET))
    (SETQ QUAN (SSLENGTH TT))
    (SETQ INDE 0)
    (WHILE (< INDE QUAN)
     (IF 
      (AND(= "TEXT" (CDR (ASSOC 0 (SETQ A (ENTGET (SSNAME TT INDE)))))))      
        (PROGN
    	 (setq s (entget (SSNAME TT INDE)))
    	   (setq otext (assoc 1 s))
    	   (setq ot (cdr otext))
    	   (setq ot (read (substr ot 1 )))
                      (setq nt (cons 1 (rtos Tong 2)))  
    	   (setq s (subst nt otext s))
    	   (entmod s)
        )
     	)
     (setq inde (+ inde 1))
    )
     )
    

     

     

    với đoạn lisp này khi cộng các giá trị mà có tổng của chúng nhỏ hơn 1 thì nó không xuất ra kết quả 0.3 (giả sử kết quả là 0.3), mà kết quả xuất ra là ".3" ; nếu để thế rồi tiền hành phép toán khác thí nó lại không nhận gía trị .3 mà phải sửa lai 0.3 rồi mới thực hiện được.

     

    các bác có thể giúp mình khác phục tình trạng trên không, làm sao để có đươc kết quả là "0.3"


  5. Bạn hãy làm ngược lại!

    Tức là bạn viết text bằng lệnh trên, xong rồi mới vẽ hình tròn.

    Lệnh vẽ hình tròn quanh 1 đối tượng text là TCIRCLE (trong bộ Express của CAD).

    Như thế, khi vẽ ở máy nào bạn cũng làm được.

     

    làm như thế thì vòng tròn đó không đều nhau vì số thứ tự đánh ra là 1, 2 ..., 10, 10 chứ không phải là 01, 02, ..., 10 ..., chúng ta chỉ có thể offset nó thối. hơn nữa phần đánh số (chữ) theo thư tự này thường dùng vào đánh cho ký hiệu các trục, khi đó nó phải nằm gay chính giữa. bác có thể sữa lại sao cho khi chúng ta vào điểm thì điểm đó sẽ là tâm của text (MC).

     

    Biết là lisp này rất bổ ích, giúp rút ngắn thời gian vẽ rất nhiều nếu trong bản vẽ cần phải đánh thứ tự nhiều, song nếu các bác có thể thêm được phần tự vẽ luôn vòng tròn hay ký hiệu trục thông dụng thì tính hiệu dụng của lisp nay sẽ không dừng lại ở mức hiện nay.

     

    Chúc các bác sức khỏe dồi dào để trào ra lisp


  6. http://www.cadviet.com/upfiles/Dientich.zip

     

    Tặng các bác làm quy họach cái này dùng chơi

    Lệnh là DSA hoặc SA

    Vợ về bên ngọai nên rãnh rỗi viết cái này tặng anh em bên Quy họach dùng chơi

     

    "Mình ơi, anh nhớ mình quá"

     

    Còn đây là Code

     

    DIENTICH.LSP

    ;Chuong trinh tinh va ghi dien tich
    ;Author Vo Kien Cuong
    
    (DEFUN DIENTICH(/ DCL_ID_DIENTICH dt)  
     (setq DCL_ID_DIENTICH (load_dialog "DIENTICH.DCL"))
     (if (not(new_dialog "DIENTICH" DCL_ID_DIENTICH)) (exit))  
     (action_tile "BACK_key" "(CHANGE_SLIDE 0)")
     (action_tile "NEXT_key" "(CHANGE_SLIDE 1)")
     (action_tile "OPT_key" "(OPTION)")
     (action_tile "info" "(ABOUT)")
     (action_tile "accept" "(GETVALUE_DT) (done_dialog 1)")
     (action_tile "TK_key" "(GETVALUE_DT) (done_dialog 2)")  
     (SETVALUE_DT)
     (setq RES_DT (start_dialog))
     (if (= RES_DT 1)
    (progn
      (if (= Is_Obj "1")
    	(setq dt (GETOBJECT))
    (setq dt (GETPOINTS))
      )
      (WRITEDIENTICH dt)
      (DIENTICH) 
    )
     )
     (if (= RES_DT 2)
    (progn
      (KHOILUONG) 
      (DIENTICH) 
    )
     )
     (unload_dialog DCL_ID_DIENTICH) 
    )
    
    (DEFUN TINHDIENTICH(dt / s)
     (Command "AREA" "O" dt)
     (setq s (getvar "AREA"))
     (If (= DVDT "1")
    (setq s (/ s 10000))
     )
     s
    )
    
    (DEFUN WRITEDIENTICH(dt / s Pnt blkName)
     (setq Pnt Nil)
     (setq s (TINHDIENTICH dt))
     (setq ds (Fix (* s (atof MDDS))))
     (if (= DVDS "1")
    (setq ds (/ ds 1000))
     )  
     (while (Null Pnt)
    (setq Pnt (Getpoint "Chon diem chen Block "))
     )  
     (setq kh (getString "\nNhap ky hieu: "))  
     (setq blkName (nth (- i_sld 1) Li_sld))  
     (command "-INSERT" blkName "S" TLSC Pnt "0" kh (rtos s 2 2) (itoa ds))
    )
    
    (DEFUN IMAGE_SLIDE(/ sld_name)
     (setq sld_name (nth (- i_sld 1) Li_sld))
     (start_image "IMAGE_key")
     (fill_image 0 0 (dimx_tile "IMAGE_key") (dimy_tile "IMAGE_key") -15)
     (slide_image 5 0 (dimx_tile "IMAGE_key") (dimy_tile "IMAGE_key") sld_name)
     (end_image)
    )
    
    (DEFUN C:DSA()
     (setvar "CMDECHO" 0)
     (terpri)  
     (DT_INIT)  
     (DIENTICH)
     (setvar "CMDECHO" 1)
    )
    
    (DEFUN C:SA()
     (setvar "CMDECHO" 0)
     (terpri)  
     (DT_INIT)  
     (if (= Is_Obj "1")
     (setq dt (GETOBJECT))
     (setq dt (GETPOINTS))
     )  
     (WRITEDIENTICH dt)	   
     (setvar "CMDECHO" 1)
    )
    
    (DEFUN DT_INIT()
     (setq Li_sld (List "Blk001" "Blk002" "Blk003" "Blk004"))
     (if (Null i_sld)
    (setq i_sld 1)
     )
     (CREALILA)  
     (if (Null Is_Obj)
    (setq Is_Obj "1")
     )
     (if (Null Is_Pnt)
    (setq Is_Pnt "0")
     )
     (if (Null IsCuLa_DT)
    (setq IsCuLa_DT "1")
     )  
     (if (Null IsSetLa_DT)
    (setq IsSetLa_DT "0")
     )
     (if (Null la_DT)
    (setq la_DT "0")
     )
     (if (Null Is_DVDT)
    (setq Is_DVDT "0")
     )
     (if (Null Is_DVDS)
    (setq Is_DVDS "0")
     )
     (setq Li_DT (List "m2" "ha"))
     (If (Null DVDT)
    (setq DVDT "1")
     )  
     (setq Li_DS (List "1" "1000"))
     (If (Null DVDS)
    (setq DVDS "1")
     )
     (If (Null MDDS)
    (setq MDDS "100")
     )
     (If (Null TLSC)
    (setq TLSC "1")		
     )  
    )
    
    (DEFUN CHANGE_SLIDE(n)
     (if (= n 0)
    (progn
      (if (= i_sld 1)
    (setq i_sld 4)
    (setq i_sld (- i_sld 1))
      )
    )
     )
     (if (= n 1)
    (progn
      (if (= i_sld 4)
    (setq i_sld 1)
    (setq i_sld (+ i_sld 1))
      )
    )
     )
     (IMAGE_SLIDE)
    )
    
    (DEFUN OPTION (/ DCL_ID_DIENTICH_OPT)  
     (setq DCL_ID_DIENTICH_OPT (load_dialog "DIENTICH.DCL"))
     (if (not (new_dialog "OPTION" DCL_ID_DIENTICH_OPT))(exit))
     (action_tile "IsCuLA_DT" "(Is_Chk_La)")
     (action_tile "IsSetLA_DT" "(Is_Chk_La)")
     (action_tile "MD_DS" "(CHECKVALUE_MDDS)")
     (action_tile "TL_DT" "(CHECKVALUE_TLSC)")  
     (action_tile "accept" "(GETOPTVALUE_DT) (done_dialog 1)")
     (if (= IsSetLa_DT "1")
    (mode_tile "La_DT" 0)
    (mode_tile "La_DT" 1)
     )
     (start_list "La_DT")  
     (mapcar 'add_list LiLa)
     (end_list)
     (start_list "DV_DT")  
     (mapcar 'add_list Li_DT)
     (end_list)
     (start_list "DV_DS")  
     (mapcar 'add_list Li_DS)
     (end_list)
     (SETOPTVALUE_DT)	 
     (start_dialog)
     (unload_dialog DCL_ID_DIENTICH_OPT)  
    )
    
    (DEFUN SETVALUE_DT()
     (IMAGE_SLIDE)
     (set_tile "DT_OBJ" Is_Obj)
     (set_tile "DT_PNT" Is_Pnt)  
    )
    
    (DEFUN GETVALUE_DT()
     (setq Is_Obj (get_tile "DT_OBJ"))
     (setq Is_Pnt (get_tile "DT_PNT"))  
    )
    
    (DEFUN SETOPTVALUE_DT()  
     (set_tile  "IsCuLA_DT" IsCuLa_DT)  
     (set_tile "IsSetLA_DT" IsSetLa_DT)	
     (set_tile "La_DT" la_DT)
     (set_tile "Is_DVDT" Is_DVDT)
     (set_tile "Is_DVDS" Is_DVDS)
     (set_tile "DV_DT" DVDT)
     (set_tile "DV_DS" DVDS)
     (set_tile "MD_DS" MDDS)
     (set_tile "TL_DT" TLSC)
    )
    
    (DEFUN GETOPTVALUE_DT()
     (setq IsCuLa_DT (get_tile "IsCuLA_DT"))
     (setq IsSetLa_DT (get_tile "IsSetLA_DT"))  
     (setq la_DT (get_tile "La_DT"))
     (setq Is_DVDT (get_tile "Is_DVDT"))
     (setq Is_DVDS (get_tile "Is_DVDS"))
     (setq DVDT (get_tile "DV_DT"))
     (setq DVDS (get_tile "DV_DS"))
     (setq MDDS (get_tile "MD_DS"))
     (setq TLSC (get_tile "TL_DT"))
    )
    
    (DEFUN CREALILA (/ NL)
     (setq LiLa (List))
     (setq NL (tblnext "LAYER" T))  
     (while NL	
    (setq LiLa (append LiLa (list (cdr (assoc 2 NL)))))
    (setq NL (tblnext "LAYER"))
     )
     (setq LiLa (Acad_strlsort LiLa))
    )
    
    (DEFUN Is_Chk_La ()
     (if (= (get_tile "IsSetLA_DT") "1")
    (mode_tile "La_DT" 0)
    (mode_tile "La_DT" 1)
     )
    )
    
    (DEFUN CHECKVALUE_MDDS()
     (setq temp (get_tile "MD_DS"))
     (If (Not (IsNumeric temp))
    (progn
      (alert "Gia tri nhap vao khong hop le")
      (set_tile "MD_DS" MDDS)
    )
     )  
    )
    
    (DEFUN CHECKVALUE_TLSC()
     (setq temp (get_tile "TL_DT"))
     (If (Not (IsNumeric temp))
    (progn
      (alert "Gia tri nhap vao khong hop le")
      (set_tile "TL_DT" TLSC)
    )
     )  
    )
    
    (DEFUN GETOBJECT(/ ss dt)
     (setq ss Nil)
     (while (Null ss)
    (princ "Chon doi tuong can tinh dien tich")
    (setq ss (ssget))	
     )
     (setq dt (ssname ss 0))
     dt
    )
    
    (DEFUN GETPOINTS(/ ssLine Pnt1 Pnt2 dt)
     (setq ssLine (ssAdd))  
     (setvar "CMDECHO" 0)
     (princ "\nChon diem tren man hinh de tinh dien tich")
     (setq Pnt1 (Getpoint "\nChon diem dau tien:"))  
     (while (Not (Null Pnt1))
    (setq Pnt2 (Getpoint Pnt1 "\nChon diem tiep theo"))
    (if (AND (Not (NUll Pnt1)) (Not (NUll Pnt2)))
      (command "LINE" Pnt1 Pnt2 "")
    )	
    (setq dt (entlast))
    (setq ssLine (ssAdd dt ssLine))	
    (setq Pnt1 Pnt2)	
     )  
     (setq dt (ssname ssLine 0))  
     (command "PEDIT" dt "Y" "J" ssLine "" "")  
     (setvar "CMDECHO" 1)
     (setq dt (entlast))
     dt
    )
    
    (DEFUN ABOUT(/ DCL_ID_ABOUT)
     (setq DCL_ID_ABOUT (load_dialog "DIENTICH.DCL"))
     (if (not(new_dialog "ABOUT" DCL_ID_ABOUT))(exit))  
     (start_list "aboutme")
     (add_list " ")  
     (add_list "  VO KIEN CUONG - Bachelor of IT")
     (add_list "  =====================================================")
     (add_list "  Email : vkcuong_23@yahoo.com")
     (add_list "  Mobile: 0983616182 - 0977352125")
     (add_list "  CAD developer (LISP, DCL, VBA for AutoCad, ObjectARX...)")  
     (add_list "  ")
     (end_list)
     (start_dialog)
     (unload_dialog DCL_ID_ABOUT)
    )
    
    (DEFUN KHOILUONG( / ss LiKH LiDT LiDS n i chuoi ss)
     (setq LiKH Nil)
     (setq LiDT Nil)
     (setq LiDS Nil)
     (setq ss Nil)
     (princ "Chon nhom Block muon thong ke khoi luong")
     (setq ss (ssget))
     (setq n (sslength ss))
     (if (> n 0)
    (progn
      (setq i 0)
      (while (< i n)
    (setq dt (ssname ss i))
    (if (OR (= (TENDOITUONG dt) "Blk001") (= (TENDOITUONG dt) "Blk002") (= (TENDOITUONG dt) "Blk003") (= (TENDOITUONG dt) "Blk004"))
      (progn
    	(setq LiKH (Append LiKH (List (GetStringTag dt "KH"))))
    	(setq LiDT (Append LiDT (List (GetStringTag dt "DT"))))
    	(setq LiDS (Append LiDS (List (GetStringTag dt "DS"))))
      )
    )
    (setq i (1+ i))
      )
    )  
     )
     (setq n (length LiKH))
     (If (> n 0)
    (progn
      (setq i 0)
      (setq DCL_ID_KHOILUONG (load_dialog "DIENTICH.DCL"))
      (if (not(new_dialog "KHOILUONG" DCL_ID_KHOILUONG)) (exit))
      (start_list "li_KL")	  
      (add_list (strcat "  So Block: " (itoa n)))	  
      (add_list "  BANG KHOI LUONG")
      (add_list "  -------------------------------------------------------")
      (while (< i n)
    (setq chuoi (strcat "  " (FIXLENGTH (nth i liKH) 15) (FIXLENGTH (nth i liDT) 15) (FIXLENGTH (nth i liDS) 15)))	
    (add_list chuoi)
    (setq i (1+ i))
      )
      (add_list "  -------------------------------------------------------")	  
      (end_list)
      (start_dialog)
      (unload_dialog DCL_ID_ABOUT)
    )	
     )	
    )
    
    (DEFUN GetTag (objblock tag / temp1 att_list old)
     (setq temp1	objblock)
     (setq att_list (ENTGET temp1))
     (WHILE (NOT (= (CDR (ASSOC 2 att_list))tag))
    (setq temp1	(ENTNEXT temp1))
    (setq att_list (ENTGET temp1))
     )
     (setq old (CDR (ASSOC 1 att_list)))
    )
    
    (DEFUN GetStringTag (objblock tag / thtin)
     (setq thtin (GetTag objblock tag))
     thtin
    )
    
    (DEFUN IsNumeric (str / kq n1 n2 l)
     (setq kq Nil)
     (setq n1 0)
     (setq n2 0)
     (if (= (substr str 1 1)"-")
    (setq str (substr str 2 (- (strlen str) 1)))
     )  
     (setq l (strlen str))
     (if (= (substr str 1 1)".")
    (setq kq Nil)
    (progn
      (setq i 1)
      (while (<= i l)
    (setq a (substr str i 1))
    (if (and (> (ascii a) 47) (< (ascii a) 58))
      (setq n1 (+ n1 1))
    )
    (if (= a ".")
      (setq n2 (+ n2 1))
    )
    (setq i (+ i 1))
      )
      (if (and (<= n2 1) (= (+ n2 n1)l))
    (setq kq T)	
      )
    )
     )
     kq
    )
    
    (DEFUN TENDOITUONG (obj / name)
     (if (/= (cdr (assoc 0 (entget obj))) "INSERT")
    (setq name (cdr (assoc 0 (entget obj))))
    (setq name (cdr (assoc 2 (entget obj))))
     )
     name  
    )
    
    (DEFUN FIXLENGTH(chuoi l / l1 chuoi1)  
     (setq chuoi1 chuoi)
     (setq l1 (strlen chuoi))
     (if (< l1 l)
    (progn
      (while (< l1 l)
    (setq chuoi1 (strcat chuoi1 " "))
    (setq l1 (1+ l1))
      )	
    )
    (progn
      (setq chuoi1 (substr chuoi 1 l))
    )
     )
     chuoi1  
    )[/code]
    
     
    DIENTICH.DCL
    [code]//Form chuong trinh tinh Dien tich
    //Author Vo Kien Cuong
    DIENTICH:dialog	{
    spacer_1;
    label="CHUONG TRINH TINH DIEN TICH";	
    :boxed_column	{
    	label="Chon hinh anh block muon hien thi";
    	:row	{
    		:button	{
    			label="<<";
    			key="BACK_key";
    			}
    		:image_button	{
    			key="IMAGE_key";
    			width=14;
    			height=7;				
    			color=dialog_background;
    			}
    		:button	{
    			label=">>";
    			key="NEXT_key";
    			}
    		}		
    	}
    :row	{
    	:boxed_column	{
    		label="Cach tinh dien tich";
    		:radio_button	{
    			label="Chon doi tuong";
    			key="DT_OBJ";
    			}
    		:radio_button	{
    			label="Chon diem";
    			key="DT_PNT";
    			}		
    		}
    	:column	{
    		spacer_1;
    		spacer_1;
    		:button	{
    			label="Cai dat";
    			key="OPT_key";
    			}
    		:button	{
    			label="Khoi luong";
    			key="TK_key";
    			}			
    		}
    	}	
    	spacer_0;
    	:row	{
    	ok_cancel;
    	spacer_1;
    	spacer_1;
    	spacer_1;
    	:button	{
    		label="Author";
    		key="info";
    		}
    	}
    	}
    OPTION:dialog	{
    	spacer_1;
    	label="Cac thong so cho block dien tich";
    	:boxed_radio_column{
    		label="Cai dat Layer";
    		:radio_button{
    			label="Su dung Layer hien huu";
    			key="IsCuLA_DT"; 			
    			}
    		:radio_button{
    			label="Cai dat Layer";
    			key="IsSetLA_DT";
    			}
    		:popup_list{			
    		key="La_DT";			
    		}		
    		}
    	:boxed_column	{
    		label="Hien thi"; 			
    		:popup_list{
    			label="Don vi dien tich";
    			key="DV_DT";
    			edit_width=8;
    			}
    		:toggle	{
    			label="Hien thi don vi dien tich";
    			key="Is_DVDT";
    			is_enabled=false;
    			}
    		:popup_list{
    			label="Don vi dan so";
    			key="DV_DS";
    			edit_width=8;
    			}
    		:toggle	{
    			label="Hien thi don vi dan so";
    			key="Is_DVDS";
    			is_enabled=false;
    			}
    		:edit_box{
    			label="Mat do dan so (N/DVDT):";
    			key="MD_DS";
    			edit_width=9;
    			}
    		:edit_box{
    			label="He so Scale Block:";
    			key="TL_DT";
    			edit_width=9;
    			} 	
    		}
    	spacer_1;
    ok_cancel;
    	}
    ABOUT:dialog{
    label="About me...";
    spacer_1;
    :list_box{				
    	key="aboutme";
    	width=55;
    	height=9;
    	}
    ok_only;
    }
    KHOILUONG :dialog{
    spacer_1;
    label = "THONG KE KHOI LUONG";	
    :list_box{
    	key="li_KL";
    	label="Thong ke khoi luong";
    	height=15;
    	width=45;
    	}
    spacer_1;
    ok_only;
    	}

     

    sao không chạy được Bác ơi !

    Bác có thể hướng dẫn thêm được không.


  7. Bác Hoanh ơi ! Lisp này rất hay nhưng thường trong ký hiệu của các trục thì chúng ta không thường cho phần chữ hay số đó nằm trong vòng tròn hay một khung nào đó tùy thích, vậy bác có thể chỉnh sửa lại nó làm sao để làm được điều này hay không ?.

    ví dụ mình đã có sẵn các vòng tròn định sẵn (tại các vị trí cần đánh số thứ thự) kết quả của lisp đánh số thứ tự đó thì phần chữ nó nằm ngay chính giữa của vòng tròn (hay khung) sẵn có. (đối với vòng tròn, trong quá trình vao diem minh bat điềm bằng "center".

     

    Hay bác có thể hoàn thiện luôn tùy chọn khung bao (vòng tròn hay khung nào đó mà thông dụng trong quá trình ghi trục ...) ! Minh ham quá rùi phải không bác, mong bác đùng trách nhé, cũng chỉ vì minh không biết gì cả nên xin hoi bác maaaaaaaaaaaaaà


  8. các bác ơi giúp mình làm chủ thàng Wipeout với.

    trong layout để che khuất đi một phần nào đó của bản vẽ mình dùng lệnh wipeout sau đó cho các đối tượng khác vào, nhưng có lúc thì mình được kết quả là thằng wipeout nằm dưới như mong muốn, nhưng cũng có lúc nó chẵng chịu nghe. cái này mình thường gắp trong các bản vẽ quy hoạch, mình muốn che một vùng của một cửa số viewport rồi lại cho một viewport khác vào, có lúc đạt theo ý muốn, có lúc lại !!!!!!!!


  9. layout ứng dụng thất hữu ích, nhưng mình đang gặp vướng mắc là, trong quy hoạch có bản vẽ mình vẽ với tỉ lệ 1/2000 mình đã lựa chọn phần chữ trên đó có kích thước phù hợp để in ra nhìn thấy rõ (cao độ tư nhiên trên địa hình), nhưng cũng phần bản vẽ đó mình phải trích ra một khu vực trong mặt bằng tồng thể đó với tỷ lệ 1/500 thì kích thước chiều cao chữ lại không như mong muốn đước.

    bác nào biết cách hiệu chỉnh thế nào để kích thước của chữ in ra không phụ thuộc vào tỷ lệ của viewport không ?

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


  10. Tải thêm cái này về:

    http://www.cadviet.com/upfiles/TD.zip

    Bác Nguyen Hoanh ơi ! sao mình không tải được, vã lại có cách nào khác không (chỉ sử dụng lisp không thôi, mà không phai dùng file TD.dwg nữa không.

     

    nhân tiện nhờ bác chỉ giùm mình sửa đoạn lisp này với nha'

     

    đoạn lisp này sau khi chạy thì nó bỏ toàn bộ lựa chon truy bát tự đông (Snap), bác có cách nào giúp mình lấy lại tựa chọn cũ hay không, vã lại bài toán trên có thể ghi tọa độ theo kiện ghi cao độ trong đoạn này được không?

     

    ;VE CAO TRINH
    (DEFUN C:CT (/ CMD PT1 PT2 PT3 PT4 PT5 PT6 PT7 PT8 NPI TX DX DY TL OSM OLL
    	CRST RSIZE TSIZE STR PRMT FCH NBC OLDERR)
    (SETQ OLDERR *error*
      *error* loisb)
    (command "layer" "m" "ghichu" "c" "150" """")
    (SETQ CMD (GETVAR "CMDECHO"))
    (SETQ NBC (GETVAR "CLAYER"))
    (SETQ OSM (GETVAR "OSMODE"))
    (SETVAR "CMDECHO" 0)
    (SETQ PT1 (GETPOINT "\nDiem cao trinh:"))
    (SETQ TX "%%p00.00");;(GETSTRING "\nCao trinh:"))
    (SETQ FCH (SUBSTR TX 1 1))
    (IF (= FCH "@") (SETQ TX (STRCAT "%%P" (SUBSTR TX 2 (- (STRLEN TX) 1)))))
    (SETQ CRST (GETVAR "TEXTSTYLE"))
    (SETQ RSIZE (CDR (ASSOC 40 (TBLSEARCH "STYLE" CRST))))
    (SETQ TSIZE (GETVAR "TEXTSIZE"))
    (SETQ STR (RTOS TSIZE 2))
    (SETQ PRMT (STRCAT "\nTy Le Ban Ve <" STR ">:"))
    ;(SETQ PRMT (STRCAT "\nText height <" STR ">:"))
    (IF (= RSIZE 0)
     (PROGN
    (INITGET 4)
    (SETQ TSIZE (GETREAL PRMT))
    (IF (= TSIZE NIL) (SETQ TSIZE (GETVAR "TEXTSIZE"))
    		  (SETVAR "TEXTSIZE" TSIZE))
    		  (SETQ TSIZE (* 2.5 TSIZE))
     )
    )
    (PRINC)
    (SETQ TL (* 2.5 (/ (GETVAR "TEXTSIZE") 2)))
    (SETVAR "OSMODE" 0)
    (SETQ DX (CAAR (CDR (TEXTBOX (LIST (CONS 1 TX))))))
    (SETQ NPI (/ PI 2))
    (SETQ PT4 (POLAR PT1 NPI (* 1 TL)))
    (SETQ PT2 (POLAR PT4 PI (* 2 TL)))
    (SETQ PT3 (POLAR PT4 0 (* 9 TL)))
    (SETQ PT5 (POLAR PT4 NPI (* 3 TL)))
    (SETQ PT6 (POLAR PT2 NPI  TL))
    (SETQ PT7 (POLAR PT6 0 (+ (* 3.7 TL) DX)))
    (SETQ PT8 (POLAR PT4 NPI (* 0.5 TL)))
    (SETQ PT8 (POLAR PT8 0 (* 0.5 TL)))
    (SETQ PT9 (POLAR PT1 pi (* 2 TL)))
    (SETQ PT10 (POLAR PT1 0 (* 2 TL)))
    (COMMAND "COLOR" "84" "")
    (COMMAND "STYLE" "CAODO"  "Vni-times" "" "" "" "" "")
    ;(COMMAND "STYLE" "honghung"  "vn_vni.shx" "" "" "" "" "")
    
    (IF (= RSIZE 0)(COMMAND "TEXT" PT8 TSIZE 0 tX) (COMMAND "TEXT" PT8 0 TX))
    (COMMAND "COLOR" "7" "")
    (COMMAND "pLINE" PT3 "Width" "0.005" "" PT2 PT1 "Width" "0.05" "" PT9 PT10 PT1 "Width" "0.005" "" PT5  "")
    (COMMAND "COLOR" "254" "")
    (COMMAND "SOLID" PT1 PT2 PT4 "" "")
    (SETVAR "CLAYER" "0")
    (command "ddedit" pause)
    )


  11.  

     

     

    đoạn mã trên giúp mình không phải nhập lệnh liên tục, do minh mới tìm hiểu ve lisp nên minh không phát triển lên để hoàn thành mong muốn của mình nêu ra được, cho nên minh nêu rõ bài toán của mình mong các bác giúp mình nhé.

    mình muốn tọa độ của điểm đó mình nhấp chuốt lên màn hình chứ không phải nhập vào. mình xin được trình bày rõ hơn về bài toán của mình như sau.

    Trên màn hình có các điểm (giao của các đường thẳng chẳng hạn) mình muốn có một đoạn lisp nào đó có thể nhấp chuột vào điểm đó (điểm có tọa độ là A (XA, YA))

    (SETQ A (GETPOINT "\nĐiểm cần ghi tọa độ:")); ...........

    kết quả ghi lên màn hình là

    X=" hoành độ điểm A"

    Y="Tung độ điểm A"

    tọa độ in ra màn hình mình có thể ấn định số thập phân.

     

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


  12. Chào các Bác

    các bác hướng dẫn giùm cái này nhé.

    minh muốn in tọa độ của điểm nào đó lên màn hình (xem tọa độ của điểm đó trên bản vẽ rồi ghi lại tọa độ đó bên cạnh điểm đó luôn) nhưng trong bản vẽ có rất nhiều điểm cần phải ghi lại như thế, mong các bác hướng dẫn giùm cách viết lisp theo kiểu vòng lặp, chi cần nhập lệnh một lần đề nhập chọn từng điểu để in số liệu về tọa độ.


  13. - Đơn giản, bạn sử dụng chương trình làm chẵn của cadviet, appload chương trình lên, sau đó sử dụng lệnh chl chương trình sẽ yêu cầu bạn chọn các đối tượng muốn làm chẵn và điểm gốc chẵn (để các tọa độ sẽ chẵn với điểm gốc này), và mức làm chẵn. Ví dụ bạn muốn làm chẵn đến đơn vị mét (là 1000) thì bạn nhập mức 5..

     

    - Tải chương trình tại đây

     

    LỆNH CỦA CHƯƠNG TRÌNH NAY LÀ GI VẬY? MINH TAI XỤỐNG RỒI NHƯNG KHÔNG MỞ RA ĐỌC ĐƯỢC, AP LEN CŨNG KHÔNG BIẾT GÕ LỆNH GÌ, LÀM ƠN CHỈ CỤ THỂ GIÙM.

     

    CAM ƠN NHIỀU, CHÚC CẢ NHÀ SỨC KHOE


  14. Em mới tìm hiểu về Lisp và đang muốn tìm hiểu để viết một vài đoạn lisp mà mình thích làm theo cách riêng, có thể trong các diễn đàn có rất nhiều lisp viết về nó và rất chất lượng, song em vẫn mong muốn tim tòi để có thể hiểu và có thể tự viết một vài đoạn theo sở thích, nên mong anh chi chi bảo giùm một số điểm sau !

     

    1 trong thong kê cốt thép chúng ta phải tính toán số lượng các thanh (cấu kiện) vậy có lisp nào có thể làm nhanh việc này được hay không.

    2 Nếu muốn đưa một dòng text (kết quả của một đoạn lisp) về một style có sãn trong bản vẽ thì làm thế nào. ví dụ trong bản vẽ có các style như :ghichu; text; tieu đề ..., một đoạn lisp điền cao độ vào trong bản vẽ, nhưng đoạn lisp này lại tạo ra một style mới, em muốn phần text này thưộc style ghichu thì phải làm sao. (COMMAND "STYLE" "CAODO" "Vni-times" "" "" "" "" "")

    3 có lisp nào tạo block từ những đối tượng vừa tạo hay không (các đối tượng vừa được tạo ra trong đoạn lisp) , ví du khi chúng ta tạo ra điền cao độ nếu muốn các phần Hatch va line thuộc 01 block còn phần text không thuộc block đó.

    4. Nếu muốn chèn một block có sẳn trong bản vẽ, rồi thêm các chi tiết khác lên block đó (ví dụ như thêm text, line ...) thì phải làm sao !

     

     

    cảm ơn các Bác nhiều chúc các Bác sức khỏe


  15. Để tránh phải gõ đầy đủ tên lệnh, AutoCAD cho phép người sử dụng dùng tên rút gọn cho các lệnh. Định nghĩa tên rút gọn được trong file acad.pgp (Program Parameters) trên thư mục support.

     

    Thư mục support tuỳ theo từng đời CAD, sẽ nằm ở vị trí khác nhau. Để biết thư mục support nằm ở đâu, dùng lệnh ACADPREFIX, xem trong các đường dẫn được khai báo, đường dẫn nào chứa thư mục support.

     

    acad.pgp là một file text chứa định nghĩa hàm. Trong đó, một định nghĩa hàm có cấu trúc: 'TENRUTGON, *TENDAYDU' và nằm trên một dòng. Khai báo tên rút gọn của lệnh bằng cách sửa file acad.pgp nằm trong thư mục support. Sau khi khai báo, tên lệnh rút gọn không có hiệu lực ngay, bạn phải sử dụng lệnh REINIT rồi check vào ô PGP File hoặc khởi động lại ACAD.

     

    Tên lệnh rút gọn chỉ nên đặt trong các ký tự: Q, W, E, R, T, A, S, D, F, G, Z, X, C, V, B là các ký tự tay trái nhấn được mà không cần nhìn bàn phím. Cũng không nên đặt tên lệnh tắt tạo thành tiếng việt khi sử dụng bộ gõ VD: AA, ER, ...

     

    Một cách khác để có thể đặt được tên lệnh rút gọn là định nghĩa tên hàm bằng Lisp với cấu trúc:

    (defun c:TENRUTGON() (command "TENDAYDU")).

     

    Với mỗi cách khai tên rút ngắn của lệnh có ưu và nhược khác nhau. Theo cách định nghĩa trong file PGP thì mọi tên hàm đều có thể định nghĩa được nhưng theo cách định nghĩa lisp (như trên) chỉ có những lệnh thông thường là dùng được, những lệnh dùng DLL bên ngoài không dùng được (như ALIGN, REGION, RENDER, ...). Nhưng định nghĩa theo kiểu Lisp lại có ưu điểm mà PGP không theo được đó là cho thông số vào lệnh. Ví dụ: bạn muốn tạo một lệnh zoom scale 0.8 (zoom out) thì bạn sẽ khai báo như sau: (defun c:zz() (command "zoom" "0.8x")).

     

     

    Mình có cách khác để tạo các lệnh gõ tắt nhanh hơn và có thể làm tất các các lệnh tắt có trong Atocad (những lệnh đã làm chưa gặp trục trặc).

    cách làm: vào thẻ Express\Tools\command Alias Editor : vào thẻ command Aliases chọn Add, tại dòng Alias bạn gõ phím tắt tùy thích, tại dòng Autocad command --> chọn lệnh trong Acad mà bạn muốn tạo lệnh gõ tắt

     

     

    *************

    Bác nào biết lệnh nào trong lisp để hiện hành 1 style lên được không, ví dụ như trong bản vẽ có nhiều style, nhưng trong lisp mình muốn tạo 01 text và muốn có thuộc tính của một style sãn trong bản vẽ.

     

    cảm ơn nhiều !

×