Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
11 replies to this topic

#1 Xuoi2013

Xuoi2013

    biết zoom

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

Đã gửi 10 May 2013 - 08:06 AM

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:

()


  • 0

#2 quansla

quansla

    biết lệnh xclip

  • Members
  • PipPipPipPipPipPipPip
  • 641 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 10 May 2013 - 11:00 AM

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


  • -1

#3 Xuoi2013

Xuoi2013

    biết zoom

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

Đã gửi 10 May 2013 - 03:14 PM

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


  • 0

#4 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 10 May 2013 - 03:21 PM

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)

 

 


  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#5 tgdesign

tgdesign

    biết zoom

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

Đã gửi 10 May 2013 - 03:29 PM

trả lời ở đây nhưng đăng câu hỏi ở đây mấy anh ơi!


  • 0

#6 Xuoi2013

Xuoi2013

    biết zoom

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

Đã gửi 10 May 2013 - 05:13 PM

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é.


Bài viết đã được chỉnh sửa nội dung bởi Xuoi2013: 10 May 2013 - 05:20 PM

  • 0

#7 Song Nhi

Song Nhi

    biết vẽ rectang

  • Members
  • PipPip
  • 83 Bài viết
Điểm đánh giá: 52 (tàm tạm)

Đã gửi 10 May 2013 - 06:07 PM

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?!!


  • 0

#8 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 10 May 2013 - 06:22 PM

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


  • 0

#9 quansla

quansla

    biết lệnh xclip

  • Members
  • PipPipPipPipPipPipPip
  • 641 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 10 May 2013 - 08:53 PM

trả lời ở đây nhưng đăng câu hỏi ở đây mấy anh ơi!

xem kỹ ở đây nha bạn

http://www.cadviet.c...ng-dan-su-dung/


  • 1

#10 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 10 May 2013 - 10:07 PM

       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ử.....


  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#11 Xuoi2013

Xuoi2013

    biết zoom

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

Đã gửi 10 May 2013 - 11:32 PM

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 '


  • 0

#12 Xuoi2013

Xuoi2013

    biết zoom

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

Đã gửi 12 May 2013 - 10:39 AM

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)
)


  • 0