Đến nội dung


Hình ảnh
- - - - -

Tạo hàm Lisp từ các lệnh của cad


  • Please log in to reply
1 reply to this topic

#1 hatesale

hatesale

    biết zoom

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

Đã gửi 12 February 2015 - 03:29 PM

Chào anh em ! :)  :)

Mình đang gặp khó khăn trong việc sử dụng các hàm có sẵn của Cad để viết Lisp. :wacko:  :wacko:  :wacko:

Ví dụ như: 

- Tạo layer

   (command " layer " "m" "ten_layer" "c" "1" "w" "0.4" "" "")

- thay đổi thông số đơn vị bản vẽ

   (command "units" "2" "3" "2" "3" "" "")

 

Đoạn code như trên mình muốn hiểu thì phải thử, tuy nhiên nếu mình muốn thiết lập nhiều thông số như trong cad thì phải code Lisp viết như thế nào? 

ví dụ như tạo dimstyle

mình sưu tập code thì thấy có đoạn như sau:

(command "dimtxt" 2) ; chiều cao text

(command "dimscale" 100) ; tỷ lệ

......

Vậy cho mình hỏi làm sao để mình biết các từ khoá "dimtxt" "dimscale"....để còn biết và viết code ạ

 

Trân thành cảm ơn anh em nhé :)  :)  :)  :)

 

 


  • 0

#2 quansla

quansla

    biết lệnh xclip

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

Đã gửi 12 February 2015 - 05:13 PM

Chào anh em ! :)  :)
Mình đang gặp khó khăn trong việc sử dụng các hàm có sẵn của Cad để viết Lisp. :wacko:  :wacko:  :wacko:
Ví dụ như: 
- Tạo layer
   (command " layer " "m" "ten_layer" "c" "1" "w" "0.4" "" "")
- thay đổi thông số đơn vị bản vẽ
   (command "units" "2" "3" "2" "3" "" "")
 
Đoạn code như trên mình muốn hiểu thì phải thử, tuy nhiên nếu mình muốn thiết lập nhiều thông số như trong cad thì phải code Lisp viết như thế nào? 
ví dụ như tạo dimstyle
mình sưu tập code thì thấy có đoạn như sau:
(command "dimtxt" 2) ; chiều cao text
(command "dimscale" 100) ; tỷ lệ
......
Vậy cho mình hỏi làm sao để mình biết các từ khoá "dimtxt" "dimscale"....để còn biết và viết code ạ
 
Trân thành cảm ơn anh em nhé :)  :)  :)  :)


Không ngưng học hỏi bạn ạ,tích luỹ dần dần rồi sẽ có thôi
C1/ Dành cho việc tự nghiên cứu, không dùng tài liệu, Chịu khó khi mở Cad, tìm hiểu các biến liên quan của Cad, ví dụ bạn có thể (với cad đời cao - ví dụ 2012 như máy mình) : mở hộp thoại Dimmentision Mânger di chuột lại gần một thiết lập nào đó, dừng chuột lại đó chờ cho trợ giúp của Cad hiện nên (rất nhanh, khoảng 1-1.5 s thôi) trong đó có thể sẽ có biến liên quan đến thông số đó mà bạn cần. ví dụ DimGap khi di chuột lại gần thông số khoảng cách TextDim và đường ghi kích thước.
C2/ Bạn hãy sử dụng lệnh "SYSVDLG" (hoặc menu Express Tool / System variable Editor...) để có thông số về toàn bộ biến của Cad, cùng các trợ giúp liên quan. Bạn có thể sửa giá trị của chúng lẻ lẻ ra ví dụ 1,321342342 sau đó suất ra tập tin svf(sau này cần đổi lại thành txt để đọc) để dễ tìm giá trị của chúng khi thay đổi, hoặc tinh ý tìm ra thay đổi của chúng trên bản vẽ.
C3/ Đọc Help của Cad, dò thông tin trên mạng. Hỏi trực tiếp khi gặp vướng mắc.


trên là cách mà mình tìm hiểu biến hệ thống của Cad ngày trước, khá hữu ích. Bạn muón sửa thông số Cad có thể sử dụng cách này.

Đương nhiên sẽ có nhiều thông số mà bạn không tìm được (không có, không dễ thấy) . bạn có thể tìm cách thiết lập chúng bằng nhiều cách khác. Chẳng hạn dùng lệnh (Scrip/ Líp/ VBA) thực hiện lệnh để làm thiết lập lần lượt như khi thực hiện thủ công



Tham khảo nha: Tạo dim style

(defun c:taodim()
(setvar "cmdecho" 0)
(command
"DIMBLK" "archtick" "DIMASZ" 1.2 "DIMCEN" 2
"DIMTIH" "off" "DIMTDEC" 2 "DIMZIN" 8
"DIMAZIN" 2 "DIMTOH" "off" "DIMTIH" "off"
"DIMDEC" 2 "DIMCLRT" 6 "DIMTIX" "on"
"DIMTXT" 2.5 "DIMTAD" 1 "DIMGAP" 0.5
"DIMCLRD" 8 "DIMLTYPE" "bylayer" "DIMLWD" -1
"DIMDLE" 1
;"DIMSCALE" 100
"DIMCLRE" 8 "DIMLTEX1" "bylayer"
"DIMLTEX2" "bylayer" "DIMEXE" 1 "DIMEXO" 0
"DIMLWE" -1 "DIMATFIT" 3 "DIMTMOVE" 0
"DIMTOFL" "on" "DIMDEC" 2 "DIMDSEP" "."
"DIMLUNIT" 2 "DIMLWD" -1 "DIMLWE" -1
"DIMJUST" 0 "DIMTAD" 1 "DIMTFILL" 0
)
(IF (NOT (TBLSEARCH "STYLE" "DIM"))
(command "-style"
"DIM"
"tahoma.TTF"
""
""
""
""
""
(while (> (getvar "cmdactive") 0) (command ""))
)
)
(COMMAND "DIMTXSTY" "DIM")
(if (not (tblsearch "DIMSTYLE" "xxxxx100"))
(Command ".dimstyle" "s" "xxxxx100")
)
(prompt "da tao xong dim xxxxx100 " )
(setvar "cmdecho" 1)
(princ)
)



hoặc ví dụ về tạo Text Style


(defun taotxt(name font txh )
(IF (NOT (TBLSEARCH "STYLE" name ))
(command "-style"
name
font
txh
"" "" "" ""
(while (> (getvar "cmdactive") 0)(command ""))
)
)
)
(defun c:taotxt()
(tblsearch "style" "t3")
(setvar "cmdecho" 0)
(taotxt "Dim" "vnromadi.shx" 0 )
(taotxt "Dim2" "tvsimli.shx" 0 )
(taotxt "T1" "vnromadi.shx" 0 )
(taotxt "T2" "VHHELS.TTF" 0 )
(taotxt "T3" "VHAVAN.TTF" 0 )
(princ "\nda tao xong cac text Style ")
(setvar "cmdecho" 1)
(princ)
)

  • 0