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

Lisp vẽ nhưng thực hiện không đúng

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

(defun dtr (a)
 (* pi (/ a 180.0)))
;==============================================================================
(defun c:hcn (/  *siz* pt dpt siz e1 e2 dx dy w h p0 p1 p2 p3 txt e4 e5 e6 e7 e8 ten1)
(graphscr)
 (reset)
;==============================================================================
;(setq siz (cond (siz) (40)))
;(setq oldsiz siz)  
;(setq siz (getdist(strcat "\nNhap ty le ban ve: <" (rtos oldsiz 2 3) "> :")))
    ;(if (null siz) (setq siz oldsiz))

  (or *siz* (setq *siz* (* (getvar "dimtxt")(getvar "dimscale"))))
  (initget 6)
	  (setq siz (getreal (strcat "\nNhap ty le ban ve <" (rtos *siz*) "> :")))	  
	  (if siz (setq *siz* siz) (setq siz *siz*))

;==============================================================================
  (command "layer" "m" "glass" "c" "4" "" "")
  (command "layer" "s" "glass" "")
  (setq pt (getpoint "\nStarting corner:"))
	(setq dpt (getcorner pt "\nDiagonal corner:"))
  (setq dx (abs (- (car dpt) (car pt))))
(setq dy (abs (- (cadr dpt) (cadr pt))))
  (setq w (- dx 15))
  (setq h (- dy 15))
  (setq txt (* siz 3))
  (setvar "ltscale" (* siz 2)) 
  (setq p0 (polar pt (dtr 0) (/ dx 2)))
  (setq p1 (polar p0 (dtr 90) (/ dy 4)))
  (setq p2 (polar p1 (dtr 180) txt))
  (setq p3 (polar p1 (dtr 0) txt))
  (command "pline" pt ".x" dpt ".y" pt dpt ".x" pt ".y" dpt "c")
  (setq e1 (entlast))
  (command "offset" 7.5 e1 p1 "")
  (setq e2 (entlast))
  (command "offset" 6 e2 p1 "")
  (setq e7 (entlast))
	(command "offset" 6 e7 p1 "")
  (setq e8 (entlast))
  (prompt "_.change")
  (command "_.change" e7 e8 "" "p" "c" "8" "lt" "dashed2" "")
  (command "erase" e1 "")
;==============================================================================
  (command "layer" "m" "text" "c" "7" "" "")
  (command "layer" "s" "text" "" "")
  (command "layer" "s" "text" "")
  	(command "text" "j" "mr" p2  txt 0 (rtos w 2 1) ) 
  (setq e4 (entlast))
  (command "layer" "s" "text" "")
  (command "text" "j" "ml" p3  txt 0 (rtos h 2 1) )
  (setq e5 (entlast))
  (command "layer" "s" "text" "")
  (command "text" "j" "mc" p1  txt 0 "X" )
  (setq e6 (entlast))
	(setq ten1 (strcat (rtos w 2 1) " " "X" " " (rtos h 2 1)))
  (if (not(tblsearch "block" ten1) )
(command "_.BLOCK" ten1 p1 e2 e4 e5 e6 e7 e8 "" "_.INSERT" ten1 p1 1 1 0)
(progn (command "_.BLOCK" ten1 "y" p1 e2 e4 e5 e6 e7 e8 "" "_.INSERT" ten1 p1 1 1 0)
(alert "\nDa ghi de len block trung ten")
)
)
(reset1)
	(princ)
 )
;==============================================================================
 (defun reset()
	(setq old_lay (getvar "clayer"))
	(setq old_txt (getvar "textstyle"))
	(setvar "plinewid" 0.0)
	(SETVAR "ORTHOMODE" 1)
	(SETVAR "POLARMODE" 0)
	(command  "style"   "romanc"  "romanc"  "0"	   ""		""		""		""		"")
	(setvar "osmode" 15359)
	(setvar "textstyle" "romanc")		
)
;==============================================================================
(defun reset1()
	(setvar "osmode" 15359)
	(setvar "plinewid" 0.0)
	  (setvar "textstyle" old_txt)
  (command "layer" "s" old_lay "")
)

Lisp của em thực hiện vẽ như hình bên dưới

vi_du_1.jpg

Nhưng có lúc thực hiện nó lại thành hình như bên dưới không đúng vị trí chèn text

vi_du_2.jpg

hoặc

vi_du_3.jpg

Không biết là nguyên nhân do đâu lúc thì thực hiện chính xác lúc thì không.Nhờ các bác sửa dù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
Nhưng có lúc thực hiện nó lại thành hình như bên dưới không đúng vị trí chèn text

Không biết là nguyên nhân do đâu lúc thì thực hiện chính xác lúc thì không.Nhờ các bác sửa dùm.

Hàm (Reset) -> Bạn chưa tắt chế độ bắt điểm

(defun reset()

(setq old_lay (getvar "clayer"))

(setq old_txt (getvar "textstyle"))

(setvar "plinewid" 0.0)

(SETVAR "ORTHOMODE" 1)

(SETVAR "POLARMODE" 0)

(command "style" "romanc" "romanc" "0" "" "" "" "" "")

(setvar "osmode" 15359)

(setvar "textstyle" "romanc")

)

 

 

(defun c:hcn (/ *siz* pt dpt siz e1 e2 dx dy w h p0 p1 p2 p3 txt e4 e5 e6 e7 e8 ten1)

(graphscr)

(reset)

;==============================================================================

...........

  • 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
Hàm (Reset) -> Bạn chưa tắt chế độ bắt điểm

(defun reset()

(setq old_lay (getvar "clayer"))

(setq old_txt (getvar "textstyle"))

(setvar "plinewid" 0.0)

(SETVAR "ORTHOMODE" 1)

(SETVAR "POLARMODE" 0)

(command "style" "romanc" "romanc" "0" "" "" "" "" "")

(setvar "osmode" 15359)

(setvar "textstyle" "romanc")

)

(defun c:hcn (/ *siz* pt dpt siz e1 e2 dx dy w h p0 p1 p2 p3 txt e4 e5 e6 e7 e8 ten1)

(graphscr)

(reset)

;==============================================================================

...........

Thanksss!!!

Em làm được rùi (setvar "osmode" 31743) ;tắt truy bắt điể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  

×