Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
78 replies to this topic

#41 790312

790312

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 204 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 12 May 2016 - 05:34 PM

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.


  • 0

#42 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 315 (khá)

Đã gửi 12 May 2016 - 05:41 PM

à 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))

  • 1

#43 790312

790312

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 204 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 13 May 2016 - 08:23 AM

 

à 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.


  • 0

#44 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 315 (khá)

Đã gửi 13 May 2016 - 08:37 AM

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.


  • 1

#45 phongtran86

phongtran86

    biết lệnh offset

  • Members
  • PipPipPip
  • 177 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 13 May 2016 - 09:00 AM

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.c...ra-tha-nh-text/ nhưng link lisp die mất rồi.

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


  • 1

#46 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 315 (khá)

Đã gửi 13 May 2016 - 09:46 AM

 

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.


  • 1

#47 phongtran86

phongtran86

    biết lệnh offset

  • Members
  • PipPipPip
  • 177 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 13 May 2016 - 10:26 AM

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é



  • 1

#48 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 315 (khá)

Đã gửi 13 May 2016 - 10:40 AM

 

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


  • 0

#49 phongtran86

phongtran86

    biết lệnh offset

  • Members
  • PipPipPip
  • 177 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 13 May 2016 - 11:32 AM

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


  • 1

#50 790312

790312

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 204 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 13 May 2016 - 12:09 PM

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.


  • 0

#51 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 315 (khá)

Đã gửi 13 May 2016 - 02:11 PM

 

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

Sáng tỏ, sáng tỏ ... đọc cái yêu cầu ban đầu giống "Nghị quyết" cái này giống "Thông tư" rồi.

 

Ý 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.

 

Lớp bảo vệ 50 đó có nhân với tỷ lệ vẽ không?


  • 0

#52 790312

790312

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 204 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 13 May 2016 - 03:21 PM

Lớp bảo vệ 50 đó có nhân với tỷ lệ vẽ không?

Có bác ah, xin lỗi bác đã không nói đầy đủ ý.


  • 0

#53 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 315 (khá)

Đã gửi 13 May 2016 - 03:54 PM

Có bác ah, xin lỗi bác đã không nói đầy đủ ý.

Vội nên chưa test, có gì bạn phản hồi nhé!

(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 (polar pt3 (* pi 1.0) (* hcd (/ 100 tlv))) (* pi 0.5) (* hbv (/ 100 tlv)))
               po2 (polar po1 (* pi (/ 30 180.0)) 70)
               po3 (polar (polar pt4 (* pi 0.0) (* hcd (/ 100 tlv))) (* pi 0.5) (* hbv (/ 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))

  • 1

#54 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 315 (khá)

Đã gửi 13 May 2016 - 05:13 PM

Theo "Nghị Quyết" của Topic, Lisp 2 ra đời: :D

(defun c:tt  (/ thuc_hien dkd kcd kwo ss)
 (defun thuc_hien  (/ ent i len sld str)
  (or dkd (setq dkd (getvar 'USERI5)))
  (or kcd (setq kcd (getvar 'USERR2)))
  (repeat (setq i (sslength ss))
   (setq ent (ssname ss (setq i (1- i)))
         len (cdr (assoc 42 (entget ent)))
         sld (1+ (fix (/ len kcd)))
         str (strcat "<>\\X" (itoa sld) "~" (itoa dkd) "a" (rtos kcd 2 0)))
   (vla-put-TextOverride (vlax-ename->vla-object ent) str)))
 (or (> (getvar 'USERI5) 0) (setvar 'USERI5 6))
 (or (> (getvar 'USERR2) 0) (setvar 'USERR2 150))
 (vl-load-com)
 (if (setq ss (ssget '((0 . "DIMENSION"))))
  (progn (setq kwo t)
         (while kwo
          (initget "T K")
          (setq kwo (getkword
                     (strcat "\nThep dai \U+00D8" (itoa (getvar 'USERI5)) " /Khoang cach a" (rtos (getvar 'USERR2) 2 0) " <T or K or Enter to Override>:")))
          (cond ((eq kwo "T")
                 (initget 6)
                 (setq dkd (cond ((getint (strcat "\nDuong kinh thep dai \U+00D8 <" (itoa (getvar 'USERI5)) ">:")))
                                 ((getvar 'USERI5))))
                 (setvar 'USERI5 dkd))
                ((eq kwo "K")
                 (initget 6)
                 (setq kcd (cond ((getreal (strcat "\nKhoang cach thep dai a <" (rtos (getvar 'USERR2) 2 0) ">:")))
                                 ((getvar 'USERR2))))
                 (setvar 'USERR2 kcd))
                (t (setq kwo nil))))
         (thuc_hien)))
 (princ))

  • 1

#55 phongtran86

phongtran86

    biết lệnh offset

  • Members
  • PipPipPip
  • 177 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 13 May 2016 - 07:08 PM

 

Theo "Nghị Quyết" của Topic, Lisp 2 ra đời: :D

(defun c:tt  (/ thuc_hien dkd kcd kwo ss)
 (defun thuc_hien  (/ ent i len sld str)
  (or dkd (setq dkd (getvar 'USERI5)))
  (or kcd (setq kcd (getvar 'USERR2)))
  (repeat (setq i (sslength ss))
   (setq ent (ssname ss (setq i (1- i)))
         len (cdr (assoc 42 (entget ent)))
         sld (1+ (fix (/ len kcd)))
         str (strcat "<>\\X" (itoa sld) "~" (itoa dkd) "a" (rtos kcd 2 0)))
   (vla-put-TextOverride (vlax-ename->vla-object ent) str)))
 (or (> (getvar 'USERI5) 0) (setvar 'USERI5 6))
 (or (> (getvar 'USERR2) 0) (setvar 'USERR2 150))
 (vl-load-com)
 (if (setq ss (ssget '((0 . "DIMENSION"))))
  (progn (setq kwo t)
         (while kwo
          (initget "T K")
          (setq kwo (getkword
                     (strcat "\nThep dai \U+00D8" (itoa (getvar 'USERI5)) " /Khoang cach a" (rtos (getvar 'USERR2) 2 0) " <T or K or Enter to Override>:")))
          (cond ((eq kwo "T")
                 (initget 6)
                 (setq dkd (cond ((getint (strcat "\nDuong kinh thep dai \U+00D8 <" (itoa (getvar 'USERI5)) ">:")))
                                 ((getvar 'USERI5))))
                 (setvar 'USERI5 dkd))
                ((eq kwo "K")
                 (initget 6)
                 (setq kcd (cond ((getreal (strcat "\nKhoang cach thep dai a <" (rtos (getvar 'USERR2) 2 0) ">:")))
                                 ((getvar 'USERR2))))
                 (setvar 'USERR2 kcd))
                (t (setq kwo nil))))
         (thuc_hien)))
 (princ))

anh chỉnh chút xíu cho em.

1. khi gợi chọn dim ấy thì mình có thể nhấn T để chỉnh đường kính thép đai, K để chỉnh khoảng cách. k ấn j chọn luôn dim thì nó lấy giá trị cũ của T,K chứ k phải chọn dim xong mới hiện gợi ý chỉnh T, K.

2. Mà hình như biến lưu hệ thống K anh để là USERR2 là biến lưu hệ thống lớp btong bảo vệ của lisp vẽ mômen dầm. nên nó bị thay đổi lớp bảo vệ, khi vẽ lệnh kia. anh setq kcd là USERR4 <khoang cách đai nhịp> :D hoặc làm sao 2 cái này k ảnh hưởng đến nhau dc ko. Thế thì tốt


  • 0

#56 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 315 (khá)

Đã gửi 13 May 2016 - 08:03 PM

1. Với hàm ssget mình chưa làm được, không biết có cách nào không??? Nó không giống như getpoint ở lisp trước.

2. Bạn tự làm được mà! Chỉ việc thay toàn bộ USERR2 thành USERR4 là ok.


  • 1

#57 phongtran86

phongtran86

    biết lệnh offset

  • Members
  • PipPipPip
  • 177 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 13 May 2016 - 10:28 PM

1. Với hàm ssget mình chưa làm được, không biết có cách nào không??? Nó không giống như getpoint ở lisp trước.

2. Bạn tự làm được mà! Chỉ việc thay toàn bộ USERR2 thành USERR4 là ok.

ok anh. thế là tốt với em lắm rồi anh ạ :). Một lỗi nhỏ lisp vẽ cắt momen. khi dầm 2 nhịp chiều cao khác nhau, dim cột bị chéo. :D

dc anh chỉnh giúp em với. pick ngược từ phải qua trái thì dim cột bị nhầm :P13177786_1063774453645679_61909515103968


  • 1

#58 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 315 (khá)

Đã gửi 14 May 2016 - 04:49 AM

- Bạn thay hàm ở dưới vào trong lisp để xử lý dim cột bị chéo.
- Muốn Pick ngược từ phải qua trái thì thứ tự làm việc với nhịp cũng phải từ phải qua trái và ngược lại.
- Giải thích sơ bộ trong (defun dim_cot): lisp lấy điểm thứ 2 của nhịp trước với điểm thứ nhất của nhịp sau để ghi dim cột.
- Muốn pick bất kỳ, thứ tự bất kỳ cũng được nhưng phải thay đổi thuật toán => dài dòng và phức tạp.

(defun dim_cot  ()
  (if (and pt-02 pcd pca)
   (progn (vla-put-layer (vla-AddDimRotated msp
                                            (vlax-3d-point pt-02)
                                            (vlax-3d-point pt-01)
                                            (vlax-3d-point pcd)
                                            ang)
                         "DIM")
          (vla-put-layer (vla-AddDimRotated 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)
                                            ang)
                         "DIM"))))

  • 1

#59 790312

790312

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 204 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 14 May 2016 - 08:08 AM

 

Vội nên chưa test, có gì bạn phản hồi nhé!

(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 (polar pt3 (* pi 1.0) (* hcd (/ 100 tlv))) (* pi 0.5) (* hbv (/ 100 tlv)))
               po2 (polar po1 (* pi (/ 30 180.0)) 70)
               po3 (polar (polar pt4 (* pi 0.0) (* hcd (/ 100 tlv))) (* pi 0.5) (* hbv (/ 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))

Nhờ bác thêm vào lisp để nó vẽ đường thẳng từ móc này đến móc kia giùm e với, nó sẽ thành một thanh polyline.

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


  • 0

#60 phongtran86

phongtran86

    biết lệnh offset

  • Members
  • PipPipPip
  • 177 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 14 May 2016 - 08:30 AM

Nhờ bác thêm vào lisp để nó vẽ đường thẳng từ móc này đến móc kia giùm e với, nó sẽ thành một thanh polyline.

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

(defun c:tt  (/ Make-Line ang bv cdi hbv hcd len msp pd3 po1 po2 po3 po4 pt1 pt2 pt3 pt4 tlv p11 p33)
;;;ve pline 
(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))
;;;;ham ve pline 
(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 (polar pt3 (* pi 1.0) (* hcd (/ 100 tlv))) (* pi 0.5) (* hbv (/ 100 tlv)))
               po2 (polar po1 (* pi (/ 30 180.0)) 70)
               po3 (polar (polar pt4 (* pi 0.0) (* hcd (/ 100 tlv))) (* pi 0.5) (* hbv (/ 100 tlv)))
               po4 (polar po3 (* pi (/ 150 180.0)) 70)
               ang (angle pt1 pt2)
               pd3 (polar pt1 (+ ang (* pi 1.5)) (* cdi 4)))
       (Make_pline (list po2 po1 po3 po4) "CAT-THEP")
        ; (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))

Hỗ trợ bác quốc mạnh để bác tập trung giúp em lisp số 3. Bạn thử xem dc chưa


  • 2