Đến nội dung


Hình ảnh
- - - - -

Lisp Tính Số Lượng Đai Và Ghi Ra Thành Text


  • Please log in to reply
23 replies to this topic

#21 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 11 May 2016 - 11:07 PM

Nếu vậy thì chọn bằng mắt cũng được, bao nhiêu đó cũng đủ để tăng tốc độ triển khai cái dầm rồi, cám ơn các bạn thật nhiều, trên này quả nhiên là nhiều cao thủ, đúng là làm chăm chỉ không bằng cái cách làm.

bạn ơi. Lisp die rồi, bạn up lại lén dc k
  • 0

#22 huunhantvxdts

huunhantvxdts

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 366 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 12 May 2016 - 08:46 AM

bạn ơi. Lisp die rồi, bạn up lại lén dc k

(defun C:tacht (/ ss tong text point giatri)
(vl-load-com)
(defun ss2ent (ss / sodt index lstent)  
(setq sodt (if ss (sslength ss) 0)    
index 0  )  
(repeat sodt 
(setq ent (ssname ss index)
index (1+ index)
lstent (cons ent lstent))
)  
(reverse lstent))
(prompt "\nChon doi tuong Text.")
(setq ss (ssget '((0 . "TEXT")))
lst (ss2ent ss)
lst (vl-sort lst '(lambda (e1 e2) (< (cadr (assoc 10 (entget e1))) (cadr (assoc 10 (entget e2))))))) 
(setq tong 0)
(setq chuoi "")
(foreach enxt lst
(setq giatri (cdr (assoc 1 (entget enxt))))
(setq text (substr giatri 1 (- (vl-string-search "C" giatri) 2)))
(setq chuoi (strcat chuoi "+" text))
(setq tong (+ (atof text) tong))
)
(setq chuoi (substr chuoi 2 (- (strlen chuoi) 1)))
(setq point (getpoint "\n Chon diem ghi dien tich: "))
(setq dientext (strcat chuoi " = " (rtos tong 2 0)))
(command "TEXT" point 80 0 dientext)
(princ) 
)

  • 0

#23 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 12 May 2016 - 08:51 AM

(defun C:tacht (/ ss tong text point giatri)
(vl-load-com)
(defun ss2ent (ss / sodt index lstent)  
(setq sodt (if ss (sslength ss) 0)    
index 0  )  
(repeat sodt 
(setq ent (ssname ss index)
index (1+ index)
lstent (cons ent lstent))
)  
(reverse lstent))
(prompt "\nChon doi tuong Text.")
(setq ss (ssget '((0 . "TEXT")))
lst (ss2ent ss)
lst (vl-sort lst '(lambda (e1 e2) (< (cadr (assoc 10 (entget e1))) (cadr (assoc 10 (entget e2))))))) 
(setq tong 0)
(setq chuoi "")
(foreach enxt lst
(setq giatri (cdr (assoc 1 (entget enxt))))
(setq text (substr giatri 1 (- (vl-string-search "C" giatri) 2)))
(setq chuoi (strcat chuoi "+" text))
(setq tong (+ (atof text) tong))
)
(setq chuoi (substr chuoi 2 (- (strlen chuoi) 1)))
(setq point (getpoint "\n Chon diem ghi dien tich: "))
(setq dientext (strcat chuoi " = " (rtos tong 2 0)))
(command "TEXT" point 80 0 dientext)
(princ) 
)

cảm ơn bác. lisp tacht trên vẫn còn mà. em xin lisp http://www.cadviet.c...6960_lamthu.lsp mà. bị die rồi. 

Tiện bác sửa giúp em theo ý:

Nhờ các bác giúp với, vẫn với lisp trên nhưng mà khác chút xíu: k phải như "lisp sẽ hỏi đường kính cốt đai là bao nhiêu, mình gõ 6, sau đó"

mà là lisp hiển thị gợi ý trong dòng lệnh chính: (pick điểm ghi text hoặc (Duongkinhdai<6>  :). Nếu gõ D: gõ đường kính---> trở lại pick text. Nếu k thì pick vị trí text bình thường.

Tổng quát hơn: (pick điểm ghi text hoặc chỉnh (Duongkinhdai<6>/ Kcdai <150>  :) Nếu gõ D: gõ đường kính . Vẫn hiển thị gợi ý:

(pick điểm ghi text hoặc chỉnh (Duongkinhdai<6>/ Kcdai <150>  :)  gõ K nếu muốn thay đổi khoảng cách. k thì pick điểm ghi text bình thường.

Tổng cả lisp cho vào vòng lặp, để khi gõ lệnh nếu D với K không đổi ta chi cần chọn đoạn dim (hoặc nhập bề rộng đoạn rải cốt đai) pick điểm ghi, rồi lại chọn đoạn dim- pick điểm ghi  :) Giá trị K,D lưu lại từ lần gần nhất thay đổi.  :)

Cảm ơn bác nhiều


  • 0

#24 c0ntructi0n

c0ntructi0n

    biết vẽ line

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

Đã gửi 15 May 2016 - 05:30 PM

Mình úp lại lisp của bạn huunhantvxd cho các bạn nào cần đây

 

(defun C:z1 (/ giatri sokhoang ss)
(vl-load-com)
(setq oldos (getvar "OSMODE"))
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(command "osnap" "none")
(if (null bcd)
 (progn
 (setq bcd 150)
 ))
 (setq bcd1 (getstring (strcat "\nBuoc cot dai <"(rtos bcd 2 0)"> :")))
 (if (/= bcd1 "") (setq bcd (atof bcd1)))
 (if (null dkt)
 (progn
 (setq dkt 6)
 ))
 (setq dkt1 (getstring (strcat "\nBuoc cot dai <"(rtos dkt 2 0)"> :")))
 (if (/= dkt1 "") (setq dkt (atof dkt1)))
(prompt "\nChon doi tuong Dim.")
(setq ss (acet-ss-to-list (ssget '((0 . "DIMENSION")))))
(foreach enxt ss
(if (or (= (setq giatri (cdr (assoc 1 (entget enxt)))) "<>") (= (setq giatri (cdr (assoc 1 (entget enxt)))) ""))
(setq giatri (cdr (assoc 42 (entget enxt))))
(setq giatri (atof (cdr (assoc 1 (entget enxt)))))
)
(setq toado (polar (cdr (assoc 11 (entget enxt))) (/ pi -2) 300))
(setq sokhoang (+ (fix (/ giatri bcd)) 1))
(setq text (strcat (rtos sokhoang 2 0) "%%C" (rtos dkt 2 0) "a" (rtos bcd 2 0)))
(command "TEXT" "J" "C" toado 150 0 text)
)
(princ)
)


  • 1