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

Minh_Ha

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

    13
  • Đã tham gia

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

Bài đăng được đăng bởi Minh_Ha


  1. -Trong lisp lam sao lưu được giá trị nhập vào cho những lần sau thực hiện lệnh.VD: mình có đọan code sau:

    (defun c:aa1()

    (setq LA (getvar "Clayer"))

    (initget 1 "P DT")

    (setq BT (getkword "\n Tinh dien tich Pick hoac chon doi tuong?

    :"))

    (if (= BT "P")

    - khi đánh lệnh aa1 và nhập giá trị P thì lần sau thực hiện lệnh không cần nhập lại. Mong được sự giúp đỡ.


  2. Em muốn in nhiều bản vẽ cùng một lúc , trong đó các bản vẽ đã được sắp xếp dạng ma trận [nxn] với n là số rất lớn mà không muốn in từng cái một . Vậy bác nào có cách giải quyết vấn đề này xin chỉ giáo . Đây là file mẫu :

    http://www.cadviet.com/upfiles/Drawing2_1.rar. Thanks các bác nhìu nhé .

    -Bạn load Mplot.vlx của bạn Nguyen Hoanh về dùng nha.


  3. -Đọan lisp của mình dùng để in hàng loạt không cần phải chọn in từng khung bản vẽ. Theo như cách làm như bạn mô tả mình nghỉ phải thiết lập tiêu chuẩn ngay từ đầu và khi chuyển qua layout mới chia thành nhiều đọan được. Còn theo cách của mình thì bạn cứ bố trí như hình bạn up lên rồi chỉ việc chọn Block là nó in ra cho bạn.


  4. - Vì mình không phải là dân cầu đường. Nên bạn hãy bố trí những đọan bạn muốn in, mình sẽ gửi cho bạn đọan lisp in tòan bộ đọan đó.

    -Bạn dùng thử đọan lisp này, sửa lại tên Block của khung bản vẽ và tên máy in.

    (defun C:inn(/ vl ov ss e)

    (defun draw_line(ent / pt1 pt1X pt1Y pt2X pt2Y)

    (setq pt1 (cdr (assoc 10 ent))

    pt1X (car pt1)

    pt1Y (cadr pt1)

    pt2X (+(*(cdr (assoc 41 ent))841) pt1X);ch/rong: 841

    pt2Y (+(*(cdr (assoc 42 ent))594) pt1Y);ch/cao : 594

    )

    (list (list pt1X pt1Y) (list pt2X pt2Y))

    (setq D1 (list pt1X pt1Y))

    (setq D2 (list pt2X pt2Y))

    (command "plot" "Y" "" "FX DocuPrint 205-AP" "A3 [297x420mm]" "M" "L" "Y" "w" D1 D2 "F" "C" "" "DB_CALS.ctb" "Y" "" "" "Y" "")

    ;(entmake (list '(0 . "PLOT")(cons 10 (list pt1X pt1Y))(cons 11 (list pt2X pt2Y))(cons 62 6)) )

    ;(entmake (list '(0 . "LINE")(cons 10 (list pt1X pt2Y))(cons 11 (list pt2X pt1Y))(cons 62 6)) :bigsmile:;bonus

    )

    (command "undo" "be")

    (setq vl '("osmode" "orthomode" "cmdecho") ; Sys Var list

    ov (mapcar 'getvar vl)) ; Get Old values

    (setvar "osmode" 0) (setvar "orthomode" 0) (setvar "cmdecho" 0)

    (princ "\nChon Block khung ten :")

    (if(setq ss (ssget (list (cons 0 "INSERT")(cons 2 "A1図枠"))))

    (foreach e (mapcar 'entget (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))

    (draw_line e)

    )

    )

    (mapcar 'setvar vl ov) ; reset Sys Vars

    (command "undo" "e")

    (princ)

    )

    • Vote tăng 1

  5. Tue_NV thấy cái này không cần đến Lisp -> Chỉ cần 1 lệnh Refedit là ta có thể kẻ được đuờng chéo cho n block đấy bạn Minh Ha à

    Tue_NV hiểu sai ý mình rồi. Mình xin lỗi vì không nói rõ mục đích. Vẽ đường line đó chỉ là ví dụ. Mình dùng đọan code trên để in hàng lọat trong cad vì công ty mình dùng cadLT nên không dùng đươc Mplot.vlx của bạn Nguyen Hoanh. Mong bạn gíup dùm.


  6. -Trước tiên mình cám ơn bạn gia_bach đã giúp mình, và mình đã dùng đọan code đó để vẽ đường chéo. Bây giờ mình muốn chọn n Block chứ không phải 1 Block như hiện tại và đây là đọan code, bạn chỉ dùm nha.

    (defun C:test(/ ent pt1 pt1X pt1Y pt2X pt2Y)

    (setq ent (car (entsel "\nChon Block:")))

    (if (and (= (cdr (assoc 0 (entget ent))) "INSERT")

    (= (cdr (assoc 2 (entget ent))) "1"));block name

    (progn

    (setq ent (entget ent)

    pt1 (cdr (assoc 10 ent))

    pt1X (car pt1)

    pt1Y (cadr pt1)

    pt2X (+(*(cdr (assoc 41 ent))841) pt1X);ch/rong: 841

    pt2Y (+(*(cdr (assoc 42 ent))594) pt1Y);ch/cao : 594

    )

    ;(princ (strcat "\n Diem1 X = " (rtos pt1X) "; Y = " (rtos pt1Y)))

    ;(princ (strcat "\n Diem2 X = " (rtos pt2X) "; Y = " (rtos pt2Y)))

    (list (list pt1X pt1Y) (list pt2X pt2Y))

    )

    )

    (setq D1 (list pt1X pt1Y))

    (setq D2 (list pt2X pt2Y))

    (command "line" D1 D2 "")

    (princ)

    )


  7. - Chào cadviet. Hôm nay mình có 1 việc nhờ mọi người viết dùm mình 1 đọan lisp in nhiều bản vẽ cùng lúc trong 1 file cad,

    mình có tìm trên cadviet có phần Mplot của bạn Nguyen Hoanh sử dụng rất hiệu quả nhưng do công ty mình dùng cadLT bản quyền nên không dùng được *.VLX. Công việc của mình in rất nhiều nên mình rất cần đọan lisp tương tự như Mplot. Đọan lisp chỉ cần chọn Block là khung bản vẽ và in tòan bộ bản vẽ đó ra. Rất mong sự giúp đỡ của mọi người.

×