Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
Xuoi2013

Chuyển mã lisp dùng cho cad14 sang cad2007

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

 

Chào các anh chị trên diễn đàn. Tôi có đoạn lisp chạy trên cad14, nay tôi muốn dùng được trên cad2007 thì sửa như thế nào?. đoạn mã lisp như sau:

(defun c:bandiem()

       (none)(node)

       (setvar "BLIPMODE" 0)

       (setvar "elevation" 0)

       (command "style" "txt" "txt" "0" "1" "0" "" "" "" )

       (setq h(* (getvar "dimcen") 1.5) )

       (setq p0(getpoint (strcat "\nBam diem khoi ?:")))

       (setq p1(getpoint  p0 (strcat "\nBam diem dinh huong ?:")))

       (setq agoc(angle p0 p1))

       (setq g  0)

       (while(/= g nil)

            (setq g(getreal (strcat "\nGoc ?: ")))

            (if (/= g nil)

                (progn

                     (setq s(getreal (strcat "\nCanh ?: ")))

                     (setq shd (getstring (strcat "\nDiem so ?: ")))

                     (setq a(- agoc (dtor g)))

                     (setq p(polar p0 a s ))

                     (command "layer" "s" "diem" "")

                     (setvar "BLIPMODE" 1)

                     (command "point" p )

                     (command "layer" "s" "sh_mia" "")

                     (command "text" p h "0" shd )

                     (setvar "BLIPMODE" 0)

                     (print)(print)

                )

            )

       )

       (redraw)

      (princ)

)

Vấn đề không chắc là do cad 14 hay 07 mà có khi là do thiếu file trên máy, thiếu các phần (none)(node)(dtor)

Nên file không chạy được bác coi lại nguồn xem

  • Vote giảm 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ấn đề không chắc là do cad 14 hay 07 mà có khi là do thiếu file trên máy, thiếu các phần (none)(node)(dtor)

Nên file không chạy được bác coi lại nguồn xem

 

      Cảm ơn bạn đã xem giúp mình. nhưng con lisp này vẫn chạy bình thường trên cad14 mà. tôi load nguyên bản con này lên cad 2007 thi báo lỗi ...dtor gì đó. tôi không hiểu lỗi đó báo gì.

Nhờ các bác cao thủ sửa giúp tôi để chạy được trên cad 2007. thank

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
Bạn load thêm cái lisp này xem nó chạy chưa.

Bạn load thêm cái lisp này xem nó chạy chưa.

(defun dtor (gt / gt kq)
(setq kq (* (/ pi 180) gt))
kq)

 

(defun dtor (gt / gt kq)
(setq kq (* (/ pi 180) gt))
kq)

 

 

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

 

Bạn load thêm cái lisp này xem nó chạy chưa.

Bạn load thêm cái lisp này xem nó chạy chưa.

(defun dtor (gt / gt kq)
(setq kq (* (/ pi 180) gt))
kq)

 

(defun dtor (gt / gt kq)
(setq kq (* (/ pi 180) gt))
kq)

  

       Cảm ơn bạn Duy782006. mình đã load them đoạn lisp của bạn nhưng chạy vẫn báo lỗi như sau:

layer

Current layer:  "0"

Enter an option

[?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/MATerial/Plot/Freeze/Thaw/LOck/Unlock

/stAte]: s

Enter layer name to make current or <select object>: diem Enter an option

[?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/MATerial/Plot/Freeze/Thaw/LOck/Unlock

/stAte]:

Command: point

Current point modes:  PDMODE=0  PDSIZE=0.0000

Specify a point:

Command: layer

Current layer:  "diem"

Enter an option

[?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/MATerial/Plot/Freeze/Thaw/LOck/Unlock

/stAte]: s

Enter layer name to make current or <select object>: sh_mia

Cannot find layer "sh_mia".

; error: Function cancelled

Enter layer name to make current or <select object>:

Select object:

Enter an option

[?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/MATerial/Plot/Freeze/Thaw/LOck/Unlock

/stAte]:

 

 

các bạn xem và sửa giúp mình với nhé.

Chỉnh sửa theo Xuoi2013

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

Bạn up đầy đủ hàm con ( (none) (node) (dtor) (print) ) của lệnh này lên cho bà kon dễ test bạn nhé, thường thì Lisp vẫn giữ được giá trị sử dụng khi chuyển qua các version khác mà?!!

 

 

 

Chào các anh chị trên diễn đàn. Tôi có đoạn lisp chạy trên cad14, nay tôi muốn dùng được trên cad2007 thì sửa như thế nào?. đoạn mã lisp như sau:

(defun c:bandiem()
       (none)(node)
       .......................................
                     (print)(print)
                )
            )
       )
       (redraw)
      (princ)
)

 

(print) hay là (princ) vậy bạn?!!

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

Bạn up đầy đủ hàm con ( (none) (node) (dtor) (print) ) của lệnh này lên cho bà kon dễ test bạn nhé, thường thì Lisp vẫn giữ được giá trị sử dụng khi chuyển qua các version khác mà?!!

 

 

 

(print) hay là (princ) vậy bạn?!!

 

(princ) là hàm của Lisp

(print) cũng là hàm của Lisp

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

       Cảm ơn bạn Duy782006. mình đã load them đoạn lisp của bạn nhưng chạy vẫn báo lỗi như sau:

layer

Current layer:  "0"

Enter an option

[?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/MATerial/Plot/Freeze/Thaw/LOck/Unlock

/stAte]: s

Enter layer name to make current or <select object>: diem Enter an option

[?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/MATerial/Plot/Freeze/Thaw/LOck/Unlock

/stAte]:

Command: point

Current point modes:  PDMODE=0  PDSIZE=0.0000

Specify a point:

Command: layer

Current layer:  "diem"

Enter an option

[?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/MATerial/Plot/Freeze/Thaw/LOck/Unlock

/stAte]: s

Enter layer name to make current or <select object>: sh_mia

Cannot find layer "sh_mia".

; error: Function cancelled

Enter layer name to make current or <select object>:

Select object:

Enter an option

[?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/MATerial/Plot/Freeze/Thaw/LOck/Unlock

/stAte]:

 

 

các bạn xem và sửa giúp mình với nhé.

Lỗi đây nè:

Cannot find layer "sh_mia".

Trên file bản vẽ của bạn thiếu layer "sh_mia" . vậy thì bạn phải bổ sung nó vào.

Hoặc giả bạn chơi cái củ chuối này vào xem nó có chạy không nhé:

1/- Copy đoạn code sau:

(if (tblsearch "layer" "sh_mia")

     (command "layer" "s" "sh_mia" "")

)

2/- Paste nó vào thay thế vị trí của dòng code:

 (command "layer" "s" "sh_mia" "")

3/- Save lisp với tên mới, load và chạy thử.....

  • 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

Tôi tạo thêm layer sh_mia thi lisp chạy được rồi.  còn vấn đề nữa tôi muốn hỏi các bạn :

 - Với lisp trên: giá trị góc nhập vào ở cad 14 dạng: (độ.phútgiây)

ví dụ : 48d30'00" thì nhập vào góc là: 48.3000

còn khi load lisp trên vào cad 2007 thì nhập góc nhập vào 48.3000 thì khi đo góc trên màn hình lại là:

48dd 18 '

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ôi tạo thêm layer sh_mia thi lisp chạy được rồi.  còn vấn đề nữa tôi muốn hỏi các bạn :

 - Với lisp trên: giá trị góc nhập vào ở cad 14 dạng: (độ.phútgiây)

ví dụ : 48d30'00" thì nhập vào góc là: 48.3000

còn khi load lisp trên vào cad 2007 thì nhập góc nhập vào 48.3000 thì khi đo góc trên màn hình lại là:

48dd 18 '

 

Các cao thủ sửa giúp tôi con lisp trên để khi nhập số liệu  góc là (độ.phútgiây) thì cad tự hiểu 2 số sau dấu chấm là phút, 2 số cuối cùng là phần giây.

ví dụ nhập: 45.3056  (45 độ 30 phút 56 giây). lisp như sau:

 

 

(defun dtor (gt / gt kq) (setq kq (* (/ pi 180) gt)) kq)

(defun none()

  (command "osnap""none")

)

(defun node()

  (command "osnap""node")

)

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

(defun c:bandiem()

       (none)(node)

       (setvar "BLIPMODE" 0)

       (setvar "elevation" 0)

       (command "style" "txt" "txt" "0" "1" "0" "" "" "" )

       (setq h(* (getvar "dimcen") 1.5) )

       (setq p0(getpoint (strcat "\nBam diem khoi ?:")))

       (setq p1(getpoint  p0 (strcat "\nBam diem dinh huong ?:")))

       (setq agoc(angle p0 p1))

       (setq g  0)

       (while(/= g nil)

            (setq g(getreal (strcat "\nGoc ?: ")))

            (if (/= g nil)

                (progn

                     (setq s(getreal (strcat "\nCanh ?: ")))

                     (setq shd (getstring (strcat "\nDiem so ?: ")))

                     (setq a(- agoc (dtor g)))

                     (setq p(polar p0 a s ))

                     (command "layer" "s" "0" "")

                     (setvar "BLIPMODE" 1)

                     (command "point" p )

                     (command "layer" "s" "0" "")

                     (command "text" p h "0" shd )

                     (setvar "BLIPMODE" 0)

                     (print)(print)

                )

            )

       )

       (redraw)

      (princ)

)

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

Đăng nhập để thực hiện theo  

×