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

nhoclangbat

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

    1.306
  • Đã tham gia

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

  • Ngày trúng

    35

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


  1. - hi mò mẫn 1 thời gian về dcl, nhoc xin nộp bài , mấy bài tập cũ chương trước nhoc xào đi xáo lại lung tung ben hết rùi ^^, anh Ket thông cảm, nhoc nộp theo dạng ứng dụng riêng của nhoc viết, thêm vô dcl, anh Ket xem hộ nhoc hen ^^, anh Ket dễ tính thì cho nhoc qua ải, còn thấy chưa đã, nhoc sẽ cố gắng áp dụng tiếp vô các lsp hay xài của nhoc hen ^^

    - up tí video minh họa ^^

    https://www.youtube.com/watch?v=cSgnn1AnkdQ&feature=youtu.be

    - code dcl, của nhoc ^^

    TDDC
    :dialog { label="Trích_Tọa độ_Thửa đất";
     :boxed_column { label="Thông số";
             :edit_box { label="Độ rộng donut"; key="donut";  edit_width=10.6; edit_limit= 4;}
             :edit_box { key="caotext"; label="Chiều cao số hiệu điểm"; edit_width=10.6; edit_limit= 4;}
    		 spacer;
    		 :popup_list { key="tyle";  label="Tỷ lệ bản đồ"; edit_width=10.6; }
    	           }
    /////////////////////////////////////////////////////////////////////////////
     :boxed_row { label="Điều kiện xuất dữ liệu";
       :boxed_column {
    	:radio_column { key="thuan_nghich"; fixed_height = false; height= 3; 
    		:radio_button { key="thuan"; label="Thuận kim đồng hồ"; value="1"; } 
    		:radio_button { key="nghich"; label="Ngược kim đồng hồ";} 
    			   }
    	    :edit_box { key="sobatdau"; label="Số bắt đầu"; edit_width=8; edit_limit= 3;}
    	    :toggle { key="chaycanh"; label="Chạy cạnh"; }
                    }
    //////////////////////////////////////////////////////////////////////////
        :boxed_column { fixed_height = false; height= 10;
    		:radio_row { key="diembatdau"; label="Điểm bắt đầu";  
    		  :radio_button { key="macdinh"; label="Mặc định"; }
    		  :radio_button { key="tuchon"; label="Tự chọn"; value="1";}
    		            }
    		 spacer;
    	///////////////////////////////////////////////////////////////////
    	    :radio_row { key="diemdat"; label="Điểm đặt bảng tọa độ";  
    		  :radio_button { key="model"; label="Model"; value="1"; }
    		  :radio_button { key="layout"; label="Layout"; value="0";}
    		            }
    				}	
    			}	
     
     
     
     
      :row {   
        :button { key="chonranh"; label="Chọn ranh đất";  is_default=true; fixed_width= true; }
    	:button { key="xong"; label="Kết thúc"; is_cancel=true; fixed_width= true; }
    	   }
    ///////////////////////////////////////////////////////////////////////////////////////////	
            }
    	
    
    • Vote tăng 1

  2. - ah đây, mới mò lại ^^, filename phải khai rõ đường dẫn hen => Hieu không cần để file trong supports, readonly nếu để nil thì giống mở file bình thường cho save, còn khác nil thì mở file dạng read_only, múa vô tư nhưng ko save đc ^^

    (defun MyOpen (FileName ReadOnly / )
    (vla-Open
     (vla-get-Documents
      (vlax-get-Acad-Object)
     )
     FileName
     (if ReadOnly 
      :vlax-true
      :vlax-false
     )
    )
    )
    
    • Vote tăng 1

  3. - hi sr anh nhoc lộn, nhoc mot của sư huynh Hiep, chưa đọc kỹ , chỉ entmod đc điểm đầu or cả lstdxf10 ^^

    (defun k_entmod (ten lst_new / lstcu)
    (setq lstcu (entget ten))
    (cond
    	((= (cdr (assoc 0 lstcu)) "MTEXT")
    		(foreach x lst_new
    			(if (= (car x) 1) (setq lstcu (subst x (assoc 1 lstcu) lstcu)) (setq lstcu (append lstcu (list x))))))
    	((= (cdr (assoc 0 lstcu)) "*POLYLINE")
    		(foreach x lst_new
    			(if (= (car x) 10) (setq lstcu (subst x (assoc 10 lstcu) lstcu)) (setq lstcu (append lstcu (list x)))))
    					)
    	
    	(t (setq lstcu (append lstcu lst_new)))
    )
    (entmod lstcu)
    )
    
    • Vote tăng 1

  4. - hi trong bài nhoc đc học của anh Ket, có viết hàm entmod với trường hợp là polyline, ko biết có giúp  đc gì cho anh Duan ko, còn vụ 3dpolyline nhoc chưa mò tới ^^

    (foreach x lst_new
    			(if (= (car x) 10) (setq lstcu (subst x (assoc 10 lstcu) lstcu)) (setq lstcu (append lstcu (list x)))))
    

    - lst_new là danh sách tọa độ mới, lst_cu là là danh sách khi entget polyline 

    • Vote tăng 1

  5. -mấy anh cho nhoc hỏi cách tạo ra file .scr để có thể tự chạy các file cad trong thư mục với lsp chỉ định với, nhoc đang viết 1 lệnh từ 1 file có nhiều layout sau đó xuất các layout qua model mỗi layout thành 1 file mới, sau đó  tự mở các file vừa chuyển chạy lệnh lsp tiếp theo save rùi close = cách dùng file scrip


  6. - hihi code này code cũ của nhoc chỉ mong má lại tí chưa check trớ trêu vậy ^^, còn while con sở dỉ thêm đk dem để chuoi mà cac chu cai lien tuc nhau thì nó lặp tiếp ^^

    - còn mún đc như ý Hieu thì thêm cái if chắc ok ^^

    (defun txt->lst (str / str_new kytu dem lststr_new)
    (setq xoa (strcat (chr 32) (chr 44) (chr 9)))
      (setq dem 1)
      (while (<= dem (strlen str))
        (setq str_new "")
        (setq kytu (substr str dem 1))
        (while (and (not (vl-string-search kytu xoa)) (<= dem (strlen str)))
          (setq str_new (strcat str_new kytu))
          (setq dem (+ dem 1))
          (setq kytu (substr str dem 1))
        ); end while con
        (setq dem (+ dem 1))
      (if (/= str_new "")
        (setq lststr_new (append lststr_new (list str_new)))
    	)
    	   ) ;end while me
      lststr_new
    ) 

    - p/s: để ký tự thằng hàng thẳng cột nhoc thấy mí anh thường dùng phìm tab <=> (chr 9)  khi xuất ra txt là ngon ^^, kiểm tra = cách mở file txt = excel ok ^^, ít ai dùng 2 lần space ^^

    • Vote tăng 1

  7. -Hieu tham khảo thử code này nhoc viết có đúng ý đồ Hieu ko ^^

    (defun txt->lst (str / str_new kytu dem lststr_new xoa)
    (setq xoa (strcat (chr 32) (chr 44) (chr 9)))
      (setq dem 1)
      (while (<= dem (strlen str))
        (setq str_new "")
        (setq kytu (substr str dem 1))
        (while (and (not (vl-string-search kytu xoa)) (<= dem (strlen str)))
          (setq str_new (strcat str_new kytu))
          (setq dem (+ dem 1))
          (setq kytu (substr str dem 1))
        ); end while con
        (setq dem (+ dem 1))
        (setq lststr_new (append lststr_new (list str_new)))
      ) ;end while me
      lststr_new
    )
    

  8. - mục đích của Hieu là chuyển chuỗi thành lst nhưng nhoc chưa hiểu rõ ý đồ là chuyển như thế nào ^^, nhoc thấy về sau của if  tổng hơi rối ^^, nhoc đại khái là chuỗi liền toàn chữ thì thành 1 phần tử của lst nghĩa là lst chỉ có 1 phần tử, str có các ký tự đã liệt kê nằm giữa thì tách thành 2 hay 3 phần tử phải ko 


  9. - Hieu xem lại hàm  if trong hàm txtlst  ^^

    -Vd: "abcd"  chạy đến lần thứ 5 (substr "abcd" 5 1) => trả về chuỗi rỗng thì biến chu đc nối ở vế trên nãy giờ mới chạy xuống đc vế không thì của if để nhét vào lst ^^,

    còn repeat = (strlen "abcd") nó đâu chạy xuống đc vế kia đâu mà nhét chu vào  lst => lst nil mà kết quả hàm trả về cuối cùng lại là lst =>  nil ^^

    • Vote tăng 1

  10. @Nhoclangbat: Mình có 1 file bị lỗi không dùng được lsp ttl.

    Bạn kiểm tra giúp mình được không? Cảm ơn bạn!

    - có phải bạn không chọn đc polyline phải ko ^^, nhoc đã sửa lại chắc ok

    (vl-load-com)
    ;==================
    (defun c:TTL (/ old lmax lmin ename1 ename2 dai1 dai2 info1 sl info2  ltb ldelta e1 e2) ;
    (setq old (getvar "osmode"))
    (setvar "osmode" 0)
    (prompt "Chon thanh co chieu dai be nhat:")
    (setq lmin (ssget "+.:E:S" '((0 . "*LINE"))))
    (if lmin
     (progn
       (setq dai1 0.0)
       (while (setq ename1 (ssname lmin 0))
               (setq dai1 (+ dai1 (Length1 ename1)))
    		   (ssdel ename1 lmin))
         (setq dai1 (distof (rtos dai1 2 3)))
      )
    )  
     ;=========================================================
    (prompt "Chon thanh co chieu dai lon nhat:")
    (setq lmax (ssget "+.:E:S" '((0 . "*LINE"))))
    (if lmax
     (progn
        (setq dai2 0.0)
       (while (setq ename2 (ssname lmax 0))
               (setq dai2 (+ dai2 (Length1 ename2)))
    		   (ssdel ename2 lmax))
         (setq dai2 (distof (rtos dai2 2 3)))
      )
    )  
    ;===========================================================
    (setq sl (getint "\nSo luong thanh mun tinh:"))
    (setq ltb (distof (rtos (/ (+ dai1 dai2) 2.0) 2 3)))
    (if (= (- ltb (fix ltb)) 0.5)
    (setq ltb (+ ltb 0.5))
    ltb
    )
    (setq ldelta (* (/ (- dai2 dai1) (- sl 1)) 1000.0))
    ;==============================================================
    (setq e1 (entget (car (entsel "\nchon text ghi ket qua L trung binh:"))))
    (princ "\n")
    (while (/= (cdr (assoc 0 e1)) "TEXT")
    (prompt "Ban chon ko phai la text, ban chon lai hen!!!")
    (setq e1 (entget (car (entsel "\nchon text ghi ket qua L trung binh:"))))
    (princ "\n")
    )
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (entmod (subst (cons 1 (strcat (itoa sl) "`14, L=" (rtos (* ltb 1000) 2 0))) (assoc 1 e1) e1))
    ;===============================================================
    (setq e2 (entget (car (entsel "\nchon dim ghi ket qua L delta:"))))
    (princ "\n")
    (while (/= (cdr (assoc 0 e2)) "DIMENSION")
    (prompt "doi tuong ban chon ko phai la dim, ban chon lai hen!!!")
    (setq e2 (entget (car (entsel "\nchon dim ghi ket qua L delta:"))))
    (princ "\n")
    )
    (entmod (subst (cons 1 (strcat (rtos (* dai1 1000) 2 0) "~" (rtos (* dai2 1000) 2 0) ", \U+0394L=" (rtos ldelta 2 0))) (assoc 1 e2) e2))
    ;======================================================================
    (setvar "osmode" old)
    (princ "\n")
    (princ)
    )
    ;===============================chon thanh co chieu dai ko doi edit vao text co san
    (defun c:ttk(/ lx ename3 info3 dai3 e3 old sl dk)
    (setq old (getvar "osmode"))
    (setvar "osmode" 0)
    (prompt "Chon thanh co chieu dai khong doi:")
    (setq lx (ssget "+.:E:S" '((0 . "*LINE"))))
    (if lx
     (progn
         (setq dai3 0.0)
    	 (while (setq ename3 (ssname lx 0))
               (setq dai3 (+ dai3 (Length1 ename3)))
    		   (ssdel ename3 lx))
    	     (setq dai3 (distof (rtos dai3 2 3)))
    	 )
      )
    (setq sl (getint "\nSo luong thanh mun tinh:"))
    (setq dk (getstring "\nNhap duong kinh Thep:"))
    ;====================================================
     (setq e3 (entget (car (entsel "\nchon text ghi ket qua L khong doi:"))))
    (princ "\n")
    (while (/= (cdr (assoc 0 e3)) "TEXT")
    (prompt "Ban chon ko phai la text, ban chon lai hen!!!")
    (setq e3 (entget (car (entsel "\nchon text ghi ket qua L khong doi:"))))
    (princ "\n")
    )
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (entmod (subst (cons 1 (strcat (itoa sl) dk ", L=" (rtos (* dai3 1000) 2 0))) (assoc 1 e3) e3))
    (setvar "osmode" old)
    (princ "\n")
    (princ)
    )
    ;=============================================
    (defun Length1(e) 
    (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e)))
    ;=========================================================
    

    - p/s: nói khó cũng ko khó dễ cũng ko phải dễ ^^,với ai chưa pit về lsp chỉ xem qua code dù nhiều lần cũng khó mà nắm đc để có thể tự sửa, bản thân nhoc lúc trước cũng vậy, có khi mún sửa lại hóa ra phá ^^,anh ndtnv đừng khó khăn quá  :P

×