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

dinhtuyendevil

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

    5
  • Đã tham gia

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

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


  1. mình có 1 chương trình viết bằng vba. giờ muốn gọi lệnh trên cad

    trên chương trình vba mình để một hàm

     

     

    Sub Start()

    UserForm.Show

    End Sub

     

    sau đó mình tạo một lisp

     

     

    (defun C:ve1()

    (command "-VBARUN""start")

    )

     

    sau đó chạy cad. Nhưng khi mình gõ lệch "ve1"

    thi trên cad cứ báo

     

     

    Macro not found.

    Command: nil

     

    ko biết mình làm sai ở đâu. ai đó biết làm ơn chỉ giúp mình

    xin cám ơn


  2. em đang làm đồ án tốt nghiệp cần nhờ các cao thủ giúp đỡ vài chỗ về VBA

    em muốn tạo 1 form về chương trình vẽ cột tự động trên auto cad

    em muốn làm một cái cột để nhập chiều cao tầng. đầu tiên nó sẽ hiển thị 1 tầng thôi và sẽ nhập chiều cao cho tầng đấy, sau đó giả sử nhà đó có thêm tầng nữa thì em sẽ ấn một button add và trên form sẽ hiển thị một ô nữa để nhập chiều cao cho tầng tiếp theo. bước đầu là như thế ko biết có làm được ko. Cao thủ nào rảnh rỗi có thể ngồi cho em xin ý kiến. em xin cảm ơn


  3. Hề hề hề,

    Cái lisp bạn post đang bị thiếu hai cái hàm con là (laythongso) và (ghithongso). Do vậy không thể test nó được. Có thể ở các máy mà bạn chạy được trong đường dẫn tìm kiếm của CAD đã có thư mục chứa các file có hàm con này. Bạn hãy kiểm tra lại và copy các hàm con này về máy của bạn và chạy thử.

    Nếu vẫn không được, hãy post lại lisp với đầy đủ các hàm con thì mọi người mới kiểm tra giùm bạn được.

    Chúc bạn vui...

     

    Tớ đã tìm thử nhưng không thể tìm thấy cái hàm cậu nói ở đâu că. nếu biết về lisp hi vọng cậu có thể giúp tớ viết nốt 2 hàm đấy. Tớ đã post đầy đủ nôi dung của cái lisp đó rồi


  4. Thiếu 2 defun (laythongso) và (ghithongso), bạn kiểm tra xem còn sót ở đâu không.

    THứ 2 nữa là bạn không nói lỗi khi dùng lệnh nào

     

    Khi dùng lệnh ttt thì báo lỗi: no function definition: LAYTHONGSO

    còn các lệnh còn lại vẫn dùng được nhưng do có lỗi trên nên nó không trả về kế quả mà lại báo lại lỗi trên sau khi thực hiện xong lệnh.


  5. Em có một lisp vẽ thép sàn rất hay. Trước đây vẫn sử dụng bình thường sau một vài lần cài lại máy thì ko dùng được nữa. Mặc dù lisp vẫn đúng vì copy sang một máy khác thì vẫn có thể dùng được (chỉ một số máy). Có cao thủ nào về lisp dành thời gian check hộ em. Em rất cần vì đã vẽ thép sàn quen bằng cái này. Giờ không có khổ quá

     

    (defun c:ttt ( )

    (setvar "cmdecho" 0)

    (laythongso)

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

    (setq ent0 (entget ent))

    (setq n (length ent0) i 0 dlist nil)

    (while (< i n)

    (progn

    (if (= (car (nth i ent0)) 10)

    (setq dlist (append dlist (list (cdr (nth i ent0)))))

    )

    )

    (setq i (1+ i))

    )

    (if (= (length dlist) 2) (setq dlist dlist))

    (if (= (length dlist) 4) (setq dlist (list (nth 1 dlist)(nth 2 dlist))))

    (if (= (length dlist) 10) (setq dlist (list (nth 4 dlist)(nth 5 dlist))))

    (initget "1 2 3")

    (setq chu (getkword "\nLoai thep 1/2/3 :"))

    (cond ((= chu "1")(tt1 (nth 0 dlist) (nth 1 dlist) 100 0.0))

    ((= chu "2")(tt2 (nth 0 dlist) (nth 1 dlist) 100 0.0))

    ((= chu "3")(tt3 (nth 0 dlist) (nth 1 dlist) 100 0.0))

    )

    (entdel ent)

    (setvar "cmdecho" 1)

    (ghithongso)

    )

    (defun tt1 ( p1 p2 d1 d2 / p1a p2a p1b p2b d d1 ang ang1)

    (setvar "cmdecho" 0)

    (laythongso)

    (setq gf (getvar "fillet"))

    ;(setq d2 100)

    (osmode "512")

    (osmode "128")

    (setq ang (angle p1 p2)

    d (distance p1 p2)

    p1 (polar p1 ang (/ d2 2))

    p2 (polar p2 (+ pi ang) (/ d2 2))

    ang1 (+ ang (* pi 0.5))

    p1a (polar p1 ang1 d1)

    p2a (polar p2 ang1 d1)

    p1b (polar p1a ang d1)

    p2b (polar p2a (+ ang pi) d1)

    )

    (e_lwpolyline (list p1b p1a p1 p2 p2a p2b) 0 0 "thep")

    (command "setvar" "filletrad" (/ d1 2))

    (command "fillet" "p" "l")

    (command "setvar" "filletrad" gf)

    (ghithongso)

    (setvar "cmdecho" 1)

    )

    (defun c:tt1 ( / p1 p2)

    (setq p1 (getpoint "\nDiem dau:" ))

    (setq p2 (getpoint "\nDiem sau:" p1))

    (tt1 p1 p2 100 100 )

    )

    ;;;;--------------------------------------------------------------------------------

    (defun tt2 ( p1 p2 d1 d2 / p1a p2a d d1 ang ang1)

    (setvar "cmdecho" 0)

    (laythongso)

    ;(setq d1 100)

    (osmode "512")

    (osmode "128")

    (setq ang (angle p1 p2)

    d (distance p1 p2)

    p1 (polar p1 ang (/ d2 2))

    p2 (polar p2 (+ pi ang) (/ d2 2))

    ang1 (+ ang (* pi 0.5))

    p1a (polar p1 ang1 (* d1 3))

    p2a (polar p2 ang1 (* d1 3))

    )

    (e_lwpolyline (list p1a p1 p2 p2a ) 0 0 "thep")

     

    (ghithongso)

    (setvar "cmdecho" 1)

    )

    (defun c:tt2 ( / p1 p2)

    (setq p1 (getpoint "\nDiem dau:" ))

    (setq p2 (getpoint "\nDiem sau:" p1))

    (tt2 p1 p2 100 100)

    )

    ;;;;--------------------------------------------------------------------------------

    (defun tt3 ( p1 p2 d1 d2 / p1a p2a d d1 ang )

    (setvar "cmdecho" 0)

    (laythongso)

    ;(setq d1 100)

    (osmode "512")

     

    (osmode "128")

     

    (setq ang (angle p1 p2)

    d (distance p1 p2)

    p1 (polar p1 ang (/ d2 2))

    p2 (polar p2 (+ pi ang) (/ d2 2))

    p1a (polar p1 (+ ang (* pi 0.15)) (* d1 1.5))

    p2a (polar p2 (+ ang (* pi 0.85)) (* d1 1.5))

    )

    (e_lwpolyline (list p1a p1 p2 p2a ) 0 0 "thep")

     

    (ghithongso)

    (setvar "cmdecho" 1)

    )

     

    (defun c:tt3 ( / p1 p2)

    (setq p1 (getpoint "\nDiem dau:" ))

    (setq p2 (getpoint "\nDiem sau:" p1))

    (tt3 p1 p2 100 100)

    )

     

    ;;;;--------------------------------------------------------------------------------

    (defun c:gth ( ) ;p1 p2 p3 p1a p1b d ang ang1 tx1 tx2 tx3 style1 style2 layer)

    (setvar "cmdecho" 0)

    ;(laythongso)

    (setq style1 "romans"

    style2 "text1"

    layer1 "text-thep"

    layer2 "text-thep")

    (set_text_style1 style2 "vharialn.ttf" 1)

    ;(set_text_style1 style1 "romans.shx" 0.8)

     

    ;(osmode "512")

    (setq p1 (getpoint "\nDiem dau:" ))

    ;(osmode "128")

    (setq p2 (getpoint "\nDiem sau:" p1))

    (setq tx1a (nth 0 (read_file "th1.dat"))

    tx2a (nth 1 (read_file "th1.dat"))

    tx3a (nth 2 (read_file "th1.dat"))

    )

    (setq tx1 (getint (strcat "\nFi<" tx1a ">:")))

    (if (null tx1) (setq tx1 (atoi tx1a)))

     

    (setq tx2 (getint (strcat "\na=<" tx2a ">:")))

    (if (null tx2) (setq tx2 (atoi tx2a)))

     

    (setq tx3 (getint (strcat "\nKi hieu <" tx3a ">:")))

    (if (null tx3) (setq tx3 (atoi tx3a)))

    (write_file "th1.dat" (list (rtos tx1 2 0) (rtos tx2 2 0) (rtos (+ 1 tx3) 2 0)))

    (setq tx3 (rtos tx3 2 0))

    (setq d (distance p1 p2)

    ang (angle p1 p2)

    n (/ d tx2)

    )

    (if (< (- n (fix n)) 0.5)

    (setq n (+ (fix n) 1))

    (setq n (+ (fix n) 2))

    )

     

    (if (> tx1 8)

    (setq tx1 (strcat "/g" (rtos tx1 2 0)))

    (setq tx1 (strcat "%%C" (rtos tx1 2 0))

    )

    )

    (setq n (rtos n 2 0)

    tx1 (strcat n tx1)

    tx2 (strcat "a" (rtos tx2 2 0))

    )

    (if (/= (abs (sin ang)) 0.0)

    (setq ang 0 )

    (setq ang (/ pi 2) )

    )

    ;(osmode "512")

    (setq p1 (getpoint "\nDiem dat:" )

    p2 (polar p1 (+ ang (/ pi 2)) 500)

    p3 (polar p2 ang 1000)

    p1a (polar p2 ang 500)

    p1a (polar p1a (+ ang (/ pi 2)) 180)

    p1b (polar p1a (- ang (/ pi 2)) 400)

    )

    ;(osmode "0")

    (command "_qleader" p1 p2 p3 "" "" "" "")

    (ch_layer_lastobj layer2)

     

     

    ;(e_lwpolyline (list p1 p2 p3) 0 0 layer2)

    (e_text p1a style1 tx1 250 ang 0.8 1 2 layer1)

     

    (e_text p1b style1 tx2 250 ang 0.8 1 2 layer1)

     

    (setq p1a (polar p3 ang 300))

    (e_circle p1a 275 layer2)

    (setq ent (entlast)

    ent0 (entget ent)

    ent0 (append ent0 (list (cons 62 8)))

    )

    (entmod ent0)

    (entupd ent)

    (e_text p1a style2 tx3 300 ang 1.0 1 2 layer1)

     

    ;(ghithongso)

    (setvar "cmdecho" 1)

    )

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    (defun c:gth1 ( ) ;p1 p2 p3 p1a p1b d ang ang1 tx1 tx2 tx3 style1 style2 layer)

    (setvar "cmdecho" 0)

    ;(laythongso)

    (setq style1 "romans"

    style2 "text1"

    layer1 "text-thep"

    layer2 "text-thep")

    (set_text_style1 style2 "vharialn.ttf" 1)

    ;(set_text_style1 style1 "romans.shx" 0.8)

     

    ;(osmode "512")

    (setq p1 (getpoint "\nDiem dau:" ))

    ;(osmode "128")

    (setq p2 (getpoint "\nDiem sau:" p1))

    (setq tx1a (nth 0 (read_file "th1.dat"))

    tx2a (nth 1 (read_file "th1.dat"))

    tx3a (nth 2 (read_file "th1.dat"))

    )

    (setq tx1 (getint (strcat "\nFi<" tx1a ">:")))

    (if (null tx1) (setq tx1 (atoi tx1a)))

     

    (setq tx2 (getint (strcat "\na=<" tx2a ">:")))

    (if (null tx2) (setq tx2 (atoi tx2a)))

     

    (write_file "th1.dat" (list (rtos tx1 2 0) (rtos tx2 2 0) tx3a))

     

    (setq d (distance p1 p2)

    ang (angle p1 p2)

    n (/ d tx2)

    )

    (if (< (- n (fix n)) 0.5)

    (setq n (+ (fix n) 1))

    (setq n (+ (fix n) 2))

    )

     

    (if (> tx1 8)

    (setq tx1 (strcat "/g" (rtos tx1 2 0)))

    (setq tx1 (strcat "%%C" (rtos tx1 2 0))

    )

    )

    (setq n (rtos n 2 0)

    tx1 (strcat n tx1)

    )

    (if (/= (abs (sin ang)) 0.0)

    (setq ang 0 )

    (setq ang (/ pi 2) )

    )

    ;(osmode "512")

     

    (setq ent (entsel "\nChon so can sua:")

    ent (car ent)

    ang (cdr (assoc 50 (entget ent)))

    p1a (cdr (assoc 11 (entget ent)))

    )

    (entdel ent)

     

    (e_text p1a style1 tx1 250 ang 0.8 1 2 layer1)

     

     

    ;(ghithongso)

    (setvar "cmdecho" 1)

    )

     

    (defun c:lo () (command "layon"))

    (defun c:ll () (command "layiso"))

    (defun c:lf () (command "layoff"))

×