Đến nội dung


Hình ảnh
- - - - -

[Nhờ chỉnh sửa] lisp ghi kích thước không dùng dim


  • Please log in to reply
32 replies to this topic

#21 phamhuy1

phamhuy1

    biết vẽ rectang

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

Đã gửi 22 August 2014 - 10:03 AM

ketxu

Gửi vào Hôm qua, 09:25 AM

Đáng ra cái lisp 1 này nhocangbat phải tự viết được rồi mới phải.. Hzzz

Mình nghĩ lisp 1 nhoclangbat nên tự bơi... đừng phụ lòng người dạy lisp cho mình :angry2:


  • 0

#22 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 22 August 2014 - 10:33 AM

1. Bạn chỉ làm dc 1 lần là vì lần sau nó không tìm thấy giao điểm (tức là điểm pt12), bạn phải cho nó extend 2 đoạn thẳng = cách viết :

(setq pt12 (inters pt3 pt4 diem (polar diem goc90 20) nil))

 

2. Bạn có thể lưu biến tl = 2 động tác sau:

 a. Không khử biến tl khi khai báo defun.

 b. Viết lại đoạn tỉ lệ như sau:

    (if (= tl nil) (setq tl 1000))

    (setq tl1 (getreal (strcat "\n don vi ban do ht 1/ <" (rtos tl) ">: ")))

    (if tl1 (setq tl tl1))


  • 1

#23 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 22 August 2014 - 10:43 AM

thanhk a Tot77 để e thử :)


  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#24 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 22 August 2014 - 10:47 AM

Mình nghĩ lisp 1 nhoclangbat nên tự bơi... đừng phụ lòng người dạy lisp cho mình :angry2:

^^

 
  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#25 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 22 August 2014 - 11:39 AM

- nó trục trặc sao đó e chưa hiểu a Tot77 ơi ^^

don vi ban do ht (500): 200
 don vi ban do ht (200):
Diem dau:
Diem cuoi:
Phia:Unknown command "LKK".  Press F1 for help.

Diem dau:
Unknown command "LKK".  Press F1 for help.
1

Command:  LKK
Unknown command "LKK".  Press F1 for help.

 don vi ban do ht (500):

 don vi ban do ht (500):

- e chỉ mún nó hiện 1 lần hỏi tỉ lệ thui, set them tl1 nên nó hỏi tip, mặc đinh là 500 e nhập 200, sau khi e dim xong e kết thúc lệnh, sau đó gọi lại nó ko nhớ là 200 vẫn cứ 500 @@, e đã ko khử biến tl ở dòng khai báo dèun rùi :)


  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#26 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 22 August 2014 - 12:05 PM

Bạn gửi cái bạn viết lên.


  • 0

#27 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 22 August 2014 - 12:11 PM

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.c...khong-dung-dim/
(defun RTD (a) (* 180 (/ a PI)))
(defun C:lkk (/ h k d w x f  so canh goc goc90 pt pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 pt11 pt12 pt13 pt14 text noidung diem hieu old echo)
  (setq echo (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (command "layer" "m" "B-Canh1" "c" "7" "" "")
  (command "style" "VHELVCN" "vni-Helve-Condense" 0 1 0 "" "")
  (setq old (getvar "OSMODE"))
  (setvar "OSMODE" 33)
  (command ".layer" "s" "B-CANH1" "")
  (if (tblsearch "style" "VHELVCN")  (setvar "TEXTSTYLE" "VHELVCN"))
  (command "UNDO" "BE" "")
  (setq tl (getint "\n don vi ban do ht (500): "))
  (if (= tl nil) (setq tl 500))
   (setq tl1 (getint (strcat "\n don vi ban do ht (" (rtos tl 2 0) "): ")))
   (if tl1 (setq tl tl1))
  ;co so lan: x
  (setq x (/ 1000 tl))
  ;(setq h (/ 1.7 x))
  (while (= (setq h (/ 1.7 x)) 0))
  (setq d (/ 1.6 x)
 w (/ 0.48 x)
 k 2.50
 f (/ 0.90 x)) ; khoang cach mui ten voi canh can do
  (while (and (/= (setq pt1 (getpoint "\nDiem dau: ")) nil)
             (/= (setq pt2 (getpoint pt1 "\nDiem cuoi: ")) nil))
    (setvar "OSMODE" 0)    
    (setq goc (angle pt1 pt2) so (distance pt1 pt2)
          canh (rtos so 2 2)  )
    (setq pt8 (polar pt1 goc (/ so 2))
          pt7 (getpoint pt8 "\nPhia:")
          pt10 (inters pt1 pt2 pt7 (polar pt7 (+ goc (/ PI 2)) 1) nil)
          goc90 (angle pt10 pt7))
    (setq pt3 (polar pt1 goc90 f) 
          pt4 (polar pt2 goc90 f)
           pt5 (polar pt3 goc d)
          pt6 (polar pt5 goc d)
          pt9 (polar pt3 goc (/ so 2))  
           pt (polar pt8 goc90 (/ 1.4 x))
          pt11 (polar pt6 goc (- so (* 4 d)))
          pt14 (polar pt11 goc d))
		  
    (if (or (<= (RTD goc) 90) (>= (RTD goc) 270)) 
      (command "TEXT" "M" pt h (RTD goc) canh "")
      (command "TEXT" "M" pt h (+ (RTD goc) 180) canh "")
    );if
	(setq text (entlast)
		  noidung (entget text)
		  diem (cdr (assoc 10 noidung)))
    (setq pt12 (inters pt3 pt4 diem (polar diem goc90 20) nil)
		  pt13 (polar pt12 goc (* 2  (distance pt12 pt9)))
		  )
	(setq hieu (- (distance pt6 pt11) (distance pt12 pt13))) 
    (if (>= hieu (- 0 0.01))
      (progn
        (command "PLINE" pt3 "W" 0.0 w pt5 "W" 0.0 0.0 pt6 "")
	    (command "PLINE" pt11 "W" 0.0 0.0 pt14 "W" w 0.0 pt4 "")
        ;(command "MIRROR" "L" "" pt9 pt8 "")
      );progn
    );if
    
    (setvar "OSMODE" 33)
  );while
  (command "UNDO" "E" "")
  (setvar "OSMODE" old)
  (setvar "cmdecho" echo)
)
 

- a xem giúp e ^^


  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#28 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 22 August 2014 - 12:18 PM

1. Bạn xoá cái dòng (setq tl (getint "\n don vi ban do ht (500): "))

2. Sửa lại (command "PLINE" pt4 "W" 0.0 w pt14 "W" 0.0 0.0 pt11 "")

3. (command "TEXT" "M" pt h (RTD goc) canh )

    (command "TEXT" "M" pt h (+ (RTD goc) 180) canh )  xoá dấu "" ở cuối.


  • 1

#29 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 22 August 2014 - 01:59 PM

-Hihi thanks a Tot77, 2 lsp giờ chạy tốt rùi a, e còn lăn tăn 1 xíu với lsp2 có cách code nào cho cad nó chạy nhẹ hơn không a nhỉ, e thử dim với 1 loc dạng phân lô có nhiều lô nhỏ thì nhìn cad chạy có vẽ mệt hơi chậm ^^ chưa đc gọn như chương trình ở cơ quan, em cũng ko dám đòi hỏi thêm, e thấy vậy tạm đủ xài, khi nào tay nghề lên sữa sau cũng đc :), minh họa tí cho zui

scStk8.gif

- của cơ quan nhanh hơn tí :)

WndP7Y.gif


  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#30 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 22 August 2014 - 02:19 PM

Thì ng ta đầu tư nhiều thời gian công sức hơn dĩ nhiên phải tốt hơn, nếu không họ compile thành vlx làm gì?

Cái này để khi nào bạn học tới hàm entmake thì bạn thay tất cả các dòng nào có command thành entmake, nó sẽ tăng tốc cho ct khá nhiều.


  • 1

#31 tientracdia

tientracdia

    biết lệnh scale

  • Members
  • PipPipPip
  • 147 Bài viết
Điểm đánh giá: -11 (hơi kém)

Đã gửi 22 August 2014 - 03:00 PM

1. Bạn xoá cái dòng (setq tl (getint "\n don vi ban do ht (500): "))

2. Sửa lại (command "PLINE" pt4 "W" 0.0 w pt14 "W" 0.0 0.0 pt11 "")

3. (command "TEXT" "M" pt h (RTD goc) canh )

    (command "TEXT" "M" pt h (+ (RTD goc) 180) canh )  xoá dấu "" ở cuối.

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.c...dung-dim/page-2
;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.c...khong-dung-dim/
(defun RTD (a) (* 180 (/ a PI)))
(defun C:lkk (/ h k d w x f  so canh goc goc90 pt pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 pt11 pt12 pt13 pt14 text noidung diem hieu old echo)
  (setq echo (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (command "layer" "m" "B-Canh1" "c" "7" "" "")
  (command "style" "VHELVCN" "vni-Helve-Condense" 0 1 0 "" "")
  (setq old (getvar "OSMODE"))
  (setvar "OSMODE" 33)
  (command ".layer" "s" "B-CANH1" "")
  (if (tblsearch "style" "VHELVCN")  (setvar "TEXTSTYLE" "VHELVCN"))
  (command "UNDO" "BE" "")
  ;;(setq tl (getint "\n don vi ban do ht (500): "))
  (if (= tl nil) (setq tl 500))
   (setq tl1 (getint (strcat "\n don vi ban do ht (" (rtos tl 2 0) "): ")))
   (if tl1 (setq tl tl1))
  ;co so lan: x
  (setq x (/ 1000 tl))
  ;(setq h (/ 1.7 x))
  (while (= (setq h (/ 1.7 x)) 0))
  (setq d (/ 1.6 x)
 w (/ 0.48 x)
 k 2.50
 f (/ 0.90 x)) ; khoang cach mui ten voi canh can do
  (while (and (/= (setq pt1 (getpoint "\nDiem dau: ")) nil)
             (/= (setq pt2 (getpoint pt1 "\nDiem cuoi: ")) nil))
    (setvar "OSMODE" 0)    
    (setq goc (angle pt1 pt2) so (distance pt1 pt2)
          canh (rtos so 2 2)  )
    (setq pt8 (polar pt1 goc (/ so 2))
          pt7 (getpoint pt8 "\nPhia:")
          pt10 (inters pt1 pt2 pt7 (polar pt7 (+ goc (/ PI 2)) 1) nil)
          goc90 (angle pt10 pt7))
    (setq pt3 (polar pt1 goc90 f) 
          pt4 (polar pt2 goc90 f)
           pt5 (polar pt3 goc d)
          pt6 (polar pt5 goc d)
          pt9 (polar pt3 goc (/ so 2))  
           pt (polar pt8 goc90 (/ 1.4 x))
          pt11 (polar pt6 goc (- so (* 4 d)))
          pt14 (polar pt11 goc d))
		  
    (if (or (<= (RTD goc) 90) (>= (RTD goc) 270)) 
      (command "TEXT" "M" pt h (RTD goc) canh "")
      (command "TEXT" "M" pt h (+ (RTD goc) 180) canh "")
    );if
	(setq text (entlast)
		  noidung (entget text)
		  diem (cdr (assoc 10 noidung)))
    (setq pt12 (inters pt3 pt4 diem (polar diem goc90 20) nil)
		  pt13 (polar pt12 goc (* 2  (distance pt12 pt9)))
		  )
	(setq hieu (- (distance pt6 pt11) (distance pt12 pt13))) 
    (if (>= hieu (- 0 0.01))
      (progn
        (command "PLINE" pt3 "W" 0.0 w pt5 "W" 0.0 0.0 pt6 "")
	    (command "PLINE" pt11 "W" 0.0 0.0 pt14 "W" w 0.0 pt4 "")
        ;(command "MIRROR" "L" "" pt9 pt8 "")
      );progn
    );if
    
    (setvar "OSMODE" 33)
  );while
  (command "UNDO" "E" "")
  (setvar "OSMODE" old)
  (setvar "cmdecho" echo)
)
 

Con phần này sửa ở đâu, mong bạn giữp

2. Sửa lại (command "PLINE" pt4 "W" 0.0 w pt14 "W" 0.0 0.0 pt11 "")

3. (command "TEXT" "M" pt h (RTD goc) canh )

    (command "TEXT" "M" pt h (+ (RTD goc) 180) canh )  xoá dấu "" ở cuối.


  • 0

#32 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 22 August 2014 - 03:06 PM

Bạn tìm chỗ nào có (command "TEXT" ...) và  (command "PLINE" ...) (cái "PLINE" cuối cùng)

Hay bạn nhoc post cái lsp1 cuối cùng lên cho ai muốn down.


  • 0

#33 hieuhx68

hieuhx68

    biết vẽ circle

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

Đã gửi 15 December 2014 - 07:57 PM

Bạn thử cái này, có thêm lựa chọn có vẽ mũi tên hay không. Nếu kc nhỏ quá nó sẽ ko vẽ mũi tên.

 

(defun c:loi(/ tl w k h echo old x d f)
  (defun ve(pt1 pt2 / goc so canh pt8 goc90 pt3 pt4 pt5 pt6 pt9 pt0 pt) ;;; tl w k h f x d
    (if (> (car pt1) (car pt2)) (setq pt0 pt1 pt1 pt2 pt2 pt0))
    (setq goc (angle pt1 pt2)
 so (distance pt1 pt2)
          canh (rtos so 2 2))
    (setq pt8 (polar pt1 goc (/ so 2))    
 goc90 (+ goc (* 0.5 pi)) 
          pt3 (polar pt1 goc90 f) 
          pt4 (polar pt2 goc90 f)
 pt5 (polar pt3 goc d)
          pt6 (polar pt5 goc d)
 pt9 (polar pt3 goc (/ so 2))  
 pt (polar pt8 goc90 (/ 1.4 x)))    
    (if (and cove (> so (* 4 (distance pt3 pt6))))
      (progn
        (command "PLINE" pt3 "W" 0.0 w pt5 "W" 0.0 0.0 pt6 "")
        (command "MIRROR" "L" "" pt9 pt8 ""))
    )
    (command "TEXT" "M" pt h (RTD goc) canh "")
  )
  
  (defun getp(v / l1)
    (if (= "LINE" (cdr (assoc 0 (entget v))))
      (setq l1 (list (list (cdr (assoc 10 (entget v))) (cdr (assoc 11 (entget v))))))
      (setq l1 (mapcar 'cdr (vl-remove-if-not '(lambda(x) (= (car x) 10)) (entget v)))
   l1 (if (or (= 1 (cdr (assoc 70 (entget v))))
      (equal (car l1) (last l1) 0.001))
(mapcar 'list l1 (append (cdr l1) (list (car l1))))
(mapcar 'list l1 (cdr l1) )))
    )
    (mapcar '(lambda(y) (ve (car y) (last y))) l1)
  )
  
  ;;;
  (command "layer" "m" "B-Canh1" "c" "7" "" "")
  (command "style" "VAVON" "vni-avo" 0 1 0 "" "")
  (setq echo (getvar "cmdecho")) (setvar "cmdecho" 0)
  (setq old (getvar "OSMODE")) (setvar 'osmode 0)   
  (command ".layer" "s" "B-CANH1" "")
  (if (tblsearch "style" "VAVON")  (setvar "TEXTSTYLE" "VAVON"))
  (command "UNDO" "BE")
  (setq tl (getreal "\n don vi ban do ht 1/ <1000>: "))
  (if (= tl nil) (setq tl 1000))
  (initget "Y N")
  (setq cove (getkword "\nVe mui ten <Enter=Yes/No>: "))
  (if (= cove "N") (setq cove nil) (setq cove t))
  
  (setq x (/ 1000 tl)
h (/ 1.7 x)
d (/ 1.6 x)
        w (/ 0.48 x)
        f (/ 0.90 x)) 
    
  (mapcar 'getp (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "LINE,LWPOLYLINE")))))))
   
  (command "UNDO" "E")
  (setvar "OSMODE" old)
  (setvar "cmdecho" echo)
)

Mọi người giúp thêm em yêu cầu này nữa được ko ạ. Lênh trên đã rất oke khi đo hàng loạt kích thước rồi ạ. Em muốn mọi người giúp thêm là cho em nó gắn vào 1 loại dim hiện tại để đo. ( tức là ko hiện mũi tên hay ko có mũi tên mà nó sẽ được quy định theo dim hiện tại mình đặt). Em xin cảm ơn.


  • 0