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

BinhQN

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

    28
  • Đã tham gia

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

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


  1. 11 giờ trước, Doan Nguyen Van đã nói:
    
    (defun c:gc (/ P1 sel1 sel2 ro1 ro2 dis1 dis2 str)
    (setq sel1 (car (entsel "\n Select Dim1:")))
      (setq ro1 (vla-get-rounddistance (vlax-ename->vla-object sel1))
    	dis1 (vla-get-measurement (vlax-ename->vla-object sel1)))
    (setq sel2 (car (entsel "\n Select Dim2:")))
      (setq ro2 (vla-get-rounddistance (vlax-ename->vla-object sel2))
    	dis2 (vla-get-measurement (vlax-ename->vla-object sel2)))
      (if (/= ro1 0) (setq dis1 (* (abs ro1) (fix (/ ((if (minusp dis1) - +) dis1 (* (abs ro1) 0.5)) (abs ro1))))))
      (if (/= ro2 0) (setq dis2 (* (abs ro2) (fix (/ ((if (minusp dis2) - +) dis2 (* (abs ro2) 0.5)) (abs ro2))))))
    (setq str (strcat "(" (rtos dis1 2 0) "x" (rtos dis2 2 0) ")"))
       (setq P1 (getpoint "\nSpecify text point: "))
       (command "_.text" P1 "400" "0" str )
     (princ)
    )

    Gửi bạn test

    Cảm ơn, được rồi nha!


  2. Em cảm ơn bác Danh Cong. Em cũng thử lisp anh rồi nhưng chưa đúng ý. Nên em cũng viết thử. Nhưng bị nhược điểm mất bắt điểm!!!

    **
    (defun c:SS (/ OLDERR CMD OSM sset P1 P2 a p)
    (SETQ OLDERR *error*
          *error* myerror)
    (SETQ CMD (GETVAR "CMDECHO"))
    (SETQ OSM (GETVAR "OSMODE"))
    (SETVAR "CMDECHO" 0)
    (setq sset (ssget))
    (if (null sset) 
    (progn(princ "\nERROR: Nothing selected.")
    (exit)))
    (INITGET 7)
    (setq p1 (getpoint "First point : ")
    p2 (getpoint p1 "Base point : "))
    (INITGET 7)
    (setq p (getpoint p2 "\nSpecify a point for angle of line: \n"))
    (SETVAR "OSMODE" 0)
    (setq a (polar p2 (angle p2 p) 1000))
    (command "stretch" sset "" P1 "FROM" P2 a))
    (SETVAR "OSMODE" OSM)
    (SETVAR "CMDECHO" CMD)
    (PRINC)
    )
     


  3. Mọi người cho mình hỏi mình thiết lập 1 khoảng cách có sẵn lisp trên mà không được . Ai giúp mình với. Cảm ơn rất rất nhiều!

    (defun c:SS (/ sset P1 P2)

    (setq sset (ssget))

    (if (null sset)

    (progn(princ "\nERROR: Nothing selected.")

    (exit)))

    (setq p1 (getpoint "First point : ")

    p2 (getpoint p1 "Base point : "))

    command "stretch" sset "" P1 "FROM" P2 "100"))


  4. Chào anh em trên diễn đàn
    Mình có viết chương trình vẽ tự động sau, đại loại sau khi đánh lệnh cdd , chọn  các dim cộng lại và vẽ line.
    Mình nghĩ lỗi đang nằm trong đoạn chương trình sau: (Rtos (gtt ent)) mà không rành về lisp nhiều.

    (defun c:ccd(/ gtt dt sdt ent id stpt)
     (vl-load-com)
     (setq dt (ssget '((0 . "DIMENSION")))
    sdt (sslength dt)
    id 0
    gtt 0
    )
     (repeat sdt
    (setq
         ent (ssname dt id)
         id (1+ id)
         gtt (+ gtt (gt1 ent) )
         )
    )
    ;;;;;;;;;;;;;;;;;;;;;;;;;;
    (initget 1)
    (setq stpt (getpoint "\nSpecify starting point: "))
    (initget 33)
    (setq p (getpoint stpt "\nSpecify a point for angle of line: "))
    (vl-cmdf "_.line"
    stpt
    (strcat "@" (Rtos (gtt ent)) "<" (angtos (angle stpt p) 0))
    ""
    )
     (princ gtt)
     (princ)
     )
    ;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defun gt1(ent / so)
    (if (wcmatch(cdr(assoc 1 (entget ent)))"")
         (setq so (cdr(assoc 42 (entget ent))))
         (setq so (atof(cdr(assoc 1 (entget ent)))))
         )
    )

    Nhờ mọi người kiểm tra và sửa giúp.
    Thanks all!

    ccd.lsp


  5. Do phải vẽ kết cầu sàn lặp lại nhiều lần nên rất mệt . Để vẽ lớp thép tăng cường phía trên sàn,  mong các bác viết giùm lisp offset vào  trong L/4 và làm tròn 50.

    - B1: chọn các rectang cần offset.

    - B2: Kết quả các rectang offset vào trong và làm tròn lên 50.

    Mình có tìm thấy Lisp chia dim L/4 tương tự của bác quocmanh04tt .Tại úp lisp không được nên mình để link

    Thank mọi người.

     

×