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

lisp đẩy các đối tượng cách nhau 1 khoảng cách đều nhau?

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

Chào các huynh!e đang gặp vấn đề khi phải sắp xếp các đối tượng (1 nhóm đối tượng) cách đều nhau, nếu phải căn chỉnh khoảng cách rồi move các nhóm đối tượng thì rất mất thời gian và lại không chính xác, vậy có cách nào giải quyết được vấn đề này không mong các huynh giúp đỡ?thanks các bác nhiều nhiều!!

P/S : Khi sắp xếp các đối tượng sẽ có 1 đối tượng làm gốc ( nghĩa là đối tượng đấy sẽ giữ nguyên vị trí, các đối tượng còn lại sẽ sắp xếp theo đối tượng gốc đấy) và có thể lựa chọn sắp xếp theo phương X, phương Y hoặc cả 2 phương

  • Like 1
  • Vote giảm 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
Chào các huynh!e đang gặp vấn đề khi phải sắp xếp các đối tượng (1 nhóm đối tượng) cách đều nhau, nếu phải căn chỉnh khoảng cách rồi move các nhóm đối tượng thì rất mất thời gian và lại không chính xác, vậy có cách nào giải quyết được vấn đề này không mong các huynh giúp đỡ?thanks các bác nhiều nhiều!!

P/S : Khi sắp xếp các đối tượng sẽ có 1 đối tượng làm gốc ( nghĩa là đối tượng đấy sẽ giữ nguyên vị trí, các đối tượng còn lại sẽ sắp xếp theo đối tượng gốc đấy) và có thể lựa chọn sắp xếp theo phương X, phương Y hoặc cả 2 phương

Tue_NV không hiểu tại sao chủ đề này của bạn đã post lâu rồi. Nay sao lại post ở đây nữa???

http://www.cadviet.com/forum/index.php?sho...c=11716&hl=

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
Chào các huynh!e đang gặp vấn đề khi phải sắp xếp các đối tượng (1 nhóm đối tượng) cách đều nhau, nếu phải căn chỉnh khoảng cách rồi move các nhóm đối tượng thì rất mất thời gian và lại không chính xác, vậy có cách nào giải quyết được vấn đề này không mong các huynh giúp đỡ?thanks các bác nhiều nhiều!!

P/S : Khi sắp xếp các đối tượng sẽ có 1 đối tượng làm gốc ( nghĩa là đối tượng đấy sẽ giữ nguyên vị trí, các đối tượng còn lại sẽ sắp xếp theo đối tượng gốc đấy) và có thể lựa chọn sắp xếp theo phương X, phương Y hoặc cả 2 phương

 

Chào bạn Namhai,

Mong bạn hãy trình bày rõ hơn cái ý bạn muốn.

1/- Các đối tượng được chọn là loại đối tượng gì??? Có giống nhau hoàn toàn hay không???

2/- Mỗi lần sắp xếp lại một nhóm đối tượng riêng hay là sắp xếp tất cả các loại đối tượng một lần???

3/- Cách sắp xếp tính từ vị trí đã chọn ra sao ??? từ trái qua phải, từ trên xuông dưới, hay ngược lại, hay lấy vị trí chọn là vị trí trung tâm.....????

4/- Việc sắp xếp này có quan tâm tới trật tự phát sinh của các đối tượng hay không??? và nếu có thì theo nguyên tắc nào?????

 

Bạn nên cung cấp file mẫu và file kết quả bạn muốn để mọi người dễ hình dung.

Chúc bạn vui.

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
Chào bạn Namhai,

Mong bạn hãy trình bày rõ hơn cái ý bạn muốn.

1/- Các đối tượng được chọn là loại đối tượng gì??? Có giống nhau hoàn toàn hay không???

2/- Mỗi lần sắp xếp lại một nhóm đối tượng riêng hay là sắp xếp tất cả các loại đối tượng một lần???

3/- Cách sắp xếp tính từ vị trí đã chọn ra sao ??? từ trái qua phải, từ trên xuông dưới, hay ngược lại, hay lấy vị trí chọn là vị trí trung tâm.....????

4/- Việc sắp xếp này có quan tâm tới trật tự phát sinh của các đối tượng hay không??? và nếu có thì theo nguyên tắc nào?????

 

Bạn nên cung cấp file mẫu và file kết quả bạn muốn để mọi người dễ hình dung.

Chúc bạn vui.

e xin lỗi vì đã diễn đạt không rõ ràng, cảm ơn các bác đã quan tâm, đây là file mẫu, các bác xem qua có gì giúp đỡ e với

http://www.cadviet.com/upfiles/2/file_mau.rar

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
Tue_NV không hiểu tại sao chủ đề này của bạn đã post lâu rồi. Nay sao lại post ở đây nữa???

http://www.cadviet.com/forum/index.php?sho...c=11716&hl=

vâng, đúng rồi bác Tue_NV à, chủ đề này e đã hỏi trên Cadviet rùi nhưng vẫn chưa tìm được đáp án và e nghĩ vấn đề của e chác là phải dùng đến lisp thì mới giải quyết được nên e mạo muội mở lại Topic này 1 lần nữa trong mục Autolisp, mong bác giúp đỡ!!

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

Với text thì bạn có thể sử dụng lisp này của mình.

Thực ra là gồm 3 lisp.

- Lệnh FT: căn lề text, lisp này mình đã post tại đây

- Lệnh DF: dãn dòng các text cho đều nhau.

- Lệnh DFX: dàn đều các text theo hàng ngang với khoảng cách đều nhau (khoảng cách từ điểm đầu text này đến điểm cuối của text kia)

Kết hợp 3 lệnh này trong quá trình sử dụng sẽ được cái bạn cần.

(defun c:ft()
(setq txt (ssget '((0 . "*TEXT"))))
(setq mau (entget (car (entsel "\nChon text chuan"))))
(command "undo" "begin")
(setq oldos (getvar "osmode"))
(setq olcol (getvar "CEColor"))
(setq ollay (getvar "Clayer"))
(setq olstyle (getvar "textstyle"))
(setq TB  (textbox mau) LC  (car TB) RC (cadr TB) di (distance LC RC) i 0)
(setq h (cdr(assoc 40 mau)))
(setq x1 (cdr(assoc 10 mau)))
(setq x2 (list (+ (car x1) (* di 0.5) (* -0.03 h)) (cadr x1)))
(setq x3 (list (+ (car x1) di (* -0.06 h)) (cadr x1)))
(setq canle (cond (canle) ("Left")))
(initget "Left Center Right Fit")
(setq canle (cond ((getkword (strcat "\Vi tri can le [Left/Center/Right/Fit/]<" canle ">"))) (canle)))
(repeat (sslength txt)
(setq txt_ent (entget (ssname txt i)))
(setq txt_val (cdr(assoc 1 txt_ent)))
(setq txt_st (cdr(assoc 7 txt_ent)))
(setq txt_lay (cdr(assoc 8 txt_ent)))
(setq txt_h (cdr(assoc 40 txt_ent)))
(setq txt_fctr (cdr(assoc 41 txt_ent)))
(setq txt_clr (cdr(assoc 62 txt_ent)))
(setq y1 (cdr(assoc 10 txt_ent)))
(if (cdr(assoc 43 txt_ent)) (setq txt_fctr 1 y1 (list (car y1) (- (cadr y1) txt_h))))
(setq pt1 (list (car x1) (cadr y1)))
(setq pt2 (list (car x2) (cadr y1)))
(setq pt3 (list (car x3) (cadr y1)))
(command "-style" txt_st "" "" txt_fctr "" "" "" "" "clayer" txt_lay "color" txt_clr "osmode" 0)
(if (eq canle "Left") (command "text" pt1 txt_h 0 txt_val))
(if (eq canle "Center") (command "text" "C" pt2 txt_h 0 txt_val))
(if (eq canle "Right") (command "text" "R" pt3 txt_h 0 txt_val))
(if (eq canle "Fit") (command "text" "F" pt1 pt3 txt_h txt_val))
(setq i (+ i 1))
(command "color" "bylayer")
);repeat
(setvar "textstyle" olstyle)
(setvar "Clayer" ollay)
(setvar "CECOLOR" olcol)
(setvar "osmode" oldos)
(command "erase" txt "")
(prompt"\n[CAN LE TEXT] by Thaistreetz - huuthais@yahoo.com\n")
(command "undo" "end")
);end
;=====================================================================
;dan deu khoang cach cac hang text theo phuong Y
;=====================================================================
(defun ss2ent (ss / sodt index lstent)
(setq 	sodt (if ss (sslength ss) 0)
index 0)
(repeat sodt
(setq 	ent (ssname ss index)
index (1+ index)
lstent (cons ent lstent)
);setq
);repeat
(reverse lstent)
)
(defun c:df()
(setq oldos (getvar "osmode"))
(setq 	ss (ssget '((0 . "*TEXT")))
lst (ss2ent ss)
lst (vl-sort lst '(lambda (e1 e2) (< (cadr (assoc 10 (entget e1))) (cadr (assoc 10 (entget e2))))))
lst (vl-sort lst '(lambda (e1 e2) (> (caddr (assoc 10 (entget e1))) (caddr (assoc 10 (entget e2))))))
);setq
(command "undo" "begin")
(setvar "osmode" 15359)
(setq kc (getdist "\n Nhap khoang cach giua cac text"))
(setq ddau (cdr(assoc 10 (entget(car lst)))) i 0 a2 (ssadd))
(setq mau (entget (car (entsel "\nChon text chuan"))))
(setq ptmau (cdr(assoc 10 mau)))
(setq ym (cadr ptmau))
(foreach e lst
(setq ent (entget e))
(setq dcuoi (cdr(assoc 10 ent)))
(setq yi (cadr dcuoi))
(setq ddauu (list (car dcuoi) (- (cadr ddau) (* i kc))))
(if (= yi ym) (setq ptgoc (list (car dcuoi) (- (cadr ddau) (* i kc)))))
(setvar "osmode" 0)
(command "move" e "" dcuoi ddauu)
(setq 	a2 (ssadd e a2))
(setq i (1+ i))
);foreach
(command "move" a2 "" ptgoc ptmau)
(setvar "osmode" oldos)
(prompt"\n[Paragraph TEXT] by Thaistreetz - huuthais@yahoo.com\n")
(command "undo" "end")
(Princ)
);end
;=====================================================================
;dan deu khoang cach cac text theo phuong X
;=====================================================================
(defun c:dfx()
(setq oldos (getvar "osmode"))
(setq 	ss (ssget '((0 . "*TEXT")))
lst (ss2ent ss)
lst (vl-sort lst '(lambda (e1 e2) (< (cadr (assoc 10 (entget e1))) (cadr (assoc 10 (entget e2))))))
lst (vl-sort lst '(lambda (e1 e2) (> (caddr (assoc 10 (entget e1))) (caddr (assoc 10 (entget e2))))))
);setq
(command "undo" "begin")
(setvar "osmode" 15359)
(setq kc (getdist "\n Nhap khoang cach giua cac text"))

(setq ddau (cdr(assoc 10 (entget(car lst)))) i 0 di 0 a2 (ssadd))
(setq mau (entget (car (entsel "\nChon text chuan"))))
(setq ptmau (cdr(assoc 10 mau)))
(setq xm (car ptmau))
(foreach e lst
(setq ent (entget e))
(setq pti (cdr(assoc 10 ent)))
(setq xi (car pti))
(setq ddauu (list (+ (car ddau) di (* i kc)) (cadr ddau)))
(if (= xi xm) (setq ptgoc (list (+ (car ddau) di (* i kc)) (cadr ddau))))
(setq TBi  (textbox ent) LCi  (car TBi) RCi (cadr TBi) dii (distance LCi RCi) di (+ di dii))
(setvar "osmode" 0)
(command "move" e "" pti ddauu)
(setq 	a2 (ssadd e a2))
(setq i (1+ i))
);foreach
(command "move" a2 "" ptgoc ptmau)
(setvar "osmode" oldos)
(prompt"\n[Dan deu khoang cach TEXT theo phuong ngang] by Thaistreetz - huuthais@yahoo.com\n")
(command "undo" "end")
(Princ)
);end

với yêu cầu như trong hình của bạn thì chỉ cần dùng 2 lệnh FT và DF là đủ.

  • 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
Với text thì bạn có thể sử dụng lisp này của mình.

Thực ra là gồm 3 lisp.

- Lệnh FT: căn lề text, lisp này mình đã post tại đây

- Lệnh DF: dãn dòng các text cho đều nhau.

- Lệnh DFX: dàn đều các text theo hàng ngang với khoảng cách đều nhau (khoảng cách từ điểm đầu text này đến điểm cuối của text kia)

Kết hợp 3 lệnh này trong quá trình sử dụng sẽ được cái bạn cần.

(defun c:ft()
(setq txt (ssget '((0 . "*TEXT"))))
(setq mau (entget (car (entsel "\nChon text chuan"))))
(command "undo" "begin")
(setq oldos (getvar "osmode"))
(setq olcol (getvar "CEColor"))
(setq ollay (getvar "Clayer"))
(setq olstyle (getvar "textstyle"))
(setq TB  (textbox mau) LC  (car TB) RC (cadr TB) di (distance LC RC) i 0)
(setq h (cdr(assoc 40 mau)))
(setq x1 (cdr(assoc 10 mau)))
(setq x2 (list (+ (car x1) (* di 0.5) (* -0.03 h)) (cadr x1)))
(setq x3 (list (+ (car x1) di (* -0.06 h)) (cadr x1)))
(setq canle (cond (canle) ("Left")))
(initget "Left Center Right Fit")
(setq canle (cond ((getkword (strcat "\Vi tri can le [Left/Center/Right/Fit/]<" canle ">"))) (canle)))
(repeat (sslength txt)
(setq txt_ent (entget (ssname txt i)))
(setq txt_val (cdr(assoc 1 txt_ent)))
(setq txt_st (cdr(assoc 7 txt_ent)))
(setq txt_lay (cdr(assoc 8 txt_ent)))
(setq txt_h (cdr(assoc 40 txt_ent)))
(setq txt_fctr (cdr(assoc 41 txt_ent)))
(setq txt_clr (cdr(assoc 62 txt_ent)))
(setq y1 (cdr(assoc 10 txt_ent)))
(if (cdr(assoc 43 txt_ent)) (setq txt_fctr 1 y1 (list (car y1) (- (cadr y1) txt_h))))
(setq pt1 (list (car x1) (cadr y1)))
(setq pt2 (list (car x2) (cadr y1)))
(setq pt3 (list (car x3) (cadr y1)))
(command "-style" txt_st "" "" txt_fctr "" "" "" "" "clayer" txt_lay "color" txt_clr "osmode" 0)
(if (eq canle "Left") (command "text" pt1 txt_h 0 txt_val))
(if (eq canle "Center") (command "text" "C" pt2 txt_h 0 txt_val))
(if (eq canle "Right") (command "text" "R" pt3 txt_h 0 txt_val))
(if (eq canle "Fit") (command "text" "F" pt1 pt3 txt_h txt_val))
(setq i (+ i 1))
(command "color" "bylayer")
);repeat
(setvar "textstyle" olstyle)
(setvar "Clayer" ollay)
(setvar "CECOLOR" olcol)
(setvar "osmode" oldos)
(command "erase" txt "")
(prompt"\n[CAN LE TEXT] by Thaistreetz - huuthais@yahoo.com\n")
(command "undo" "end")
);end
;=====================================================================
;dan deu khoang cach cac hang text theo phuong Y
;=====================================================================
(defun ss2ent (ss / sodt index lstent)
(setq 	sodt (if ss (sslength ss) 0)
index 0)
(repeat sodt
(setq 	ent (ssname ss index)
index (1+ index)
lstent (cons ent lstent)
);setq
);repeat
(reverse lstent)
)
(defun c:df()
(setq oldos (getvar "osmode"))
(setq 	ss (ssget '((0 . "*TEXT")))
lst (ss2ent ss)
lst (vl-sort lst '(lambda (e1 e2) (< (cadr (assoc 10 (entget e1))) (cadr (assoc 10 (entget e2))))))
lst (vl-sort lst '(lambda (e1 e2) (> (caddr (assoc 10 (entget e1))) (caddr (assoc 10 (entget e2))))))
);setq
(command "undo" "begin")
(setvar "osmode" 15359)
(setq kc (getdist "\n Nhap khoang cach giua cac text"))
(setq ddau (cdr(assoc 10 (entget(car lst)))) i 0 a2 (ssadd))
(setq mau (entget (car (entsel "\nChon text chuan"))))
(setq ptmau (cdr(assoc 10 mau)))
(setq ym (cadr ptmau))
(foreach e lst
(setq ent (entget e))
(setq dcuoi (cdr(assoc 10 ent)))
(setq yi (cadr dcuoi))
(setq ddauu (list (car dcuoi) (- (cadr ddau) (* i kc))))
(if (= yi ym) (setq ptgoc (list (car dcuoi) (- (cadr ddau) (* i kc)))))
(setvar "osmode" 0)
(command "move" e "" dcuoi ddauu)
(setq 	a2 (ssadd e a2))
(setq i (1+ i))
);foreach
(command "move" a2 "" ptgoc ptmau)
(setvar "osmode" oldos)
(prompt"\n[Paragraph TEXT] by Thaistreetz - huuthais@yahoo.com\n")
(command "undo" "end")
(Princ)
);end
;=====================================================================
;dan deu khoang cach cac text theo phuong X
;=====================================================================
(defun c:dfx()
(setq oldos (getvar "osmode"))
(setq 	ss (ssget '((0 . "*TEXT")))
lst (ss2ent ss)
lst (vl-sort lst '(lambda (e1 e2) (< (cadr (assoc 10 (entget e1))) (cadr (assoc 10 (entget e2))))))
lst (vl-sort lst '(lambda (e1 e2) (> (caddr (assoc 10 (entget e1))) (caddr (assoc 10 (entget e2))))))
);setq
(command "undo" "begin")
(setvar "osmode" 15359)
(setq kc (getdist "\n Nhap khoang cach giua cac text"))

(setq ddau (cdr(assoc 10 (entget(car lst)))) i 0 di 0 a2 (ssadd))
(setq mau (entget (car (entsel "\nChon text chuan"))))
(setq ptmau (cdr(assoc 10 mau)))
(setq xm (car ptmau))
(foreach e lst
(setq ent (entget e))
(setq pti (cdr(assoc 10 ent)))
(setq xi (car pti))
(setq ddauu (list (+ (car ddau) di (* i kc)) (cadr ddau)))
(if (= xi xm) (setq ptgoc (list (+ (car ddau) di (* i kc)) (cadr ddau))))
(setq TBi  (textbox ent) LCi  (car TBi) RCi (cadr TBi) dii (distance LCi RCi) di (+ di dii))
(setvar "osmode" 0)
(command "move" e "" pti ddauu)
(setq 	a2 (ssadd e a2))
(setq i (1+ i))
);foreach
(command "move" a2 "" ptgoc ptmau)
(setvar "osmode" oldos)
(prompt"\n[Dan deu khoang cach TEXT theo phuong ngang] by Thaistreetz - huuthais@yahoo.com\n")
(command "undo" "end")
(Princ)
);end

với yêu cầu như trong hình của bạn thì chỉ cần dùng 2 lệnh FT và DF là đủ.

 

Bác bảo là các đối tượng cơ mà

thế mà làm được với mỗi TEXT

còn các đối tượng khác như LINE, PLINE, POLYLINE.... thì sao 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
Bác bảo là các đối tượng cơ mà

thế mà làm được với mỗi TEXT

còn các đối tượng khác như LINE, PLINE, POLYLINE.... thì sao bác????

Bạn thử quote lại cái chỗ tôi bảo là "Các đối tuợng" hộ tôi cái

Mắt để đâu vậy? Có đọc không?

Với text thì bạn có thể sử dụng lisp này của mình.

Với mỗi đối tuợng khác nhau thì thuộc tính khác nhau nên có cách làm việc khác nhau. khi nêu yêu cầu fải nêu rõ đối tuợng mà lisp tác động đến là gì? không thể đánh đồng text và các curve là một được. hãy nhớ cho điều này. OK?

  • 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

Mình cũng đang có 1 lisp giãn text tuy nhiên lúc giãn xong thì các text lại bị thay đổi thứ tự và bị "nhẩy" sang trái.Mong các bác có thể sửa hộ em với

 

(defun c:gc ()
 (BLIP)
 (command "redraw")
 (prompt "\nSelect text objects to evenly space: ")
 (setq ssText (ssget '((0 . "TEXT")))) ; select text
 (setq ssNumber (sslength ssText) ; lines of text
   	ssIndex  ssNumber ; pointer
ssY_Handles  '()  ; list of Y values and Handles
   	dYfactor 1.05  ; default Y displacement factor
 )
 (repeat ssNumber
(setq ssIndex (- ssIndex 1))
(setq eName (ssname ssText ssIndex)); entity name
(setq eData (entget eName))
(setq eY (car (assoc '10 eData))) ; entity Y location value
(setq eYe (/ eY 100000))  ; assure correct ordering
(setq eYe (+ eYe 5))
(setq eYe (rtos eYe 2 8))  ; change to a string
(setq eHnd (cdr (assoc '5 eData))) ; entity handle
(setq ssY_Handles
 	(cons (strcat eYe "*" eHnd)  ; add string to
       	ssY_Handles   ; list
 	)
)
 );repeat
 (setq ssY_Handles
(acad_strlsort ssY_Handles)  ; sort in order of Y value
 )
 (setq ssIndex  ssNumber ; pointer
   	ssY  '()  ; sorted list of Y values
   	ssHandles '()  ; sorted list of handles
 )
 (repeat ssNumber
(setq ssIndex (- ssIndex 1))
(setq eY_H	; entity Y value and handle
 	(nth ssIndex ssY_Handles)
)
(setq eSL (strlen eY_H))  ; entity string length
(setq eSLIndex 1)  ; pointer
(repeat eSL
 	(if (/=
       	(substr eY_H eSLIndex 1)  ; if substring is not "-"
       	"*"
     	)
     	(setq eSLIndex (+ eSLIndex 1)); go to next substring
 	)
); repeat
(setq eHnd
 	(substr eY_H (+ eSLIndex 1) eSL) ; entity handle
)
(setq
     	eName 	(handent   eHnd) ; get name of entity
     	eData 	(entget	eName) ; get entity data
     	eText 	(assoc 1   eData) ; get text
     	lName 	(assoc '-1 eData)
)
(if (= (- ssNumber 1) ssIndex) ; if this is first line of text
 	(progn
   	(setq
     	eX (cadr  (assoc '10 eData)) ; X location value
     	eY (caddr (assoc '10 eData)) ; Y location
     	eZ (cadddr(assoc '10 eData)) ; Z location
     	eX1 (cadr  (assoc '11 eData)) ; X location value
     	eY1 (caddr (assoc '11 eData)) ; Y location
     	eZ1 (cadddr(assoc '11 eData)) ; Z location
     	eH (cdr   (assoc '40 eData)) ; text height
     	eColor	(assoc 62  eData) ; color
   	); setq
   	(if (not eColor) (setq
          	eData  (subst '(62 . 256) (assoc 62 eData) eData))
   	)
   	(setq
     	feData    	eData
   	)
 	);progn
 	(progn
   	(setq eX  (- eX  (* eH dYfactor))) ; otherwise decrease y value
   	(setq eX1 (- eX1 (* eH dYfactor))) ; otherwise decrease y1 value
 	)
);if
(setq  	eXYZ   (list 10 eX  eY  eZ ))
(setq  	eXYZ1  (list 11 eX1 eY1 eZ1))
(setq  	eData   feData)
(setq  	eData  (subst eText   (assoc   1 eData) eData))
(setq  	eData  (subst eXYZ	(assoc '10 eData) eData))
(setq  	eData  (subst eXYZ1   (assoc '11 eData) eData))
(setq  	eData  (subst (cons 5 eHnd)	(assoc   5 eData) eData))
(setq  	eData  (subst lName   (assoc -1 eData) eData))
(entmod eData)   ; modify text entity
 ); repeat
 (unblip)
)
(defun BLIP ()
 (setq sblip (getvar "blipmode")
   	scmde (getvar "cmdecho")
 )
 (setvar "blipmode" 0)
 (setvar "cmdecho" 0)
 (princ)
)
(defun UNBLIP ()
 (setvar "blipmode" sblip)
 (setvar "cmdecho" scmde)
 (princ)
)
(princ)

:blush:

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

Chủ đề này còn thảo luận không ạ. Thấy giãn các đối tượng như LINE, PLINE, POLYLINE.... cũng hay!

Mong các huynh giúp đỡ?thanks các huynh nhiều nhiều!!

  • Vote giảm 2

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

Xin phép được đào topic lên chút, vì nay mình cũng có vấn đề này cần giúp đỡ, search trên mạng thì ra được topic này, mong mọi người giúp đỡ.

Các đối tượng ở đây, có lẽ là line, pline, arc, tròn, .... hình khối là dùng nhiều.

Thank!

  • Vote giảm 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
Vào lúc 6/10/2009 tại 08:51, namhai đã nói:

Chào các huynh!e đang gặp vấn đề khi phải sắp xếp các đối tượng (1 nhóm đối tượng) cách đều nhau, nếu phải căn chỉnh khoảng cách rồi move các nhóm đối tượng thì rất mất thời gian và lại không chính xác, vậy có cách nào giải quyết được vấn đề này không mong các huynh giúp đỡ?thanks các bác nhiều nhiều!!

P/S : Khi sắp xếp các đối tượng sẽ có 1 đối tượng làm gốc ( nghĩa là đối tượng đấy sẽ giữ nguyên vị trí, các đối tượng còn lại sẽ sắp xếp theo đối tượng gốc đấy) và có thể lựa chọn sắp xếp theo phương X, phương Y hoặc cả 2 phương

Thành viên mới . Xin đc làm quen các 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
(defun c:tt (/ *error* foo ss fn f a b l ls l1 lst); 

 
  (defun *error* (msg) 
    (if (and f (= (type f) 'FILE)) 
      (close f) 
      (setq f nil)
      ) 
    ) 
  
  (and (setq foo '((a b) (cdr (assoc a (entget b))))  
             ss (ssget' ((0 . "TEXT"))) 
             )) 
       (setq l (vl-remove-if 'listp) (mapcar 'cadr (ssnamex ss)))); (acet-ss-to-list ss) 
       (setq fuzz (* 0.25 (foo 40 (car l))) 
             ls (mapcar '(lambda (x) (cons (foo 1 x) (foo 10 x))) l) 
             ) 
       (setq fn (strcat (getvar 'tempprefix ) "copytext.txt" ))
       (setq f (open fn "w"))) 
       (setq l nil 
             sl (vl-sort ls 
                         '(lambda ( a  b ) 
                            ( if 
                             (equal (caddr a) (caddr b) fuzz) 
                             (<(cadr a) (cadr b))
                             (<(caddr a) (caddr b)) 
                             ) 
                            ) 
                         )

             a (caddar sl) 
             )

       (foreach x sl 
         (if (equal a (setq b (caddr x)) fuzz) 
           (setq l1 (cons x l1) 
                 a b 
                 ) 
           (setq l1 ( vl-list*  x nil l1)) 
           ) 
         (setq a b) 
         ); _ end of foreach 
       (foreach x (progn (foreach x l1 
                           (if x 
                             (setq l (cons xl))) 
                             (setq lst (cons l lst) 
                                   l nil 
                                   ) 
                             ) 
                           )) 
                         (setq lst (cons l lst))
                         (reverse (vl-remove nil lst)) 
                         ); progn 
         (write-line (apply 'strcat (mapcar '(lambda (x) (strcat x "\t"))) (mapcar 'car x))) f) 
         ) 
       (progn (if f 
                (close f) 
                ) 
              (vl-cmdf "_erase" ss "") 
       (startapp "notepad" fn) 
;;; (vl-cmdf "_.SHELL" (strcat "CLIP <" fn)) 
;;; (alert " Try [Ctrl ^C] or paste clipboard in the dwg! ") 
              ) 
       ); 
  (princ)
  ) 



mt2.gif.f557a5573a283d2d2cd6579b8443597d.gif

 

1.notepad copy [Ctrl+C] 

2.Acad paste [Ctrl+V]

3.Edit Mtext [Tab->]

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

×