Đến nội dung


Hình ảnh
- - - - -

nhờ kết hợp 2 lisp


  • Please log in to reply
23 replies to this topic

#21 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 17 September 2014 - 08:27 AM

ôi thấy cái lệnh V sẽ cho ra tổng diện tích của vùng mình pick, còn cái lệnh tkh thì chọn hatch có sẵn rồi tính diện tích theo layer.

Vậy có phải mục đích cuối cùng của bạn là sau khi bạn pick vào các vùng chọn, nó sẽ tạo ra hatch , rồi tính  tổng dịện tích và đưa racủa những vùng đó ra text và diện tích đó là của layer hiện hành?


  • 0

#22 hung_xu20032000

hung_xu20032000

    biết vẽ ellipse

  • Members
  • PipPip
  • 52 Bài viết
Điểm đánh giá: -2 (bình thường)

Đã gửi 17 September 2014 - 08:45 AM

Ý của e là chỉ dùng 1 lệnh sẽ tính ra được diện tích vùng pick và diện tích hatch có trong vùng pick day thoi. (lệnh tkh tính diện tích toàn bộ vùng hatch). e làm bên địa chất. Toàn bộ vùng hatch e không lấy hết, chỉ lấy diện tích vùng pick thôi (diện tích vùng pick có thể bên trái hoặc bên phải đường giới hạn).

http://www.cadviet.c...i_cadviet_1.dwg

 


  • 0

#23 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 17 September 2014 - 09:50 AM

Vậy bạn thử cái này, lệnh V, chọn tỷ lệ, chọn vị trí đặt text kết quả, nhấp vùng cần chọn, xong enter.

Trước khi vào lệnh thì cho biến textsize to nhỏ tùy ý (trong bản vẽ bạn đưa thấy biến này hơi nhỏ).

Nếu nó không bắt được cái hatch naò trong vùng pick thì nó sẽ hỏi chọn đối tượng để lấy layer.

 

 

(defun c:v(/ tl1 ntl tl2 dtl ss hat hatlay oslast txtsiz pt1 et vsize dtcon elst)
  (if (= tl nil) 
    (setq tl (getreal "\nDrawing scale : "))    
  )
  (setq ntl (/ 1000 tl))
  (setq tl2 (* ntl ntl))
  (setq dtl 0)
  (setq ss (ssadd) hat nil)
  (setq oslast (getvar "OSMODE"))
  (setvar "OSMODE" 0)
  (print)
  (if (not pt0) (setq pt0 (getpoint "\nChon diem dat text:")))
  (setq txtsiz (getvar "textsize"))
 
  (setq pt1 (getpoint "\nPick internal point : "))
  (while (/= pt1 nil)
    (if (not hat)
      (progn
        (setq hat (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget pt1 '((0 . "HATCH")))))))
        (if hat (setq hatlay (cdr (assoc 8 (entget (car hat)))))))
    )    
    (command "-boundary" pt1 "")
    (setq et (entlast))
    (ssadd et ss)
    (command "area" "e" "last")
    (setq vsize ( / (getvar "VIEWSIZE") 3 ))
    (command "hatch" "ANSI31" vsize "0" "last" "")
    (setq et (entlast))
    (ssadd et ss)
    (setq dtcon (getvar "AREA"))
    (setq dtl (+ dtcon dtl))
    (print)
    (setq pt1 (getpoint "\nPick internal point : "))
  )
  (command "setvar" "OSMODE" oslast)
  (command "erase" ss "")
  (setq ss nil)
  (command "redraw")
  (setq dtl (/ dtl tl2))
  (print dtl)
  (if (not hatlay) (setq hatlay (cdr (assoc 8 (entget (car (entsel "\Chon layer theo:")))))))
  (vla-addtext (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
    (strcat hatlay " : " (rtos dtl 2 2)) (vlax-3d-point pt0) txtsiz)
  (setq pt0 (polar pt0 -1.5708 (* 2 txtsiz)))
  (print)
)


  • 1

#24 hung_xu20032000

hung_xu20032000

    biết vẽ ellipse

  • Members
  • PipPip
  • 52 Bài viết
Điểm đánh giá: -2 (bình thường)

Đã gửi 17 September 2014 - 11:13 AM

Cảm ơn bác nhiều lắm. E dùng thấy quá tốt rồi. 


  • 0