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

Xin lisp đặt tỷ lệ banvẽ

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

nhờ các bác cho xin lsp:

- chọn tỷ lệ bản vẽ (vd chon tỷ lệ 1/500)

- viết ghi chú thì kích cỡ chữ theo tỷ lệ đó

VD: chọn tỷ lệ 1/500

chiều cao chữ 1.0

chọn tỷ lệ 1/1000

chiều cao chữ là 2

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
nhờ các bác cho xin lsp:

- chọn tỷ lệ bản vẽ (vd chon tỷ lệ 1/500)

- viết ghi chú thì kích cỡ chữ theo tỷ lệ đó

VD: chọn tỷ lệ 1/500

chiều cao chữ 1.0

chọn tỷ lệ 1/1000

chiều cao chữ là 2

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

 

;THIET LAP BAN VE---------------------------------------------------------------------

(defun C:FRA ()

(setvar "EXPERT" 5)

;TAO CAC LAYER

(command "layer" "n" "defpoints" "c" "251" "defpoints" "")

(command "layer" "n" "CENTER" "C" "251" "CENTER" "L" "CENTER" "CENTER" "LW" "0.09" "CENTER" "")

(command "layer" "n" "DASHED" "c" "251" "DASHED" "L" "DASHED" "DASHED" "LW" "0.09" "DASHED" "")

(command "layer" "n" "$HATCH" "c" "251" "$HATCH" "lw" "0.09" "$HATCH" "")

(command "layer" "n" "$TEXT" "c" "252" "$TEXT" "lw" "0.18" "$TEXT" "")

(command "layer" "C" "252" "0" "LW" "0.18" "0" "")

 

(smod)

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

(if (= PLAL nil)(setq PLAL 3)(setq PLAL PLA))

(setq PLA (getint (strcat "\nPAGE A? <" (rtos PLAL 2 0) "> :")))

(if (= PLA nil)(setq PLA PLAL))

(cond

((= PLA 0)(setq XPT 1154.94 YPT 830.92))

((= PLA 1)(setq XPT 830.92 YPT 559.99))

((= PLA 2)(setq XPT 583.95 YPT 386.0))

((= PLA 3) (setq XPT (* 1.41 283.91) YPT (* 1.41 196.91)))

((= PLA 4) (setq XPT 283.91 YPT 196.91))

)

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

;TAO BLOCK $UDR THAM CHIEU DON VI VE

 

(setq e (tblsearch "block" "$UDR"))

(if (= nil e)

(progn

(if (= UDRL nil)(setq UDRL 1000)(setq UDRL UDR))

(setq UDR (getint (strcat "\nUNIT DRAW ? <" (rtos UDRL 2 0) "> :")))

(if (= UDR nil)(setq UDR UDRL))

 

(entmake '((0 . "block")(2 . "$UDR")(70 . 64)(10 0 0 0)))

(entmake (list '(0 . "LINE")(cons 39 UDR) '(10 0 0 0) '(11 1000 0 0)))

(entmake '((0 . "endblk")))

(setvar "ltscale" (* 0.22 UDR))

)

(progn

(setq e (tblsearch "block" "$UDR"))

(setq UDR (cdr (assoc 39 (entget(cdr(assoc -2 e))))))

(setvar "ltscale" (* 0.22 UDR))

; (setvar "celtscale" (* 0.004 (* 0.22 UDR (/ SCD 100))))

)

)

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

;TAO BLOCK $DFAL DIMFAL

 

(setq e (tblsearch "block" "$DFAL"))

(if (= nil e)

(progn

(setq DFAL (/ 1000.0 UDR))

(if (= 1 UDR)(setq DFAL 1.0 DDEC 1)(setq DDEC 0))

(entmake '((0 . "block")(2 . "$DFAL")(70 . 64)(10 0 0 0)))

(entmake (list '(0 . "LINE")(cons 39 DFAL) '(10 0 0 0) '(11 1000 0 0)))

(entmake '((0 . "endblk")))

)

(progn

(setq e (tblsearch "block" "$DFAL"))

(setq DFAL (cdr (assoc 39 (entget(cdr(assoc -2 e))))))

)

)

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

(if (= SCDL nil)(setq SCDL "100")(setq SCDL SCDT))

(setq SCDT (getstring (strcat "\nSCALE DRAW 100,200,500... <" SCDL "> :")))

(if (= SCDT "")(setq SCDT SCDL))

(setq SCD (atof SCDT))

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

;tao textstyle

 

(setq TST (rtos SCD 2 0))

(setq TS (* 0.25 UDR (/ SCD 100))) ;tao textsize

(setvar "textsize" TS)

(FR1)

(setq DSC (* TS 0.5))

(FR2)

(setq e (tblsearch "style" TST))

(if (/= nil e)

(progn

(setvar "textstyle" TST)

(command "dimstyle" "r" TST)

)

)

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

 

;TAO KHUNG BAN VE

 

(SETVAR "OSMODE" 0)

(setq XPT (* 0.001 SCD UDR XPT) YPT (* 0.001 SCD UDR YPT))

(setq P0 (getpoint "\nBASE FRAM OR ENTER :"))

(if (/= nil p0)

(progn

(setq PC (list (+ (car P0) XPT) (+ (cadr P0) YPT)))

(command "rectangle" P0 PC)

(setq e0 (entlast))

(command "chprop" e0 "" "la" "defpoints" "")

(command "text" "j" "TL" P0 "0" (strcat "IN A" (rtos PLA 2 0) " ,TL : 1/" SCDT))

(setq e0 (entlast))

(command "chprop" e0 "" "layer" "defpoints" "")

(command "rectangle"

(list (+ (* 5 TS) (car P0)) (+ (* 0.5 TS) (cadr P0)))

(list (- (car PC) (* 0.5 TS)) (- (cadr PC) (* 0.5 TS)))

)

(setq e0 (entlast))

(command "chprop" e0 "" "c" "1" "lw" "0.4" "")

 

(setq TS (* 0.22 UDR (/ SCD 100))) ;tao textsize

 

)

(progn

(setq P0 (list 0 0 0))

(if (> 500 (distance (getvar "vsmin")(getvar "vsmax")))

(progn

(setq PC (list (+ (car P0) XPT) (+ (cadr P0) YPT)))

(command "rectangle" P0 PC)

(setq e0 (entlast))

(command "chprop" e0 "" "la" "defpoints" "")

(command

"zoom" P0 (list (+ (car P0) XPT) (+ (cadr P0) YPT))

"zoom" "0.9x"

)

(command "text" "j" "TL" P0 "0" (strcat "IN A" (rtos PLA 2 0) " ,TL : 1/" SCDT))

(setq e0 (entlast))

(command "chprop" e0 "" "layer" "defpoints" "")

(command "rectangle"

(list (+ (* 5 TS) (car P0)) (+ (* 0.5 TS) (cadr P0)))

(list (- (car PC) (* 0.5 TS)) (- (cadr PC) (* 0.5 TS)))

)

(setq e0 (entlast))

(command "chprop" e0 "" "c" "1" "lw" "0.4" "")

(setq TS (* 0.22 UDR (/ SCD 100))) ;tao textsize

)

)

)

)

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

;TAO KIEU NET DUT VA NET GACH

 

(setvar "ltscale" (* 0.22 UDR))

(setvar "celtscale" (* 0.004 (* 0.22 UDR (/ SCD 100))))

(rmod)

(princ "\n")

(princ)

)

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

(defun FR1 ()

(setq e (entget(tblobjname "style" (getvar "textstyle"))))

(setq e (subst (cons 2 TST) (assoc 2 e) e))

(setq e (subst (cons 40 TS)(assoc 40 e) e))

(setq e (subst (cons 41 0.7)(assoc 41 e) e))

(setq e (subst (cons 3 "VAVOB.TTF") (assoc 3 e) e))

; (setq e (subst (cons 3 "VAVOB__0.TTF") (assoc 3 e) e))

; (setq e (subst (cons 3 "ARIAL.TTF") (assoc 3 e) e))

(entmake e)

(setvar "textstyle" TST)

)

(defun FR2 ()

(if (= nil (tblobjname "block" "dimled"))

(progn

(entmake '((0 . "block")(2 . "dimled")(70 . 64)(10 70 0 0)));diem chen 70

(entmake '((0 . "polyline")))

(entmake '((0 . "vertex")(40 . 0)(41 . 0)(10 120 0 0)));bat dau tu 120

(entmake '((0 . "vertex")(10 0 0 0))) ;ve 0

(entmake '((0 . "vertex")(40 . 300)(41 . 0)(10 0 0 0)));mo do rong 300 tu 0

(entmake '((0 . "vertex")(10 70 0 0))) ;dai mui ten den 70 do rong 0

(entmake '((0 . "seqend")))

(entmake '((0 . "endblk")))

)

)

(if (= nil (tblobjname "block" "dim"))

(progn

(entmake '((0 . "block")(2 . "dim")(70 . 64)(10 0 0 0)))

(entmake '((0 . "polyline")))

(entmake '((0 . "vertex")(40 . 70)(41 . 70)(10 -60 -60 0)))

(entmake '((0 . "vertex")(10 60 60 0)))

(entmake '((0 . "seqend")))

(entmake '((0 . "endblk")))

)

)

(command

"dim" "setvar"

"dimsah" 1

"dim" "setvar"

"dimsoxd" 0

"dim" "setvar"

"dimblk1" "dim"

"dim" "setvar"

"dimblk2" "dim"

"dim" "setvar"

"dimldrblk" "dimled"

"dim" "setvar"

"dimasz" 2

"dim" "setvar"

"dimdli" 5

"dim" "setvar"

"dimexe" 1.25

"dim" "setvar"

"dimexo" 0

"dim" "setvar"

"dimasz" 0.01

"dim" "setvar"

"dimcen" 2.5

"dim" "setvar"

"dimtad" 1

"dim" "setvar"

"dimjust" 0

"dim" "setvar"

"dimgap" 1

"dim" "setvar"

"dimtix" 1

"dim" "setvar"

"dimtxt" 0.18

"dim" "setvar"

"dimtmove" 2

"dim" "setvar"

"dimupt" 0

"dim" "setvar"

"dimtofl" 1

"dim" "setvar"

"dimtih" 0

"dim" "setvar"

"dimrnd" 0

"dim" "setvar"

"dimtxsty" TST

"dim" "setvar"

"dimscale" DSC

"dim" "setvar"

"dimdec" DDEC

"dim" "setvar"

"dimlfac" DFAL

"save" TST "e"

)

)

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

(defun SMOD ()

(command "undo" "m")

(setq LAC (getvar "clayer"))

(setq OSM (getvar "osmode"))

(setq OTM (getvar "orthomode"))

(setvar "osmode" 703)

(setvar "autosnap" 1)

(setq LINALA (list (cdr (assoc 2 (tblnext "layer" T)))))

(while

(setq e (tblnext "layer"))

(setq LINALA (append LINALA (list (cdr (assoc 2 e)))))

)

(setq LINAOBJLA (list (tblobjname "layer" (cdr (assoc 2 (tblnext "layer" T))))))

(while

(setq e (tblnext "layer"))

(setq LINAOBJLA (append LINAOBJLA (list (tblobjname "layer" (cdr (assoc 2 e))))))

)

(setq LILACO (list (assoc 62 (tblnext "layer" T))))

(while

(setq e (tblnext "layer"))

(setq LILACO (append LILACO (list (assoc 62 e))))

)

(setq LILALO (list (assoc 70 (tblnext "layer" T))))

(while

(setq e (tblnext "layer"))

(setq LILALO (append LILALO (list (assoc 70 e))))

)

(setvar "EXPERT" 5)

)

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

(defun RMOD ()

(mapcar

'(lambda (x y z)

(entmod (subst x (assoc 62 (entget y)) (entget y)))

(entmod (subst z (assoc 70 (entget y)) (entget y)))

)

LILACO LINAOBJLA LILALO

)

(setvar "osmode" OSM)

(setvar "orthomode" OTM)

(setvar "clayer" LAC)

(setvar "luprec" 0)

(princ "* OK NUMBER ONE ! *")(princ)

)

(setvar "dragmode" 1)

(setvar "osmode" 703)

(setvar "expert" 5)

(setvar "snapmode" 0)

(setvar "FILLETRAD" 0.0)

(setvar "cmdecho" 0)

(setvar "mirrtext" 0)

(setvar "UCSICON" 3)

(setvar "UCSview" 1)

(setvar "dimassoc" 1)

(setvar "orthomode" 1)

(setvar "hpassoc" 1); hatch assocactive

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

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
nhờ các bác cho xin lsp:

- chọn tỷ lệ bản vẽ (vd chon tỷ lệ 1/500)

- viết ghi chú thì kích cỡ chữ theo tỷ lệ đó

VD: chọn tỷ lệ 1/500

chiều cao chữ 1.0

chọn tỷ lệ 1/1000

chiều cao chữ là 2

 

Thực ra, yêu cầu của bạn hơi .... lạ. bản vẽ tỉ lệ 1/500 và bản vẽ tỉ lệ 1/1000 không liên quan gì đến chiều cao chữ cả. Nói chung, khi cầm hai bản vẽ này sau khi đã in ra giấy trắng mực đen, thì chiều cao của chữ đều phải như nhau trong bất kì tỉ lệ nào. Thật vô lí nếu có một tờ nào đó chữ lại cao gấp đôi tờ trước. Để đơn giản hơn, tôi ví dụ có một hình vuông vẽ ở hai tỉ lệ khác nhau trong cùng một tờ giấy, thì chỉ có hình vẽ mới to nhỏ khác nhau, còn chữ thì vẫn phải bằng nhau.

Tôi gửi bạn lsp của tôi viết về thiết lập tỉ lệ cho bản vẽ, nó bao gồm vẽ khung viền để bạn chon hai góc khi in, có khung giấy vẽ bằng nét đậm, có ghi chú ở góc là bản vẽ tỉ lệ bao nhiêu và in vào giấy khổ nào, các thứ không cần in tôi đã đặt ở layer depoints, cứ yên trí không sợ nó in ra. trong lệnh thiết lập này, tôi thiết lập luôn kiểu chữ, kiểu kích thước, kiểu nét gạch đứt và nét đường tim tương ứng mà không hề bị thay đổi trong các tỉ lệ khác nhau. Bạn có thể tạo nhiều khung bản vẽ ngay trong một bản vẽ cad. Ngoài ra, smod và rmod là hai hàm dọn dẹp trước và sau khi chạy, cũng như một số biến khác tôi thiết lập sẵn thường dùng khi vẽ cad.

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

Thực ra, yêu cầu của bạn hơi .... lạ. bản vẽ tỉ lệ 1/500 và bản vẽ tỉ lệ 1/1000 không liên quan gì đến chiều cao chữ cả. Nói chung, khi cầm hai bản vẽ này sau khi đã in ra giấy trắng mực đen, thì chiều cao của chữ đều phải như nhau trong bất kì tỉ lệ nào. Thật vô lí nếu có một tờ nào đó chữ lại cao gấp đôi tờ trước. Để đơn giản hơn, tôi ví dụ có một hình vuông vẽ ở hai tỉ lệ khác nhau trong cùng một tờ giấy, thì chỉ có hình vẽ mới to nhỏ khác nhau, còn chữ thì vẫn phải bằng nhau.

Tôi gửi bạn lsp của tôi viết về thiết lập tỉ lệ cho bản vẽ, nó bao gồm vẽ khung viền để bạn chon hai góc khi in, có khung giấy vẽ bằng nét đậm, có ghi chú ở góc là bản vẽ tỉ lệ bao nhiêu và in vào giấy khổ nào, các thứ không cần in tôi đã đặt ở layer depoints, cứ yên trí không sợ nó in ra. trong lệnh thiết lập này, tôi thiết lập luôn kiểu chữ, kiểu kích thước, kiểu nét gạch đứt và nét đường tim tương ứng mà không hề bị thay đổi trong các tỉ lệ khác nhau. Bạn có thể tạo nhiều khung bản vẽ ngay trong một bản vẽ cad. Ngoài ra, smod và rmod là hai hàm dọn dẹp trước và sau khi chạy, cũng như một số biến khác tôi thiết lập sẵn thường dùng khi vẽ cad.

Bạn cho mình hỏi tất cả cái mã lisp của bạn ở trên paste vào cùng một notepad để tạo ra chung một fai lisp hay phải tạo ra từng phần cho nhiều fai./.

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  

×