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

Xin được trợ giúp lỗi lisp trên autocad 2016

Các bài được khuyến nghị

  Chào mọi người, mình hay sử dụng 1 lisp để tích cao độ cho tiện. Lisp này của bác Nguyen Hoanh (post trong http://www.cadviet.com/forum/topic/152-danh-cot-tu-dong-bang-lisp-dc), có được thêm thắt 1 ít.

  Quan trọng là hồi trước dùng cad 2015 trở xuống thì vẫn bình thường. Nhưng hqua mò mẫn dùng autocad 2016 thì không chạy được.

  Menu command báo lỗi như sau:

Command: DC
Vao diem can danh cot: .insert Enter block name or [?] <CTr>: CTr
Units: Unitless   Conversion:         1
Specify insertion point or [Basepoint/Scale/X/Y/Z/Rotate]:
Enter X scale factor, specify opposite corner, or [Corner/XYZ] <1>: 1 Enter Y scale factor <use X scale factor>: 1
Specify rotation angle <0>: 0.000000000000000 *Invalid*
; error: Function cancelled

  Còn đây là lisp:

;Tao cac STYLE chu
 (if (not (tblsearch "STYLE" ".Text-thuong"))
   (command "-style" ".Text-thuong" "Vntime.shx" "0.15"  "0.85" "0" "N" "N" )
 )
 (if (not (tblsearch "STYLE" ".Text-INTO"))
   (command "-style" ".Text-INTO" ".VnArialH" "0.3"  "0.85" "0" "N" "N" "N")
 )
 (if (not (tblsearch "STYLE" ".Text-INnho"))
   (command "-style" ".Text-INnho" "VntimeH.shx" "0.15"  "0.85" "0" "N" "N" "N")
 )

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Tao cao do mat cat
;Tao hinh dang block "CTr"

(defun CTr_def ()
  
  ;BLOCK Header definition:
  (entmake '((0 . "BLOCK")(2 . "CTr")(70 . 2)(10 0.0 0.0 0.0)))
  
  ;LINE definition:
  (entmake
    '((0 . "LINE")(8 . "7")(10 -0.15 0.0 0.0)(11 0.15 0.0 0.0)(210 0.0 0.0 1.0))
  )
  (entmake
    '((0 . "LINE")(8 . "6")(10 0.0 0.0 0.0)(11 0.1 0.15 0.0)(210 0.0 0.0 1.0))
  ) 
(entmake
    '((0 . "LINE")(8 . "6")(10 0.0 0.0 0.0)(11 -0.1 0.15 0.0)(210 0.0 0.0 1.0))
  )  
(entmake
    '((0 . "LINE")(8 . "6")(10 0.1 0.15 0.0)(11 -0.1 0.15 0.0)(210 0.0 0.0 1.0))
  )
(entmake
    '((0 . "SOLID")(8 . "7")(10 0.1 0.15 0.0)(11 0 0.15 0.0)(12 0.0 0.0 0.0)(13 0.0 0.0 0.0))
  )
;Text ATTRIBUTE definition:
  ;Note that it is an invisible attribute (code 70=1)
  
  (entmake 
    '((0 . "ATTDEF")(7 . ".Text-INnho")(8 . "7")(10 -0.35 0.25 0.0)(1 . "#")(2 . "AMDUONG")
    (3 . "#")(40 . 0.15)(41 . 0.85)(50 . 0.0)(70 . 0)(71 . 0)(72 . 0)(73 . 0))
  )
   (entmake 
    '((0 . "ATTDEF")(7 . ".Text-INnho")(8 . "7")(10 -0.20 0.255 0.0)(1 . "#")(2 . "GIATRI")
    (3 . "#")(40 . 0.15)(41 . 0.85)(50 . 0.0)(70 . 0)(71 . 0)(72 . 0)(73 . 0))
  ) 
 ;BLOCK's ending definition:
  
  (entmake '((0 . "ENDBLK")))
  
)
  (if (null (tblsearch "BLOCK" "CTr"))(CTr_def))


;; Chuong trinh danh cot
; Danh cot goc toa do 00
(defun c:cot00 ()
  (setq Cot00 (cadr (getpoint "\nDiem co cot 0.00: ")))
  (princ)
)

; Danh cot goc o cao do bat ky
(defun c:cotxx ()
  (setq Cotxx (getreal "\nNhap cot can dinh nghia: ")
      Cot00 (- (cadr (getpoint (strcat "\nDiem co cot " (rtos cotxx 2 2) ": ")))
 (* Cotxx 1))
    )
  (princ))

(defun c:dc (/ diem caodo dau giatri dodaichuoi)
  (if (not cot00)
(progn
 (alert "chua co cot 0.00")
 (c:cot00)
)
  )
  (grdraw (list (+ (car (getvar "VIEWCTR")) (* -1.0 (getvar "VIEWSIZE")))
cot00
 )
 (list (+ (car (getvar "VIEWCTR")) (* 1.0 (getvar "VIEWSIZE")))
cot00
 )
 1
 1
  )
  (setq
diem   (getpoint "\nVao diem can danh cot: ")
caodo  (- (cadr diem) cot00)
dau    (cond
((equal caodo 0.0 0.01) "%%p")
((> caodo 0.0) "+")
(t "-")
  )
giatri (rtos (* caodo 100) 2 0)
  )
  (if (= "-" (substr giatri 1 1))
(setq giatri (substr giatri 2))
  )
  (while (< (strlen giatri) 4)
(setq giatri (strcat "0" giatri))
  )
  (setq dodaichuoi (strlen giatri)
giatri    (strcat (substr giatri 1 (- dodaichuoi 2))
  "."
  (substr giatri (- dodaichuoi 1))
  )
  )
  (command ".insert" "CTr" diem 1 1 0.0 dau giatri)
  (redraw)
)


; Danh cot tu nhap bat ky
(defun c:dcx (/ caodo diem dau giatri)
  (setq
caodo (getreal "\nNhap cot can dung: ")
nghieng (getreal "\nNhap cot can dung: ")
diem   (getpoint "\nVao diem can danh cot: ")
dau    (cond
((equal caodo 0.0 0.01) "%%p")
((> caodo 0.0) "+")
(t "-")
      )
giatri (rtos (* caodo 100) 2 0)
  )
  (if (= "-" (substr giatri 1 1))
(setq giatri (substr giatri 2))
  )
  (while (< (strlen giatri) 4)
(setq giatri (strcat "0" giatri))
  )
  (setq dodaichuoi (strlen giatri)
giatri    (strcat (substr giatri 1 (- dodaichuoi 2))
  "."
  (substr giatri (- dodaichuoi 1))
  )
  )
  (command ".insert" "CTr" diem 1 1 0.0 dau giatri)
)

 Mong được sự giúp đỡ!

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

Cuối cùng cũng tìm ra được nguyên nhân. Set ATTDIA bằng 0.

ATTDIA
 
 
 
Type: Integer Saved in: Registry Initial value: 0

Controls whether the INSERT command uses a dialog box for attribute value entry.

0

Issues Command prompts

1

Uses a dialog box

 

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

Sao nghe nói autocad 2016 thì command đổi thành commands gì đó mà :unsure:

Cái này không phải là lỗi có S hay không vì 2015 và 2016 đều có S. Lỗi này xãy ra với bất cứ cad đời nào, đó là khi tạo block_att bằng lisp nếu không set chế độ "không dùng dialog cho att" thì bị lỗi >> phải set chế độ không dùng dialog nếu có att. Tôi gặp rồi.

  • Vote tăng 1

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

Vâng ! ATTDIA bằng 0 thì lúc trước em có xin 1 lisp có Block Att thì có thắc mắc hỏi setvar cho nó bằng 0 để làm gì thì đuoc giải thích là để tránh lỗi, nhưng lúc đó cũng ko hình dung :wub:  . Giờ thấy mình kém cỏi :( . Thanks !

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

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay


×