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

[Yêu cầu] lsp ghi kích thước

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

Em đã nghiên cứu lại, chương trình của em là do người viết đã gộp các lsp lại thành 1 file .fas , và tiện ích ghi kích thước chỉ là 1 trong số đó, em đã tìm hiểu và pit hình như là chưa có cách chuyển ngược .fas thành lsp đc, nên em mới mún có 1 lsp ghi kích thước đó riêng. Em đã phân tích đc việc chọn tỉ lệ bản đồ là để định kích thước khi in, do chương trình em làm là vẽ bên model mà trình bày và in bên layout sử dụng viewport cho đúng tỉ lệ in với tỉ lệ 1:1, do em cũng ko pit nói làm sao cho nó đầy đủ nên em đã quay lại video cho nó trực quan hơn chút, em đã tìm ra quy luật cỡ text, là khi mình chọn tỉ lệ bđ bên model và in bên layout 1:1 để khi in ra cỡ chữ lun là 1.7 milimet, còn mũi tên là polyline, và độ lớn mũi tên cũng như khoảng cách giống ra cũng phụ thuộc vào tỉ lệ chọn, để khi in ra kích thước độ rộng mũi tên là 0.48, chiều dài từ đầu mũi tên đến độ rộng mũi tên và chiều dài đường line còn lại đều là 1.6 li, khoảng cách giống ra là 1 số lẻ khoảng 0.88, khoảng cách text với đường cần ghi kích thước là 0.48, chương trình này tự tạo ra 2 layer là b-canh1, và b-mui tên, de khi minh ghi kich thuoc dù đang ở layer hiện hành nào sử dụng nó cũng đưa về đúng 2 layer đó, font chữ nó cũng tự tạo ra khi chạy lần đầu và mặc định gắn vào tiện ích ghi kích thước này lun khi sử dụng. Em ko pit còn thiếu dữ liệu nào không, em đã mò hết cỡ rùi hihi, còn về cách bắt điểm thì như trang #2 trong topic em đã trình bày. em quên nó tự tạo ra 2 font lận, tùy thuộc vào hướng mình pick, mà font thẳng hay nghiêng, font thẳng là vni-helve-condese fontstyle: regular , font nghiêng là vni-helve fontstyle: italic

http://www.cadviet.c...04473_mau_5.dwg file cad minh họa

file video

http://www.youtube.com/watch?v=H5amcpEkFCk&feature=youtu.be

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

Bạn đã học lisp mà đưa thiếu nhiều yếu tố quá. Trong file thì các điểm bạn pick là điểm nào? Các đối tượng có yêu cầu layer, ... gì không?

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

em mới học mà anh ^^, anh Duy thông cảm hen, em đang dậm chân tại chương III, em Ket cho câu hỏi tới giờ nghĩ chưa ra nữa hihi.

Điểm pick là bất kỳ điểm nào lun anh do mình tùy chọn trong osnap, chương trình nó vậy đó hay cái là pick lơ lửng ko cần bắt điểm mà có khoảng cách cũng ra lun ,

chương trình đó thì nó tự tạo layer giống file em đưa vậy đó, xong nó mặc định dù minh đang ở layer hiện hành nào, mà sử dụng nó thì ghi kích thước thì text và mủi tên tự đưa về đúng layer của nó

Chết rùi bị anh Ketxu la rùi , sau này em sẽ phân tích suy luận kỹ hơn trước khi yêu cầu

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

nhoclangbat : yêu cầu nhiều nhưng chỉ lấy số lượng thôi hả nlb? các yêu cầu thì thiếu thốn dữ liệu, tí lại chỉnh sửa thêm thắt yêu cầu một lần. tại sao k suy luận, phân tích vấn đề trước khj yêu cầu?

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

Mình vẫn chưa hiểu vì sao bạn không dùng lệnh DAL bình thường mà phải dùng lisp.

Chỉ cần bạn hiệu chỉnh Dim Style 1 chút là sẽ đạt yêu cầu ngay thôi mà.

 

Mà mình nghĩ mọi người góp ý để bạn rút kinh nghiệm trong những lần post bài sau thôi chứ đâu muốn bạn đóng topic như vậy.

Chỉ đóng topic khi bạn thực sự tìm ra được câu trả lời cho vấn đề chính.

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

Chỉnh Dim style như sau:

Preffix là nhiều dấu space tức là " ".

Suffix là nhiều dấu space rồi 1 dấu - tức là " -".

 

Nhược điểm: Có dấu - ở mũi tên phía sau.

Ưu điểm: Nó chính là Dim, Khi bạn stretch, kéo thì nó tự nhảy giá trị chiều dài.

 

Nếu bạn vẫn muốn Lisp thì OK, chủ nhật nhiều người nghiện lisp rảnh lém

  • Vote tăng 1

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

cách này em mới pit ah nha thank anh HHVD nhưng cái vụ dấu "_" nó làm bản vẽ ko đc đẹp lắm anh ah, chắc phải đợi anh nào rãnh giúp hộ em cái hihi

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
 
(defun dxf(code e) (cdr (assoc code (entget e))))
(Defun Bdraw();;;Begin draw, get some current system variables, disable them (bat dau ve, lay bien he thong hien hanh)
(setq OldOs (getvar "osmode"))
(setq OldLay (getvar "clayer"))
(setq OldOrth (getvar "orthomode"))
(setvar "osmode" 555)
(setvar "cmdecho" 0)
(setvar "orthomode" 0)
(command "undo" "BE")
(setq temperr *error*)
(setq *error* Edraw)
)
(Defun Edraw(errmsg);;;End draw, reset all system variables (ket thuc ve, reset tac ca cac bien he thong)
(setvar "osmode" OldOs)
(setvar "clayer" OldLay)
(setvar "cmdecho" 1)
(setvar "orthomode" oldorth)
(if temperr (setq *error* temperr))
(princ "\nWritten by K.S Duong Ba Diep, Mobile:0935.399.773")
)
(defun LM:ProjectPointToLine ( pt p1 p2 / nm )
(setq nm (mapcar '- p2 p1)
     	p1 (trans p1 0 nm)
     	pt (trans pt 0 nm)
)
(trans (list (car p1) (cadr p1) (caddr pt)) nm 0)
)
(defun CV:Geom-divpoint (p1 p2 k) (polar p1 (angle p1 p2) (* (distance p1 p2) k)))
(defun MakeText (point string Height Ang justify Style Layer Color xdata / Lst); Ang: Radial
(setq Lst (list '(0 . "TEXT")
        (cons 8 (if Layer Layer (getvar "Clayer")))
        (cons 62 (if Color Color 256))
        (cons 10 point)
        (cons 40 Height)
        (cons 1 string)
        (if Ang (cons 50 Ang))
        (cons 7 (if Style Style (getvar "Textstyle")))
        (cons -3 (if xdata (list xdata) nil)))
   justify (strcase justify))
(cond ((= justify "C") (setq Lst (append Lst (list (cons 72 1) (cons 11 point)))))
   ((= justify "R") (setq Lst (append Lst (list (cons 72 2) (cons 11 point)))))
   ((= justify "M") (setq Lst (append Lst (list (cons 72 4) (cons 11 point)))))
   ((= justify "TL") (setq Lst (append Lst (list (cons 72 0) (cons 11 point) (cons 73 3)))))
   ((= justify "TC") (setq Lst (append Lst (list (cons 72 1) (cons 11 point) (cons 73 3)))))
   ((= justify "TR") (setq Lst (append Lst (list (cons 72 2) (cons 11 point) (cons 73 3))))) 
   ((= justify "ML") (setq Lst (append Lst (list (cons 72 0) (cons 11 point) (cons 73 2)))))
   ((= justify "MC") (setq Lst (append Lst (list (cons 72 1) (cons 11 point) (cons 73 2)))))
   ((= justify "MR") (setq Lst (append Lst (list (cons 72 2) (cons 11 point) (cons 73 2)))))
   ((= justify "BL") (setq Lst (append Lst (list (cons 72 0) (cons 11 point) (cons 73 1)))))
   ((= justify "BC") (setq Lst (append Lst (list (cons 72 1) (cons 11 point) (cons 73 1)))))
   ((= justify "BR") (setq Lst (append Lst (list (cons 72 2) (cons 11 point) (cons 73 1))))))
(entmakex Lst));end
(defun DBD-WriteRegedit (ValueDefault Promt KeyReg StringReg func keyw / key1 key)
  (setq key1 (vl-registry-read KeyReg StringReg))
  (if (not key1) (vl-registry-write KeyReg StringReg (setq key1 ValueDefault)))
  (if Promt
 	(progn
    	(if keyw (apply 'initget keyw))
    	(setq key (func (strcat Promt " <" key1 ">: ")))
    	(cond
       	((= (type key) 'INT) (vl-registry-write KeyReg StringReg (itoa key)))
       	((= (type key) 'REAL) (vl-registry-write KeyReg StringReg (rtos key)))
       	((= (type key) 'STR) (vl-registry-write KeyReg StringReg key))
       	(t (alert "Loi nang"))
    	)
 	)
  )
  (if (not key) (setq key (read key1)))
  key
)
(defun RoundPi (a / amin)
(setq amin (- a (* pi (fix (/ a pi)))))
(if (and (> amin (* pi 0.5)) (< amin (* pi 1.5))) (setq amin (+ pi amin)))
amin
)
(defun c:aaa (/ Ht Lmt lamtron conti pt1 pt2 pt3 pt4 pt5 pt6 pt-mid-12 pt-mid-56 pt5a pt5b pt6a pt6b kq ang ang56)
(Bdraw)
(command "undo" "BE")
(if (not (tblsearch "Layer" "DBD_TXT")) (Command "Layer" "N" "DBD_TXT" "C" "Yellow" "DBD_TXT" ""))
(if (not (tblsearch "Layer" "DBD_Line")) (Command "Layer" "N" "DBD_Line" "C" "Magenta" "DBD_Line" ""))
(setq Lmt (DBD-WriteRegedit "0.8" nil "HKEY_CURRENT_USER\\DIEP" "Lmuiten" getreal nil))
(setq Ht (DBD-WriteRegedit "2.0" nil "HKEY_CURRENT_USER\\DIEP" "Hchu" getreal nil))
(setq lamtron (DBD-WriteRegedit "2" nil "HKEY_CURRENT_USER\\DIEP" "Lamtron" getint nil))
(setq conti T)
(while conti
 (initget 128)
 (setq pt1 (getpoint (strcat "\n Pick diem thu nhat/L mui ten<" (rtos Lmt 2 2) ">/H chu<" (rtos Ht 2 2) ">/Tron lam<" (itoa lamtron) ">")))
 (cond
  ((listp pt1) (setq conti nil))
  ((and (= (setq typ (type pt1)) 'STR) (= (strcase pt1) "L")) (setq Lmt (DBD-WriteRegedit "0.8" "\nNhap chieu dai mui ten" "HKEY_CURRENT_USER\\DIEP" "Lmuiten" getreal nil)))
  ((and (= (setq typ (type pt1)) 'STR) (= (strcase pt1) "H")) (setq Ht (DBD-WriteRegedit "2.0" "\nNhap chieu cao chu" "HKEY_CURRENT_USER\\DIEP" "Hchu" getreal nil)))
  ((and (= (setq typ (type pt1)) 'STR) (= (strcase pt1) "T")) (setq lamtron (DBD-WriteRegedit "2" "\nLam tron may so" "HKEY_CURRENT_USER\\DIEP" "Lamtron" getint nil)))
 )
)  
(setq pt2 (getpoint pt1 "\n Pick diem thu hai"))
(setq pt-mid-12 (CV:Geom-divpoint pt1 pt2 0.5))
(setq kq (distance pt1 pt2))
(command "DIMALIGNED" pt1 pt2 pause)
(setq pt3 (getvar "lastpoint"))
(entdel (entlast))
(setq
 pt4 (LM:ProjectPointToLine pt3 pt1 pt2)
 ang (angle pt4 pt3)
 angtxt (RoundPi (+ (/ pi 2) ang))
 ; angtxt (if (< (+ (/ pi 2) ang) pi) (+ (/ pi 2) ang) (RoundPi ))
 dis (distance pt3 pt4)
 pt5 (polar pt1 ang dis)
 pt6 (polar pt2 ang dis)
 pt-mid-56 (CV:Geom-divpoint pt5 pt6 0.5)
 ang56 (angle pt5 pt6)
 pt5a (polar pt5 ang56 Lmt)
 pt5b (polar pt5 ang56 (* 5 Lmt))
 pt6a (polar pt6 ang56 (- Lmt))
 pt6b (polar pt6 ang56 (* -5 Lmt))
)
(setvar "osmode" 0)
(setvar "clayer" "DBD_Line")
(command "pline" pt5 "w" 0.0 (/ Lmt 3) pt5a "w" 0.0 0.0 pt5b "")
(command "pline" pt6 "w" 0.0 (/ Lmt 3) pt6a "w" 0.0 0.0 pt6b "")   
(MakeText pt-mid-56 (rtos kq 2 lamtron) Ht angtxt "MC" nil "DBD_TXT" nil nil)  
(Edraw)
)

  • Vote tăng 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

anh HHVD anh có thể sữa giúp em sữa 1 tí trong lsp thui hihi, nếu khoảng cách mà ngắn thì cho nó khỏi hiện mủi tên mà chỉ cần text thui anh, còn lại đều êm ^^

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  

×