Đến nội dung


Hình ảnh
- - - - -

lisp kích thước


  • Please log in to reply
15 replies to this topic

#1 amateurday

amateurday

    biết lệnh break

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

Đã gửi 09 December 2009 - 02:11 PM

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
  • 0

#2 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1435 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 09 December 2009 - 02:41 PM

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

  • 0

#3 amateurday

amateurday

    biết lệnh break

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

Đã gửi 09 December 2009 - 02:51 PM

không được rồi giabach ơi.
select object không được.
  • 0

#4 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1435 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 09 December 2009 - 03:03 PM

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.c...o...ost&p=81279
Chúc bạn may mắn.
  • 0

#5 amateurday

amateurday

    biết lệnh break

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

Đã gửi 09 December 2009 - 03:11 PM

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
  • 0

#6 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1435 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 09 December 2009 - 03:28 PM

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

  • 0

#7 amateurday

amateurday

    biết lệnh break

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

Đã gửi 09 December 2009 - 03:36 PM

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.
  • 0

#8 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 09 December 2009 - 03:38 PM

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é.
  • 0

#9 amateurday

amateurday

    biết lệnh break

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

Đã gửi 09 December 2009 - 03:55 PM

http://www.cadviet.com/upfiles/2/a.dwg
các bác giúp em
  • 0

#10 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1435 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 09 December 2009 - 04:12 PM

http://www.cadviet.com/upfiles/2/a.dwg
các bác giúp em

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.
  • 0

#11 amateurday

amateurday

    biết lệnh break

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

Đã gửi 09 December 2009 - 10:31 PM

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
  • 0

#12 the call889

the call889

    Chưa sử dụng CAD

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

Đã gửi 09 December 2009 - 10:41 PM

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

#13 amateurday

amateurday

    biết lệnh break

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

Đã gửi 09 December 2009 - 11:26 PM

có ai biết cách dùng 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
  • 0

#14 master_worse

master_worse

    biết lệnh offset

  • Advance Member
  • PipPipPip
  • 170 Bài viết
Điểm đánh giá: 87 (tàm tạm)

Đã gửi 10 December 2009 - 09:05 AM

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

Ngu dốt không đáng thẹn bằng thiếu ý chí học hỏi


Tri thức làm người ta khiêm tốn, ngu si làm người ta kiêu ngạo (Ngạn ngữ Anh)


#15 the call889

the call889

    Chưa sử dụng CAD

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

Đã gửi 17 December 2009 - 01:08 PM

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 !
  • 0

#16 leo_85

leo_85

    biết lệnh move

  • Members
  • PipPipPip
  • 123 Bài viết
Điểm đánh giá: 39 (tàm tạm)

Đã gửi 17 December 2009 - 04:00 PM

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
  • 0
Hãy ước trọn 1 điều ước,cho dù là nhỏ bé

......................................>>>>>