Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
phongtran86

Nhờ Chỉnh Lisp Cắt Thép Dầm Momen

Các bài được khuyến nghị

Không hiểu vì sao mà mình thường phải trả lời câu này:

=> Download bị lỗi thì dùng copy, paste... Chán...ạok.

 khá tổng quát, bác vẽ cả phần phi thép rồi khoảng cách, rải cả thép đai. quá cả mong đợi. 

Bác chỉnh em chút xíu nữa:

-Bác gán thêm dim giữa 2 cột, phần phía trên và phần dưới (điểm cuối của pick lần n với điểm đầu lần n+1)

-Đai dầm bác chỉnh cách mép cột 50 dc k. vẽ nó bị trùng với nét mép cột.

Phần dim của anh có cả thép đai trong đấy rất hay, nhưng như thế k dùng lisp công text để ra số thép đai dc (thống kê)

ĐƯợc voi đòi tiên nhờ Bác viết 1 lisp +tổng số đai kiểu này dc k. :p

Một lisp tách từ lisp trên vẽ momen trên: chọn dim, thông số phi<6>/khoảng cách</150> thì trong dim có thêm thông số về số lượng đai và khoảng cách :3000\X15~6a200. voi lai font họ vnsimli.shx, vnsimple.shx đều gõ %%C để ra phi dc. :D

Một cái máy gặt thực sự thay cho cái liềm. hihi

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Theo bài 1:

(defun c:tt  (/ modelSpace lay bv cd pt1 temp create-layer tiep_theo_qm kcach_dau Make-Line laythep)
 (defun kcach_dau  (mm-am len fac / del l-0)
  (if (eq mm-am t)
   (progn (setq l-0 (/ len 4)
                del (rem l-0 50))
          (if (> del 0)
           (setq l-0 (- l-0 del (/ -50 fac)))))
   (progn (setq l-0 (/ len 6)
                del (rem l-0 (/ 50 fac)))
          (if (> del 0)
           (setq l-0 (- l-0 del)))))
  l-0)
 (defun create-layer  (name color lineWeight)
  (entmakex (list '(0 . "LAYER")
                  (cons 100 "AcDbSymbolTableRecord")
                  (cons 100 "AcDbLayerTableRecord")
                  (cons 2 name)
                  (cons 70 0)
                  (cons 62 color)
                  (cons 6 "Continuous")
                  (cons 370 (fix (* 100 lineWeight))))))
 (defun Make-Line  (p1 p2 lay)
  (entmakex (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2) (cons 8 lay))))
 ;;-------------------
 (defun tiep_theo_qm  (/ cdim pt2 kc pd1 pd2 pd3 pa1 pa2 pa3 ptt)
  (setq cdim (* (getvar "DIMTXT") (getvar "DIMSCALE")))
  (setq pt2 (getpoint "\nNhap toa do diem cuoi duoi dam:" pt1))
  (setq kc (distance pt1 pt2))
  ;; Momen duong
  (setq pd1 (polar pt1 (* pi 0) (kcach_dau nil kc 1))
        pd2 (polar pt2 (* pi 1) (kcach_dau nil kc 1))
        pd3 (polar pt1 (* pi 1.5) (* cdim 4)))
  (setvar "CLAYER" "DIM")
  (mapcar (function (lambda (x y z) (vla-adddimaligned msp x y z)))
          (mapcar 'vlax-3d-point (list pt1 pd1 pd2))
          (mapcar 'vlax-3d-point (list pd1 pd2 pt2))
          (mapcar 'vlax-3d-point (list pd3 pd3 pd3)))
  (Make-Line (setq ptt (polar pd1 (* pi 0.5) bv)) (polar ptt (* pi 0.25) bv) laythep)
  (Make-Line (setq ptt (polar pd2 (* pi 0.5) bv)) (polar ptt (* pi 0.75) bv) laythep)
  ;; Momen am
  (setq pt1 (polar pt1 (* pi 0.5) cd)
        pt2 (polar pt2 (* pi 0.5) cd)
        pa1 (polar pt1 (* pi 0) (kcach_dau t kc 1))
        pa2 (polar pt2 (* pi 1) (kcach_dau t kc 1))
        pa3 (polar pt1 (* pi 0.5) (* cdim 4)))
  (mapcar (function (lambda (x y z) (vla-adddimaligned msp x y z)))
          (mapcar 'vlax-3d-point (list pt1 pa1 pa2))
          (mapcar 'vlax-3d-point (list pa1 pa2 pt2))
          (mapcar 'vlax-3d-point (list pa3 pa3 pa3)))
  (Make-Line (setq ptt (polar pa1 (* pi 1.5) bv)) (polar ptt (* pi 1.25) bv) laythep)
  (Make-Line (setq ptt (polar pa2 (* pi 1.5) bv)) (polar ptt (* pi 1.75) bv) laythep)
  (setvar "CLAYER" lay))
 ;; MAIN
 (vl-load-com)
 (setq msp     (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
       lay     (getvar "clayer")
       laythep "THEPDOC")
 (create-layer laythep 1 0.4)
 (create-layer "DIM" 8 -3)
 (or (and cd (or (= (type cd) 'int) (= (type cd) 'real))) (setq cd 400))
 (or (and bv (or (= (type bv) 'int) (= (type bv) 'real))) (setq bv 20))
 (setq temp "T")
 (while (= temp "T")
  (initget 0 "Cao Bao")
  (setq pt1 (getpoint
             (strcat "\nCaodam <" (rtos cd 2 0) ">/Baove <" (rtos bv 2 0) ">. Nhap toa do diem dau duoi dam: ")))
  (cond ((= pt1 "Cao")
         (setq cd (cond ((getdist (strcat "\nChieu cao dam <" (rtos cd 2 0) ">:")))
                        (cd))))
        ((= pt1 "Bao")
         (setq bv (cond ((getdist (strcat "\nChieu day lop betong bao ve <" (rtos bv 2 0) ">:")))
                        (bv))))
        ((= pt1 nil) (setq temp nil))
        (t (tiep_theo_qm))))
 (princ))

Cái đó là có dim trước, rồi chia dim khác với topic này.

b2HgAau.png

Bác viết giùm mình cái code nó đơn giản hơn của thớt:

1. Đánh lệnh

2. Pick điểm 1, điểm 2, điểm 3, điểm 4.

3. Nhập chiều cao dầm

4. Nhập lớp bảo vệ

Sẽ được kết quả như trong hình. Chỗ khoanh mây là kích thước của điểm cần vẽ chứ không vẽ ra.

Chân thành cảm ơn.

  • Vote giảm 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Bác viết giùm mình cái code nó đơn giản hơn của thớt:

1. Đánh lệnh

2. Pick điểm 1, điểm 2, điểm 3, điểm 4.

3. Nhập chiều cao dầm

4. Nhập lớp bảo vệ

Sẽ được kết quả như trong hình. Chỗ khoanh mây là kích thước của điểm cần vẽ chứ không vẽ ra.

Chân thành cảm ơn.

- Từ bên trái sang, vừa cách mép cột 700 vừa cách điểm d3 hdam liệu có ổn không???

- Vị trí cắt thép này phụ thuộc nhiều vào nhịp của dầm mà???

- Chỗ khoanh mây là kích thước của điểm cần vẽ chứ không vẽ ra. Là sao???

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

- Từ bên trái sang, vừa cách mép cột 700 vừa cách điểm d3 hdam liệu có ổn không???

- Vị trí cắt thép này phụ thuộc nhiều vào nhịp của dầm mà???

- Chỗ khoanh mây là kích thước của điểm cần vẽ chứ không vẽ ra. Là sao???

Trả lời câu hỏi của bác:

- Gạch đầu dòng thứ 1 và thứ 2:

Sau khi làm xong bước 4, nó sẽ vẽ móc cách điểm đ3 và đ4 khoảng cách bằng chiều cao dầm đã nhập.

- Gạch đầu dòng thứ 3

Kích thước của cái móc ấy bác. dài 70 góc nghiêng 30

Chân thành cảm ơn bác đã quan tâm giúp đỡ.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

 khá tổng quát, bác vẽ cả phần phi thép rồi khoảng cách, rải cả thép đai. quá cả mong đợi. 

Bác chỉnh em chút xíu nữa:

-Bác gán thêm dim giữa 2 cột, phần phía trên và phần dưới (điểm cuối của pick lần n với điểm đầu lần n+1)

-Đai dầm bác chỉnh cách mép cột 50 dc k. vẽ nó bị trùng với nét mép cột.

Phần dim của anh có cả thép đai trong đấy rất hay, nhưng như thế k dùng lisp công text để ra số thép đai dc (thống kê)

ĐƯợc voi đòi tiên nhờ Bác viết 1 lisp +tổng số đai kiểu này dc k. :P

Một lisp tách từ lisp trên vẽ momen trên: chọn dim, thông số phi<6>/khoảng cách</150> thì trong dim có thêm thông số về số lượng đai và khoảng cách :3000\X15~6a200. voi lai font họ vnsimli.shx, vnsimple.shx đều gõ %%C để ra phi dc. :D

Một cái máy gặt thực sự thay cho cái liềm. hihi

- %%C ra Phi trong dimtext (font .shx) ký hiêụ rất xấu không cùng dạng.

- Lisp chỉnh sửa đáp ứng các nhu cầu trên (trước khi kết thúc lệnh sẽ có bảng thống kê đai theo từng nhịp).

(defun c:tt  (/ msp lay bv cd pt1 temp create-layer tiep_theo_qm kcach_dau Make_pline mid lthep pt-01 pt-02 goi nhi fi pcd dim_cot pca ang lst-dai k thong_ke_dai)
 (defun kcach_dau  (mm-am len fac / del l-0)
  (if (eq mm-am t)
   (progn (setq l-0 (/ len 4)
                del (rem l-0 50))
          (if (> del 0)
           (setq l-0 (- l-0 del (/ -50 fac)))))
   (progn (setq l-0 (/ len 6)
                del (rem l-0 (/ 50 fac)))
          (if (> del 0)
           (setq l-0 (- l-0 del)))))
  l-0)
 (defun create-layer  (name color lineWeight)
  (entmakex (list '(0 . "LAYER")
                  (cons 100 "AcDbSymbolTableRecord")
                  (cons 100 "AcDbLayerTableRecord")
                  (cons 2 name)
                  (cons 70 0)
                  (cons 62 color)
                  (cons 6 "Continuous")
                  (cons 370 (fix (* 100 lineWeight))))))
 (defun Make_pline  (listpoint Layer / Lst)
  (setq lst (list '(0 . "LWPOLYLINE")
                  '(100 . "AcDbEntity")
                  '(100 . "AcDbPolyline")
                  (cons 8 layer)
                  (cons 90 (length listpoint))
                  (cons 70 0)))
  (foreach p listpoint (setq lst (append lst (list (cons 10 p)))))
  (entmakex lst))
 (defun mid (p1 p2) (list (/ (+ (car p1) (car p2)) 2.0) (/ (+ (cadr p1) (cadr p2)) 2.0)))
 (defun dim_cot  ()
  (if (and pt-02 pcd pca)
   (progn (vla-put-layer (vla-adddimaligned msp (vlax-3d-point pt-02) (vlax-3d-point pt-01) (vlax-3d-point pcd))
                         "DIM")
          (vla-put-layer (vla-adddimaligned msp
                                            (vlax-3d-point (polar pt-02 (+ ang (* 0.5 pi)) cd))
                                            (vlax-3d-point (polar pt-01 (+ ang (* 0.5 pi)) cd))
                                            (vlax-3d-point pca))
                         "DIM"))))
 (defun thong_ke_dai  (/ Text poi htx)
  (defun Text (pt hgt str) (entmakex (list (cons 0 "TEXT") (cons 10 pt) (cons 40 hgt) (cons 1 str))))
  (setq htx (* (getvar "DIMTXT") (getvar "DIMSCALE")))
  (if (and lst-dai (setq poi (getpoint "\nDiem chen thong ke dai: ")))
   (foreach x  lst-dai
    (Text poi htx (itoa (car x)))
    (Text (polar poi 0 (* 4 htx)) htx (itoa (cadr x)))
    (Text (polar poi 0 (* 8 htx)) htx (itoa (caddr x)))
    (setq poi (polar poi (* 1.5 pi) (* 2.5 htx))))))
;;; Main defun
 (defun tiep_theo_qm  (/ cdim pt2 kc pd1 pd2 pd3 pa1 pa2 pa3 lent p1 p2 p3 p4 p0 i sdg sdn ptn ppn add kcd dng kc1 kc2 kc3 kc4 ncd kcl sdai_n)
  (if (setq pt-02 (getpoint "\nNhap toa do diem cuoi duoi dam:" pt-01))
   (progn (setq cdim (* (getvar "DIMTXT") (getvar "DIMSCALE"))
                kc   (distance pt-01 pt-02)
                lent (* bv 1.5))
          (if (< (car pt-01) (car pt-02))
           (setq pt1 pt-01
                 pt2 pt-02
                 ang (angle pt-01 pt-02))
           (setq pt1 pt-02
                 pt2 pt-01
                 ang (angle pt-02 pt-01)))
          ;; Momen duong
          (setq pd1 (polar pt1 ang (kcach_dau nil kc 1))
                pd2 (polar pt2 (+ ang (* pi 1.0)) (kcach_dau nil kc 1))
                pd3 (polar pt1 (+ ang (* pi 1.5)) (* cdim 4))
                pcd pd3)
          (setvar "CLAYER" "DIM")
          (mapcar (function (lambda (x y z) (vla-adddimaligned msp x y z)))
                  (mapcar 'vlax-3d-point (list pt1 pd1 pd2))
                  (mapcar 'vlax-3d-point (list pd1 pd2 pt2))
                  (mapcar 'vlax-3d-point (list pd3 pd3 pd3)))
          (setq p2 (polar pd1 (+ ang (* pi 0.5)) bv)
                p1 (polar p2 (+ ang (* pi 0.25)) lent)
                p3 (polar pd2 (+ ang (* pi 0.5)) bv)
                p4 (polar p3 (+ ang (* pi 0.75)) lent))
          (Make_pline (list p1 p2 p3 p4) lthep)
          ;; Momen am
          (setq kcd (kcach_dau t kc 1)
                pt1 (polar pt1 (+ ang (* pi 0.5)) cd)
                pt2 (polar pt2 (+ ang (* pi 0.5)) cd)
                pa1 (polar pt1 (+ ang (* pi 0)) kcd)
                pa2 (polar pt2 (+ ang (* pi 1)) kcd)
                pa3 (polar pt1 (+ ang (* pi 0.5)) (* cdim 4))
                pca pa3)
          (setq kc1 (* (1+ (fix (/ kcd goi))) goi)
                kc2 (- kc (* 2 kc1))
                kc3 (* (1- (fix (/ (* kc2 0.5) nhi))) nhi)
                kc4 (- kc2 (* 2 kc3)))
          (setq dng (* (fix (/ (* 0.5 kc2) nhi)) 2))
          (cond ((>= kc4 (* 3.5 nhi)) (setq dng (+ dng 3)))
                ((>= kc4 (* 3.0 nhi)) (setq dng (+ dng 2)))
                ((>= kc4 (* 1.5 nhi)) (setq dng (+ dng 1)))
                (t (setq dng (+ dng 0))))
          (setq sdg (strcat "<>\\X" (itoa (+ (fix (/ kcd goi)) 1)) "~" (itoa fi) "a" (rtos goi 2 0))
                sdn (strcat "<>\\X" (rtos dng 2 0) "~" (itoa fi) "a" (rtos nhi 2 0)))
          (mapcar (function (lambda (x y z s) (vla-put-TextOverride (vla-adddimaligned msp x y z) s)))
                  (mapcar 'vlax-3d-point (list pt1 pa1 pa2))
                  (mapcar 'vlax-3d-point (list pa1 pa2 pt2))
                  (mapcar 'vlax-3d-point (list pa3 pa3 pa3))
                  (list sdg sdn sdg))
          (setq sdai_n (+ (* (+ (fix (/ kcd goi)) 1) 2) dng))
          (setq lst-dai (append lst-dai (list (list k sdai_n fi))))
          (setq p1 (polar pa1 (+ ang (* pi 1.5)) bv)
                p2 (polar p1 (+ ang (* pi 1.25)) lent))
          (Make_pline (list p1 p2) lthep)
          ;; Ve thep dai ben trai
          ;; Goi
          (setq i   0
                pt1 (polar pt1 ang 50)
                p0  (polar pt1 (* pi 1.5) bv))
          (repeat (+ (fix (/ kcd goi)) 1)
           (Make_pline (list p0 (polar p0 (+ ang (* pi 1.5)) (- cd (* bv 2)))) lthep)
           (setq p0 (polar (polar pt1 (* pi 1.5) bv) (+ ang 0) (* goi (setq i (1+ i))))))
          ;; Nhip
          (setq i   0
                p1  p0
                ncd (* goi (fix (/ kcd goi))))
          (repeat (1- (fix (/ (- kc (* 2 ncd)) (* 2 nhi))))
           (Make_pline (list p0 (polar p0 (+ ang (* pi 1.5)) (- cd (* bv 2)))) lthep)
           (setq p0 (polar p1 (+ ang 0) (* nhi (setq i (1+ i))))))
          (setq ptn p0)
          ;;-----------
          (setq p1 (polar pa2 (+ ang (* pi 1.5)) bv)
                p2 (polar p1 (+ ang (* pi 1.75)) lent))
          (Make_pline (list p1 p2) lthep)
          ;; Ve thep dai ben phai
          ;; Goi
          (setq i   0
                pt2 (polar pt2 (+ ang pi) 50)
                p0  (polar pt2 (* pi 1.5) bv))
          (repeat (+ (fix (/ kcd goi)) 1)
           (Make_pline (list p0 (polar p0 (+ ang (* pi 1.5)) (- cd (* bv 2)))) lthep)
           (setq p0 (polar (polar pt2 (* pi 1.5) bv) (+ ang pi) (* goi (setq i (1+ i))))))
          ;; Nhip
          (setq i  0
                p1 p0)
          (repeat (1- (fix (/ (- kc (* 2 ncd)) (* 2 nhi))))
           (Make_pline (list p0 (polar p0 (+ ang (* pi 1.5)) (- cd (* bv 2)))) lthep)
           (setq p0 (polar p1 (+ ang pi) (* nhi (setq i (1+ i))))))
          (setq ppn p0)
          ;; Bo sung khoang giua
          (setq kcl (distance (polar ptn (+ ang pi) nhi) (polar ppn (+ ang 0) nhi)))
          (cond ((>= kcl (* 3.5 nhi))
                 (Make_pline (list ptn (polar ptn (+ ang (* pi 1.5)) (- cd (* bv 2)))) lthep)
                 (Make_pline (list (mid ptn ppn) (polar (mid ptn ppn) (+ ang (* pi 1.5)) (- cd (* bv 2)))) lthep)
                 (Make_pline (list ppn (polar ppn (+ ang (* pi 1.5)) (- cd (* bv 2)))) lthep))
                ((>= kcl (* 3.0 nhi))
                 (Make_pline (list ptn (polar ptn (+ ang (* pi 1.5)) (- cd (* bv 2)))) lthep)
                 (Make_pline (list ppn (polar ppn (+ ang (* pi 1.5)) (- cd (* bv 2)))) lthep))
                ((>= kcl (* 1.5 nhi))
                 (Make_pline (list (mid ptn ppn) (polar (mid ptn ppn) (+ ang (* pi 1.5)) (- cd (* bv 2)))) lthep)))
          (setvar "CLAYER" lay))))
;;; MAIN
 (vl-load-com)
 (setq msp   (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
       lay   (getvar "clayer")
       lthep "THEPDOC")
 (create-layer lthep 1 0.4)
 (create-layer "DIM" 8 -3)
 (or (> (getvar 'USERR1) 0) (setvar 'USERR1 400))
 (or (> (getvar 'USERR2) 0) (setvar 'USERR2 25))
 (or (> (getvar 'USERR3) 0) (setvar 'USERR3 150))
 (or (> (getvar 'USERR4) 0) (setvar 'USERR4 200))
 (or (> (getvar 'USERI5) 0) (setvar 'USERI5 6))
 (or (and cd (or (= (type cd) 'int) (= (type cd) 'real))) (setq cd (getvar 'USERR1)))
 (or (and bv (or (= (type bv) 'int) (= (type bv) 'real))) (setq bv (getvar 'USERR2)))
 (or (and goi (or (= (type goi) 'int) (= (type goi) 'real))) (setq goi (getvar 'USERR3)))
 (or (and nhi (or (= (type nhi) 'int) (= (type nhi) 'real))) (setq nhi (getvar 'USERR4)))
 (or (and fi (= (type fi) 'int)) (setq fi (getvar 'USERI5)))
 (setq temp "T"
       k    1)
 (while (= temp "T")
  (initget 0 "Cao Bao Goi Nhip Kinh")
  (setq pt-01 (getpoint (strcat "\nCaodam <"
                                (rtos cd 2 0)
                                ">/Baove <"
                                (rtos bv 2 0)
                                ">/daiGoi <"
                                (rtos goi 2 0)
                                ">/daiNhip <"
                                (rtos nhi 2 0)
                                ">/duongKinh <"
                                (itoa fi)
                                "> . Nhap toa do diem dau duoi dam: ")))
  (cond ((= pt-01 "Cao")
         (setq cd (cond ((getdist (strcat "\nChieu cao dam <" (rtos cd 2 0) ">:")))
                        (cd)))
         (setvar 'USERR1 cd))
        ((= pt-01 "Bao")
         (setq bv (cond ((getdist (strcat "\nChieu day lop betong bao ve <" (rtos bv 2 0) ">:")))
                        (bv)))
         (setvar 'USERR2 bv))
        ((= pt-01 "Goi")
         (setq goi (cond ((getdist (strcat "\nKhoang cach dai vung goi <" (rtos goi 2 0) ">:")))
                         (goi)))
         (setvar 'USERR3 goi))
        ((= pt-01 "Nhip")
         (setq nhi (cond ((getdist (strcat "\nKhoang cach dai vung nhip <" (rtos nhi 2 0) ">:")))
                         (nhi)))
         (setvar 'USERR4 nhi))
        ((= pt-01 "Kinh")
         (setq fi (cond ((getint (strcat "\nDuong kinh thep dai <" (itoa fi) ">:")))
                        (fi)))
         (setvar 'USERI5 fi))
        ((= pt-01 nil) (setq temp nil))
        (t (dim_cot) (tiep_theo_qm)))
  (setq k (1+ k)))
 (thong_ke_dai)
 (princ))
  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

b2HgAau.png

Bác viết giùm mình cái code nó đơn giản hơn của thớt:

1. Đánh lệnh

2. Pick điểm 1, điểm 2, điểm 3, điểm 4.

3. Nhập chiều cao dầm

4. Nhập lớp bảo vệ

Sẽ được kết quả như trong hình. Chỗ khoanh mây là kích thước của điểm cần vẽ chứ không vẽ ra.

Chân thành cảm ơn.

2. Pick điểm 1, điểm 2, điểm 3, điểm 4. thì k còn là vẽ tự động nữa. lisp tự tính điểm cắt dựa vào 2 điểm pick thôi, trên là 1/4 mép trong, dưới là 1/6.

các ý khác bác quốc mạnh 04 tt đã làm rồi. 

-Điểm dấu móc bác  nên để 70 góc dốc 30 độ như @790312 thì đẹp (k quan trọng) ''em tìm số góc 45 độ với 75 để sửa k thấy :p"

- về điểm cắt thì bác để trên 1/4 làm tròn đến 50 là ok. dưới để cắt dưới 1/6 nếu nhịp lẻ thì thép cắt momen dương bị lẻ.13177166_1063087023714422_72486718080253

 

-Ý bài trên của em là 3 lisp khác nhau:

+Lisp 1: vẽ thép với dải đai như bác là làm thành công, bỏ phần ghi số đai từng nhịp xuất ra màn hình đi (điển chèn thống kê đai ấy)

+Lisp 2: Một lisp tách từ lisp trên vẽ momen trên: chọn dim, thông số phi<6>/khoảng cách</150> thì trong dim có thêm thông số về số lượng đai và khoảng cách :3000\X15~6a200. Dim này có thể là dim bình thường hoặc dim đã qua sửa kiểu "3000\X15~6a200". cái này phòng trường hợp nhịp dầm thay đổi, co kéo số đai k nhảy, k phải chia lại số đai thủ công, chọn dc nhiều dim 1 lúc. :p

+Lisp 3: cộng số lượng các đai. gõ lệnh, chọn những dim mà kích thước kiểu: "3000\X15~6a200" "3000\X17~6a200"... thì kết quả chỉ cần ra 15+17=32 thì xuất kq 32 ra màn hình. pick điểm chọn ghi text số 32. (đai dâm toàn nhà sẽ cùng 1 loại đường kính, k cần phân định rõ cho thuật toán đơn giản), hoặc có thể xuất kq 32 đấy vào 1 đối tượng ATTribute trong block thì càng tốt. (các chương trình thống kê thép mỗi số hiệu thép là 1 block kiểu này) Mình cũng cần thuật toán copy 1 giá trị đã tính toán ra rồi, giờ muốn ghi nó vào  1 phần tử ATT của block chứa nhiều ATT.

http://www.lee-mac.com/copytext.htmlkiểu như lệnh này của lee mac. cơ mà giá trị text mình tính ra trong hàm rồi chứ k phải chọn text :P

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Như vậy cái dim 700 cách mép cột là của ai? Cái dim không bị khống chế bởi 700? Lisp sẽ dim cái này hay bạn tự dim?

700 là dim từ đoạn móc đến điểm đ1 và đ2 đấy bác, lisp sẽ dim cái này bác.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Hỏi không được, thôi làm đại:

 

(defun c:test  (/ Make-Line ang bv cdi hbv hcd len msp pd3 po1 po2 po3 po4 pt1 pt2 pt3 pt4)
 (defun Make-Line  (p1 p2 lay)
  (entmakex (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2) (cons 8 lay))))
 (vl-load-com)
 (setq msp (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
       cdi (* (getvar "DIMTXT") (getvar "DIMSCALE")))
 (if (and (setq pt1 (getpoint "\nDiem p1: "))
          (setq pt2 (getpoint "\nDiem p2: "))
          (setq pt3 (getpoint "\nDiem p3: "))
          (setq pt4 (getpoint "\nDiem p4: "))
          (setq hcd (getdist "\nChieu cao dam: "))
          (setq hbv (getdist "\nChieu day bt bao ve: ")))
  (progn (setq po1 (polar pt3 (* pi 1.0) hcd)
               po2 (polar po1 (* pi (/ 30 180.0)) 70)
               po3 (polar pt4 (* pi 0.0) hcd)
               po4 (polar po3 (* pi (/ 150 180.0)) 70)
               ang (angle pt1 pt2)
               pd3 (polar pt1 (+ ang (* pi 1.5)) (* cdi 4)))
         (Make-Line po1 po2 "CAT-THEP")
         (Make-Line po3 po4 "CAT-THEP")
         (mapcar (function (lambda (x y z) (vla-adddimaligned msp x y z)))
                 (mapcar 'vlax-3d-point (list pt1 pt2 (polar po1 (* pi 1.5) hbv)))
                 (mapcar 'vlax-3d-point
                         (list (polar po1 (* pi 1.5) hbv) (polar po3 (* pi 1.5) hbv) (polar po3 (* pi 1.5) hbv)))
                 (mapcar 'vlax-3d-point (list pd3 pd3 pd3)))))
 (princ))
  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

2. Pick điểm 1, điểm 2, điểm 3, điểm 4. thì k còn là vẽ tự động nữa. lisp tự tính điểm cắt dựa vào 2 điểm pick thôi, trên là 1/4 mép trong, dưới là 1/6.

các ý khác bác quốc mạnh 04 tt đã làm rồi. 

-Điểm dấu móc bác  nên để 70 góc dốc 30 độ như @790312 thì đẹp (k quan trọng) ''em tìm số góc 45 độ với 75 để sửa k thấy :p"

- về điểm cắt thì bác để trên 1/4 làm tròn đến 50 là ok. dưới để cắt dưới 1/6 nếu nhịp lẻ thì thép cắt momen dương bị lẻ.13177166_1063087023714422_72486718080253

 

-Ý bài trên của em là 3 lisp khác nhau:

+Lisp 1: vẽ thép với dải đai như bác là làm thành công, bỏ phần ghi số đai từng nhịp xuất ra màn hình đi (điển chèn thống kê đai ấy)

+Lisp 2: Một lisp tách từ lisp trên vẽ momen trên: chọn dim, thông số phi<6>/khoảng cách</150> thì trong dim có thêm thông số về số lượng đai và khoảng cách :3000\X15~6a200. Dim này có thể là dim bình thường hoặc dim đã qua sửa kiểu "3000\X15~6a200". cái này phòng trường hợp nhịp dầm thay đổi, co kéo số đai k nhảy, k phải chia lại số đai thủ công, chọn dc nhiều dim 1 lúc. :P

+Lisp 3: cộng số lượng các đai. gõ lệnh, chọn những dim mà kích thước kiểu: "3000\X15~6a200" "3000\X17~6a200"... thì kết quả chỉ cần ra 15+17=32 thì xuất kq 32 ra màn hình. pick điểm chọn ghi text số 32. (đai dâm toàn nhà sẽ cùng 1 loại đường kính, k cần phân định rõ cho thuật toán đơn giản), hoặc có thể xuất kq 32 đấy vào 1 đối tượng ATTribute trong block thì càng tốt. (các chương trình thống kê thép mỗi số hiệu thép là 1 block kiểu này) Mình cũng cần thuật toán copy 1 giá trị đã tính toán ra rồi, giờ muốn ghi nó vào  1 phần tử ATT của block chứa nhiều ATT.

http://www.lee-mac.com/copytext.htmlkiểu như lệnh này của lee mac. cơ mà giá trị text mình tính ra trong hàm rồi chứ k phải chọn text :P

- Xem bài này, mình bắt đầu có hiện tượng bị hoảng loạn rồi... :D

- Thống kê đai để tổng quát, tức phải từng nhịp, đai có thể cùng đường kính nhưng kích thước có thể khác nhau (Vì dầm có thể không đều nhịp, chiều cao dầm khác nhau...).

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

 

Hỏi không được, thôi làm đại:

(defun c:test  (/ Make-Line ang bv cdi hbv hcd len msp pd3 po1 po2 po3 po4 pt1 pt2 pt3 pt4)
 (defun Make-Line  (p1 p2 lay)
  (entmakex (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2) (cons 8 lay))))
 (vl-load-com)
 (setq msp (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
       cdi (* (getvar "DIMTXT") (getvar "DIMSCALE")))
 (if (and (setq pt1 (getpoint "\nDiem p1: "))
          (setq pt2 (getpoint "\nDiem p2: "))
          (setq pt3 (getpoint "\nDiem p3: "))
          (setq pt4 (getpoint "\nDiem p4: "))
          (setq hcd (getdist "\nChieu cao dam: "))
          (setq hbv (getdist "\nChieu day bt bao ve: ")))
  (progn (setq po1 (polar pt3 (* pi 1.0) hcd)
               po2 (polar po1 (* pi (/ 30 180.0)) 70)
               po3 (polar pt4 (* pi 0.0) hcd)
               po4 (polar po3 (* pi (/ 150 180.0)) 70)
               ang (angle pt1 pt2)
               pd3 (polar pt1 (+ ang (* pi 1.5)) (* cdi 4)))
         (Make-Line po1 po2 "CAT-THEP")
         (Make-Line po3 po4 "CAT-THEP")
         (mapcar (function (lambda (x y z) (vla-adddimaligned msp x y z)))
                 (mapcar 'vlax-3d-point (list pt1 pt2 (polar po1 (* pi 1.5) hbv)))
                 (mapcar 'vlax-3d-point
                         (list (polar po1 (* pi 1.5) hbv) (polar po3 (* pi 1.5) hbv) (polar po3 (* pi 1.5) hbv)))
                 (mapcar 'vlax-3d-point (list pd3 pd3 pd3)))))
 (princ))

Ok rồi bác, nhưng bị lỗi gì mà dim nó không thẳng hàng.

P/s: Bác thêm giùm hàng nhập tỉ lệ nữa là tốt nhất, nếu tỉ lệ 1/20 thì cái đoạn vẽ móc dài gấp 5 lần chiều cao dầm, tương tự các tỉ lệ khác cũng vậy.

Chân thành cảm ơn bác đã nhiệt tình giúp đỡ.f1fu21n.png

  • Vote giảm 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Sửa lại đây:

 

(defun c:test  (/ Make-Line ang bv cdi hbv hcd len msp pd3 po1 po2 po3 po4 pt1 pt2 pt3 pt4 tlv p11 p33)
 (defun Make-Line  (p1 p2 lay)
  (entmakex (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2) (cons 8 lay))))
 (vl-load-com)
 (setq msp (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
       cdi (* (getvar "DIMTXT") (getvar "DIMSCALE")))
 (if (and (setq pt1 (getpoint "\nDiem p1: "))
          (setq pt2 (getpoint "\nDiem p2: "))
          (setq pt3 (getpoint "\nDiem p3: "))
          (setq pt4 (getpoint "\nDiem p4: "))
          (setq hcd (getdist "\nChieu cao dam: "))
          (setq hbv (getdist "\nChieu day bt bao ve: "))
          (setq tlv (getreal "\nTi le ve <Nhap 20 de co ty le 1/20>:")))
  (progn (setq po1 (polar pt3 (* pi 1.0) hcd)
               po2 (polar po1 (* pi (/ 30 180.0)) (* 70 (/ 100 tlv)))
               po3 (polar pt4 (* pi 0.0) hcd)
               po4 (polar po3 (* pi (/ 150 180.0)) (* 70 (/ 100 tlv)))
               ang (angle pt1 pt2)
               pd3 (polar pt1 (+ ang (* pi 1.5)) (* cdi 4)))
         (Make-Line po1 po2 "CAT-THEP")
         (Make-Line po3 po4 "CAT-THEP")
         (setq p11 (inters pt1 pt2 po1 (polar po1 (* pi 1.5) hcd))
               p33 (inters pt1 pt2 po3 (polar po3 (* pi 1.5) hcd)))
         (mapcar (function (lambda (x y z) (vla-adddimaligned msp x y z)))
                 (mapcar 'vlax-3d-point (list pt1 pt2 p11))
                 (mapcar 'vlax-3d-point (list p11 p33 p33))
                 (mapcar 'vlax-3d-point (list pd3 pd3 pd3)))))
 (princ))

P/s: Làm kiểu này thì khai báo chiều dày bt bảo vệ không quan trọng, bạn có thể xóa dòng đó đi.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

- Xem bài này, mình bắt đầu có hiện tượng bị hoảng loạn rồi... :D

- Thống kê đai để tổng quát, tức phải từng nhịp, đai có thể cùng đường kính nhưng kích thước có thể khác nhau (Vì dầm có thể không đều nhịp, chiều cao dầm khác nhau...).

lisp số 1: em muốn cái thép gia cường mô men dương là số chẵn bội số 50, chứ ko phải k cách mép chẵn, vì mép chẵn thì cái chiều dài này lẻ. :p. cho dải đai vào 1 layer thepdai cho màu vàng in nhạt hơn...

lisp số 2 em nghĩ chắc k vấn đề.

lisp số 3 là gõ lệnh:

-chọn dim cần thống kê số đai, k liên quan đến từng nhịp j cả, k liên quan đến đường kính đai. vì thường dầm sẽ là 1 loại đường kính. (chọn thủ công để lựa những đai cùng chiều cao dầm bằng mắt)

-ghi nội dung số đai vào 1 att block. LEE-mac he he

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Sửa lại đây:

(defun c:test  (/ Make-Line ang bv cdi hbv hcd len msp pd3 po1 po2 po3 po4 pt1 pt2 pt3 pt4 tlv p11 p33)
 (defun Make-Line  (p1 p2 lay)
  (entmakex (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2) (cons 8 lay))))
 (vl-load-com)
 (setq msp (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
       cdi (* (getvar "DIMTXT") (getvar "DIMSCALE")))
 (if (and (setq pt1 (getpoint "\nDiem p1: "))
          (setq pt2 (getpoint "\nDiem p2: "))
          (setq pt3 (getpoint "\nDiem p3: "))
          (setq pt4 (getpoint "\nDiem p4: "))
          (setq hcd (getdist "\nChieu cao dam: "))
          (setq hbv (getdist "\nChieu day bt bao ve: "))
          (setq tlv (getreal "\nTi le ve <Nhap 20 de co ty le 1/20>:")))
  (progn (setq po1 (polar pt3 (* pi 1.0) hcd)
               po2 (polar po1 (* pi (/ 30 180.0)) (* 70 (/ 100 tlv)))
               po3 (polar pt4 (* pi 0.0) hcd)
               po4 (polar po3 (* pi (/ 150 180.0)) (* 70 (/ 100 tlv)))
               ang (angle pt1 pt2)
               pd3 (polar pt1 (+ ang (* pi 1.5)) (* cdi 4)))
         (Make-Line po1 po2 "CAT-THEP")
         (Make-Line po3 po4 "CAT-THEP")
         (setq p11 (inters pt1 pt2 po1 (polar po1 (* pi 1.5) hcd))
               p33 (inters pt1 pt2 po3 (polar po3 (* pi 1.5) hcd)))
         (mapcar (function (lambda (x y z) (vla-adddimaligned msp x y z)))
                 (mapcar 'vlax-3d-point (list pt1 pt2 p11))
                 (mapcar 'vlax-3d-point (list p11 p33 p33))
                 (mapcar 'vlax-3d-point (list pd3 pd3 pd3)))))
 (princ))

P/s: Làm kiểu này thì khai báo chiều dày bt bảo vệ không quan trọng, bạn có thể xóa dòng đó đi.

Nhập 20 mà nó vẫn vẽ tỉ lệ 1:1, bác xem lại giúp, nếu nhập 20 thì x5, 25 thì x4, 10 thì 10, không nhập gì thì tỉ lệ 1:1. Vậy thôi bác. Cảm ơn bác lần nữa.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Nhập 20 mà nó vẫn vẽ tỉ lệ 1:1, bác xem lại giúp, nếu nhập 20 thì x5, 25 thì x4, 10 thì 10, không nhập gì thì tỉ lệ 1:1. Vậy thôi bác. Cảm ơn bác lần nữa.

Bạn kiểm tra lại đi, làm gì có chuyện đó, mình test kỹ rồi mà. Trong lisp có dòng này: (* 70 (/ 100 tlv))) tức là lấy 70 * (100/tlv).

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Bạn kiểm tra lại đi, làm gì có chuyện đó, mình test kỹ rồi mà. Trong lisp có dòng này: (* 70 (/ 100 tlv))) tức là lấy 70 * (100/tlv).

Bác hiểu lầm ý e rồi, nếu chọn tỉ lệ 1/20 thì khoảng cách móc đến điểm đ3 và đ4 bằng chiều cao dầm x5, kích thước móc vẫn giữ nguyên. Bình thường nếu nhập chiều cao dầm là 500 thì khoảng cách từ điểm đ3 và đ4 đến móc là 500, tỉ lệ 1/20 thì là 2500.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

à uh! Mình không để ý:

 

(defun c:tt  (/ Make-Line ang bv cdi hbv hcd len msp pd3 po1 po2 po3 po4 pt1 pt2 pt3 pt4 tlv p11 p33)
 (defun Make-Line  (p1 p2 lay)
  (entmakex (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2) (cons 8 lay))))
 (vl-load-com)
 (setq msp (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
       cdi (* (getvar "DIMTXT") (getvar "DIMSCALE")))
 (if (and (setq pt1 (getpoint "\nDiem p1: "))
          (setq pt2 (getpoint "\nDiem p2: "))
          (setq pt3 (getpoint "\nDiem p3: "))
          (setq pt4 (getpoint "\nDiem p4: "))
          (setq hcd (getdist "\nChieu cao dam: "))
          (setq hbv (getdist "\nChieu day bt bao ve: "))
          (setq tlv (getreal "\nTi le ve <Nhap 20 de co ty le 1/20>:")))
  (progn (setq po1 (polar pt3 (* pi 1.0) (* hcd (/ 100 tlv)))
               po2 (polar po1 (* pi (/ 30 180.0)) 70)
               po3 (polar pt4 (* pi 0.0) (* hcd (/ 100 tlv)))
               po4 (polar po3 (* pi (/ 150 180.0)) 70)
               ang (angle pt1 pt2)
               pd3 (polar pt1 (+ ang (* pi 1.5)) (* cdi 4)))
         (Make-Line po1 po2 "CAT-THEP")
         (Make-Line po3 po4 "CAT-THEP")
         (setq p11 (inters pt1 pt2 po1 (polar po1 (* pi 1.5) hcd))
               p33 (inters pt1 pt2 po3 (polar po3 (* pi 1.5) hcd)))
         (mapcar (function (lambda (x y z) (vla-adddimaligned msp x y z)))
                 (mapcar 'vlax-3d-point (list pt1 pt2 p11))
                 (mapcar 'vlax-3d-point (list p11 p33 p33))
                 (mapcar 'vlax-3d-point (list pd3 pd3 pd3)))))
 (princ))
  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

 

à uh! Mình không để ý:

(defun c:tt  (/ Make-Line ang bv cdi hbv hcd len msp pd3 po1 po2 po3 po4 pt1 pt2 pt3 pt4 tlv p11 p33)
 (defun Make-Line  (p1 p2 lay)
  (entmakex (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2) (cons 8 lay))))
 (vl-load-com)
 (setq msp (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
       cdi (* (getvar "DIMTXT") (getvar "DIMSCALE")))
 (if (and (setq pt1 (getpoint "\nDiem p1: "))
          (setq pt2 (getpoint "\nDiem p2: "))
          (setq pt3 (getpoint "\nDiem p3: "))
          (setq pt4 (getpoint "\nDiem p4: "))
          (setq hcd (getdist "\nChieu cao dam: "))
          (setq hbv (getdist "\nChieu day bt bao ve: "))
          (setq tlv (getreal "\nTi le ve <Nhap 20 de co ty le 1/20>:")))
  (progn (setq po1 (polar pt3 (* pi 1.0) (* hcd (/ 100 tlv)))
               po2 (polar po1 (* pi (/ 30 180.0)) 70)
               po3 (polar pt4 (* pi 0.0) (* hcd (/ 100 tlv)))
               po4 (polar po3 (* pi (/ 150 180.0)) 70)
               ang (angle pt1 pt2)
               pd3 (polar pt1 (+ ang (* pi 1.5)) (* cdi 4)))
         (Make-Line po1 po2 "CAT-THEP")
         (Make-Line po3 po4 "CAT-THEP")
         (setq p11 (inters pt1 pt2 po1 (polar po1 (* pi 1.5) hcd))
               p33 (inters pt1 pt2 po3 (polar po3 (* pi 1.5) hcd)))
         (mapcar (function (lambda (x y z) (vla-adddimaligned msp x y z)))
                 (mapcar 'vlax-3d-point (list pt1 pt2 p11))
                 (mapcar 'vlax-3d-point (list p11 p33 p33))
                 (mapcar 'vlax-3d-point (list pd3 pd3 pd3)))))
 (princ))

Ok rồi bác, mà sao bác không cho vị trí móc nó phụ thuộc vào lớp bảo vệ vậy, nhiều khi thép 2 lớp chẳng hạn, nếu nhập lớp bảo vệ 50 thì cái móc đó nằm phía trên cách mép dầm 50.

Cảm ơn bác rất nhiều.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Ok rồi bác, mà sao bác không cho vị trí móc nó phụ thuộc vào lớp bảo vệ vậy, nhiều khi thép 2 lớp chẳng hạn, nếu nhập lớp bảo vệ 50 thì cái móc đó nằm phía trên cách mép dầm 50.

Cảm ơn bác rất nhiều.

Vì lisp đã dựa vào điểm 3 và điểm 4 để xác định vị trí của móc.

- Nếu có lớp thứ 2 thì điểm 3, 4 là những điểm giao giữa thanh lớp 2 với đường màu vàng (đề bài).

- Cắt so le với lớp 1 thì phải xác định lại vị trí của đường màu vàng.

- Nếu có trường hợp khác thì bạn hãy đưa bản vẽ cụ thể lên.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

lisp số 1: em muốn cái thép gia cường mô men dương là số chẵn bội số 50, chứ ko phải k cách mép chẵn, vì mép chẵn thì cái chiều dài này lẻ. :P. cho dải đai vào 1 layer thepdai cho màu vàng in nhạt hơn...

lisp số 2 em nghĩ chắc k vấn đề.

lisp số 3 là gõ lệnh:

-chọn dim cần thống kê số đai, k liên quan đến từng nhịp j cả, k liên quan đến đường kính đai. vì thường dầm sẽ là 1 loại đường kính. (chọn thủ công để lựa những đai cùng chiều cao dầm bằng mắt)

-ghi nội dung số đai vào 1 att block. LEE-mac he he

lisp 1 em mạn phép sửa đoạn momen dương anh thành:

;; Momen duong

(setq

kcd (kcach_dau nil kc 1)

kcd (/ (- kc (* 4 kcd)) 2)

pd1 (polar pt1 ang kcd)

pd2 (polar pt2 (+ ang (* pi 1.0)) kcd)

pd3 (polar pt1 (+ ang (* pi 1.5)) (* cdim 4))

pcd pd3)  để giữa nó chẵn số. k phải sửa trong function kcach_dau.

 

lisp 2: em dựa bài này http://www.cadviet.com/forum/topic/161775-lisp-ta-nh-sa-l-a-ng-ai-va-ghi-ra-tha-nh-text/ nhưng link lisp die mất rồi.

lisp 3: bác cố gắng giúp em

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

 

lisp 1 em mạn phép sửa đoạn momen dương anh thành:

 

 

Hớ hớ... Phải thế chứ...! Biết sửa thì nên tự sửa cho phù hợp ý của mình, ai lại cứ ngồi chờ người khác ... :D​.

- Layer của thép đai: trong lisp đã có hàm make layer: (create-layer  name color lineWeight)

- Vẽ thép đai: (Make_pline  listpoint Layer) => Thay layer đã make ở trên vào Layer trong thủ tục này là ok.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Hớ hớ... Phải thế chứ...! Biết sửa thì nên tự sửa cho phù hợp ý của mình, ai lại cứ ngồi chờ người khác ... :D​.

- Layer của thép đai: trong lisp đã có hàm make layer: (create-layer  name color lineWeight)

- Vẽ thép đai: (Make_pline  listpoint Layer) => Thay layer đã make ở trên vào Layer trong thủ tục này là ok.

 

(defun kcach_dau (mm-am len fac / del l-0)

(if (eq mm-am t)

(progn (setq l-0 (/ len 4)

del (rem l-0 50))

(if (> del 0)

(setq l-0 (- l-0 del (/ -50 fac)))))

(progn (setq l-0 (/ (* 4 len) 6)

del (rem l-0 (/ 50 fac)))

(if (> del 0)

(setq l-0 (- l-0 del)

l-0 (/ (- len l-0) 2)

))))

l-0)

 

cái này em sửa được rồi. hàm kcach_dau em mạn phép sửa. hihi vì nếu sửa nội dung trc thì nó bị phần 4/6 nó là bội số 4*50=200. Muốn làm với sửa lắm chứ, nhưng năng lực hạn chế anh ạ

Bác giúp em 2 lisp còn lại nhé


  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

 

Bác giúp em 2 lisp còn lại nhé

 

Bạn nên trình bày thật rõ ràng, có hình ảnh minh họa trước và sau khi thực hiện lệnh, giảm bớt "Ní Nuận" vì nó rất khó hiểu và dành cho nghề khác. :D

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

anh giúp em lisp số 2

13221673_1063542420335549_53114462076970

 

Lisp so 3:

13178012_1063548577001600_78253471284482

dim cần chọn k phân biệt đường kính, chỉ cần cộng số đai lại với nhau.

giá trị ghi vào là 1 phần tử attribute trong block < không phải text thường> :p

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Vì lisp đã dựa vào điểm 3 và điểm 4 để xác định vị trí của móc.

- Nếu có lớp thứ 2 thì điểm 3, 4 là những điểm giao giữa thanh lớp 2 với đường màu vàng (đề bài).

- Cắt so le với lớp 1 thì phải xác định lại vị trí của đường màu vàng.

- Nếu có trường hợp khác thì bạn hãy đưa bản vẽ cụ thể lên.

Ý e là nếu nhập lớp bảo vệ là 50 thì nó vẽ móc cách điểm đ3 và đ4 phương X là CHIỀU CAO DẦM và phương Y là 50 bác ah, chỉ cần vẽ móc thôi. Như lisp cũ thì vẽ móc cách điểm đ3 và đ4 theo phương X là CHIỀU CAO DẦM thôi.

Cảm ơn bác lần nữa.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

Đăng nhập để thực hiện theo  

×