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

Kim Shin

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 Kim Shin


  1. 1 giờ} trướ}c, 7o7 đã nói:

    Có cách này bạn có thể dùng tạm, đó là quay ngược kim đồng hồ 90 độ cho nó nằm ngang, rồi dùng lisp trên, xong quay lại. Nhớ lưu điểm quay không thôi sẽ bị di chuyển. Chúc bạn làm được. Lần sau có nhờ vả thì nhớ nói luôn lúc đầu, chứ mấy lisper ngại sửa tới sửa lui lắm. Nếu có phí thì khác.

    Cảm ơn bạn nhiều


  2. Vào lúc 4/5/2024 tại 16:30, limfx đã nói:

    Lệnh RPL , hy vọng giúp ích cho bạn!

    Polyline reverse (RPL).lsp

     

    8 giờ trước, cuongtk2 đã nói:

    Sửa lại lisp trên một chút cho Line, Polyline

    
    (defun c:test ( / OBJ SS X1 X2)
    
    
    
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defun _reversepline (e /  x1 x2 x3 x4 x5 x6)
        (foreach a1	(entget e)
          (cond ((= (car a1) 10) (setq x2 (cons a1 x2)))
    	    ((= (car a1) 40) (setq x4 (cons (cons 41 (cdr a1)) x4)))
    	    ((= (car a1) 41) (setq x3 (cons (cons 40 (cdr a1)) x3)))
    	    ((= (car a1) 42) (setq x5 (cons (cons 42 (- (cdr a1))) x5)))
    	    ((= (car a1) 210) (setq x6 (cons a1 x6)))
    	    (t (setq x1 (cons a1 x1)))
          )
        )
        (entmod (append (reverse x1)
    		    (append (apply (function append)
    				   (apply (function mapcar)
    					  (cons	'list
    						(list x2
    						      (cdr (reverse (cons (car x3) (reverse x3))))
    						      (cdr (reverse (cons (car x4) (reverse x4))))
    						      (cdr (reverse (cons (car x5) (reverse x5))))
    						) ;_  list
    					  ) ;_  cons
    				   ) ;_  apply
    			    ) ;_  apply
    			    x6
    		    ) ;_  append
    	    ) ;_  append
        ) ;_  entmod
        (entupd e)
    );end
    
    (defun _reverseline (e / ent sp ep)
      (setq ent (entget e)
            sp (cdr (assoc 10 ent))
            ep (cdr (assoc 11 ent))
            ent (subst (cons 10 ep) (assoc 10 ent) ent)
            ent (subst (cons 11 sp) (assoc 11 ent) ent)
    
            )
      (entmod ent)
      )
    
    (defun _reverse (e)
      (if ( =  (acet-dxf 0 (entget e)) "LINE")
        (_reverseline e)
        )
      (if ( =  (acet-dxf 0 (entget e)) "LWPOLYLINE")
        (_reversepline e)
        )
      )
    
      (setq ss (ACET-SS-TO-LIST (ssget '((0 . "*LINE")))))
    (foreach ent ss
      
    (setq obj (vlax-ename->vla-object ent))
    (setq x1 (car (vlax-curve-getStartPoint obj))
          x2 (car (vlax-curve-getEndPoint obj))
          )
      (if (< x2 x1)
        (_reverse ent)
        )
      )
    )
         

     

    Cảm ơn bác, bác có thểm giúp em thêm trường hợp từ trên xuống dưới với ạ

    • Vote giảm 2

  3. Chào mọi người !

    Mình đang gặp một bài toán như sau : trong bản vẽ autocad giả sử có 3 đoạn thẳng, đoạn 1 vẽ từ trái sang phải, đoạn 2 vẽ từ phải sang trái, đoạn 3 vẽ từ trái sang phải , hoặc nhiều hơn

    Mình mong muốn là tất cả các đoạn thẳng sẽ được quy về cùng 1 chiều như từ trái sang phải

    Mọi người có lips hoặc cách nào cho mình xin với nhé 
    Cảm ơn mọi người...

    • Vote giảm 2

  4. Chào mọi người mình có sưu tầm một lips trên mạng nội dung lips là : người dùng quét chọn đối tượng khép kín, từ đó sẽ tính ra được center point của hình đó và tạo 1 Point tại vị trí đó

    - Giờ mình muốn thêm là người dùng quét chọn các Text hoặc Mtext, rồi di chuyển các Text đó đến vị trí Point đã tạo được

    - Mọi người giúp mình với ạ

    Cảm ơn.

    (defun C:Cen( / inline ss ssl pt LL UR bbox xmin ymin zmin xmax ymax zmax)
      (setq inline (not (zerop (getvar "CMDACTIVE"))))
      (and
        (princ (strcat "\n" (if inline ">> " "") "Get center of these objects (select): "))
        (setq ss (ssget)  ssl (sslength ss))
        (repeat ssl
          (vla-GetBoundingBox (vlax-ename->vla-object (ssname ss (setq ssl (1- ssl)))) 'LL 'UR)
          (setq LL (vlax-SafeArray->list LL)  UR (vlax-SafeArray->list UR))
          (setq bbox (cons LL (cons UR bbox)))
        ) ; rep
        (setq xmin (apply 'min (mapcar 'car bbox))
              ymin (apply 'min (mapcar 'cadr bbox))
              zmin (apply 'min (mapcar 'caddr bbox))
              xmax (apply 'max (mapcar 'car bbox))
              ymax (apply 'max (mapcar 'cadr bbox))
              zmax (apply 'max (mapcar 'caddr bbox))
        )
        (setq pt (mapcar '* '(0.5 0.5 0.5)(list (+ xmin xmax)(+ ymin ymax)(+ zmin zmax))))
        (if (not inline) (progn (entmakex (list '(0 . "POINT")(cons 10 pt))) (princ "\nCenter point created ")(princ pt)))
      )
      (if inline pt (princ))
    )

     

    Getcen.lsp

    • Vote giảm 1
×