Đến nội dung


Hình ảnh
- - - - -

[yêu cầu] Lisp thay đổi chiều cao text của dimstyle cực nhanh !


  • Please log in to reply
46 replies to this topic

#21 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 26 November 2011 - 10:12 PM

hic. anh KETXU ơi, thay cái dòng (setvar "DIMTXT" (/ tH (getvar "DIMSCALE"))) để làm gì ạ ? em thay rồi nhưng nó vẫn thay đổi kích thước arrow ạ . Mà chức năng soạn thảo của CADVIET lỗi anh ạ !

Bạn k biết lisp, nên mình cũng k biết nói sao. Setvar nôm na là đặt. DIMSCALE là cái overscale. Dimtxt là Text Height. Dòng trên có nghĩa là Đặt Text Height bằng tH(số mình chọn) / tỉ lệ Scale all. Nếu theo cách này bạn nhớ bỏ dòng (setvar "dimscale" 1.0000) mà bác Bình nói đi nhé ^^
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#22 girl

girl

    biết vẽ spline

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

Đã gửi 30 November 2011 - 02:15 PM

Lisp này quả thật rất hữu ích, nhưng còn một trường hợp lisp chưa xét đến, em sử dụng mới phát hiện ra. Đó là với các Dimstyle mà được FIX cứng chiều cao của text trong mục text style thì lisp không thay đổi được chiều cao, và em muốn có thêm cái tính năng lưu giá trị chiều cao vừa nhập của lần trước ạ. Anh ketxu này giúp em nhé

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=53208&pid=183218&st=0&#entry183218
(defun c:hdim (/ lstDstyle tH i ss ent dstyle)
(grtext -1 "Free lisp from Cadviet @Ketxu")
(command "undo" "be")
(setvar "cmdecho" 0)
(setq tH (getreal "\n Text Height :") i 0 ss (ssget (list (cons 0 "DIMENSION"))))
(while (setq ent (ssname ss i))
(if (setq dstyle (cdr (assoc 3 (entget ent))))
(if (not (vl-position dstyle lstDstyle))
(progn
(setq lstDstyle (cons dstyle lstDstyle))
(command "DIMSTYLE" "R" dstyle)(setvar "DIMTXT" (/ tH (getvar "DIMSCALE")))
(command "DIMSTYLE" "S" dstyle "Y")
)
)
)
(setq i (1+ i))
)
(command "undo" "en")
)


  • 0

#23 minhngockt

minhngockt

    biết vẽ pline

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

Đã gửi 28 February 2012 - 05:25 PM

Nhờ các bác viết hộ em cái lisp thay đổi hướng text của dim, bình thường khi đo kích thước của một đối tượng thì text thường hướng từ trái qua phải hoặc từ dưới lên trên, nhiều khi trình bày bản vẽ text hay bị chèn vào đối tượng khác, các bác có thể viết giúp em một cái lisp có thể thay đổi được hướng text theo chiều ngược lại được không ạ, em cảm ơn mọi người.
  • 0

#24 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5448 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 28 February 2012 - 09:17 PM

Nhờ các bác viết hộ em cái lisp thay đổi hướng text của dim, bình thường khi đo kích thước của một đối tượng thì text thường hướng từ trái qua phải hoặc từ dưới lên trên, nhiều khi trình bày bản vẽ text hay bị chèn vào đối tượng khác, các bác có thể viết giúp em một cái lisp có thể thay đổi được hướng text theo chiều ngược lại được không ạ, em cảm ơn mọi người.

Câu hỏi của bạn hơi tối nghĩa. Hướng text của dim là gì? Tuy nhiên, tôi đoán mò: không cần quan tâm trái sang phải hay dưới lên trên thì vẫn có thể di chuyển vị trí text của dim bằng cách:
Dim -> Te -> di chuyển.
Nếu sai thì mong bạn post câu hỏi cho rõ ràng.
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#25 laivanyen

laivanyen

    biết vẽ line

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

Đã gửi 28 February 2012 - 09:42 PM

[yêu cầu] viết lisp chỉnh unit trong cad. ví dụ em muốn vẽ line có chiều dài 500 mà chỉ cần đánh là 1. 500 là đơn vị thực chứ không phải dim ạ. tiện đây các anh giúp em luôn nhé. !
  • 0

#26 cd2k44

cd2k44

    Edu level: li5

  • Members
  • PipPipPipPipPipPipPip
  • 648 Bài viết
Điểm đánh giá: 121 (tàm tạm)

Đã gửi 28 February 2012 - 10:21 PM

Bạn lập topic bị sai là 1,thứ 2 bạn hiểu không đúng về unit của cad rồi
  • 0

#27 minhngockt

minhngockt

    biết vẽ pline

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

Đã gửi 28 February 2012 - 11:15 PM

Câu hỏi của bạn hơi tối nghĩa. Hướng text của dim là gì? Tuy nhiên, tôi đoán mò: không cần quan tâm trái sang phải hay dưới lên trên thì vẫn có thể di chuyển vị trí text của dim bằng cách:
Dim -> Te -> di chuyển.
Nếu sai thì mong bạn post câu hỏi cho rõ ràng.

em muốn nhờ các bác viết hộ em cái lisp như lệnh MIRROR đối với đối tượng là text của dim, đường trục đối xứng chính là đường dim luôn ạ, em cảm ơn mọi người
  • 1

#28 ksdung

ksdung

    biết pan

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

Đã gửi 28 February 2012 - 11:35 PM

Nhân tiện đây nhờ các bạn giúp mình phát triển lisp này theo ý tưởng "Điều chỉnh text, dim, phù hợp với khung bản vẽ cần in" có được không vậy!
Với ý tưởng:
1. Chọn toàn bộ text trong khung bản vẽ cần in sau đó bắt điểm theo đường chéo (hoặc theo cạnh) khung để xác định khung in, làm sao sau khi in ra chiều cao text luôn là 2.0mm với khung A4 hoặc 2.5 với khung A3->A1:
2. Tương tự như vậy đối với Dim
=> Như vậy dù bản vẽ với tỷ lệ khung in như nào thì lisp sẽ xử lý chiều cao text và dim sau khi in ra luôn cao 2.0 đối với khung A4 và 2.5 đối với khung A3-A1
Xin cám ơn các bạn
  • 0

#29 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5448 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 29 February 2012 - 08:29 AM

em muốn nhờ các bác viết hộ em cái lisp như lệnh MIRROR đối với đối tượng là text của dim, đường trục đối xứng chính là đường dim luôn ạ, em cảm ơn mọi người

Rất tiếc là đọc cả 2 câu hỏi của bạn tôi vẫn chưa hiểu được ý. Có thể do tôi chậm hiểu quá chăng? Nếu được, bạn post ảnh (hoặc file) thể hiện cái hiện hữu và cái mong muốn có sau khi dùng lisp được không?
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#30 ngochungh8x

ngochungh8x

    Chưa sử dụng CAD

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

Đã gửi 30 September 2012 - 01:40 PM

Gửi bác Ketxu !
e đang làm bản vẽ trên nền bản vẽ cũ của người khác... nhưng khi chuyển qua bên layout,e scale lại cho đúng khung in của e thì có 1 vấn đề xảy ra là chiều cao text và dimtext lại ko đúng với quy định đã cho.e ra quán in thì thấy người ta dùng lệnh ckt là có thể thay đổi dimtext tất cả vùng đã chọn cùng 1 lúc.e về làm thủ thì ko đc...mong bác giải đáp giúp e ....
  • 0

#31 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 30 September 2012 - 08:07 PM

Lệnh ckt hay ck gì gì đi nữa cũng là do người ta viết ra, bạn mô tả như vậy chưa đủ để mình hiểu nó làm cái j. Thay đổi các đối tượng trong vùng chọn bạn hãy nghĩ đến lệnh Mo, hay tổ hợp phím Ctrl + 1 rất hữu ích
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#32 ngochungh8x

ngochungh8x

    Chưa sử dụng CAD

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

Đã gửi 01 October 2012 - 12:45 AM

cụ thể là như thế này .... khi e vẽ bên model e dùng tỉ lệ là 1:1 . và chiều cao dimtext là tùy ý,ví dụ là 30. sau khi chuyển sang layout,e muốn in bản vẽ trên khổ giấy A1.tất nhiên e sẽ phải tạo 1 khung mv,sau đó là sử dụng scale fix bản vẽ,ví dụ e scale fix là 1:90 . vậy khi in ra thì height dimtext sẽ là 30/90 = 0,5.trong khi đó quy định của bản vẽ là height text = 3,0.vậy e sẽ phải edit lại hdimtext là 90*3 = 180 thì khi in ra giấy hdimtext mới = 3,0 được.mà edit từng cái như vậy thì rất lâu ( lưu ý là ko thay chiều cao của cả style text đc,vì như vậy sẽ ảnh hưởng đến nhưng khung mv khác.do muốn in nhiều tỷ lệ trên 1 bản vẽ và bên model chỉ dùng 1 style ).e thấy người ta dùng lệnh ckt gì đó...mà có thể thay đổi được hết hdimtext nhưng đỗi tường đã quét qua....mà e về làm thử ko đc...dù đã có lisp đó trong cad 2007.vấn đề của e là ở chỗ đó....mong bác giải đáp sớm giúp e với...e đang rất cần...cám ơn bác nhiều !
  • 0

#33 ngochungh8x

ngochungh8x

    Chưa sử dụng CAD

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

Đã gửi 03 October 2012 - 10:07 AM

help...có bác nào biết thì chỉ giúp e với....
  • 0

#34 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 14 January 2014 - 09:16 AM

mình có gặp vấn đề về tẽt mong các thành viên giúp

trong một bản vẽ bình đồ, tôi muốn thay đổi chiều cao text của các đường đồng mức, thay vì tắt lớp sau đó ma text theo chiều cao của nhiều text (có cùng tên) một lúc, thì có cách nào làm nhanh hơn không. cảm ơn nhiều!............

 

Bạn dùng lệnh Scaletext


  • 0

#35 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5448 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 15 January 2014 - 11:02 AM

nếu dùng lệnh Scaletext  của bác Tue_NV thì chỉ thay đổi được 1 đối tượng chứ ko thay đổi đồng loại các đối tượng cùng một lúc được, cái mình muốn là thay đổi đồng loạt chiều cao các đối tượng mà vị trí của các đối tượng ko bị nhảy đến vị trí khác. Vì minh làm bình đồ thì rất nhiều đối tượng mà làm hiều bước thì mất thời gian lắm. Mong các bác giúp cho. Cảm ơn nhiều!

Ai bảo thế? Scale hàng loạt cơ mà.


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#36 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5448 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 17 January 2014 - 01:47 PM

Bác Đoan Van Ha than mến, nếu như bác Scale hàng loạt thì vị trí các text se nhảy đến vị trí khác.

Điểm canh lề không hề thay đổi.


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#37 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5448 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 20 January 2014 - 10:29 AM

Nhờ bác Đoan Van Ha chỉ rõ hơn dược không, em làm hoài mà các text cư nhảy lung tung khỏi vị trí đường đồng mức. cảm ơn bác nhiểu!

Gởi bản vẽ của bạn lên để test xem sao nhé!


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#38 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 20 January 2014 - 10:30 AM

Nhờ bác Đoan Van Ha chỉ rõ hơn dược không, em làm hoài mà các text cư nhảy lung tung khỏi vị trí đường đồng mức. cảm ơn bác nhiểu!

 

Bạn gõ đúng chữ SCALETEXT vào dòng command

Bạn tìm đọc thêm lệnh trên SCALETEXT  diễn đàn nhé!


  • 0

#39 juny

juny

    biết zoom

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

Đã gửi 20 January 2014 - 04:57 PM

Command:
Text Height :1000
DIMSTYLE
Current dimension style: Standard Annotative: No
Current dimension overrides:
DIMTXT 1000.0000


  • 0

Hướng dẫn học AutoCAD
AutoCAD Tutorial | AutoCAD Tips | AutoCAD Library


#40 oishisnack

oishisnack

    biết zoom

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

Đã gửi 31 May 2014 - 03:52 PM

Làm dâu trăm họ smile.gif
Thôi thì theo cái lisp cũ, mình viết thêm vài kiểu nữa cho chắc :
1. Change cho toàn bộ DimStyle trong bản vẽ :

(defun c:hdima (/ table tH)
(grtext -1 "Free lisp from Cadviet @Ketxu")
(command "undo" "be")
(defun table (s / d r)
(while (setq d (tblnext s (null d)))
(setq r (cons (cdr (assoc 2 d)) r))
)
)
(setq tH (getreal "\n Text Height :"))
(setvar "cmdecho" 0)
(mapcar '(lambda(x)(command "DIMSTYLE" "R" x)(setvar "DIMTXT" tH)(command "DIMSTYLE" "S" x "Y")) (table "DIMSTYLE"))
(command "undo" "en"))
2. Pick đến đâu change đến đó :
(defun c:hdimb (/ lstDstyle tH ent dstyle)
(grtext -1 "Free lisp from Cadviet @Ketxu")
(command "undo" "be")
(setvar "cmdecho" 0)
(setq tH (getreal "\n Text Height :"))
(while (setq ent (car (entsel "\n Pick dim :")))
	(if (setq dstyle (cdr (assoc 3 (entget ent))))
		(if (not (vl-position dstyle lstDstyle))
			(progn
				(setq lstDstyle (cons dstyle lstDstyle))
				(command "DIMSTYLE" "R" dstyle)(setvar "DIMTXT" tH)(command "DIMSTYLE" "S" dstyle "Y")
			)
			(princ "\nAlready Dimension Style Picked")
		)
	)
)
(command "undo" "en")
)
3. Chọn 1 loạt rồi change :
(defun c:hdimc (/ lstDstyle tH i ss ent dstyle)
(grtext -1 "Free lisp from Cadviet @Ketxu")
(command "undo" "be")
(setvar "cmdecho" 0)
(setq tH (getreal "\n Text Height :") i 0 ss (ssget (list (cons 0 "DIMENSION"))))
(while (setq ent (ssname ss i))	
	(if (setq dstyle (cdr (assoc 3 (entget ent))))
		(if (not (vl-position dstyle lstDstyle))
			(progn
				(setq lstDstyle (cons dstyle lstDstyle))
				(command "DIMSTYLE" "R" dstyle)(setvar "DIMTXT" tH)(command "DIMSTYLE" "S" dstyle "Y")
			)			
		)
	)
	(setq i (1+ i))
)
(command "undo" "en")
)
Đó là công việc mà mọi người trên diễn đàn đang cố gắng làm và chia sẻ bạn à smile.gif

lips hay nhưng mình nhập chiều cao 1 đằng thì chiều cao thực tế của text dim lại kiểu khác bạn ah.
 


  • 0