Đến nội dung


Hình ảnh
* * - - - 1 Bình chọn

[Hỏi] Cùng nhau học LISP


  • Please log in to reply
171 replies to this topic

#41 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 23 September 2010 - 04:40 PM

Dùng bình thường mà bạn.Lệnh là xsc
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#42 tuannguyen314169

tuannguyen314169

    biết lệnh ddedit

  • Members
  • PipPipPipPip
  • 297 Bài viết
Điểm đánh giá: 57 (tàm tạm)

Đã gửi 23 September 2010 - 08:34 PM

Dùng bình thường mà bạn.Lệnh là xsc

Cảm ơn Bác đã quan tâm, nhưng mình vẫn không làm được vì chỉ scan được với mỗi trục x trong 3D còn y,z không thực hiện được. Thank you very much.
  • 0

#43 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 23 September 2010 - 09:53 PM

XL bạn vì mình k test được trong 3d,còn x,y mình scale bình thường :|
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#44 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 23 September 2010 - 11:59 PM

(defun c:test()
(setq
GOC1 (getpoint "\nDiem dat.: ")
GOC3 (getpoint "\nDiem 2:")
dt (polar GOC3 (dtr 180) 100))
(vl-cmdf "._dimlinear" GOC1 GOC3 dt)
(princ dt)
(princ)
)
Các bác cho e hỏi code trên sai ở đâu mà bến dt e đặt thế nào cũng không ảnh hưởng tới hình dim nhận được?:( Hay nó có ảnh hưởng mà e k biết.Hay trong dòng lệnh dimliner thì biến dt không đồng nghĩa với việc kick chuột vào tọa độ dt ?
Đã thế dim ra lại bị lệch 1 chân,và chân dim khi dài khi ngắn nữa chứ :(
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#45 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 24 September 2010 - 12:30 AM

(defun c:test()
(setq
GOC1 (getpoint "\nDiem dat.: ")
GOC3 (getpoint "\nDiem 2:")
dt (polar GOC3 (dtr 180) 100))
(vl-cmdf "._dimlinear" GOC1 GOC3 dt)
(princ dt)
(princ)
)
Các bác cho e hỏi code trên sai ở đâu mà bến dt e đặt thế nào cũng không ảnh hưởng tới hình dim nhận được?:( Hay nó có ảnh hưởng mà e k biết.Hay trong dòng lệnh dimliner thì biến dt không đồng nghĩa với việc kick chuột vào tọa độ dt ?
Đã thế dim ra lại bị lệch 1 chân,và chân dim khi dài khi ngắn nữa chứ :(

Cái (dtr 180) là cái gì vậy bạn. Theo mình nghĩ bạn định lấy goc 180 độ chứ gì nếu đúng thì bạn thay bằng thế này (/ (* 180 pi) 180) đây là cách đổi độ ra radian.
  • 0
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#46 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 24 September 2010 - 08:06 AM

Ấy chết em quên,bên trên có hàm định nghĩa dtr đổi góc ra độ rồi ạ .Không biết có chuẩn k nữa :(
(defun DTR (A) (* pi (/ A 180.0)))

  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#47 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 24 September 2010 - 08:08 AM

(defun c:test()
(setq
GOC1 (getpoint "\nDiem dat.: ")
GOC3 (getpoint "\nDiem 2:")
dt (polar GOC3 (dtr 180) 100))
(vl-cmdf "._dimlinear" GOC1 GOC3 dt)
(princ dt)
(princ)
)
Các bác cho e hỏi code trên sai ở đâu mà bến dt e đặt thế nào cũng không ảnh hưởng tới hình dim nhận được?:( Hay nó có ảnh hưởng mà e k biết.Hay trong dòng lệnh dimliner thì biến dt không đồng nghĩa với việc kick chuột vào tọa độ dt ?
Đã thế dim ra lại bị lệch 1 chân,và chân dim khi dài khi ngắn nữa chứ :(

Góp ý cùng bạn :
1. cách đặt tên biến : dĩ nhiên mỗi nguời có 1 cách đặt tên khác nhau nhưng cái tên phải có ý nghĩa gợi nhớ liên quan đến phần nội dung nó chuyển tải. Chữ in hay chữ thuờng đều đuợc.
vd :
- với giá trị góc -> đặt là GOC, G1 hay ANG (Víêt tắt cùa Angle)
- với giá trị điểm-> đặt là d1 hay Pt (Víêt tắt cùa Point)

2.Về cú pháp của hàm POLAR : (polar pt ang dist)
- pt là tọa độ điểm
- ang là giá trị của góc đo đơn vị Radian
- dist là khoảng cách từ điểm pt
Bạn thiếu hàm dtr có nhiệm vụ đổi số đo góc từ Degrees sang Radian.
như vậy dòng : (polar GOC3 (dtr 180) 100) đổi thành (polar GOC3 (/ pi 2) 100)

3. Khi dùng các lệnh CAD trong Lisp, nên tắt các Osnap, Ortho để tránh các hệ lụy không mong muốn.
  • 1

#48 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 24 September 2010 - 08:10 AM

Ấy chết em quên,bên trên có hàm định nghĩa dtr đổi góc ra độ rồi ạ .Không biết có chuẩn k nữa :(

(defun DTR (A) (* pi (/ A 180.0)))

Không chuẩn ở câu viết : Phải viết là đổi góc từ độ ra Radian mới đúng
DTR : Dgree to Radian
  • 1

#49 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 24 September 2010 - 08:45 AM

Góp ý cùng bạn :
1. cách đặt tên biến : dĩ nhiên mỗi nguời có 1 cách đặt tên khác nhau nhưng cái tên phải có ý nghĩa gợi nhớ liên quan đến phần nội dung nó chuyển tải. Chữ in hay chữ thuờng đều đuợc.
vd :
- với giá trị góc -> đặt là GOC, G1 hay ANG (Víêt tắt cùa Angle)
- với giá trị điểm-> đặt là d1 hay Pt (Víêt tắt cùa Point)

2.Về cú pháp của hàm POLAR : (polar pt ang dist)
- pt là tọa độ điểm
- ang là giá trị của góc đo đơn vị Radian
- dist là khoảng cách từ điểm pt
Bạn thiếu hàm dtr có nhiệm vụ đổi số đo góc từ Degrees sang Radian.
như vậy dòng : (polar GOC3 (dtr 180) 100) đổi thành (polar GOC3 (/ pi 2) 100)

3. Khi dùng các lệnh CAD trong Lisp, nên tắt các Osnap, Ortho để tránh các hệ lụy không mong muốn.

Vậy chính xác là sai ở chỗ dùng dtr rồi.E đã test lại,E định nghĩa hàm này trong 1 lisp khác,để load suite rồi mà không hiểu sao đến lúc tạo file mới,chạy code thì ra tình trạng như thắc mắc đêm qua.Đến lúc dùng thử hàm (dtr A) mới biết k có.Chuyển hẳn nó vào code thì ok luôn :|
Lại nữa,trong 1 code e định nghĩa các hàm rồi.Nhưng đến lúc dùng trong code lại báo lỗi chưa có.
Ví dụ như khi e viết :

(defun loadline(....)
..........)
;;;;
(defun c:abc()
loadline (...)
......
)

Lưu lại rồi load,gõ lệnh abc thì máy báo không có hàm loadline.E phải hì hục copy cả code phần (defun loadline(...)...) vào dòng command thì lúc ấy máy mới hiểu.Lỗi này là do cad e lỗi hay e dùng bị lỗi ạ ? Vì e vẫn đinh ninh 1 hàm nếu định nghĩa trong code lsp thì các hàm cú pháp chính trong file đó thoải mái dùng ?Mong mọi người giúp e với

Không chuẩn ở câu viết : Phải viết là đổi góc từ độ ra Radian mới đúng
DTR : Dgree to Radian

Hì hì,tại e viết láu quá ^^
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#50 master_worse

master_worse

    biết lệnh offset

  • Advance Member
  • PipPipPip
  • 170 Bài viết
Điểm đánh giá: 87 (tàm tạm)

Đã gửi 24 September 2010 - 09:05 AM

Ấy chết em quên,bên trên có hàm định nghĩa dtr đổi góc ra độ rồi ạ .Không biết có chuẩn k nữa :(

(defun DTR (A) (* pi (/ A 180.0)))

Thấy trong Lisp có cái này:
Converts a value from one unit of measurement to another
(cvunit value from-unit to-unit)
Arguments
value
The numeric value or point list (2D or 3D point) to be converted.
from-unit
The unit that value is being converted from.
to-unit
The unit that value is being converted to.
The from-unit and to-unit arguments can name any unit type found in the acad.unt file.
Return Values
The converted value, if successful; otherwise nil, if either unit name is unknown (not found in the acad.unt file),
or if the two units are incompatible (for example, trying to convert grams into years).

----------------------
Sao không sử dụng?

Command: (cvunit 180 "degree" "radian")
3.14159


Lưu lại rồi load,gõ lệnh abc thì máy báo không có hàm loadline.E phải hì hục copy cả code phần (defun loadline(...)...) vào dòng command thì lúc ấy máy mới hiểu.Lỗi này là do cad e lỗi hay e dùng bị lỗi ạ ? Vì e vẫn đinh ninh 1 hàm nếu định nghĩa trong code lsp thì các hàm cú pháp chính trong file đó thoải mái dùng ?

Dùng thoải mái luôn, nhưng phải đúng cú pháp, các hàm trong lisp phải đặt trong ()
(loadline ...) chứ không phải loadline(...)
(dtr A) chứ có phải dtr (A) đâu

  • 1

Ngu dốt không đáng thẹn bằng thiếu ý chí học hỏi


Tri thức làm người ta khiêm tốn, ngu si làm người ta kiêu ngạo (Ngạn ngữ Anh)


#51 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 24 September 2010 - 09:37 AM

Đến lúc dùng thử hàm (dtr A) mới biết k có

Converts a value from one unit of measurement to another
(cvunit value from-unit to-unit)

Cái này giờ e mới biết.
Còn dùng hàm con thì e dùng (loadline đối số)..SR bác vì lúc ví dụ e typ thiếu.Càng ngày càng bị sai sót trong cách diễn đạt :(
Đây là trong nhiệm vụ cụ thể e đặt ra lúc lập topic,giờ đang làm đến phần dim cạnh thì tắt lịm :( Thao tác dim sau khi kick 2 đầu mút tìphải kick điểm thứ 3 đặt điểm nằm của chân dim.Nhưng e không biết dùng như thế nào để thể hiện việc ấy.(cụ thể là trong dòng ;1,;2 bên dưới ạ).Em đang nghĩ đến việc dim với object,nhưng HCN của e là pl,không biết có đưuọc không nữa.Mong mọi người giúp đỡ
(defun C:dvc (/ GOC1 dx dy temp-1 temp-2 GOC2 TRUC1 TRUC2 TRUC3 TRUC4 TAM temp3 temp4)
  
;;;;;;Khoi Tao cac layer can thiet
(loadLinetype (vla-get-activedocument (vlax-get-acad-object)) "center2" "acad.lin");load linetype center2
(taolayer "KCVN-CAT" "30" "0.3" "Continuous");Chuyen layer Cat ve cot
(taolayer "KCVN-HATCH" "251" "0.09" "Continuous")
(taolayer "KCVN-TRUC" "251" "0.15" "center2")

;;dinh nghia ham doi do ra radian
(defun DTR (A) (* pi (/ A 180.0)))
;;;;;;;Gan bien
(setq dx     (getdist "\nChieu dai canh theo truc x: ")
    dy     (getdist "\nChieu dai canh theo theo truc y: ")
GOC1 (getpoint "\nDiem dat.: ");Lay diem goc trai ben duoi HCN
    GOC2     (list (+ (car GOC1) dx) (+ (cadr GOC1) dy) 0);Gan diem goc phai tren cung HCN
GOC3 (list (+(car GOC1) dx) (cadr GOC1) 0)
    TAM     (list (+ (car GOC1) (/ dx 2)) (+ (cadr GOC1) (/ dy 2)) 0);Tam HCN
TRUC1 (list (-(car GOC1) 100 ) (+(cadr GOC1) (/ dy 2)) 0);Dau mut center line
TRUC2 (LIST (+(car GOC1) dx 100) (+(cadr GOC1) (/ dy 2)) 0);Dau mut center line
dtemp   (list (+ (car GOC1) (/ dx 2) 1) (+ (cadr GOC1) (/ dy 2) 1) 0);diem lay goc 45
    )


(setvar "clayer" "KCVN-CAT");Chuyen ve layer CAT
   (vl-cmdf "._RECTANGLE" "_non" GOC1 "D" dx dy "_non" GOC2);Ve HCN
  (setq temp3 (entlast));2 Lay bien HCN
(setvar "clayer" "KCVN-HATCH");Chuyen ve layer hatch
  (vl-cmdf "hatch" "ansi31" "15" "" temp3 "");hatch
  (setq temp4 (entlast));4 Lay bien net hatch
(setvar "clayer" "KCVN-TRUC");Chuyen ve layer TRUC
(command "._line" TRUC1 TRUC2 "")
(setq temp5 (entlast)); Lay net truc
(command "._mirror" temp5 "" TAM dtemp "" "N")
(setq temp6 (entlast)); Lay net truc
(setq dtemp1 (polar GOC3 (dtr 90) 5)));;----------1 Lay diem keo chan dim
(command "._dimlinear" GOC1 GOC3 dtemp1);;------2 kick lan luot 3 diem trong thao tac dim
(setq temp7 (entlast)); Lay net DIM
 (vl-cmdf  "_.copy" temp3 temp4 temp5 temp6 temp7"" "m" TAM pause);5
);End main defun


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Tao layer neu chua co;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun Taolayer(layr_name color lw lt / tbl t1 t2 key)
(setvar "Cmdecho" 0)
(setq tbl(tblnext "LAYER" 1));khoi tao bien
(while tbl
(setq t1(strcase layr_name) t2 (cdr(car(cdr tbl))) )
(if (equal t1 t2) (setq key 1));kiem tra ten layer co ton tai
(setq tbl(tblnext "LAYER"))
)
(if(/= key 1)
(progn (setq tbl NIL );giai phong bien
(command "_.LAYER" "N" layr_name "C" color layr_name "LW" lw layr_name "L" lt layr_name "" )
)
)
(setq layr_name NIL);giai phong bien
(princ)
);end sub defun

;;;;;;;;;;;;;;;;;;;;;;;;;Kiem tra va load linetype,code by Jimmy
;;; (loadLinetype (vla-get-activedocument (vlax-get-acad-object)) "Divide" "acadiso.lin")
;;; returns: T if loaded else nil
(defun loadLinetype (doc LineTypeName FileName)
(if (and
(not (existLinetype doc LineTypeName))
(vl-catch-all-error-p
(vl-catch-all-apply
'vla-load
(list
(vla-get-Linetypes doc)
LineTypeName
FileName
)
)
)
)
nil
T
)
)

;;; (existLinetype (vla-get-activedocument (vlax-get-acad-object)) "Divide")
(defun existLinetype (doc LineTypeName / item loaded)
(vlax-for item (vla-get-linetypes doc)
(if (= (strcase (vla-get-name item)) (strcase LineTypeName))
(setq loaded T)
)
)
);end sub defun

  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#52 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 24 September 2010 - 09:48 AM

.................
Sao không sử dụng?
(cvunit 180 "degree" "radian")
...........

Tại sao " Trời đã sinh ra Du sao còn sinh ra Lượng" ?
Câu trả lời :
(defun c:test(/ buoc goc time)

(setq goc 180
buoc 100000)
(princ (strcat "\nSo sanh toc do khi chay " (itoa buoc) " lan."))
(princ "\nDang thuc hien. Vui long doi ... ")

(setq time (getvar "MILLISECS"))
(repeat buoc
(* pi (/ goc 180.0)) )
(setq time (/ (- (getvar "MILLISECS") time) 1000.0))
(princ (strcat "\nThoi gian thuc hien (giay) :" (rtos time)))


(setq time (getvar "MILLISECS"))
(repeat buoc
(cvunit goc "degree" "radian") )
(setq time (/ (- (getvar "MILLISECS") time) 1000.0))
(princ (strcat "\nThoi gian thuc hien (giay) :" (rtos time)))

(princ )
)

  • 3

#53 master_worse

master_worse

    biết lệnh offset

  • Advance Member
  • PipPipPip
  • 170 Bài viết
Điểm đánh giá: 87 (tàm tạm)

Đã gửi 24 September 2010 - 09:54 AM

(cụ thể là trong dòng ;1,;2 bên dưới ạ)

(defun C:dvc (/ GOC1 dx dy temp-1 temp-2 GOC2 TRUC1 TRUC2 TRUC3 TRUC4 TAM temp3 temp4)
  (setq dtemp1 (polar GOC3 (dtr 90) 5)));;----------1 Lay diem keo chan dim

Dòng này dư một)
thay gì phài dùng hàm DTR tại sao không sử dụng trực tiếp đơn vị RADIAN trong các trường hợp 0.0 0.5pi pi 1.5pi ...
(setq dtemp1 (polar GOC3 (* 0.5 pi) 5))

Càng ngày càng bị sai sót trong cách diễn đạt

4 ngày post hơn 100 bài thì sai sót cũng bình thường
"Làm nhiều sai nhiều làm ít thì sai ít" :(
  • 1

Ngu dốt không đáng thẹn bằng thiếu ý chí học hỏi


Tri thức làm người ta khiêm tốn, ngu si làm người ta kiêu ngạo (Ngạn ngữ Anh)


#54 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 24 September 2010 - 10:23 AM

Tại sao " Trời đã sinh ra Du sao còn sinh ra Lượng" ?
Câu trả lời :

(defun c:test(/ buoc goc time)

(setq goc 180
buoc 100000)
(princ (strcat "\nSo sanh toc do khi chay " (itoa buoc) " lan."))
(princ "\nDang thuc hien. Vui long doi ... ")

(setq time (getvar "MILLISECS"))
(repeat buoc
(* pi (/ goc 180.0)) )
(setq time (/ (- (getvar "MILLISECS") time) 1000.0))
(princ (strcat "\nThoi gian thuc hien (giay) :" (rtos time)))
(setq time (getvar "MILLISECS"))
(repeat buoc
(cvunit goc "degree" "radian") )
(setq time (/ (- (getvar "MILLISECS") time) 1000.0))
(princ (strcat "\nThoi gian thuc hien (giay) :" (rtos time)))

(princ )
)

Bác trả lời thuyết phục quá..Phải dùng cái này như lá bùa mới được.^^ Như em mới chỉ dừng ở mức "làm sao đạt đc mục đích",chứ chưa cải thiện được việc "một cách tối ưu"..Tks bác ^^
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#55 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 24 September 2010 - 10:29 AM

Dòng này dư một)
thay gì phài dùng hàm DTR tại sao không sử dụng trực tiếp đơn vị RADIAN trong các trường hợp 0.0 0.5pi pi 1.5pi ...
(setq dtemp1 (polar GOC3 (* 0.5 pi) 5))

4 ngày post hơn 100 bài thì sai sót cũng bình thường
"Làm nhiều sai nhiều làm ít thì sai ít" :(


Trời ơi đất hỡi.Hic..Sai cơ bản.Tự kiểm điểm và khiển trách :( Cám ơn bác đã tìm giúp e.Có lẽ phải chuyển qua dùng N++ thôi,trình còi mà dùng Notepad,thi thoảng ngồi đếm dấu ngoặc đóng,mở cũng vẫn sai ^^
À,vì hàm (dtr) e còn dùng ở nhiều chỗ khác,đằng nào cũng load,nên vào code cũng dùng,nhìn cho nó "có vẻ" pro ^^.Chứ trường hợp này đúng là chỉ cần / pi 2 là đc ^^.lại sai ^^

PS : sao code bài trên e post lên nó lại dài thồ lồ như vậy nhỉ,sao nó không cuộn cuộn trong cửa sổ như mọi khi nhỉ ^^
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#56 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 24 September 2010 - 12:16 PM

Trời ơi đất hỡi.Hic..Sai cơ bản.Tự kiểm điểm và khiển trách :( Cám ơn bác đã tìm giúp e.Có lẽ phải chuyển qua dùng N++ thôi,trình còi mà dùng Notepad,thi thoảng ngồi đếm dấu ngoặc đóng,mở cũng vẫn sai ^^
À,vì hàm (dtr) e còn dùng ở nhiều chỗ khác,đằng nào cũng load,nên vào code cũng dùng,nhìn cho nó "có vẻ" pro ^^.Chứ trường hợp này đúng là chỉ cần / pi 2 là đc ^^.lại sai ^^

PS : sao code bài trên e post lên nó lại dài thồ lồ như vậy nhỉ,sao nó không cuộn cuộn trong cửa sổ như mọi khi nhỉ ^^

Nhắc bạn (/ pi 2) =90 độ. Code dài là đúng rồi bạn phải dùng "codebox" thay vì "code"
  • 0
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#57 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 25 September 2010 - 03:17 PM

Các bác cho e hỏi nhanh hàm trả từ số về string và hàm ghép 2 string với ^^.Chẳng là sau khi người dùng nhập tỉ lệ,em vừa muốn dùng số đấy để làm đối số cho hàm tạo dim với dimlfac = tile,vừa muốn tạo tên Dim là D-tile ^^
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#58 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 25 September 2010 - 03:56 PM

Các bác cho e hỏi nhanh hàm trả từ số về string và hàm ghép 2 string với ^^.Chẳng là sau khi người dùng nhập tỉ lệ,em vừa muốn dùng số đấy để làm đối số cho hàm tạo dim với dimlfac = tile,vừa muốn tạo tên Dim là D-tile ^^

Hè hề hề,
Hàm trả giá trị số thành chuỗi là (rtos number mode prec) trong đó mode là kiểu thể hiện tỷ như scientific, architechtural.... , prec là độ chính xác sử dụng
Hàm ghép hai chuỗi là (strcat str1 str2....)
Hề hề hề
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#59 master_worse

master_worse

    biết lệnh offset

  • Advance Member
  • PipPipPip
  • 170 Bài viết
Điểm đánh giá: 87 (tàm tạm)

Đã gửi 25 September 2010 - 04:05 PM

Các bác cho e hỏi nhanh hàm trả từ số về string và hàm ghép 2 string với ^^.Chẳng là sau khi người dùng nhập tỉ lệ,em vừa muốn dùng số đấy để làm đối số cho hàm tạo dim với dimlfac = tile,vừa muốn tạo tên Dim là D-tile ^^

hàm:
Converts a number into a string
(rtos number [mode [precision]])
The rtos function returns a string that is the representation of number according to the settings of mode, precision, and the system variables UNITMODE, DIMZIN, LUNITS, and LUPREC.
---------------------------------------------
Converts a string into a real number
(atof string)
----------------------------------------------
Converts a string that represents a real (floating-point) value into a real value
(distof string [mode])
The distof and rtos functions are complementary. If you pass distof a string created by rtos, distof is guaranteed to return a valid value, and vice versa (assuming the mode values are the same).
------------------------------------------------
Converts a string into an integer
(atoi string)
----------------------------------------------
Returns the conversion of an integer into a string
(itoa int)
---------------------------------------------------------------
Returns the conversion of a number into a real number
(float number)
---------------------------------------------------------------------
Returns a string that is the concatenation of multiple strings
(strcat [string[string]...])
  • 1

Ngu dốt không đáng thẹn bằng thiếu ý chí học hỏi


Tri thức làm người ta khiêm tốn, ngu si làm người ta kiêu ngạo (Ngạn ngữ Anh)


#60 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 25 September 2010 - 05:16 PM

Hì.E cảm ơn 2 bác.E sẽ xúc tiến ngay ^^
Cho e hỏi 1 câu hơi dài là : e đang test 2 hàm tạo dimstyle trên mạng này,nhưng chưa được.Không hiểu là hàm có vấn đề hay lại như lần trước,"cách sử dụng của em sai".
Cái thứ nhất :

(defun vcurvedim (vcurvescale / dstylename)
(command "-style" "KCVN-COM" "VNSIMLI.shx" 0 1 0 "" "" "")
(setvar "DIMADEC" 0) ;Angular decimal places
(command "DIMALT" "Off") ;Alternate units selected
(setvar "DIMALTD" 3) ;Alternate unit decimal places
(setvar "DIMALTF" 0.0394) ;Alternate unit scale factor
(setvar "DIMALTRND" 0.0000) ;Alternate units rounding value
(setvar "DIMALTTD" 3) ;Alternate tolerance decimal places
(setvar "DIMALTTZ" 0) ;Alternate tolerance zero suppression
(setvar "DIMALTU" 2) ;Alternate units
(setvar "DIMALTZ" 0) ;Alternate unit zero suppression
(setvar "DIMAPOST" "") ;Prefix and suffix for alternate text
(setvar "DIMARCSYM" 0) ;Arc length symbol
(setvar "DIMASZ" 0.8500) ;Arrow size
(setvar "DIMATFIT" 3) ;Arrow and text fit
(setvar "DIMAUNIT" 0) ;Angular unit format
(setvar "DIMAZIN" 0) ;Angular zero supression
(setvar "DIMBLK" "ClosedFilled") ;Arrow block name
(command "DIMBLK1" "ArchTick") ;First arrow block name
(command "DIMBLK2" "ArchTick") ;Second arrow block name
(setvar "DIMCEN" 1.8000) ;Center mark size
(setvar "DIMCLRD" BYLAYER) ;Dimension line and leader color
(setvar "DIMCLRE" BYLAYER) ;Extension line color
(setvar "DIMCLRT" 60) ;Dimension text color
(setvar "DIMDEC" 0) ;Decimal places
(setvar "DIMDLE" 0.0000) ;Dimension line extension
(setvar "DIMDLI" 0.0000) ;Dimension line spacing
(setvar "DIMDSEP" ".") ;Decimal separator
(setvar "DIMEXE" 0.9000) ;Extension above dimension line
(setvar "DIMEXO" 0.0000) ;Extension line origin offset
(setvar "DIMFRAC" 0) ;Fraction format
(setvar "DIMFXL" 1.2500) ;Fixed Extension Line
(command "DIMFXLON" "Off") ;Enable Fixed Extension Line


(setvar "DIMGAP" 0.6600) ;Gap from dimension line to text

(command "DIMJOGANG" 45) ;Radius dimension jog angle
(setvar "DIMJUST" 0) ;Justification of text on dimension line
(command "DIMLDRBLK" "ClosedFilled") ;Leader block name
(setvar "DIMLFAC" vcurvescale) ;----------------------Note -- Linear unit scale factor
(command "DIMLIM" "Off") ;Generate dimension limits
(command "DIMLTEX1" "BYBLOCK") ;Linetype extension line 1
(command "DIMLTEX2" "BYBLOCK") ;Linetype extension line 2
(command "DIMLTYPE" "BYBLOCK") ;Dimension linetype
(setvar "DIMLUNIT" 2) ;Linear unit format
(setvar "DIMLWD" -2) ;Dimension line and leader lineweight
(setvar "DIMLWE" -2) ;Extension line lineweight
(setvar "DIMPOST" "'") ;Prefix and suffix for dimension text
(setvar "DIMRND" 0.0000) ;Rounding value
(command "DIMSAH" "On") ;Separate arrow blocks
(setvar "DIMSCALE" 1.0000) ;Overall scale factor
(command "DIMSD1" "Off") ;Suppress the first dimension line
(command "DIMSD2" "Off") ;Suppress the second dimension line
(command "DIMSE1" "Off") ;Suppress the first extension line
(command "DIMSE2" "Off") ;Suppress the second extension line
(command "DIMSOXD" "Off") ;Suppress outside dimension lines
(setvar "DIMTAD" 1) ;Place text above the dimension line
(setvar "DIMTDEC" 0) ;Tolerance decimal places
(setvar "DIMTFAC" 1.0000) ;Tolerance text height scaling factor
(setvar "DIMTFILL" 1) ;Text background enabled
(setvar "DIMTFILLCLR" "BYBLOCK") ;Text background color
(command "DIMTIH" "Off") ;Text inside extensions is horizontal
(command "DIMTIX" "On") ;Place text inside extensions
(setvar "DIMTM" 0.0000) ;Minus tolerance
(setvar "DIMTMOVE" 2) ;Text movement
(command "DIMTOFL" "On") ;Force line inside extension lines
(command "DIMTOH" "Off") ;Text outside horizontal
(command "DIMTOL" "Off") ;Tolerance dimensioning
(setvar "DIMTOLJ" 1) ;Tolerance vertical justification
(setvar "DIMTP" 0.0000) ;Plus tolerance
(setvar "DIMTSZ" 0.0000) ;Tick size
(setvar "DIMTVP" 0.0000) ;Text vertical position
(setvar "DIMTXSTY" "KCVN-COMM") ;Text style
(setvar "DIMTXT" 1.8000) ;Text height
(setvar "DIMTZIN" 0) ;Tolerance zero suppression
(command "DIMUPT" "Off") ;User positioned text
(setvar "DIMZIN" 8) ;Zero suppression


(setq dstylename "ENGLISHVC")

(command "dimstyle"
"save"
dstylename
) ;_ end of command
) ;_ end of defun

Lúc dùng thì em dùng ntnày
; DimStyle Create
;
(defun DSTYLE_DIMSTYLE_CREATE (DSTY$ DSCL# AH$ FSTY$)
(if (null (tblsearch "dimstyle" DSTY$))
(progn
(entmake
(list
(cons 0 "DIMSTYLE") ; Entity Type
(cons 100 "AcDbSymbolTableRecord") ; Subclass marker
(cons 100 "AcDbDimStyleTableRecord") ; Subclass marker
(cons 2 DSTY$) ; Dimstyle name
(cons 70 0) ; Standard flag value
(cons 3 "") ; DIMPOST
(cons 4 "") ; DIMAPOST
(cons 5 AH$) ; DIMBLK
(cons 6 AH$) ; DIMBLK1
(cons 7 AH$) ; DIMBLK2
(cons 40 DSCL#) ; DIMSCALE
(cons 41 0.0937) ; DIMASZ
(cons 42 0.0937) ; DIMEXO
(cons 43 0.38) ; DIMDLI
(cons 44 0.0625) ; DIMEXE
(cons 45 0.0) ; DIMRND
(cons 46 0.0625) ; DIMDLE
(cons 47 0.0) ; DIMTP
(cons 48 0.0) ; DIMTM
(cons 140 0.0937) ; DIMTXT
(cons 141 0.09) ; DIMCEN
(cons 142 0.0) ; DIMTSZ
(cons 143 25.4) ; DIMALTF
(cons 144 1.0) ; DIMLFAC
(cons 145 0.0) ; DIMTVP
(cons 146 1.0) ; DIMTFAC
(cons 147 0.0625) ; DIMGAP
(cons 71 0) ; DIMTOL
(cons 72 0) ; DIMLIM
(cons 73 0) ; DIMTIH
(cons 74 0) ; DIMTOH
(cons 75 0) ; DIMSE1
(cons 76 0) ; DIMSE2
(cons 77 0) ; DIMTAD
(cons 78 3) ; DIMZIM
(cons 170 0) ; DIMALT
(cons 171 2) ; DIMALTD
(cons 172 0) ; DIMTOFL
(cons 173 0) ; DIMSAH
(cons 174 0) ; DIMTIX
(cons 175 0) ; DIMSOXD
(cons 176 1) ; DIMCLRD
(cons 177 1) ; DIMCLRE
(cons 178 2) ; DIMCRRT
(cons 270 4) ; DIMUNIT
(cons 271 4) ; DIMDEC
(cons 272 4) ; DIMTDEC
(cons 273 2) ; DIMALTU
(cons 274 2) ; DIMALTTD
(cons 275 0) ; DIMAUNIT
(cons 276 2) ; DIMFRAC
(cons 277 4) ; DIMLUNIT
(cons 279 2) ; DIMTMOVE
(cons 280 0) ; DIMJUST
(cons 281 0) ; DIMSD1
(cons 282 0) ; DIMSD2
(cons 283 1) ; DIMTOLJ
(cons 284 0) ; DIMTZIN
(cons 285 0) ; DIMALTZ
(cons 286 0) ; DIMALTTZ
(cons 287 5) ; DIMFIT
(cons 288 0) ; DIMUPT
(cons 340 (tblobjname "style" FSTY$)) ; DIMTXSTY
(cons 342 (cdr (assoc 330 (entget (tblobjname "block" AH$))))); DIMLDRBLK
(cons 343 (cdr (assoc 330 (entget (tblobjname "block" AH$))))); DIMLDRBLK1
(cons 344 (cdr (assoc 330 (entget (tblobjname "block" AH$))))); DIMLDRBLK2
)
)
)
)
(command "._-dimstyle" "_restore" DSTY$) ; Set dimstyle current
(alert (strcat "\nThe current DimStyle name is "DSTY$"."
"\nThe current DimScale set to "(rtos DSCL# 2 0)"."))
)
;
;;;/////////////////////////////////////////////////////////

Đến lúc dùng thì :
(defun c:taodim()
(DSTYLE_DIMSTYLE_CREATE "DIM" 1 "." "text")
)
cũng hỏng.Lần này chắc do e k hiểu cách gán đối số.Vì cơ bản e cũng không hiểu $,# là cái j...
Chắc chắn là e sai nhưng đầu óc đang bấn loạn,không tìm đc chỗ sai :( Tạo dimstyle rườm rà quá,nên e định thôi thì dùng template.Nhưng mà ấm ức quá,k chịu đc :)(.Code dài,các bác chịu khó cop về test hàm hộ e với nhé :((
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC