ui_troi_2005 5 Báo cáo bài đăng Đã đăng Tháng 3 11, 2009 Bạn dùng tạm lisp này xem thử có ổn không.Lưu ý: mỗi lần chạy lệnh SCC, các đối tượng được chọn phải có cùng 1 kiểu dimstyle ;;;------------------------------------------------------------- (defun ss2ent (ss / i Le e);;;Convert ss to list of ename (setq i 0 Le nil) (repeat (sslength ss) (setq e (ssname ss i) Le (append Le (list e)) i (1+ i) ) ) Le ) ;;;------------------------------------------------------------- (defun upd_dim( ssd) (setq e (ssname ssd 0) d (entget e) dtype (cdr (assoc 3 d)) dt (tblsearch "dimstyle" dtype) k0 (cdr (assoc 144 dt)) ks (cdr (assoc 40 dt)) newdtype (strcat dtype "x" (rtos k)) ) (command "dimstyle" "r" dtype) (setvar "dimlfac" (/ k0 k)) (setvar "dimscale" (* ks k)) (if (tblsearch "dimstyle" newdtype) (command "dimstyle" "r" newdtype) (command "dimstyle" "s" newdtype) ) (command "dimstyle" "a" ssd "") ) ;;;------------------------------------------------------------- (defun C:SCC( / ss ssd L p k ks e d dtype dt k0 newdtype) (setq ss (ssget) ssd (ssget "p" '((0 . "DIMENSION"))) L (ss2ent ss) p (getpoint "\nDiem chuan:") k (getreal "\nScale factor:") ) (if (> k 1) (progn (command "scale" ss "" p k) (if ssd (upd_dim ssd))) (progn (if ssd (upd_dim ssd)) (command "scale" ss "" p k)) ) (princ) ) ;;;------------------------------------------------------------- Chào bác SSG. Em cảm ơn bác đã giúp em, cái lisp rất hay, nó đã scc đúng tất cả như em muốn. Nhưng đúng như lời bác nói nó ko thể làm tốt khi bản vẽ có nhiều Dimension style, có lẽ lần sau em sẽ hạn chế các Dimension style. Rất cảm ơn bác. Chúc bác luôn luôn vui vẻ với những gì đã chia sẻ với mọi người. 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
ssg 1.102 Báo cáo bài đăng Đã đăng Tháng 3 13, 2009 Chào bác SSG.Em cảm ơn bác đã giúp em, cái lisp rất hay, nó đã scc đúng tất cả như em muốn. Nhưng đúng như lời bác nói nó ko thể làm tốt khi bản vẽ có nhiều Dimension style, có lẽ lần sau em sẽ hạn chế các Dimension style. Rất cảm ơn bác. Chúc bác luôn luôn vui vẻ với những gì đã chia sẻ với mọi người. Mời bạn sang đây: http://www.cadviet.com/forum/index.php?showtopic=9561 Lệnh SCC đã hoàn thiện, chấp nhận Multi-Dimstyle, kèm theo một số bonus khác nữa... 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
Nộ Thiên 133 Báo cáo bài đăng Đã đăng Tháng 3 13, 2009 Mời bạn sang đây: http://www.cadviet.com/forum/index.php?showtopic=9561 Lệnh SCC đã hoàn thiện, chấp nhận Multi-Dimstyle, kèm theo một số bonus khác nữa... Lúc trước trong topic fakedim mình cũng có 1 chút suy nghĩ về vấn đề này nhưng khi nghĩ đến yếu tố "khoảng cách từ đường kích thước đến Object" thì nản (tạm đặt là biến Ldim nào đó đi). Bởi lúc đầu các Object ở tỷlệ x nào đó Ldim = 8 --> 10mm (đơn vị giấy), cái này tuỳ người vẽ. Sau khi scale lên thì liệu giá trị Ldim nó có còn giữ nguyên đc hay kg? Nếu giải quyết đc vấn đề này thì còn tiếp phải xử lý ở lớp Dim thứ 2, 3...liệu vị trí các lớp dim này có chính xác chưa? Kg biết Bác SSG đã có hướng giải quyết vấn đề này chưa? 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
ssg 1.102 Báo cáo bài đăng Đã đăng Tháng 3 13, 2009 Lúc trước trong topic fakedim mình cũng có 1 chút suy nghĩ về vấn đề này nhưng khi nghĩ đến yếu tố "khoảng cách từ đường kích thước đến Object" thì nản (tạm đặt là biến Ldim nào đó đi).Bởi lúc đầu các Object ở tỷlệ x nào đó Ldim = 8 --> 10mm (đơn vị giấy), cái này tuỳ người vẽ. Sau khi scale lên thì liệu giá trị Ldim nó có còn giữ nguyên đc hay kg? Nếu giải quyết đc vấn đề này thì còn tiếp phải xử lý ở lớp Dim thứ 2, 3...liệu vị trí các lớp dim này có chính xác chưa? Kg biết Bác SSG đã có hướng giải quyết vấn đề này chưa? Ssg chưa đặt vấn đề này ra bao giờ, vì thật sự ssg rất ít khi có nhu cầu. Nếu phải sử dụng SCC thì chỉ thực hiện cho một vài hình đơn giản, trong vài trường hợp bất đắc dĩ nào đó, vị trí Dim mình tự xử bằng tay. Nếu cần, bạn thử làm theo hướng sau đây xem sao. Tham khảo hình vẽ sau: Bình thường, nếu để yên như vậy, khi chạy Scale với tỷ lệ k chẳng hạn (SCC thực chất là dùng Scale), khoảng cách L sẽ bị co dãn tương ứng theo k. Dim được định vị bằng các điểm p1, p2, p3 (là các điểm do user pick khi chạy lệnh Dim). Các mã DXF tương ứng của chúng là 13, 14, 11. Trước khi chạy scale, ta làm trước các động tác sau: 1. Lấy toạ độ p1, p2, p3 2. Xác định vị trí điểm p4 (vuông góc với p1p2 từ p3) 3. Tính L1 = L/k -> xác định được điểm p5 4. Subst data và Entmod cho p3 về p5 Kết quả: sau khi scale, khoảng cách từ dim đến đường p1p2 sẽ đúng bằng L như ban đầu. Cách thức này chỉ dùng được nếu các điểm p1, p2 của Dim còn nằm trên đối tượng. Nếu đã bị edit (cắt chân đi) thì... bó tay! 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
kts_k80 3 Báo cáo bài đăng Đã đăng Tháng 3 13, 2009 Lý do: Ssg luôn luôn ủng hộ cách vẽ theo kích thước thật của đối tượng. Khi cần thể hiện nhiều tỷ lệ trong 1 bản vẽ thì dùng layout. Các thao tác scale hình rồi sửa dim là việc làm không khuyến khích.Có lẽ mình quá cực đoan chăng? ;----------- Tôi cũng thấy đồng ý với ý kiến của bạn ssg. Trong một trường hợp khác, ví dụ bản vẽ tl1/100, thấy giấy còn trống quá, muốn chèn chi tiết tỉ lệ 1/20, mà chi tiết ấy được tuân thủ vẽ theo tỉ lệ thực, nên nó bé tí ti, đành phải phóng to lên, gấp 5 lần. Trường hợp thứ nhất, chưa ghi kích thước cho hình vẽ, Việc phóng to gấp 5 lần cái hình vẽ giá trị khi ghi kích thước sẽ to gấp 5 lần, còn hình dạng của chi tiết tạo nên kích thước không đổi. Như vậy, chỉ sửa một biến của dim thôi. (dimlfac) Trường hợp thứ hai, hình vẽ tl 1/20 đã ghi kích thước với kiểu phù hợp, thì ngoài sửa biến trên, cần sửa thêm một biến nữa. (dimscale) Việc dùng layout khi vẽ cad thì riêng tôi thấy ...không khoái lắm, nếu chỉ là bản vẽ 2d. 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
quansla 259 Báo cáo bài đăng Đã đăng Tháng 12 5, 2011 Bạn nên tìm hiểu cách dùng layout đi, với việc sử dụng nhìu tỷ lệ thì layout là có lợi nhất 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
only102 15 Báo cáo bài đăng Đã đăng Tháng 12 6, 2011 Em nhờ các bác viết hộ em một Lisp về scale trong cad có lệnh sc nhưng sử dụng lệnh đó không thể giữ nguyên các kích thước mà nó bị thay đổi theo tỉ lệ scale, khi scale nhỏ lại nó sẽ bị các đường ghi KT che kín hết, khi đó phải đi ghi lại KT trong diễn đàn có lisp scc nhưng nó không scale các đường kthước và cỡ chữ ghi trên đó, sũng như lệnh trên khi scale nhỏ lại nó sẽ bị các đường ghi KT che kín hết, khi đó phải đi ghi lại KT Em muốn các bác giúp em scale mà toàn bộ mọi loại đường, chữ số, mũi tên nghi KT, ... đều theo tỉ lệ scale đã chọn Em xin chân thành cảm ơn. Chao ban 'ui_troi_2005' Theo mình hiểu thì bạn muốn scale bản vẽ nhỏ xuống mà vẫn giữ nguyên giá trị kích thước, tỷ lệ của text dim với bản vẽ vẫn giữ nguyên. Vậy bạn có thể sử dụng ngay các phương pháp hiệu chỉnh trong cad mà cũng chẳng tốn công tẹo nào. Bạn hãy cứ scale toàn bộ bản vẽ, ví dụ 1/10, sau đó vào dimstyle trong "Fit" trong mục "Use overall scale of" bạn cho nhỏ xuống 10 lần. Rồi chuyển sang "Primary Units" trong mục "Measurement scale" bạn đặt Scale factor là 0.1. Mọi thứ sẽ như ý bạn muố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