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

DungNguyen685

Thành viên
  • Số lượng nội dung

    98
  • Đã tham gia

  • Lần ghé thăm cuối

  • Ngày trúng

    9

Mọi thứ được đăng bởi DungNguyen685

  1. DungNguyen685

    [Yêu cầu] Lisp vẽ đoạn thẳng nối 2 đầu đoạn thẳng

    Đã cần cho công việc thì cũng để đi kiếm tiền thì bỏ phí ra cho nhanh, còn lên chờ đợi như này thì biết bao giờ. Với mình xin góp ý: Bạn biết làm thủ công mất nhiều tgian, thì người viết lisp họ cũng phải mất tgian viết chứ có biến ra được đâu. Họ đã có ý giúp đỡ chỉ “bát bún bò” mà không trả lời cmt là thiếu lịch sự.(nếu bạn không cmt mà ib trực tiếp rồi thì mình xin rút lại cmt này)
  2. DungNguyen685

    Xin viết lsp cad vẽ bo từ các đường thẳng

  3. DungNguyen685

    Lisp Copy - Xử Lý Block Trùng Tên

    Cho mình đoán thử thuật toán nhé! lisp có dùng file trung gian để lưu block chứ ko lưu trên clipboard đúng không nhỉ.
  4. DungNguyen685

    Xin hỏi: tạo script mở file và chạy command

    Những gì mình nói là như này. Chỉ dùng 2 lệnh. bên máy A gõ lệnh để tạo view, máy B gõ lệnh để view nếu ở chung bản vẽ thì sẽ view tới khung đó nếu khác bản vẽ thì sẽ mở bản vẽ cùng thư mục cùng tên và view tới.
  5. DungNguyen685

    Xin hỏi: tạo script mở file và chạy command

    Bạn xem cmt topic kia của mình cộng bài viết này của anh Ket:
  6. DungNguyen685

    Xin hỏi: tạo script mở file và chạy command

    Chắc do cách mình diễn đạt bạn không hiểu. Bản chất lưu file LSP hay TXT hay lưu vào registry abc...nó cũng là lưu thông tin để mở file và zoom tới thôi. Ý mình là vì bạn này đang sửa dụng ổ đĩa dùng chung thay vì phải load lisp lại lần nữa(hoặc gửi code qua command line) để mở thì mình nên viết thêm môt tí bằng cách gõ lệnh cho tiện thôi(Hướng đến việc trao đổi thông tin nhanh VD: Máy A gõ lênh TAO Máy B gõ lênh XEM là đến ngay đó mà)
  7. DungNguyen685

    Yêu cầu:Xin trợ giúp bổ sung lisp lấy view từ máy này sang máy khác

    Chủ top đã biết viết lisp rồi thì mình chia sẻ thuật toán để giải quyết thôi. Chứ nếu chưa biết thì làm sao mà viết.
  8. DungNguyen685

    Xin hỏi: tạo script mở file và chạy command

    Mình nghĩ cũng gần tương tự ý tưởng mình gợi ý cho bạn ấy ở topic trước, nhưng thay vì phải load lại file lisp tạo ra thì mình chịu khó code thêm tí thì khi mở file sẽ tự view đến luôn.
  9. DungNguyen685

    Xin hỏi: tạo script mở file và chạy command

    Nếu không nhầm một nội dung mở file với zoom này mà bạn lập 3 hay 4 topic rồi ấy nhỉ. Mình nghĩ bạn nên tập trung trao đổi 1 topic thôi để tránhloãng diễn đàn với sau này có người cần họ tìm kiếm dỡ hơn. Với lại liên quan đến thuật toán ý tưởng bạn nên đăng ở đây:
  10. DungNguyen685

    Yêu cầu:Xin trợ giúp bổ sung lisp lấy view từ máy này sang máy khác

    Cảm ơn nhé! Mở file ok rồi thì mình gợi ý cho bạn cách này: 1. Đoạn code mà lấy vị trí zoom trong đó bạn chèn một đoạn mã để khi gõ lệnh thì ghi một giá trị khởi chạy và thông số zoom vào registry hay file txt, csv.. lưu ở đâu đó. 2. Bạn viết một đoạn code ngoài defun và appload vào startup để khi mở file sẽ chạy code, lúc này trích xuất dữ liệu từ nơi đã lưu rồi dùng if hay hàm gì để so sánh nếu giá trị khởi chạy ở mục 1 bằng thì thực thi lệnh để zoom đến và trả lại giá trị khởi chạy bằng một giá trị không khởi chạy(để khi dùng lệnh mở file lên thì đoạn code đó hoạt động mà khi khởi động các file khác thì không)
  11. DungNguyen685

    Yêu cầu:Xin trợ giúp bổ sung lisp lấy view từ máy này sang máy khác

    hehe, mình hay dùng như này chứ thật tình mình không biết nó là biến gì hết. Bạn có thể chia sẻ để học hỏi với.
  12. DungNguyen685

    Yêu cầu:Xin trợ giúp bổ sung lisp lấy view từ máy này sang máy khác

    (getvar "dwgprefix") ; Lấy đường dẫn (vl-string-right-trim ".dwg" (vlax-get-property (vla-get-activedocument (vlax-get-acad-object)) 'WindowTitle )) ;Lấy tên bản vẽ strcat nó lại getfiled ;để mở file theo đường dẫn rồi zoom đến
  13. DungNguyen685

    Thống kê cốt thép (có trả phí)

    Mình hay làm là như này: Bước 1: tạo 1 data mẫu hình dạng thép bằng block att(mình từng làm đc 60 hình dạng rồi) Bước 2: Viết lisp khi dùng để field giá trị rồi gán bằng Xdata các giá trị cần thiết. Bước 3: Tạo bảng thông kê bằng cách insert data của bước 1 gán các giá trị cần thiết. (lisp "như" này mình đã từng viết rồi vì không up video lớn lên đc muốn tham khảo có thể ib mình để xem video)
  14. DungNguyen685

    Lisp thông kê danh mục bản vẽ

    Bạn phải tạo khung như này mới được. Tao Danh Muc.lsp khung bản vẽ.dwg
  15. DungNguyen685

    Lisp thông kê danh mục bản vẽ

    Mình chỉnh sửa theo yêu cầu này: test trên file :
  16. DungNguyen685

    Lisp thông kê danh mục bản vẽ

    Bạn gửi bản vẽ đó lên đây đi mình hd cho.
  17. DungNguyen685

    Xin xỏ lisp tạo và đổi tên Block

    À, Dịch bệnh có tgian nên sửa giúp bạn ấy cũng để học hỏi thêm thôi chứ không có ý đó. lisp trên mình sửa hộ nhưng bạn ấy không dùng được rồi. Cái này mình cũng sửa lại từ lisp trên, nếu thật sự cần để làm việc thì có thể ib mình để teamview xem giúp thử lỗi gì (không phí :d)
  18. DungNguyen685

    Xin xỏ lisp tạo và đổi tên Block

    Cái này thì không khó, bạn có thể liên hệ bác @Doan Nguyen Van cho nhanh.
  19. DungNguyen685

    Xin xỏ lisp tạo và đổi tên Block

    text hay mtext đều được mà. cad 2018 với 2010 không thấy lỗi.
  20. DungNguyen685

    Xin xỏ lisp tạo và đổi tên Block

  21. DungNguyen685

    Xin xỏ lisp tạo và đổi tên Block

    Chú ý tên block mới không trùng với các block cũ trong bản vẽ. (defun c:cre (/ err oer res sta bb entzx sttt made) (defun err(s) (if (and (/= s "Function cancelled")(/= s "quit / exit abort")) (princ (strcat "\n>>Error: " s)) ) (res) ) (defun res() (if cla (setvar "Clayer" cla)) (setq *error* oer) (setvar "Cmdecho" 1) (princ) ) (defun sta() (setq oer *error* *error* err cla (getvar "Clayer") ) (setvar "Cmdecho" 0) (setvar "Clayer" "0") (graphscr) ) (defun made(/ loop ss p) (setq loop T) (while loop (princ "\nChon doi tuong tao block: ") (setq p1 (getpoint "\nPick point1 window: ") p2 (getcorner p1 "\nPick point2 corner: ") ) (setq ss (ssget "_C" p1 p2 )) (if (null ss)(exit)) (setq sttt 0) (while (< sttt (sslength ss)) (setq entzx (ssname ss sttt)) (setq bb (cdr (assoc 0 (entget entzx)))) (if (= bb "INSERT") (command "EXPLODE" entzx ) ) (setq sttt (1+ sttt)) ) (setq sss (ssget "_C" p1 p2 )) (princ "\nChon text lam name block: ") (setq ssText (ssget ":S:E" '((0 . "MTEXT,TEXT")))) (if (null ssText)(exit)) (setq p (getpoint "\nChon diem dat block: ")) (if (null p)(exit)) (command "_.Undo" "_Group") (command "_.Cutclip" sss "") (command "_.Pasteblock" p) (setq ent (entlast)) (setq dxf1 (cdr(assoc 1 (entget (ssname ssText 0) )))) (setq dxf2 (cdr(assoc 2 (entget ent )))) (command "-RENAME" "B" dxf2 dxf1 ) (command "_.Undo" "_End") ) ) (sta) (made) (res) (princ) )
  22. DungNguyen685

    Lisp thông kê danh mục bản vẽ

    (defun c:DM (/ at>att at>item at>set atable cnt cw ena nc nr pt j list1 list2 list3 L rh) (vl-load-com) ;; GET_ATTS BY BILL KRAMER (defun get_ATTS (EN / EL ATTS) (setq EL (entget EN)) (setq ENA (cdr (assoc 2 EL))) ; wiz (if (and (= (cdr (assoc 0 EL)) "INSERT") (= (cdr (assoc 66 EL)) 1) ) ;_ end and (progn (setq EN (entnext EN) EL (entget EN) ) ;_ end setq (while (= (cdr (assoc 0 EL)) "ATTRIB") (setq ATTS (cons (list (vla-get-ObjectID (vlax-ename->vla-object EN) ) ; wiz (cdr (assoc 2 EL) ) ;_ end_cdr (cdr (assoc 1 EL)) ) ;_ end_list ATTS ) ;_ end_cons EN (entnext EN) EL (entget EN) ) ;_ end setq ) ;_ end while (list ena (reverse ATTS)) ; wiz ) ;_ end progn ) ;_ end if ) ;_ end_defun (if (setq at>set (ssget '((0 . "INSERT")))) (progn (setq at>att (mapcar 'get_atts (vl-remove-if 'listp (mapcar 'cadr (ssnamex at>set)) ) ;_ end_vl-remove-if ) ;_ end_mapcar ) ;_ end_setq (setq PT (getpoint "\nTable insertion point: ") RH (* 2.0 (getvar "TEXTSIZE")) CW (* 20.0 (getvar "TEXTSIZE")) NR (+ 2 (length at>att)) NC (1+ (length (cadar at>att))) ) ;_ end_setq (setq aTable (vla-addtable (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object) ) ;_ end_vla-get-activedocument ) ;_ end_vla-get-modelspace (vlax-3d-point PT) NR NC RH CW ) ;_ end_vla-addtable ) ;_ end_setq (vla-setcellvalue aTable 0 0 "DANH M\U+1EE4C B\U+1EA2N V\U+1EBC") (vla-setcellvalue aTable 1 0 "STT") (vla-setcellvalue aTable 1 1 "T\U+00CAN B\U+1EA2N V\U+1EBC") (vla-setcellvalue aTable 1 2 "K\U+00DD HI\U+1EC6U") (vla-MergeCells aTable 1 1 2 (length (cadar at>att))) ;(princ (cadr at>att)) ;;edit by tavantants (setq L nil ) (setq j 0) (while (< j (length at>att) ) (setq list1 (nth j at>att)) (setq list2 (nth 2 (cadr (nth 1 list1)))) (setq list3 (substr list2 (+ 2 (vl-string-search " " list2)))) (setq L (append L (list (list list3 (nth 1 list1) )))) (setq j (1+ j)) ) (setq L (vl-sort L '(lambda (x y) (< (atof(car x)) (atof(car y)))))) ;;edit by tavantants (setq CNT 2) ;_ end_setq (foreach Item L (vla-setcellvalue aTable CNT 0 (- CNT 1)) ;Thay (car Item) thành (- CNT 1) (setq at>item 1) (while (<= at>item (length (cadar L))) (vl-catch-all-apply '(lambda () (vla-settext aTable CNT at>item (strcat " " "%<\\AcObjProp Object(%<\\_ObjId " (itoa (car (nth (1- at>item) (cadr Item)))) ">%).TextString>%" ) ;_ end_strcat ) ;_ end_vla-setcellvalue ;;edit by tavantants (vla-SetCellAlignment aTable CNT 0 5) (vla-SetCellAlignment aTable CNT 1 4) (vla-SetCellAlignment aTable CNT 2 5) (vla-setTextHeight aTable (- CNT 0) (getvar "TEXTSIZE")) (vla-SetColumnWidth aTable 0 (* 6 (getvar "TEXTSIZE")) ) ;(getvar "TEXTSIZE") (vla-SetColumnWidth aTable 1 (* 24 (getvar "TEXTSIZE"))) (vla-SetColumnWidth aTable 2 (* 14 (getvar "TEXTSIZE"))) (vla-SetRowHeight aTable 0 (* 2 (getvar "TEXTSIZE"))) (vla-SetRowHeight aTable 1 (* 2 (getvar "TEXTSIZE"))) (vla-SetRowHeight aTable 2 (* 2 (getvar "TEXTSIZE"))) (vla-SetRowHeight aTable (- CNT 0) (* 2 (getvar "TEXTSIZE"))) ;;edit by tavantants ) ;_ end_lambda ) ;_ end_vl-catch-all-apply (setq at>item (1+ at>item)) ) ;_ end_while (setq CNT (1+ CNT)) ;;ready next row ) ;_ end_foreach ) ;_ end_progn ) ;_ end_if (princ) ) ;_ end_Defun Bạn thử cái này. Chú ý ký hiệu bản vẽ giữa chữ với số là dấu cách. VD: KT 01 hoặc KT 1 Còn nếu muốn thay đổi bằng ý tự "-" hay gì đó thì sửa trong 2 dấu " " chỗ này. (setq list3 (substr list2 (+ 2 (vl-string-search " " list2)))) Mình có edit thêm một số chỗ giãn dòng và cột phụ thuộc vào TEXTSIZE, nên để textstyle Standard font họ arial... để không bị lỗi font.
  23. DungNguyen685

    Lisp thông kê danh mục bản vẽ

    Bạn xem lại thử sửa đúng mình nói và load lại chưa. Chứ sửa thế đúng rồi đó.
  24. DungNguyen685

    Lisp thông kê danh mục bản vẽ

    thay (vla-setcellvalue aTable CNT 0 (car Item)) thành (vla-setcellvalue aTable CNT 0 (- CNT 1))
  25. DungNguyen685

    Giúp em chỉnh sửa LISP này để sử dụng được với Arc

×