Đến nội dung


Hình ảnh
- - - - -

Xin lisp đặt tỷ lệ banvẽ


  • Please log in to reply
4 replies to this topic

#1 dvdcad

dvdcad

    biết vẽ arc

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

Đã gửi 22 April 2009 - 10:14 PM

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
  • 0

#2 ktsk80

ktsk80

    biết lệnh erase

  • Members
  • PipPipPip
  • 107 Bài viết
Điểm đánh giá: 27 (tàm tạm)

Đã gửi 22 April 2009 - 11:12 PM

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
;------------------------------------------------
  • 0
Tớ nẫu đây ! Khà khà

#3 ktsk80

ktsk80

    biết lệnh erase

  • Members
  • PipPipPip
  • 107 Bài viết
Điểm đánh giá: 27 (tàm tạm)

Đã gửi 22 April 2009 - 11:31 PM

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.
  • 0
Tớ nẫu đây ! Khà khà

#4 dvdcad

dvdcad

    biết vẽ arc

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

Đã gửi 24 April 2009 - 01:48 PM

Dù sao cũng thanks bạn ktsk80 nhé.
ai có ý kiến nào khác hãy tham gia
  • 0

#5 phandungh

phandungh

    biết vẽ pline

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

Đã gửi 24 July 2011 - 05:51 PM

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./.
  • 0