Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
c0ntructi0n

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

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

Chào các bạn, mình có tìm trong diễn đàn cái lisp này mà chưa được, các bạn giúp dùm mình, mình giải thích như sau:

 

***gõ lệnh
***lisp sẽ yêu cầu mình chọn dim, ví dụ dim 950 như hình, sau đó
***lisp yêu cầu mình gõ bước cốt đai ví dụ 150, sau đó
***lisp sẽ hỏi đường kính cốt đai là bao nhiêu, mình gõ 6, sau đó
***lisp yêu cầu pick vị trí ngoài màn hình để ghi text
***kết quả là  7∅6a150
***dùng text arial, cao text là 80 nha các bạn

***cách tính lấy 950/150 được 6.3333 lấy phần nguyên la 6+1=7∅6a150 (không quan tâm là kết quả dư bao nhiêu, cứ lấy phần nguyên + 1 la được)

 

***http://www.cadviet.com/upfiles/5/149122_lisp_tinh_va_xuat_ra_text.dwg
 

  • 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

Chào các bạn, mình có tìm trong diễn đàn cái lisp này mà chưa được, các bạn giúp dùm mình, mình giải thích như sau:

 

***gõ lệnh

***lisp sẽ yêu cầu mình chọn dim, ví dụ dim 950 như hình, sau đó

***lisp yêu cầu mình gõ bước cốt đai ví dụ 150, sau đó

***lisp sẽ hỏi đường kính cốt đai là bao nhiêu, mình gõ 6, sau đó

***lisp yêu cầu pick vị trí ngoài màn hình để ghi text

***kết quả là  7∅6a150

***dùng text arial, cao text là 80 nha các bạn

***cách tính lấy 950/150 được 6.3333 lấy phần nguyên la 6+1=7∅6a150 (không quan tâm là kết quả dư bao nhiêu, cứ lấy phần nguyên + 1 la được)

 

***http://www.cadviet.com/upfiles/5/149122_lisp_tinh_va_xuat_ra_text.dwg

 

Bạn thử cái này thế nào??

trước khi chạy bạn chuyển style text hiện hành về arial 

lisp chạy theo style text và layer hiện hành

http://www.cadviet.com/upfiles/5/66960_lamthu.lsp

  • 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 thử cái này thế nào??

trước khi chạy bạn chuyển style text hiện hành về arial 

lisp chạy theo style text và layer hiện hành

http://www.cadviet.com/upfiles/5/66960_lamthu.lsp

Ok mình đã chạy thử lisp rất ok và đúng ý mình, cám ơn bạn.

H các bạn giúp mình 1 vấn đề nữa (được voi đòi tiên hehe)

Cộng các số đằng trước của text, ví dụ: 7d6a1500   12d6a200  ..... cộng lại cho kết quả là 7+12=19

  • Vote giảm 2

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 mình đã chạy thử lisp rất ok và đúng ý mình, cám ơn bạn.

H các bạn giúp mình 1 vấn đề nữa (được voi đòi tiên hehe)

Cộng các số đằng trước của text, ví dụ: 7d6a1500   12d6a200  ..... cộng lại cho kết quả là 7+12=19

Quá mơ hồ không biết nó nằm chỗ mô như thế nào???

  • 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

 

Đây bạn, mình đính kèm bản vẽ và hình ảnh đây, muốn gì có đó luôn kk, giúp mình nhé

149122_cadviet1.jpghttp://www.cadviet.com/upfiles/5/149122_lisp_tinh_va_xuat_ra_text_1.dwg

 

Cố gắng làm thêm tí nữa cũng để luyện tay nghề


(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) 
)
  • Vote tăng 2

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

 

Cố gắng làm thêm tí nữa cũng để luyện tay nghề


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

 

Tuy chủ thót chưa có ý kiến và giám thị không giải thích đề ra, nhưng cá nhân tôi cho rằng đáp án mới giải quyết 1 phần của vấn đề.

VD : 7d6a150 + 9d6a200 cho k/quả là 7+9=15 (cùng đường kính d6)

nhưng với t/hợp 7d6a150 + 9d8a200 kết quả là gì? (khác đ/kính d6 + d8)

  • 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

Tuy chủ thót chưa có ý kiến và giám thị không giải thích đề ra, nhưng cá nhân tôi cho rằng đáp án mới giải quyết 1 phần của vấn đề.

VD : 7d6a150 + 9d6a200 cho k/quả là 7+9=15 (cùng đường kính d6)

nhưng với t/hợp 7d6a150 + 9d8a200 kết quả là gì? (khác đ/kính d6 + d8)

Bạn gia bạch có thể giúp mình trong trường hợp 7d6a150 + 9d8a200 được không, mình muốn cho ra đáp số là: 7d6, 9d8

Nếu vậy thì đúng là đỡ phải cộng trừ nhân chia

Thank yous mọi người

  • Vote tăng 1
  • 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

 

Tuy chủ thót chưa có ý kiến và giám thị không giải thích đề ra, nhưng cá nhân tôi cho rằng đáp án mới giải quyết 1 phần của vấn đề.

VD : 7d6a150 + 9d6a200 cho k/quả là 7+9=15 (cùng đường kính d6)

nhưng với t/hợp 7d6a150 + 9d8a200 kết quả là gì? (khác đ/kính d6 + d8)

Bạn gia bạch có thể giúp mình trong trường hợp 7d6a150 + 9d8a200 được không, mình muốn cho ra đáp số là: 7d6, 9d8

Nếu vậy thì đúng là đỡ phải cộng trừ nhân chia

Thank yous mọi người

 

Làm cái này cho bạn thật sự rất khó (khó là vì không biết mục đích là gì??? Nó được sắp xếp ra sao???) giống như trên mình đã nói làm nhưng rất mơ hồ

  • 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

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.

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

Sao mà dễ buông tay thế ? Cung cấp thêm thông tin để kiếm cái "máy gặt đập liên hoàn" về mà thay cái "lưỡi hái" chứ :D :D :D

  • 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

Sao mà dễ buông tay thế ? Cung cấp thêm thông tin để kiếm cái "máy gặt đập liên hoàn" về mà thay cái "lưỡi hái" chứ :D :D :D

 

Đúng là cái má gặt gặt như sấm so với cái "cù liêm". Do mình thấy mình làm nhà cũng nhỏ nên thép đai thường là cùng đường kính nên lấy cái cù liêm gặt đỡ :lol: :lol: :lol: . Nhưng có cái vụ sau nhờ các bạn, cái này nếu có máy gặt thì nhanh, xin trình bày như sau:

***Trong cad có bảng thống kê thép (đính kèm)

***Mình dung didg của thằng Hàn Quốc để chuyển 2 cột text sang excel (cột đường kính & khối lượng)

***Trong excel tính được d6=100KG, d10=200KG, d16=1000KG chẳng hạn

***Rồi gõ lại cad thành bảng tổng hợp KL

***Giúp mình gặt nó trong cad

Cám ơn trước,gặt xong cho vài tấn lúa :D :D :D

http://www.cadviet.com/upfiles/5/149122_cadviet1.dwg

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

Các yêu cầu đều không rõ ràng nên bạn huunhantvxdts muốn giúp thêm cũng khó.

Yêu cầu phải rõ ràng, có kết quả mong muốn thì may ra mới có người giúp, tôi có chuyên môn kết cấu cũng còn thấy mơ hồ huống gì những bạn khác.

Hãy đọc bài này rồi trình bày lại kết quả mong muốn cho rõ ràng :

http://www.cadviet.com/forum/topic/5888-viet-yeu-cau-request-va-tra-loi-response-nhu-the-nao/

 

Ps: Tôi chỉ góp ý, test và sửa lisp chứ không viết hộ.

Nếu ai muốn học mà chưa biết bắt đầu ntn có thể đến etown Tân Bình tôi sẽ hướng dẫn khoảng 1h để tự học.

  • 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

Đề tài này bạn huunhan đã giúp mình ok ở bài #3, vậy là ok rồi các bạn nhé

Và mình có nhờ các bạn giúp ở thếm 1 vấn đề ở bài #14, nếu vẫn chưa hiểu bài #14 thì mình sẽ chuyển sang đề tài khá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

Chắc 1 dấu dislike cho bác ndtnv cũng không làm cho bác ấy đói. Nhưng một bài viết mà nhiều người góp ý thì nên xem lại chứ 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

Oh mình cũng thấy bài này bạn huunhan đã giúp mình ok rồi,ok các bạn góp ý mình cám ơn, còn cái mục ở bài #14 cũng là cái phụ, cũng không phải đề tài này, mình sẽ chuyển sang bài khác vậy.

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

Chào các bạn, mình có tìm trong diễn đàn cái lisp này mà chưa được, các bạn giúp dùm mình, mình giải thích như sau:

 

***gõ lệnh

***lisp sẽ yêu cầu mình chọn dim, ví dụ dim 950 như hình, sau đó

***lisp yêu cầu mình gõ bước cốt đai ví dụ 150, sau đó

***lisp sẽ hỏi đường kính cốt đai là bao nhiêu, mình gõ 6, sau đó

***lisp yêu cầu pick vị trí ngoài màn hình để ghi text

***kết quả là  7∅6a150

***dùng text arial, cao text là 80 nha các bạn

***cách tính lấy 950/150 được 6.3333 lấy phần nguyên la 6+1=7∅6a150 (không quan tâm là kết quả dư bao nhiêu, cứ lấy phần nguyên + 1 la được)

 

***http://www.cadviet.com/upfiles/5/149122_lisp_tinh_va_xuat_ra_text.dwg

 

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. :)

  • Vote tăng 1
  • 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

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

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

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
(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

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

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

  • 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

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  

×