Chuyển đến nội dung
Diễn đàn CADViet
xaydung

lisp lấy ra giá trị dim overall và dim linear!

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

Các bác ơi có bác nào có lisp lisp lấy ra giá trị dim overall và dim linear thì cho mình xin, mình đang rất cần, thanks!

'giá trị dim overall và dim linear' là cái gì 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
'giá trị dim overall và dim linear' là cái gì bạn?

Là giá trị dim overall scale và dim linear scale đó anh à, biến thứ nhất kiểm soát tỉ lệ của các chữ số kích thước, chiều dài nét dóng nghiêng(nếu để oblique), hai đoạn thò ra của 2 đường gióng...(nôm na là như vậy), biến thứ hai là tỉ lệ thôi 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
Là giá trị dim overall scale và dim linear scale đó anh à, biến thứ nhất kiểm soát tỉ lệ của các chữ số kích thước, chiều dài nét dóng nghiêng(nếu để oblique), hai đoạn thò ra của 2 đường gióng...(nôm na là như vậy), biến thứ hai là tỉ lệ thôi bác!

Trời! overall với overall scale hay linear với linear scale là 2 khái niệm khác nhau hoàn toàn.

Mặc dù vậy vẫn chưa rõ bạn muốn lấy dim overal scale của dimstyle hiện hành hay của đối tượng dim được chọ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
Trời! overall với overall scale hay linear với linear scale là 2 khái niệm khác nhau hoàn toàn.

Mặc dù vậy vẫn chưa rõ bạn muốn lấy dim overal scale của dimstyle hiện hành hay của đối tượng dim được chọn?

À, ý tưởng lisp của em là chọn 1 đối tượng dim trên màn hình sau đó lisp hỏi chọn điểm chèn kết quả, sẽ hiện lên 2 kết quả số trên màn hình anh à! bác giúp em nha, thanks!

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ưởng lisp của em là chọn 1 đối tượng dim trên màn hình sau đó lisp hỏi chọn điểm chèn kết quả, sẽ hiện lên 2 kết quả số trên màn hình anh à! bác giúp em nha, thanks!

Lệnh là GDI (get dim information).

 

(defun c:gdi (/ str ent)
 (setq	ent (car (entsel "\nHay chon dim: "))
str (strcat "DIMEXE: "
	    (rtos (getdimcode ent 40) 2 2)
	    " | DIMSCALE: "
	    (rtos (getdimcode ent 44) 2 2)
    )
 )
 (wtxt str (getpoint "\nVao diem chen ket qua: "))
 (princ)
)

(defun getdimcode (ent code / tt data ovs ext kq)
 (setq
   tt (entget ent '("ACAD"))
   kq (member (cons 1070 code) (cadr (assoc -3 tt)))
 )
 (if kq
   (cdr (car (cdr kq)))
   (cdr (assoc code (tblsearch "DIMSTYLE" (cdr (assoc 3 tt)))))
 )
)

(defun wtxt (txt p / sty d h)
 (setq
   sty	(getvar "textstyle")
   d	(tblsearch "style" sty)
   h	(cdr (assoc 40 d))
 )
 (entmake (list (cons 0 "TEXT")
	 (cons 7 sty)
	 (cons 1 txt)
	 (cons 10 p)
	 (if (> h 0)
	   (cons 40 h)
	   (assoc 40 d)
	 )
	 (assoc 41 d)
   )
 )
)

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
Lệnh là GDI (get dim information).

 

(defun c:gdi (/ str ent)
 (setq	ent (car (entsel "\nHay chon dim: "))
str (strcat "DIMEXE: "
	    (rtos (getdimcode ent 40) 2 2)
	    " | DIMSCALE: "
	    (rtos (getdimcode ent 44) 2 2)
    )
 )
 (wtxt str (getpoint "\nVao diem chen ket qua: "))
 (princ)
)

(defun getdimcode (ent code / tt data ovs ext kq)
 (setq
   tt (entget ent '("ACAD"))
   kq (member (cons 1070 code) (cadr (assoc -3 tt)))
 )
 (if kq
   (cdr (car (cdr kq)))
   (cdr (assoc code (tblsearch "DIMSTYLE" (cdr (assoc 3 tt)))))
 )
)

(defun wtxt (txt p / sty d h)
 (setq
   sty	(getvar "textstyle")
   d	(tblsearch "style" sty)
   h	(cdr (assoc 40 d))
 )
 (entmake (list (cons 0 "TEXT")
	 (cons 7 sty)
	 (cons 1 txt)
	 (cons 10 p)
	 (if (> h 0)
	   (cons 40 h)
	   (assoc 40 d)
	 )
	 (assoc 41 d)
   )
 )
)

thanks anh Hoanh, dimexe thì đúng rồi, nhưng cái dimscale hiện trên màn hình chưa đúng anh à, anh sủa cho em chút nữa được không ạ, nó chính là cái : khi anh vô Ctrl+1 hiện bảng ở phần primary units --> dim scale linear đó (mặc định là 1)

kết quả màn hình là :dimexe :1.00 dimscale : 1.00 !

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
thanks anh Hoanh, dimexe thì đúng rồi, nhưng cái dimscale hiện trên màn hình chưa đúng anh à, anh sủa cho em chút nữa được không ạ, nó chính là cái : khi anh vô Ctrl+1 hiện bảng ở phần primary units --> dim scale linear đó (mặc định là 1)

kết quả màn hình là :dimexe :1.00 dimscale : 1.00 !

Bạn hãy sửa mã 40 với 44 thành cái bạn muốn.

Nội dung của các code này như sau:

40
DIMSCALE

41
DIMASZ

42
DIMEXO

43
DIMDLI

44
DIMEXE

45
DIMRND

46
DIMDLE

47
DIMTP

48
DIMTM

140
DIMTXT

141
DIMCEN

142
DIMTSZ

143
DIMALTF

144
DIMLFAC

145
DIMTVP

146
DIMTFAC

147
DIMGAP

148
DIMALTRND

71
DIMTOL

72
DIMLIM

73
DIMTIH

74
DIMTOH

75
DIMSE1

76
DIMSE2

77
DIMTAD

78
DIMZIN

79
DIMAZIN

170
DIMALT

171
DIMALTD

172
DIMTOFL

173
DIMSAH

174
DIMTIX

175
DIMSOXD

176
DIMCLRD

177
DIMCLRE

178
DIMCLRT

179
DIMADEC

270
DIMUNIT (obsolete, now use DIMLUNIT AND DIMFRAC)

271
DIMDEC

272
DIMTDEC

273
DIMALTU

274
DIMALTTD

275
DIMAUNIT

276
DIMFRAC

277
DIMLUNIT

278
DIMDSEP

279
DIMTMOVE

280
DIMJUST

281
DIMSD1

282
DIMSD2

283
DIMTOLJ

284
DIMTZIN

285
DIMALTZ

286
DIMALTTZ

287
DIMFIT (obsolete, now use DIMATFIT and DIMTMOVE)

288
DIMUPT

289
DIMATFIT

340
DIMTXSTY (handle of referenced STYLE)

341
DIMLDRBLK (handle of referenced BLOCK)

342
DIMBLK (handle of referenced BLOCK)

343
DIMBLK1 (handle of referenced BLOCK)

344
DIMBLK2 (handle of referenced BLOCK)

371
DIMLWD (lineweight enum value)

372
DIMLWE 

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

×