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

roberto

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

    7
  • Đã tham gia

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

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


  1. Anh có thể tạo giúp e trong list đó có các cột được không ! Ví dụ như là trong bảng layer thì có các cột là linetype, lineweight...e muốn trong bảng list box đó của e có các cột ma nội dung các cột chỉ là các text thôi!

     

    Cái này thị chịu thôi, Hình như "layer properties manager" Không viết bằng DCL. Nhờ các cao thủ trong diễn đàn giúp nhé.


  2. Bạn có vất vả với đám code lằng nhằng điều khiển dialog mới thấy được giá trị của cái Image_Tile_Menu: chỉ cần vài dòng trong *.mns là bạn có ngay một dialog bao gồm cả 2 thành phần: 1 listbox chứa text và 1 list box chứa hình ảnh tương ứng, chẳng cần viết code cho *dcl lẫn *.lsp. Nhưng mà thôi, tuỳ quan điểm mỗi người. No problems! Chúc mọi người vui vẻ!

     

    Theo quan điểm của mình thì mỗi cái có 1 thế mạnh riêng, khồng thể xét trên cùng một thứ nguyên được, tức là không thể đổi 1 m = bao nhiêu kg được ???

    Đánh giá như bạn hơi chủ quan thì phải, Chỉ là ý kiến của mình thôi nhế <_<

    Nếu dùng *.mns làm được hết thì sinh ra dialog để làm gì.???

     

    Đồng ý với ý kiến "duy782006"

    "Nói chung nếu tạo được thì hìn nó pro hơn một tí còn không cũng không sao bạn không cần bận tậm đến 1 điểm nhỏ này mà ảnh hưởng đến cả công việc lớn của bạn."

    Quan trọng là bên trong nó chứa những gì?, Và có bao nhiêu người sử dụng nó cho công việc?


  3. Các bác có thể cho em 1 lisp ví dụ về dialog được không ah . Khi đánh lệnh ABC.. gì đó thì sẽ hiện lên bảng dialog . 1 bên là có 3 dòng với nội dung "hình tròn" "hình vuông" "tam giác" , bên kia là slide của 3 hình đó . Khi mình click vào hình slide hay dòng chữ thì sẽ thực thi ngay lệnh chứ không cần phải nhấp ok . Tất nhiên sau khi click sẽ có giai đoạn nhập R đường tròn , cạnh hình vuông hoặc kích thước tam giác .

    Lisp này để em học hỏi , chứ nhiều lisp trên máy quá phức tạp và rất dài , em còn học nhiều nên chưa hiểu hết .

    Em cảm ơn rất nhiều .

    Bạn thu đoạn code này xem,

    Tự tạo lay file *.Sld nhé

    "htron.sld"

    "hvuong.sld"

    " htamgiac.sld"

    đặt đường dẫn ở đoạn này

    " im (strcat "c:\\" image)" trong funtion (fill-im) mình đang để là ổ c:\

    Hy vọng giúp được bạn. Mình buông súng lâu rồi nên bây giờ viết chắc củ chuối lắm <_<

    Nếu bạn không muốn lặp lại main dialog thì bỏ phần "(while ( >= redia 2 )" ở C:show đi

    thuty.dcl

    thuty: dialog{
    label= "thu image button";
     :boxed_column {
    :row{	
    :icon_ima{
    	key ="tron";
    	}
    :icon_ima{
    	key ="vuong";
    
    	}
    :icon_ima{
    	key ="tamgiac";
    
    	}
     } //row  
    : retirement_button {
    		label		   = " Exit  ";
    		key			 = "accept";
    		is_default	  = true;
      }
    
    
     }//boxed_colum
    }
    
    // lap mot cai rieng >>> lap lai nhieu lan
    icon_ima: image_button {
    	color					= 0;
    	allow_accept			= true;
    	fixed_height			= true;
    	fixed_width			 = true;
    width 			=25;
    height 			=9;
    
    }
    
    
    hinhtron: dialog{
    label="hinh tron";
    :edit_box{
    	label	= "nhap ban kinh R";
    	key	= "bankinh";
    	value	= "0.0";
    
    }
    
    ok_cancel;
    }
    
    hinhvuong: dialog{
    label="hinh vuong";
    :edit_box{
    	label	= "chieu dai canh";
    	key	= "canh";
    	value	= "0.0";
    
    }
    
    ok_cancel;
    
    }
    
    hinhtamgiac: dialog{
    label="Hinh tam giac";
    :edit_box{
    	label	= "canh gi cung duoc";
    	key	= "canhtamgiac";
    	value	= "100.0";
    
    }
    :edit_box{
    	label	= "goc gi cung duoc";
    	key	= "goctamgiac";
    	value	= 0.0;
    
    }
    
    ok_cancel;
    
    }

     

    Thuty.lsp

    ;;; load dialog
    (defun loadcl (dia_name)
     (if (= -1 (setq dcl_id (load_dialog (strcat dia_name ".dcl"))))
    (progn
      (alert (strcat dia_name ".dcl" "not found")
      (setq dialogloaded nil)
     )		 
    ) 
    (setq dialogloaded 1)
    ) 
    )
    ;;;=========================
    ;;; thu tuc dua anh nen 
    (defun fill-im (image key / width height im)
    (setq 	width (dimx_tile  key)
    		  height (dimy_tile key)
    ;********************* CHU Y *****************************
    ; dat duong dan den file chua anh - image la anh can dua nen
    ;************************************************************
    	im (strcat "c:\\" image)
    	)
    (start_image key)
    (slide_image 0 0  width height im)  
    (end_image)
    )
    ;;; htron , hvuong , htamgiac la anh can dua nen
    ;;; thu tuc nay chi lam gon chuong trinh 
    (defun appear-images ()
     (fill-im "htron" "tron")
     (fill-im "hvuong" "vuong")
     (fill-im "htamgiac" "tamgiac")
    
    )
    ;;; Load subdialog tranh lap lai nhieu lan 
    (defun td (dialogname)
      (if (not (new_dialog dialogname dcl_id)) (exit))
      (start_dialog)
      (done_dialog)
    ; dat mot so cac function kiem tra va lam viec voi subdialog
    
    );end defun
    ;;;
    ;;; Chu y  chi la vi du ve cach hien thi dialog thoi
    (defun td1 ()
      (if (not (new_dialog "hinhtron" dcl_id)) (exit))
      (start_dialog)
    ;CHU Y DAY CHI LA VI DU VE CANH HIEN THI DIALOG THOI
    ; 2 cach hien thi dialog thi dieu khien sub dialog khac nhau
    ; do thoi gian co han chi lay vi du thoi.
    
    );end defun
    ;;;
    
    (defun c:show (/ dcl_id dialogloaded redia r)
     (setq redia 2)
     (loadcl "thuty")
     (if (/= nil dialogloaded)
    (progn
       (while ( >= redia 2 )
    	  (progn
    	  (if (not (new_dialog "thuty" dcl_id)) (exit)); break when error
    	  (appear-images)
    		  (action_tile  "tron" "(td1)(done_dialog 3)")
    		  (action_tile  "vuong" "(setq r $key)(done_dialog 4)")
    		  (action_tile  "tamgiac" "(setq r $key)(done_dialog 5)")
    	  (action_tile  "accept" "(done_dialog 1)")
    			(setq redia (start_dialog))
    ;;; Co mot so cach de goi Funtion khi tac dong Image
    ;;; Minh chi gioi thieu 2 cach thoi, khong co thoi gian
    ;;; Cach 1	  
    		  (cond
    	((eq r "vuong") (td "hinhvuong"))
    	((eq r "tamgiac") (td "hinhtamgiac"))	
    	  )
    	  (setq r nil)
    ;;; cach 2
    ;;;			  (cond
    ;;;		((= redia 4) (td "hinhvuong"))
    ;;;		((= redia 5) (td "hinhtamgiac"))	
    ;;;		  ) 
    
    	  );p
     );w
      (unload_dialog dcl_id)
      );p-f
    (print "Error")
     );if  
    );defun

    Have fun,

    Roberto Nguyen

    • Vote tăng 1

  4. Anh có thể viết cho e 1 file lisp, 1file dcl, trong file dcl có 1 list_box lấy nội dung từ 1file TXT nào đó, mục đích của e là tạo ra 1 hộp thoại hướng dẫn ngưòi dùng (chứa trong file txt) về 1 cái gì đó thôi!!

    Giúp e nhé Bro

     

    Kiểu này chuối lắm dùng file *.chm hoặc *.hlp hay hơn nhiều

    code đây không biết có đúng ý bạn không?

    Thuty.dcl:

    (defun read-txt (filename / open_f line_r list-out file_read)
    (setq list-out nil)
    (if (/= (findfile filename) nil)
     (progn  
     (setq file_read (open filename "r"))
     (while
     (/= nil
     (setq line_r (read-line file_read))
      )
     (setq list-out (append list-out (list line_r)))
      )
     (close file_read)
    )
    (princ)  
    )
    list-out
    )
    ;;;;;;;;;;;;;;;
    ;==== Load and check dialog ===========
    ; dia_name : string
    (defun loadcl ( dia_name)
     (if (= -1 (setq dcl_id (load_dialog (strcat dia_name ".dcl"))))
    (progn
      (alert (strcat dia_name ".dcl" "not found")
      (setq dialogloaded nil)
    )		 
    );p
    (setq dialogloaded 1)
    );f
    );defun
    ;;;;;;;;;;;=========================
    (defun c:show (/ fname  l1  dcl_id dialogloaded)
     (setq fname (getfiled "chon file"  "c:\\"  "*" 16)); lựa chọn file
    ;(setq fname "c:\\abc\\abc.txt"); hoặc chỉ định file
     (if (and
    (/= fname nil)
    (> (loadcl "thuty") 0); load and check dialog 
      ) 
      (if (not (new_dialog "thuty" dcl_id))
     (exit); Error
     (progn;else
    		(start_list "doctxt")	 
    		(mapcar' add_list (read-txt fname))  
    		(end_list)
    		(start_dialog)						 
    		(done_dialog)
    	(unload_dialog dcl_id)
    );p
    
      );if1 
      );if
     (princ)
    );defun
    

    Have fun


  5. Chào các bạn!

    Mình mới đăng nhập diễn đàn này. Xem các bài viết trong diễn đàn rất lý thú và bổ ích, sẵn đây mình gửi cho các bạn chương trình ghi dung sai vừa mới viết xong. Các bạn xài thử rồi cho ý kiến nhé. Lần đầu tiên mình viết chắc còn nhiều sơ xuất, mong các bạn đóng góp để hoàn thiện thêm.

    Đặc điểm của chương trình:

    - Ghi dung sai chọn theo các kiểu lắp, ví dụ như H7/k6; H8/h7...

    - Kích thước bạn phải có trước rồi mới ghi dung sai.

    - Chỉ ghi dung sai với : 0 < kích thước <= 500mm theo hệ thống lỗ hoặc trục.

    - Không ghi dung sai với kích thước ren : ví dụ như M45

    - Ghi được với kích thước đã sửa bằng Text hoặc MText

    - Trong bảng chọn các kiểu lắp bạn có thể nhập trực tiếp một kiểu lắp nào đó đã biết thay vì kích các kiểu lắp có sẵn (thường dùng).

    - Yêu cầu chọn đúng ngay tại vị trí chữ số của kích thước cần ghi dung sai.

     

    Đây là đường link để lấy file :

    <a href="http://www.cadviet.com/upfiles/Ghidungsai.rar" target="_blank">http://www.cadviet.com/upfiles/Ghidungsai.rar</a>

     

    Các bạn giải nén rồi xem file hướng dẫn trong đó. Hy vọng giúp ích nhiều cho dân Cơ khí.

    Very nice!, Tôi cũng là dân cơ khí chế tạo máy nhưng bỏ bản vẽ chuyển sang cầm cày lâu rôi, Tôi có một số ý kiến:

    1- trong một số bản vẽ chế tạo có ghi kích thước Ví dụ: %%C <> js6, thì chương trình của bạn chưa phát hiện ra và tự động điền dung sai "js6"

    2- Thường thì kích thước chiều dài và một số phần chỉ mang tính kết cấu thì dung sai là dung sai tự do, chương trình của bạn chưa có lựa chọn cho yếu tố này

     

    Mình cần cày lâu rồi nếu có gì không đúng bỏ qua nhé


  6. Cám ơn bạn Nguyen Hoanh, tôi cũng nghĩ là lỗi do biến hệ thống nào đó nhưng không biết là biến nào, tôi ra soát ct nửa ngày mà không tìm ra lỗi, bây giờ thi ok rồi.

     

    xin hỏi thêm.

    Nếu khi đặt đường dẫn cố định, khi người sử dụng thay đổi thư mục thì sẽ gây lỗi có cách nào khắc phục không? ví dụ đổi "C:\\temp\\New Folder" thành "D:\\temp\\New Folder", Bởi vì các modul tiếp phải đọc file dữ liệu rất nhiều. Hay phải viết 1 function kiểm tra và bắt người dùng chỉ ra đường dẫn?

     

    Trước đây tôi học lập trình R12 for dos thì thực hiện (/ 3 4) để lấy giá trị thực chỉ cần setvar xxxxxx , lâu quá rồi không nhớ nổi, các phiên bản về sau thi không biết thế nào vi tôi không sử dụng từ năm 1997 đến bây giờ.


  7. Tôi viết hộ cậu em ct mô phỏng đường chạy dụng cụ của file .NC xuất từ MasterCam cho bộ điều khiển CNC Fanuc. Tôi học lập Autolisp đã từ năm 1996 và sau đó không dùng nữa. Do thời gian quá lâu không lập trình và đầu óc mu mẫn đi rồi soát mãi vẫn chưa tìm ra lỗi. Nhờ các cao thu soát hộ, mô tả sơ bộ như sau:

    Ct "drawn_main"- drawnc.lsp là mô phỏng file *.NC (2 file dinh kem "pad.nc" "sy8402.nc")

    http://www.cadviet.com/upfiles/New_Folder.rar

    cụ thể là chỉ vẽ cung tròn và đường thẳng lấy dữ liệu từ file .NC thôi.

    một số hàm lấy từ "cutxy.lsp"

    Khi chạy CT khi được khi không hoặc chi chạy được 1 lần chạy tiếp lần 2 thì lỗi, mở bản vẽ mới load lại thì lại chạy được 1 lần.

     

    thêm nữa các biến hệ thống (system variable) tôi quên hết rồi, thực hiện phép toán ví dụ: (/ 3 4) kết quả = 0, đọc help và set thử biến mãi không được.

    Tôi mất 2 tuần để viết CT này mà tôi lại không có nhiều thời gian (2h/ ngày) mong các bạn giúp

    Xin cam on

    Roberto Nguyen

×