Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] Lisp ghi kích thước Polyline ra text


  • Please log in to reply
24 replies to this topic

#21 quansla

quansla

    biết lệnh xclip

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

Đã gửi 26 November 2012 - 06:45 AM

Còn về cái lisp thu.lsp bạn vừa viết xong, bạn có thể tách ra làm 2 phần với 2 lệnh riêng biệt. Phần 1 là xác định tỉ lệ, sau khi thực hiện xong thì lưu lại giá trị tỉ lệ này, lúc nào cần xác định lại tỉ lệ thì thực hiện lại lệnh đó, và phần 2 là phần fakedim với tỉ lệ đã xác định.

Cũng giống như lisp đánh cốt tự động ấy, có 1 lệnh cot00 để xác định cốt 00, sau đó lệnh dc để đánh cốt tính từ cốt 00 vừa xác định. Sang chỗ khác, cần chọn lại cốt 00 khác thì sẽ dùng lại lệnh cot00.

Bạn có thể bỏ 1 chút thời gian xem qua cái lisp của mình đc k0? Xem thì bạn sẽ hiểu rõ hơn yêu cầu của mình.

Các bản vẽ của mình xuẩt ra từ phần mềm khác, ko có dim, chỉ có text và có line. Nhưng để bổ sung đường kích thước thì mình sẽ dim chỗ cần bổ sung rồi edit cái dim đó.
Với cái lisp của mình tự chế thì mình sẽ phải break 2 lần thì mới sửa đc.

Và mình muốn có 1 cái lisp, sau khi xác định đc tỉ lệ bằng 1 lệnh khác, mình gõ lệnh thì chọn vào đường dim, nếu dim đã bị fake thì cũng k0 quan tâm giá trị đã fake (có thể có do trường hợp xác định sai tỉ lệ, và cần fake lại), Lisp sẽ lấy giá trị thực của dim để chia (hoặc nhân, tùy thuật toán) với tỉ lệ đã xác định đc rồi fake

Cảm ơn bạn đã rất nhiệt tình giúp mình.
Bạn sn 90, chắc bạn vừa mới ra trường nhỉ?

Hix, học hành bét nhé như e chưa ra được anh ạ, mấy hôm tiếp thì lại bận rồi, còn list thử của em mỗi yêu cầu, bác bỏ ra làm lệnh đều được mà,

;;cac ham con
;;-----
(defun xuly_nhaptay (a1 / b1_user)
(setq b1_user (getreal "\nNhap chieu dai mong muon"))
( / a1 b1_user )
)
;;-----
(defun xuly_picktext (a1 Tex / b1)
(If (= (type (atof(cdr(assoc 1 (entget(car Tex))))) ) (type 3.4))
(progn
(if (/= "" (cdr(assoc 1 (entget(car Tex)))))
(setq b1 (atof(cdr(assoc 1 (entget(car Tex))))))
(setq b1 (cdr(assoc 42 (entget(car Tex))))) )
)
)
(if b1
( / a1 b1 )
;(xuly_nhaptay)
)
)
;;-----
(defun xuly_yeucau_pI_xdtyle( / dt ent_dt a1)
(while (or (null dt)
(/= "LINE" (cdr (assoc 0 (entget (car dt))))) )
(setq dt (entsel"\nChon LINE")))
(setq ent_dt (entget (car dt)))
(setq a1 (distance (cdr(assoc 10 ent_dt)) (cdr(assoc 11 ent_dt)) ))
;;chon text chua gia tri fake dim hoac nhap tay
(if (setq picktext (entsel "\nPick chon Text la so"))
(setq ##tyle## (xuly_picktext a1 picktext))
(setq ##tyle## (xuly_nhaptay a1))
)
(princ (strcat "Tyle ban ve hien xac dinh duoc la : " (rtos ##tyle## 2 5 ) "\n"))
(princ)
)
;;-----
;;-----
(defun xuly_yeucau_PII ( / ss i entdt_ss a2 giatri_new)
(prompt "\nChon cac duong DIM de converst")
(princ)
(setq ss (ssget (list (cons 0 "DIMENSION"))))
(setq i -1)
(repeat (sslength ss)
(command "undo" "begin")
(setq i (1+ i))
(setq entdt_ss (entget(ssname ss i)))
(princ)
;;xac dinh gia tri thuc a2 cua dim
(setq a2 (distance (cdr(assoc 13 entdt_ss)) (cdr(assoc 14 entdt_ss)) ))
;; ket thuc a2 xac dinh gia tri moi bang a2/x (x la tyle o phan I)
(setq giatri_new (rtos (/ a2 ##tyle##)))
(entmod (subst (cons 1 giatri_new) (assoc 1 entdt_ss) entdt_ss))
(command "undo" "end")
);end_repeat
)
;;CHUONG TRINH CHINH
(defun c:thu1 ()
(xuly_yeucau_pI_xdtyle)
)
(defun c:thu2 ()
(setvar "cmdecho" 0)
;(xuly_yeucau_pI_xdtyle)
(xuly_yeucau_PII)
(setvar "cmdecho" 1)
(princ (strcat "Tyle ban ve hien xac dinh duoc la : " (rtos ##tyle## 2 5 ) "\n"))
(princ)
)
List của bác em trước xem rồi, nhưng mà đã nói bác up file bác không up thì em chịu hông viết được, bác up file lên đi
Mấu chốt là các DIM của bác đã bị Scale thì mỗi dim ở tỷ lệ khác nhau có Arrow khác nhau mà đúng không
  • 0

#22 Kỹ sư

Kỹ sư

    biết vẽ arc

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

Đã gửi 03 December 2012 - 08:15 PM

Hix, học hành bét nhé như e chưa ra được anh ạ, mấy hôm tiếp thì lại bận rồi, còn list thử của em mỗi yêu cầu, bác bỏ ra làm lệnh đều được mà,


;;cac ham con
;;-----
(defun xuly_nhaptay (a1 / b1_user)
(setq b1_user (getreal "\nNhap chieu dai mong muon"))
( / a1 b1_user )
)
;;-----
(defun xuly_picktext (a1 Tex / b1)
(If (= (type (atof(cdr(assoc 1 (entget(car Tex))))) ) (type 3.4))
(progn
(if (/= "" (cdr(assoc 1 (entget(car Tex)))))
(setq b1 (atof(cdr(assoc 1 (entget(car Tex))))))
(setq b1 (cdr(assoc 42 (entget(car Tex))))) )
)
)
(if b1
( / a1 b1 )
;(xuly_nhaptay)
)
)
;;-----
(defun xuly_yeucau_pI_xdtyle( / dt ent_dt a1)
(while (or (null dt)
(/= "LINE" (cdr (assoc 0 (entget (car dt))))) )
(setq dt (entsel"\nChon LINE")))
(setq ent_dt (entget (car dt)))
(setq a1 (distance (cdr(assoc 10 ent_dt)) (cdr(assoc 11 ent_dt)) ))
;;chon text chua gia tri fake dim hoac nhap tay
(if (setq picktext (entsel "\nPick chon Text la so"))
(setq ##tyle## (xuly_picktext a1 picktext))
(setq ##tyle## (xuly_nhaptay a1))
)
(princ (strcat "Tyle ban ve hien xac dinh duoc la : " (rtos ##tyle## 2 5 ) "\n"))
(princ)
)
;;-----
;;-----
(defun xuly_yeucau_PII ( / ss i entdt_ss a2 giatri_new)
(prompt "\nChon cac duong DIM de converst")
(princ)
(setq ss (ssget (list (cons 0 "DIMENSION"))))
(setq i -1)
(repeat (sslength ss)
(command "undo" "begin")
(setq i (1+ i))
(setq entdt_ss (entget(ssname ss i)))
(princ)
;;xac dinh gia tri thuc a2 cua dim
(setq a2 (distance (cdr(assoc 13 entdt_ss)) (cdr(assoc 14 entdt_ss)) ))
;; ket thuc a2 xac dinh gia tri moi bang a2/x (x la tyle o phan I)
(setq giatri_new (rtos (/ a2 ##tyle##)))
(entmod (subst (cons 1 giatri_new) (assoc 1 entdt_ss) entdt_ss))
(command "undo" "end")
);end_repeat
)
;;CHUONG TRINH CHINH
(defun c:thu1 ()
(xuly_yeucau_pI_xdtyle)
)
(defun c:thu2 ()
(setvar "cmdecho" 0)
;(xuly_yeucau_pI_xdtyle)
(xuly_yeucau_PII)
(setvar "cmdecho" 1)
(princ (strcat "Tyle ban ve hien xac dinh duoc la : " (rtos ##tyle## 2 5 ) "\n"))
(princ)
)
List của bác em trước xem rồi, nhưng mà đã nói bác up file bác không up thì em chịu hông viết được, bác up file lên đi
Mấu chốt là các DIM của bác đã bị Scale thì mỗi dim ở tỷ lệ khác nhau có Arrow khác nhau mà đúng không


Sory, mấy hôm rồi mình có việc, h mới về HN nên mới online cảm ơn bạn đc.
cái lisp của bạn mình dùng okie rồi. Chỉ có không dùng được cho ordinate dimension thôi, Mà thực ra Ordinate dim cũng ít dùng nên cũng không cần thiết lắm

Mình k0 up file là vì 2 lí do:
1./ MÌnh mà muốn up file thì phải lên công ty, gửi qua email rồi tối về mới up đc, rất mất công. Công ty mình chặn k0 cho xài internet mà.
2./ Thực ra thì bản vẽ cũng k0 có j đặc biệt, nhất là chỗ liên quan đến cái lisp này. Chỉ là vẽ chi tiết các tấm thép, và các đường kích thước chỉ là line và text, thế thôi.
Chân thành cảm ơn bạn đã nhiệt tình giúp mình.
Chúc bạn sức khỏe và thành công trong học tập cũng như công việc!
  • 0

Hình đã gửi


#23 muacauvong

muacauvong

    biết pan

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

Đã gửi 14 July 2014 - 09:39 PM

các bạn cho mình hỏi làm sao ghi số kích thước ra text nhỉ có lisp nào không bác


  • 0

#24 muacauvong

muacauvong

    biết pan

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

Đã gửi 14 July 2014 - 10:04 PM

xin hỏi các bác là chỉ chon giá trị kích thước rồi nhập thành text luôn thì lisp sao ak ?


  • 0

#25 nganhtuan_spkt

nganhtuan_spkt

    Chưa sử dụng CAD

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

Đã gửi 15 September 2016 - 11:54 AM

Mình là thành viên mới nên không biết gửi thông tin cần hỏi ở đâu nên xin phép được hỏi ở đây, mong admin thông cảm.

 

Nhờ mọi người giúp đỡ viết lisp vẽ hình chữ nhật, chương trình sẽ hỏi chiều rộng (W) và chiều cao (H) hình chữ nhật. Khi vẽ thì cad chỉ cần vẽ ra theo chiều rộng mà chương trình đã hỏi,chiều dài là do mình click chuột trên bản vẽ, không cần chiều cao. Vẽ xong sẽ xuất text WxH với chiều cao chữ sẽ được chương trình lisp hỏi (vẽ lần sau thì chương trình tự nhớ chiều cao chữ,nếu muốn thay đổi thì mình mới đánh lại chiều cao chữ)

 

Xin cảm ơn mọi người!


  • 0