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

lisp kích thước

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

các bác viết giúp em lisp này được không:

- chọn các đường kích thước cần làm

- chọn khoảng cách. vd 5

kết quả là các đường kích thước sẽ cách đường cần ghi kt 5 mm.

cám ơn các bá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
các bác viết giúp em lisp này được không:

- chọn các đường kích thước cần làm

- chọn khoảng cách. vd 5

kết quả là các đường kích thước sẽ cách đường cần ghi kt 5 mm.

cám ơn các bác

Bạn chạy thử Lisp này :

;--  kich thuoc duong thang --
(defun c:kt2(/ vl ov ss d1 d2 d3 d4 d5 ent kc)
 (command "_.undo" "_begin")
 (setq vl '("osmode" "orthomode") ; Sys Var list
       ov (mapcar 'getvar vl))   ; Get Old values
 (mapcar 'setvar vl '(0 0))
 (setq ss (ssget (list (cons 0 "LINE")) )	
kc (getdist "\nNhap khoang cach: ")
d4 (getpoint "\nHuong dat kich thuoc ? ") )
 (foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
   (setq d1 (vlax-curve-getStartPoint ent)
  d2 (vlax-curve-getEndPoint ent)
  d5 (vlax-curve-getClosestPointTo ent d4 T)
  d3 (polar d5 (angle d5 d4) kc))
   (command "dimaligned" d1 d2 d3 ) 
   )
 (mapcar 'setvar vl ov) ; reset Sys Vars
 (command "_.undo" "_end")
 (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
không được rồi giabach ơi.

select object không được.

Đừng dowload bằng cách click vào Download lisp file.

(chức năng này của diễn đàn đang bị lỗi)

Bạn copy toàn bộ text trong mục CODEBOX và luu thành file *.lsp.

 

Hoăc

Với file LISP kt2.lsp down từ "download lisp file" :

tìm và thay thế "\'" bằng "'"

tuơng đưong với việc xóa kí tự "\"

save file.

 

Tham khảo : http://www.cadviet.com/forum/index.php?sho...ost&p=81279

Chúc bạn may mắn.

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ái này là phải chọn đường cần ghi kt khi xuất hiện tùy chọn select object phải không

mình bị lỗi này:

 

Command: KT2 _.undo Current settings: Auto = On, Control = All, Combine = Yes

Enter the number of operations to undo or [Auto/Control/BEgin/End/Mark/Back]

<1>: _begin

Command:

Select objects: 1 found

Select objects:

Nhap khoang cach: *Cancel*

; error: Function cancelled

Command: KT2 _.undo Current settings: Auto = On, Control = All, Combine = Yes

Enter the number of operations to undo or [Auto/Control/BEgin/End/Mark/Back]

<1>: _begin

Command:

Select objects: Specify opposite corner: 1 found

Select objects:

Nhap khoang cach: 50

Huong dat kich thuoc ? ; error: no function definition: VLAX-CURVE-GETSTARTPOINT

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ái này là phải chọn đường cần ghi kt khi xuất hiện tùy chọn select object phải không

mình bị lỗi này:

.....................

Huong dat kich thuoc ? ; error: no function definition: VLAX-CURVE-GETSTARTPOINT

Fix lỗi :
;----kich thuoc duong thang --------
(defun c:kt2(/ vl ov ss d1 d2 d3 d4 d5 ent kc)
 (vl-load-com)
 (command "_.undo" "_begin")  
 (setq vl '("osmode" "orthomode" "cmdecho") ; Sys Var list
       ov (mapcar 'getvar vl))              ; Get Old values
 (mapcar 'setvar vl '(0 0 0))
 (princ "\nChon duong thang can ghi kich thuoc : ")
 (if (and
(setq ss (ssget (list (cons 0 "LINE")) ))
(setq kc (getdist "\nNhap khoang cach : "))
(setq d4 (getpoint "\nHuong dat kich thuoc ? ") ) )
   (foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
     (setq d1 (vlax-curve-getStartPoint ent)
    d2 (vlax-curve-getEndPoint ent)
    d5 (vlax-curve-getClosestPointTo ent d4 T)
    d3 (polar d5 (angle d5 d4) kc))
     (command "dimaligned" d1 d2 d3)
     )
   )
 (mapcar 'setvar vl ov) ; reset Sys Vars
 (command "_.undo" "_end")
 (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
Fix lỗi :
;----kich thuoc duong thang --------
(defun c:kt2(/ vl ov ss d1 d2 d3 d4 d5 ent kc)
 (vl-load-com)
 (command "_.undo" "_begin")  
 (setq vl '("osmode" "orthomode" "cmdecho") ; Sys Var list
       ov (mapcar 'getvar vl))              ; Get Old values
 (mapcar 'setvar vl '(0 0 0))
 (princ "\nChon duong thang can ghi kich thuoc : ")
 (if (and
(setq ss (ssget (list (cons 0 "LINE")) ))
(setq kc (getdist "\nNhap khoang cach : "))
(setq d4 (getpoint "\nHuong dat kich thuoc ? ") ) )
   (foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
     (setq d1 (vlax-curve-getStartPoint ent)
    d2 (vlax-curve-getEndPoint ent)
    d5 (vlax-curve-getClosestPointTo ent d4 T)
    d3 (polar d5 (angle d5 d4) kc))
     (command "dimaligned" d1 d2 d3)
     )
   )
 (mapcar 'setvar vl ov) ; reset Sys Vars
 (command "_.undo" "_end")
 (princ)
 )

 

không phải như vậy giabach ơi. nếu thế này thì dùng quịckdimlinear có sẵn rồi

sorry vì không nói rõ là thế này, mình đã có sẵn các đường kích thước nằm rải rác trên bản vẽ rồi, bây giờ mình muốn cho tất cả cách đường kt cách đường ghi kt 1 khoảng cách nhất định.

Lý do: annotative khi thay đổi, mũi tên, text thay đổi theo nhưng khoảng cách từ đg kt đến đg ghi kt thì lại cố định, nếu có lisp thì không phải kéo từng cái.

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
không phải như vậy giabach ơi. nếu thế này thì dùng quịckdimlinear có sẵn rồi

sorry vì không nói rõ là thế này, mình đã có sẵn các đường kích thước nằm rải rác trên bản vẽ rồi, bây giờ mình muốn cho tất cả cách đường kt cách đường ghi kt 1 khoảng cách nhất định.

Lý do: annotative khi thay đổi, mũi tên, text thay đổi theo nhưng khoảng cách từ đg kt đến đg ghi kt thì lại cố định, nếu có lisp thì không phải kéo từng cái.

Bạn nên upload file bản vẽ của bạn lên diễn đàn và nói rõ điều bạn muốn nhé.

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ừ CAD 2008 có lệnh DimSpace cho phép điều chỉnh k/cách giữa các đuờng kích thuớc.

Command: DIMSPACE

Select base dimension:

 

Select dimensions to space:Specify opposite corner: 1 found

 

Select dimensions to space:

 

Enter value or [Auto] : 60

Hy vọng đúng ý bạn.

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

không được rồi các bác ơi, có ai biết cách annotative cho tự động thu hẹp khoảng cách của đường kt so với đối tượng cần ghi kt không 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

Giúp mình mới mình có lisp tính diện tích nhưng khi sử dụng thì bắt điểm tự động ( OS ) tự tắt, Xin hỏi mọi người có cách nào khác phục Không ? Thank !!!

 

 

(Defun c:ae1 ()

(setvar "cmdecho" 0)

(setvar "osmode" 0)

(setq tiep 1)

(while (= tiep 1)

(if (null am)

(setq am 1000)

)

(setq amo am)

(setq

am (getreal (strcat "\nNhap ty le ve <1/" (rtos am 2 0) ">: "))

)

(if (null am)

(setq am amo)

)

(setq s 0)

(setq pt (getpoint "\nChon diem: "))

(setq pt2 pt)

(while pt

(setq entold (cdr (assoc 5 (entget (entlast)))))

(command "boundary" pt "")

(setq entnew (cdr (assoc 5 (entget (entlast)))))

(if (/= entold entnew)

(progn

(setq entnew (entget (entlast)))

(if (assoc 62 entnew)

(setq

entnew (subst (cons 62 (+ 3 (cdr (assoc 62 entnew))))

(assoc 62 entnew)

entnew

)

)

(setq entnew

(append

entnew

(list

(cons

62

(+

3

(cdr

(assoc 62

(tblsearch "layer"

(cdr (assoc 8 entnew))

)

)

)

)

)

)

)

)

)

(entmod entnew)

(Command "area" "o" (entlast))

(setq s (+ s (getvar "area")))

(setq pt (getpoint "\nChon diem: "))

(entdel (entlast))

)

(progn

(princ "Chon diem sai")

(setq pt (getpoint "\nChon diem: "))

)

)

)

(command "style" "textdt" "Vntime,vns" "0" "0.8" "0" "N" "N" "N")

(setq pt1 (getpoint "\nChon diem ghi dien tich: "))

(if (null pt1)

(setq pt1 pt2)

)

(setq cch (getreal "\nChieu cao chu ghi dien tich <0.2>:"))

(if (null cch)

(setq cch 0.2)

)

(initget "Dao Dap")

(setq tt (getkword "Dat Dao/"))

(if (or (null tt) (= tt "Dap"))

(setq td "®¾p")

(setq td "®µo")

)

(initget "M2 Ha")

(setq c (getkword "\nDon vi do Ha/:"))

(if (or (null c) (= c "m2"))

(command "text"

"j"

"ml"

(setq dc pt1)

cch

(setq nghieng 0)

(strcat "S"

td

" = "

(rtos (/ (* s (* am am)) 1000000.0) 2 2)

" m2"

)

)

(command

"text"

"j"

"ml"

(setq dc pt1)

cch

(setq nghieng 0)

(strcat "S"

td

" = "

(rtos (/ (/ (* s (* am am)) 1000000.0) 10000.0) 2 2)

" ha"

)

)

)

(setq tiep (getreal "\nCo tiep tuc do nua khong? <1>"))

(if (null tiep)

(setq tiep 1)

)

)

(vmon)

(princ)

(setvar "osmode" 551)

)

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
Giúp mình mới mình có lisp tính diện tích nhưng khi sử dụng thì bắt điểm tự động ( OS ) tự tắt, Xin hỏi mọi người có cách nào khác phục Không ? Thank !!!

bạn thử sửa lại thế này xem:

(Defun c:ae1 ()

(setvar "cmdecho" 0)

;;;(setvar "osmode" 0) ;sửa chổ này

(setq tiep 1)

......

(princ)

;;;(setvar "osmode" 551);sửa chổ này

)

  • 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ử sửa lại thế này xem:

(Defun c:ae1 ()

(setvar "cmdecho" 0)

;;;(setvar "osmode" 0) ;sửa chổ này

(setq tiep 1)

......

(princ)

;;;(setvar "osmode" 551);sửa chổ này

)

 

Thank master worse mình thử và đã làm được rồi !

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 bác viết giúp em lisp này được không:

- chọn các đường kích thước cần làm

- chọn khoảng cách. vd 5

kết quả là các đường kích thước sẽ cách đường cần ghi kt 5 mm.

cám ơn các bác

 

 

Cái này không cần lisp cũng làm được bạn ạ

Bạn vào modify dimension style -> Primary Units -> suffix Đặt nó là mm thì bạn đo kích thước sẽ có 5 mm

Mong bạn làm đượ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

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  

×