Đến nội dung


Hình ảnh

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


  • Please log in to reply
4 replies to this topic

#1 dckonhi1987

dckonhi1987

    biết zoom

  • Members
  • Pip
  • 16 Bài viết
Điểm đánh giá: 2 (bình thường)

Đã gửi 19 April 2015 - 07:54 AM

  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.c...g-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 đỡ!


  • 0

#2 dckonhi1987

dckonhi1987

    biết zoom

  • Members
  • Pip
  • 16 Bài viết
Điểm đánh giá: 2 (bình thường)

Đã gửi 22 April 2015 - 01:38 PM

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

 


  • 0

#3 phamhuy1

phamhuy1

    biết vẽ rectang

  • Members
  • PipPip
  • 82 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 22 April 2015 - 01:44 PM

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


  • 0

#4 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5448 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 22 April 2015 - 02:38 PM

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.


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#5 phamhuy1

phamhuy1

    biết vẽ rectang

  • Members
  • PipPip
  • 82 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 22 April 2015 - 04:58 PM

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 !


  • 0