

Black Roses
-
Số lượng nội dung
18 -
Đã tham gia
-
Lần ghé thăm cuối
-
Ngày trúng
1
Bài đăng được đăng bởi Black Roses
-
-
20 phút trước, Nguyen Hoanh đã nói:Sao bạn không thử dùng bock attribute,
1 block chứa các text thuộc tính.
Thống kê rất dễ bằng lệnh ATTOUT.
Dạ khi thống kê thì em dùng lisp khác rồi ạ, cái này là cần tạo ra Mtext rồi đặt phía dưới bản vẽ, để dễ quản lý phôi nào dành cho bản vẽ nào đó ạ :D. Hiện tại thì Mtext đó em tạo 1 cái mẫu, xong rồi copy qua bản vẽ kế bên rồi chỉnh sửa cho đúng, có khi copy mà quên chỉnh nên nó sai :(.
Với lại em nghĩ giá trị kích thước khi mình ghi ra đâu phải là block đâu ạ :(
-
Chào các anh/chị,
Em là sinh viên mới ra trường làm về bên Cơ khí, công việc của em là thống kê kích thước phôi từ các bản vẽ chi tiết để lặp danh sách mua phôi về gia công.
Việc đơn giản nhưng thao tác lặp đi lặp lại rất nhiều, dễ có sai sót, vì vậy nay em xin nhờ anh/chị viết giùm em 1 lisp (hoặc bằng VBA) để thực hiện công việc đó.
Ý tưởng để viết chương trình thế này:
- B1: Em sẽ chọn text ghi vật liệu (Nhôm, sắt, inox,...), chọn số lượng của chi tiết (theo bản vẽ)
- B2: chọn 3 (hoặc 2) kích thước cơ bản của phôi gồm chiều dày phôi, chiều rộng và chiều dài (nếu phôi tròn thì chọn đường kính và chiều dài)
- B3: xét các điều kiện của 3 kích thước trên mà tạo thành 1 Mtext (dạng top center, size 10) rồi chọn điểm đặt vào bản vẽ (thường là phía dưới bản vẽ chi tiết)
Lặp lại các thao tác trên...
Các điều kiện về 3 kích thước cơ bản như sau: (chiều rộng luôn nhỏ hơn chiều dài)
- Khi dày <20mm, nếu dài <400, thì cộng rộng và dài thêm 3mm, chiều dày làm tròn lên (theo dãy tiêu chuẩn). Nếu dài >400 thì cộng dài, rộng thêm 5mm, dày cũng làm tròn lên theo tiêu chuẩn
- Khi dày >20, nếu dài<400 thì dài và rộng cộng thêm 5mm, nếu dài >400 thì dài và rộng cộng thêm 8mm
- Chiều dày phôi sẽ phụ thuộc vào loại phôi mà có dãy kích thước tiêu chuẩn khác nhau (em có thể bổ sung hoặc chỉnh sửa nếu cần), được ghi trong file cad đính kèm.
Mong được sự giúp đỡ của mọi người,
Chúc cả nhà buổi chiều vui vẻ ^^
-
1
-
-
Vào lúc 11/2/2007 tại 08:25, ssg đã nói:Bạn dùng thử chương trình sau. Có 2 lệnh:
1) Lệnh OD: Ordinate number with any format. Đánh số thứ tự với bất kỳ định dạng nào: số, chữ, chữ và số. Ví dụ:
Command: od
Begin at <1>: HTT-01-03. Nếu không nhập số, bấm Enter sẽ mặc định từ 1
Increment <1>: 3. Nếu không nhập số, bấm Enter sẽ lấy mặc định là 1
Base point <exit>: chỉ điểm -> HTT-01-03
Base point <exit>: chỉ điểm -> HTT-01-06
Base point <exit>: chỉ điểm -> HTT-01-09
.........
Đến khi... chán thì:
Base point <exit>: Enter -> Thoát
2) Lệnh OC: Ordinate number, Copy from template. Đánh số thứ tự bằng cách copy mẫu có sẵn. Hoạt động giống như trên, nhưng thay vì "Begin at" thì chọn một mẫu có sẵn và 1 điểm tham chiếu làm chuẩn (tương tự như trình của bạn Lê Huy Hà nhưng có thêm tính năng tùy chọn Increment theo ý bạn).
Các bạn dùng nếu thấy có gì bất ổn thì phản hồi để mình sửa.
;;;------------------------------------------------------------------------------------ (defun getTw() ;;;Get textstyle (cdr (assoc 41 (tblsearch "style" (getvar "textstyle")))) ) ;;;------------------------------------------------------------------------------------ (defun getTh( / Th) ;;;Get textheight or textsize (if (= (setq Th (cdr (assoc 40 (tblsearch "style" (getvar "textstyle"))))) 0) (getvar "textsize") Th) ) ;;;------------------------------------------------------------------------------------ (defun emkT (S p) ;;;Entmake text S at p (entmake (list (cons 0 "TEXT") (cons 10 p) (cons 40 (getTh)) (cons 41 (getTw)) (cons 1 S) (cons 7 (getvar "textstyle")))) ) ;;;------------------------------------------------------------------------------------ (defun incN (n dn / n2 i n1) ;;;Increase number n (setq n2 (itoa (+ dn (atoi n))) i (- (strlen n) (strlen n2)) ) (if (> i 0) (setq n1 (substr n 1 i)) (setq n1 "")) (strcat n1 n2) ) ;;;------------------------------------------------------------------------------------ (defun incC (c / i c1 c2) ;;;Increase character c (setq i (strlen c) c1 (substr c 1 (- i 1)) c2 (chr (1+ (ascii (substr c i 1)))) ) (if (or (= c2 "{") (= c2 "[")) (progn (command "erase" (entlast) "") (alert "Over character!") (exit)) (strcat c1 c2) ) ) ;;;============================================== (defun C:OD( / cn dn c n p) ;;;Make OrDinal number with any format (setq cn (getstring "\nBegin at <1>: " T) dn (getint "\nIncrement <1>: ") ) (if (not dn) (setq dn 1)) (if (= cn "") (setq cn "1")) (setq c (vl-string-right-trim "0 1 2 3 4 5 6 7 8 9" cn)) (setq n (vl-string-subst "" c cn)) (if (/= n "") (setq mode 1) (setq mode 0)) (while (setq p (getpoint "\nBase point <exit>: ")) (emkT cn p) (if (= n "") (setq cn (incC cn)) (setq cn (strcat c (incN (vl-string-subst "" c cn) dn))) ) ) (princ) ) ;;;============================================== (defun C:OC( / e dn p1 cn c n p2 dat) ;;;Make Ordinal number. Copy from template (setq e (car (entsel "\nSelect template text:")) dn (getint "\nIncrement <1>: ") p1 (getpoint "\nBase point:") cn (cdr (assoc 1 (entget e))) ) (if (not dn) (setq dn 1)) (if (= cn "") (setq cn "1")) (setq c (vl-string-right-trim "0 1 2 3 4 5 6 7 8 9" cn) n (vl-string-subst "" c cn) ) (while (setq p2 (getpoint p1 "\nNew point <exit>: ")) (command "copy" e "" p1 p2) (if (= n "") (setq cn (incC cn)) (setq cn (strcat c (incN (vl-string-subst "" c cn) dn))) ) (setq dat (entget (entlast)) dat (subst (cons 1 cn) (assoc 1 dat) dat) ) (entmod dat) ) (princ) ) ;;;==============================================
Cho em hỏi là sao khi dùng lệnh OD thì đánh số thứ tự rất ok, mà không cho chọn điểm tham chiếu chuẩn (như của lệnh OC) nên text đánh ra nó bị nhảy đi chỗ khác, có cách nào giải quyết được không ạ :D
-
theo mình nghĩ thì Weldment trong SW sẽ làm được, bác gg tìm hiểu cách dùng nhé, rồi cách tạo đường kính ống theo nhu cầu riêng nữa, thế là xong, mình cũng hay làm về dạng này
-
Kịp thời}}, Doan Van Ha cho biết:;; free lisp from cadviet.com ;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=65674&pid=217437&st=20entry217437 (defun c:xtxt () (vl-load-com) (setq oldos (getvar "osmode")) (setvar "osmode" 0) (setq tmp (getfiled "Chon file xuat Text goc" (getvar "dwgprefix") "csv;txt" 1)) (setq fw (open tmp "a")) (setq p1 (getpoint "\n Chon diem dat bang")) (setq h (getreal "\n Nhap chieu cao chu: ")) (alert "\n Chon lan luot cac text can xuat trong mot nhom ") (setq sst (ssget (list (cons 0 "*text")))) (while sst (setq sstl (vl-remove-if 'listp (mapcar 'cadr (ssnamex sst))) ; (setq sstl (acet-ss-to-list sst) p2 (polar p1 0 (* 8 h)) p3 (polar p2 0 (* 8 h)) p4 (polar p3 0 (* 8 h)) p5 (polar p4 0 (* 8 h)) p6 (polar p5 0 (* 8 h)) p7 (polar p6 0 (* 8 h)) p8 (polar p7 0 (* 8 h)) p9 (polar p8 0 (* 8 h)) p11 (polar p1 (- (/ pi 2)) (* 4 h)) p12 (polar p2 (- (/ pi 2)) (* 4 h)) p13 (polar p3 (- (/ pi 2)) (* 4 h)) p14 (polar p4 (- (/ pi 2)) (* 4 h)) p15 (polar p5 (- (/ pi 2)) (* 4 h)) p16 (polar p6 (- (/ pi 2)) (* 4 h)) p17 (polar p7 (- (/ pi 2)) (* 4 h)) p18 (polar p8 (- (/ pi 2)) (* 4 h)) p19 (polar p9 (- (/ pi 2)) (* 4 h)) p21 (list (+ (car p1) (* 4 h)) (- (cadr p1) (* 2 h))) k 0 txl "" ) (command "pline" p1 p9 p19 p11 "c") (command "pline" p2 p12 "" ) (command "pline" p3 p13 "" ) (command "pline" p4 p14 "" ) (command "pline" p5 p15 "" ) (command "pline" p6 p16 "" ) (command "pline" p7 p17 "" ) (command "pline" p8 p18 "" ) (foreach txt sstl (setq t1 (cdr (assoc 1 (entget txt))) txl (strcat txl t1 ",") ) (command "text" "j" "mc" (list (+ (car p21) (* k 8 h)) (cadr p21)) h 0 t1) (setq k (1+ k ) ) ) (write-line txl fw) (alert "\n Tiep tuc chon lan luot cac text can xuat cho nhom ke tiep") (setq sst (ssget (list (cons 0 "*text")))) (setq p1 p11) ) (close fw) (setvar "osmode" oldos) (princ) )
Hi anh,
Em đã dùng lisp này thì phần xuất ra CSV rất đúng ý em muốn, nhưng em làm bên Cơ khí nên chỉ cần lấy phần text trong file CSV là đủ, dù nó không đúng bảng mã tiếng Việt cũng không sao, nhưng em không cần dùng xuất ra bảng trong cad, nghĩa là bỏ biến p1 và h trong đoạn code, mà em thì không rành lisp nên không biết cách xóa như thế nào, mong được anh giúp đỡ ạ ^^
-
Cách đây không lâu có 1 bác share file dùng VBA thực hiện được chức năng như bạn yêu cầu, thao tác nhanh gọn lắm, bác tìm lại đi
-
Chào mọi người, em có đang tìm lisp thực hiện chức năng cũng giống giống thế này, trước đây đã dùng rồi mà giờ không thể tìm lại được nữa. Đó là em mở file cad lên, rồi mở 1 file excel lên, sau đó chọn 1 text (hoặc Mtext) thì nó sẽ tự động lấy giá trị đó dán qua bên file excel, tương tự như thế này ạ
http://www.autocadproblems.com/2014/12/export-texts-to-excel-sheet-autocad-to_20.html
Em có tải cái đó về, nhưng không dùng được ạ :(, em đang dùng cad 2007, nó bảo lỗi NIL gì gì đó, em không biết sửa.
Mong được sự giúp đỡ, chân thành cảm ơn :)
-
add fb mình nhé: phan kiên (avatar là hình chiếc ô màu xanh)
Dạ em đã add rồi đó, fb là GMMT ak
-
sau khi chọn nguyên khối để smooth thì nó bị lun một số mặt khác bác ơi :(
-
up...
help me...
-
Chào tất cả các thành viên của diễn đàn, em là thành viên mới ạ.
Tình hình là em có việc dùng đến 3DS Max để vẽ một số model, trải UV và xuất file Object, chỉ đơn giản vậy thôi. Nhưng khi em model bên 3DS Max xong hết, trải UV rồi, nhưng khi xuất sang OBJ thì bị lỗi (sau khi xuất qua OBJ thì import ngược lại Max để kiểm tra thì thấy lỗi), ví dụ như hình dưới đây ạ
Hình 1, hình em vẽ bằng MAx 2015, các mặt có màu (đổ bóng) như nhau. Hình 2 là hình em đã xuất qua OBJ và reimport lại vào max để xem thì nó có một số mặt bị màu như vậy, có khi nó lệch khá nhiều, chuyển thành đen lun ak :(. Mong được sự hướng dẫn để xuất file OBJ mà không bị lỗi ạ
-
hi, em cài đặt bình thường mà, nhưng mà chạy thì bị lag lắm, không biết tại sao nữa
-
Tình hình là máy em nó được thế này mà sao chạy 2 soft nó bị lag ghê lắm, híc, vậy phải làm sao giờ, hay tại máy cùi mía quá :((
-
thanks anh( chị ) kncam nhiều nha, e làm được rồi, hì hì
-
khi em vẽ những đường thằng trong góc nhìn Top ( 2D wireframe) trong 3D mà khi chuyển sang góc nhìn khác để tạo khối hay gì đó thì các chi tiết vẽ luôn bị thay đổi, đường thằng thì trong giống như mặt phẳng, hình tròn thì giống như hình trụ,....
ví dụ như hình dưới đây :
vẽ trong 2D wireframe
còn cái này là khi đổi góc nhìn
nó cũng xảy ra tương tự vói hình tròn :((
Mong nhận được sự giúp đỡ của các memb giàu kinh ngiệm ạ, thanksssssssss :D
Nhờ viết lisp thống kê phôi
trong AutoLisp
Đã đăng · Trả lời báo cáo
Dạ khung tên thì định dạng như nhau, chỉ có cái là đường bao khác nhau thôi, do em luôn dùng tỷ lệ 1:1 mà sẽ kéo hình chữ nhật (khung giấy) ra để cho vừa, còn phần khung bên dưới vẫn giữ nguyên đó anh :D