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

Khonghedongian

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

    32
  • Đã tham gia

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

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


  1. http://www.cadviet.com/upfiles/5/149373_drawing1.dwg mấy bác hướng dãn em ve đường tâm của đường tròn với trục đối xứng của hình cn nha. tk rat nhiều.

    vẽ đường tâm bạn có thể dùng lệnh DCE còn đường tâm hình chữ nhật có thể sử dụng lệnh XL và bắt điểm trung điểm cạnh


  2. Mong các bác giúp đỡ. em có 1 bản vẽ mà có nhiều mẫu em copy của người khác, trong đó nhiều layer rất lộn xộn trong khi  Công ty em chỉ dùng 3 layer chính : STEEL ( nét liền) , HIDDEN LINE ( nét đứt) , GRID LINE ( nét tâm). em muốn tất cả các layer nét đứt chuyển về HIDDEN LINE , tất cả nét liền về layer STEEL , và nét tâm chuyển về GRID LINE.  mong các bác hồi âm sớm.


  3.  

    Bạn thử lisp này

    (defun c:gct (/ ss1 ss2 _NHT:sssortXY)
      ;;sap xep cac toi tuong theo X hoac Y
    ;;ss - selection by ssget
    ;;dir: T - sap xep theo X tang dan
    ;;     nil - sap xep theo Y giam dan
    ;;vla: T/nil
    ;;return OBJECT/ENAME
    
    (defun _NHT:sssortXY (ss dir vla / lstent)
      ;(setq ss(ssget))
      (if ss
        (progn
        (setq lstent
    	   (vl-sort (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
    		    (if	dir
    		      
    		      '(lambda (x y)
    			 
    			 (< (car (cdr (assoc 10 (entget x))))
    			    (car (cdr (assoc 10 (entget y))))
    			 )
    		       )
    		      
    		      '(lambda (x y)
    			 (> (cadr (cdr (assoc 10 (entget x))))
    			    (cadr (cdr (assoc 10 (entget y))))
    			 )
    		       )
    		    )
    	   )
        )
        (if vla (setq lstent(mapcar 'vlax-ename->vla-object lstent)) lstent)
        )
        lstent
      )
    )
      (command "_.undo" "be")
      (if (and
    	(princ "\nChon cac text o cot 1")
    	(setq ss1 (ssget '((0 . "text, mtext"))))
    	(princ "\nChon cac text o cot 2")
    	(setq ss2 (ssget '((0 . "text, mtext"))))
          )
        (mapcar
          '(lambda (x y)
    	 (vla-put-textstring
    	   x
    	   (strcat (vla-get-textstring x) "-" (vla-get-textstring y))
    	 )
           )
          (_NHT:sssortXY ss1 nil t)
          (_NHT:sssortXY ss2 nil t)
        )
      )
      (command "_.undo" "e")
      (princ)
      )
    

    Lisp bác viết chạy rất ổn. Em cảm ơn các bác đã nhiệt tình giúp đỡ em ạ 


  4. Hề hề hề,

    1/-Sở dĩ lisp không chạy ra bảng có thể do số lượng các text trong mỗi cột không bằng nhau. 

    2/- Không hiểu điều bạn muốn.

    ý em là để cho đơn giản vấn đề thì em có 2 cột dtext(mtext ) như sau:

    1a   b3

    2n   1-r

    sd    3

    lsd   1-r

    ...     ....

    bác có thể giúp em sao cho khi đánh lệnh rồi chọn quét tất cả sẽ tạo ra :

    1a-b3

    2n-1-r

    sd-3

    lsd-1r

    ....


  5. Hề hề hề,

     Bạn nên download file theo dường dẫn mình gửi, đừng download từ code box bởi hình như code box của diễn đàn có lỗi. Lisp mình đã test Ok rồi mới post.

    Em lại làm phiền bác chút.lísp chạy đôi lúc không hiện bước cuối là : điểm để xuất ra bảng và do đó ko hiện bảng .Giờ em ko quan tâm cái bảng đó nữa. em copy 2 cột text đó ra  bác sửa cái lísp  sao cho em quét chuột 1 cái mà 2 cột tự ghép lại được không và ở giữa các text có dấu ''-'' ạ ? và đối tượng dtext và mtext đều được ạ. 

    • Vote giảm 1

  6.  

    Hề hề hề,

    Vậy là bạn muốn cho các cập đôi này sống chung trong một chuồng . Vậy thì thử cái này coi sao.

     

    http://www.cadviet.com/upfiles/5/5194_ghepcot.lsp

    (defun c:ghct (/ p p1 p2 h ht r1 r2 ls1 ls2 ls3 ss txt)
    (vl-load-com)
    (setq oldos (getvar "osmode"))
    (setvar "osmode" 0)
    (setq p1 (getpoint "\n Chon diem goc tren ben trai cot 1")
              p2 (getpoint "\n Chon diem goc trên ben trai cot 2")
              h (getdist p2 "\n Chon diem xac dinh chieu cao hang cua bang")
              r1 (getdist p1 "\n Chon diem xac dinh chieu rong cot 1")
              r2 (getdist p2 "\n Chon diem xac dinh chieu rong cot 2")
              ls1 (list)
              ls2 (list)
              ls3 (list)  )
    (while (setq ss (ssget "f" (list p1 (list (+ (car p1) r1) (- (cadr p1) h))) (list (cons 0 "*text")) ))
             (setq txt (cdr (assoc 1 (entget (ssname ss 0))))
                       ls1 (append ls1 (list txt))
                       p1 (list (car p1) (- (cadr p1) h)) 
                       ht (cdr (assoc 40 (entget (ssname ss 0)))) )
    )
    (while (setq ss (ssget "f" (list p2 (list (+ (car p2) r2) (- (cadr p2) h))) (list (cons 0 "*text")) ))
             (setq txt (cdr (assoc 1 (entget (ssname ss 0))))
                       ls2 (append ls2 (list txt))
                       p2 (list (car p2) (- (cadr p2) h))  )
    )   
    (if (= (length ls1) (length ls2))
        (setq ls3 (mapcar '(lambda (x y) (strcat  x "-" y)) ls1 ls2))
    )
    (if ls3
        (command "rectangle" (setq p1 (getpoint "\n Chon diem dat bang moi")) (list (+ (car p1) r1 r2) (- (cadr p1) (* h (length ls3))))  )
    )
    (foreach txt ls3
        (setq p (list (+ (car p1) (/ (+ r1 r2) 2)) (- (cadr p1) (/ h 2))))
        (command "text" "j" "mc" p ht 0 txt)
        (setq p1 (list (car p1) (- (cadr p1) h)))
    )
    (setvar "osmode" oldos)
    (princ)
    )    
    

    em load syntax error bác ạ

×