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

hsoso

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

    1
  • Đã tham gia

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

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


  1. Sau khi tìm hiểu, mình đã tìm được cái này trên diễn đàn.

     

    Lisp cắt Dim.

     

    Cách dùng:

    - Sau khi upload, dùng lệnh CD.

    - click điểm 1 để chọn vị trí cắt chân Dim,

    - click điểm 2 để chọn vị trí cắt đường Dim.

     

    Nếu không muốn cắt chân Dim hoặc đường Dim thì nhấn phím dấu cách.

     

    
    

    (defun c:cd (/ entdt dcat1 dcat2 sodimsua index sodt ssdt tt)

      (defun cdim (entdt    pchan     pduong      /       tt        old10

               old13    old14     new10      new13       new14    p10n

               p13n    p14n     p10o      p13o       p14o        gocduong

               gocchan    pchanb     pduongb loaidim

              )

        (defun chanvuonggoc    (ph p1 p2 / ptemp pkq goc)

          (setq

        goc   (+ (angle p1 p2) (/ pi 2.0))

        ptemp (polar ph goc 1000.0)

        pkq   (inters ph ptemp p1 p2 nil)

          )

          pkq

        )

        (setq

          tt       (entget entdt)

          old10    (assoc '10 tt)

          old13    (assoc '13 tt)

          old14    (assoc '14 tt)

          p10o     (cdr old10)

          p13o     (cdr old13)

          p14o     (cdr old14)

          loaidim  (logand (cdr (assoc '70 tt)) 7)

          gocduong (cond

             ((= loaidim 1) (angle p13o p14o))

             ((= loaidim 0) (cdr (assoc '50 tt)))

             (t nil)

               )

          pchan (cond

              (pchan (list (car pchan) (cadr pchan) 0.0))

              (t pchan)

            )

          pduong (cond

              (pduong (list (car pduong) (cadr pduong) 0.0))

              (t pduong)

            )

          

        )

        (if    gocduong

          (progn

        (if pchan

          (setq

            pchanb (polar pchan gocduong 1000.0)

            p13n   (chanvuonggoc (list (car p13o) (cadr p13o) 0.0) pchan pchanb)

            p14n   (chanvuonggoc (list (car p14o) (cadr p14o) 0.0) pchan pchanb)

            new13  (cons 13 p13n)

            new14  (cons 14 p14n)

            tt       (subst new13 old13 tt)

            tt       (subst new14 old14 tt)

          )

        )

        (if pduong

          (setq

            pduongb (polar pduong gocduong 1000.0)

            p10n    (chanvuonggoc (list (car p10o) (cadr p10o) 0.0) pduong pduongb)

            new10   (cons 10 p10n)

            tt        (subst new10 old10 tt)

          )

        )

        (entmod tt)

          )

        )

        gocduong

      )

     

     

      (setq    ssdt     (ssget '((0 . "DIMENSION")))

        dcat1     (getpoint "\nDiem cat chan DIM: ")

        dcat2     (getpoint "\nDiem cat duong DIM: ")

            

        dcat1    (cond

               (dcat1 (trans dcat1 1 0))

               (t nil)

             )

        dcat2    (cond

               (dcat2 (trans dcat2 1 0))

               (t nil)

             )    

        sodt     (sslength ssdt)

        index     0

        sodimsua 0

      )

      (repeat sodt

        (setq entdt    (ssname ssdt index)

          index    (1+ index)

          tt    (entget entdt)

     

        )

        (if    (cdim entdt dcat1 dcat2)

          (setq sodimsua (1+ sodimsua))

        )

      )

      (princ (strcat "\nSo duong dim da sua: " (itoa sodimsua)))

     

    )

×