whatcholingon
-
Số lượng nội dung
222 -
Đã tham gia
-
Lần ghé thăm cuối
-
Ngày trúng
6
Bài đăng được đăng bởi whatcholingon
-
-
Hình như các anh em đa hiểu nhầm ý của tui rồi. Ý tui muốn hỏi là làm cách nào để xóa các text đó đi 1 cách nhanh nhất với điều kiện nếu 2 hay 3 hay 4,.... text đè lên nhau thì sẽ tự chọn và giữ lại 1 text trong số các text đó mà thôi.
Dĩ nhiên sẽ có anh em thắc mắc làm sao đảm bảo độ chính xác của bản vẽ. Xin trả lời đó chỉ làm cho bản vẽ đơn giản, và in ấn cho đẹp. Còn khi cấp text point cho khách hàng thì phải cấp points cho đầy đủ thì tính khối lượng đào đắp mới chính xác được.
Nhờ anh em viết dùm 1 lisp có khả năng làm điều đó được.
Thanks.
Mọi người viết giùm mình lsp như trên với ah.
Mình giải thích thêm:
Trong bản vẽ có rất nhiều text ( dạng số là text cao độ):
trong đó, có text nó nằm đè lên nhau (text này chồng lên text kia ,có chỗ 2,3 text nó đè lên một text khác) giờ mình có thể xóa đi chỉ để lại một tetxt ( text nào cũng được)
Thanks
-
Bạn gửi bản vẽ của bạn lên đây!
-
Vấn đề bạn đặt ra Tue_NV thấy thiếu ý :
Chọn đối tượng mẫu ( mọi đối tượng) sau đó chọn vùng -> để chọn ra đối tượng giống đối tượng mẫu" ->
Tue_NV hỏi bạn giống chổ này hơi khó hiểu là giống cái gì -> Text thì giống nhau về nội dung hay Layer hay màu sắc...... và các đối tượng khác giống đối tượng mẫu về cái gì. Hay là giống nhau cả? (Chắc là không giống nhau hết được đâu bạn nhỉ?)
Vấn đề đặt ra của bạn tương đối hay nhưng thiếu dữ kiện nên phải đầy đủ mới có thể giải quyết được bạn ạ
Tue_NV hay sử dụng lệnh Fi để lọc các đối tượng có điều kiện khác nhau và viết Lisp có hay chăng nữa cũng không bằng lệnh Fi dược
Vậy trong trường hợp này sao không sử dụng lệnh Fi?????
Ở đây đối tượng mẫu cũng giống như nội dung như đối tượng TEXT.
VD: khi ta chọn một block thì khi đó những block cùng tên (or cùng một kiểu) sẽ được chọn,
Đối tượng line cùng màu thì cũng chọn hết.
...
ở lệnh FI nó mất công hơn một chút là nếu muốn chọn đối tượng về điểm trung thì phải xóa hết thông số riêng của đối tượng đó.
VD: mình muốn chọn hết TEXT trong bản vẽ thì chỉ để lại Objest là TEXT thui. còn lại là xóa layer, màu. linetype...
( Giờ mình cũng mới thấy phức tạp ở chỗ, Text thì nó chung một nội dung. còn các đối tượng khác. VD : khi chọn đối tượng LINE thì không biết nó lọc kiểu màu, layer., linetype or tọa độ nhỉ)
Chắc sài lệnh FI là chuẩn nhất.
-
Đây bạn ơi! Lisp chọn text cùng nội dung.
(defun C:HA( / txt) (setq txt (cdr (assoc 1 (entget (car (entsel "\nChon Text mau: ")))))) (princ "\nChon nhom Text...") (setq ss (ssget (list '(0 . "*TEXT") (cons 1 txt)))) (sssetfirst nil ss))
Mình thấy Lsp này cũng hay,
Lsp này có thể chỉnh sửa: Thay vì chọn đối tượng TEXT, mà là chọn đối tượng mẫu ( mọi đối tượng) sau đó chọn vùng thì có được không ah.
- 1
-
Bạn vào Format --> Text Style..
Sau đó chọn kiểu font ( VD: font Times new roman )cho bản vẽ thì dùng Unikey.
Còn các kiểu font khác thì bạn cài Vietkey để chọn kiểu gõ cho dễ.
-
Không biết tác giả bản vẽ này có dùng tiểu xảo gì không mà ở các đời cad cao thì không cóp gián được.
Nhưng ở cad r14 thì làm bình thường.
-
Cảm ơn các bạn đồng nghiệp!
Mình rất hay phải sử dụng file dữ liệu dạng này, nếu được xin nhờ các bạn sửa point thành vòng tròn. Nếu mà nhập được trực tiếp file từ excel hoặc từ word thì tốt quá
Mình đoán bạn này nhầm giữa POINT và CIRCLE tại vì trên cad khi vào POINT STYLE.. có thể đưa các POINT về nhiều kiểu khác nhau. trong đó có cái giống hình tròn.
Còn nếu mà bạn muốn chuyển các POINT thành các đường tròn thì có thể dùng LSP trong 4rum này:
-
Mình làm được rùi bạn ah. lúc trước mình làm không đúng nên nó không được.
lúc trước lệnh Flatten mình chỉ chọn nguyên Spl mà không chọn text nên không được.
-
Command: flatten
Initializing...
Select objects to convert to 2d...
Select objects: Specify opposite corner: 18 found, 1 group
Select objects:
Remove hidden lines? <No>:
Command: textmask
Initializing...
Current settings: Offset factor = 3.0000, Mask type = 3dface
Select text objects to mask or [Masktype/Offset]:
Other corner: 18 found
Select objects:
17 found
Current settings: Offset factor = 3.0000, Mask type = 3dface
Select text objects to mask or [Masktype/Offset]: m
Mask type currently set to 3dface
Specify entity type to use for mask [Wipeout/3dface/Solid] <3dface>: w
Loading WIPEOUT for use with TEXTMASK...
Current settings: Offset factor = 3.0000, Mask type = Wipeout
Select text objects to mask or [Masktype/Offset]:
17 text items have been masked with a Wipeout.
-
Cam on Mr DVH & Ketxu nhé. Hôm nay mình hết quền Thanks. Để mai mình pick Like This nhé.
Mình làm theo như DVH (lệnh Flatten ) rồi mà vẫn không được. khi dùng lện xong thì mình thấy text
có có thêm cái gì đó thui chứ nó không che đường pl đi
-
-
Đừng Break vì như vậy nó sẽ mất tính năng của Spline, hãy dùng textmask của Express hoặc 1 lisp bác Thái viết lại để dùng với cả Anonation Text
Mr Thai có thể gửi cho mình xin cái lsp giống lệnh textmask được không ah?
Mình không biết nó tên gì để tìm kiếm cả
Thanks!
-
Mình làm như thế này:
command: Textmask
Select text objects to mask or [Masktype/Offset]: M
Specify entity type to use for mask [Wipeout/3dface/Solid] <Wipeout>: W
Select text objects to mask or [Masktype/Offset]: CHỌN ĐỐI TƯỢNG
SAU ĐÓ CÁC TEXT VẪN TRƠ TRƠ VẬY KHÔNG CHE ĐƯỜNG SPL
-
Mọi người cho hỏi sao khi mình sử dụng lệnh Textmask xong mà sao
cái text được chọn nó không che đường SPL nhỉ
-
Sửa lại cho bạn đây :
(defun c:test ( / e ss) (vl-load-com) (setq i -1) (if (setq ss (ssget '((0 . "*TEXT")))) (while (setq e (ssname ss (setq i (1+ i)))) (entmakex (append (list (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity") (cons 100 "AcDbPolyline") (cons 90 4) (cons 70 1)) (mapcar '(lambda ( p ) (cons 10 p)) (LM:BoundingBox (vlax-ename->vla-object e))))))) (princ)) (defun LM:BoundingBox ( object / lowerleft upperright ) (if (vlax-method-applicable-p object 'GetBoundingBox) ((lambda ( boundingbox ) (mapcar (function (lambda ( _functionlist ) (mapcar (function (lambda ( _function ) ((eval _function) boundingbox))) _functionlist))) '((caar cadar) (caadr cadar) (caadr cadadr) (caar cadadr)))) (mapcar 'vlax-safearray->list (progn (vla-getBoundingBox object 'lowerleft 'upperright) (list lowerleft upperright))))))
Thanks ban nhieu!
-
Mình đang thử tạo đường viền cho các text đó sau đó dùng lsp Trim các đối tượng giao nhau xem có được không.
-
Ở đây mình có lisp tạo đường viền cho text ( không biết tác giả)
ở Lsp này khi đánh lệnh nó chỉ chọn được một text
Mọi người chỉnh giúp mình là chọn được nhiều đối tượng text một lúc không ah.
Đây là lisp đó:
;; free lisp from cadviet.com ;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=63121&pid=195690&st=0entry195690 ;----- Example Calling Function: This example will create an LWPolyline describing the bounding box of the selected object. (defun c:test ( / e ) (vl-load-com) (if (setq e (car (entsel))) (entmakex (append (list (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity") (cons 100 "AcDbPolyline") (cons 90 4) (cons 70 1)) (mapcar '(lambda ( p ) (cons 10 p)) (LM:BoundingBox (vlax-ename->vla-object e)))))) (princ)) (defun LM:BoundingBox ( object / lowerleft upperright ) (if (vlax-method-applicable-p object 'GetBoundingBox) ((lambda ( boundingbox ) (mapcar (function (lambda ( _functionlist ) (mapcar (function (lambda ( _function ) ((eval _function) boundingbox))) _functionlist))) '((caar cadar) (caadr cadar) (caadr cadadr) (caar cadadr)))) (mapcar 'vlax-safearray->list (progn (vla-getBoundingBox object 'lowerleft 'upperright) (list lowerleft upperright))))))
Thanks!
-
Vậy muốn break cũng không có cách nào à bạn
-
Bạn có thể nói rõ thao tác của lệnh Textmask không. mình thực hiền mà không được
. ở đây mình phải br nó đi để nhìn cho rễ.
(Nếu không Break thì mình có cách làm như thế này: Tạo block cái text đó có cả WIPEOUT sau đó dùng lệnh MEASURE là OK)
Nhưng sếp lại kêu là Break đi bạn ah.
-
Nhân tiện đây.Mọi người cho mình hỏi là thể viết lsp làm được như vậy không:
Mình có 1 đường SPL trong đó có các text nằm đè lên trên spl đó.
Vậy có cách nào or Lsp mà :
Break được đoạn spl mà text nó đè lên không vậy.
Như trong hình dưới đây:
Thanks!
-
Nếu muốn làm mịn đi thì loại bỏ các điểm ở giữa, bạn sử dụng thằng này. Độ làm mịn càng lớn thì số đỉnh của Pline bị loại bỏ càng lớn. Ở máy của mình lấy ví dụ tầm 30 là đẹp :) Lần sau chịu khó trình bày kỹ hơn chút nữa hén, do mình hơi dốt nên dễ hiểu nhầm
(defun c:p2s(/ ss lstPro MakeSPline ST:Geom-Vertext-List lstPro) (command "undo" "be") (setq a (getint "\nDo lam min :")) (prompt "\nChon Pline(s) :") (cond ( (ssget (list (cons 0 "*POLYLINE"))) (vl-load-com) (setq lstPro '(Linetype LinetypeScale Layer Color)) (defun lstRe (lst n / rt sublst);(1 2 3 4) (defun sublst(lst it)(repeat (1- it) (setq lst (cdr lst)))) (while lst (setq rt (cons (car lst) rt) lst (sublst lst n)) ) (reverse (vl-remove nil rt)) ) (defun MakeSPline (listpoint Linetype LTScale Layer Color / Lst) (setq lst (list '(0 . "SPLINE")'(100 . "AcDbEntity") (cons 8 (if Layer Layer (getvar "Clayer"))) (cons 6 (if Linetype Linetype "bylayer")) (cons 48 (if LTScale LTScale 1)) (cons 62 (if Color Color 256)) '(100 . "AcDbSpline") (cons 71 3) (cons 74 (length listpoint)))) (foreach PP listpoint (setq Lst (append Lst (list (cons 11 PP))))) (entmakex Lst) );end (defun ST:Geom-Vertext-List (e / typ poly) ;vlaObject (setq typ (vlax-get e 'ObjectName)) (cond ((wcmatch typ "AcDbLine")(list (vlax-get e 'StartPoint)(vlax-get e 'EndPoint))) (T ( (lambda ( f /) (if (setq poly (vl-position typ '("AcDbPolyline" "AcDb2dPolyline" "AcDb3dPolyline"))) (f (vlax-get e 'coordinates)) ) ) (lambda ( l ) (cond ((and l (= poly 0)) (cons (list (car l) (cadr l)) (f (cddr l)))) ((and l (= poly 1)) (cons (list (car l) (cadr l)) (f (cdddr l)))) ((and l (= poly 2)) (cons (list (car l) (cadr l) (caddr l)) (f (cdddr l)))) ) ) ) ) ) ) (vlax-for x (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object))) (apply 'MakeSPline (append (list (lstRe (ST:Geom-Vertext-List x) a)) (mapcar '(lambda(a)(vlax-get x a)) lstPro) ) ) (vla-erase x) ) ) ) (command "undo" "en") )
Thanhs!
Bạn khiêm tốn quá ! mình muốn dốt như bạn mà còn chẳng được nữa là.
Về diễn giải hay trình bày một cái gì đó thì mình kém lắm. (văn học mình học cực dốt mà)
Mọi người thông cảm.
-
Chẳng phải yêu cầu của bạn chính là chuyển Pline thành SPline đó sao ? Mà spline mới chỉ có thể tạo được trên cơ sở các điểm của Pline cũ :o
Mình muốn giữ chân thực số lượng điểm, còn theo bản vẽ của bạn là lược bớt điểm đi ?
Hiện tại trên bản vẽ của mình pl. giờ tạo một PL or SPL miễn sao là bám theo đường PL cũ không quan trọng nhiều điểm hoặc ít điểm.
Miễn sao nhìn nó trơn đều là được, như ở hình vẽ là mình làm thủ công vẽ một SPL theo cái đường PL đó để nhìn nó được trơn và đẹp hơn. không bị gấp khúc nữa.
Bạn nhìn kỹ ở hình or trong bản vẽ nhé. Hình Pl thì không trơn và đẹp bằng Spl mình mới vẽ.
-
Mình Làm trên cad 2010 thì lisp chạy rùi bạn ah.
Mà hình như lsp này là chuyển Pl thành Spl bạn ah.
Bạn có thể viết lsp chạy như bản vẽ mình up lên được không.
tại vì pl có nhiều chỗ gấp khúc giờ miễn sao chạy nhìn nó trơn đều. và nhìn không bị gấp khúc nữa.
Bạn nhìn ở hình. nét đầu tiên có nhiều chỗ gấp khúc. nét thứ hai ( trắng) nhìn trơn đều hơn.
chỉ cần bám theo pl cũ. những chỗ gấp khúc có thể cho chạy trơn đều có thể xê dịch 0.5m cũng được.
Thanks.
-
Mình đánh vào rùi chọn đối tượng nhưng vẫn báo lỗi trên. bạn sửa giúp mình với.
Cách xóa các text point bị trùng nhau
trong AutoLisp
Đã đăng · Trả lời báo cáo
Mình tìm thấy rùi.
vậy mà không biết. xóa thủ công cả tuần nay. (ới giời ơi.)