Chuyển đến nội dung
Diễn đàn CADViet
tvtk2

Không cắt được đường kích thước

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

Với lệnh catdim bạn nói thì k biết là lệnh cắt dim nào ^^,n có thể k thực hiện được nếu hệ trục k phải World, hoặc nó k còn là "Dim" nữa ^^

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ại sao trong cùng một bản vẽ có một số đường kích thước xử dụng lệnh Catdim lại không cắt được. Bác nào bít tại sao xin chỉ giáo!

1. Bạn nên post bản vẽ không cắt được dim lên đây

2. Có thể bạn dùng lisp bị lỗi

3. Có thể dim của bạn đã bị phá vỡ mất rồi như bác ketxu nói đó

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 xử dụng lệnh CT của lips để cắt. Phần không cắt đựơc mình để text màu đỏ. Lips thi không phải bị lỗi vì vẫn cắt được các đường khác.

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 xử dụng lệnh CT của lips để cắt. Phần không cắt đựơc mình để text màu đỏ. Lips thi không phải bị lỗi vì vẫn cắt được các đường khác. Các bác xem thử bản vẽ này

http://www.cadviet.com/upfiles/3/noname

Phần up file của bạn bị lỗi rồi.

Bạn dùng lisp này để cắt dim nhé. Lệnh CD

;*******************************************************************************

;* WRITTEN BY DAO NGUYEN THANG 94X3-VAN PHONG TU VAN-DAI HOC KIEN TRUC(VIETNAM)*
;*******************************************************************************

(defun myerror (s)				   ; If an error (such as CTRL-C) occurs
								 ; while this command is active...
 (cond
((= s "quit / exit abort") (princ))
((/= s "Function cancelled") (princ (strcat "\nError: " s)))
 )
 (setvar "cmdecho" CMD)			; Restore saved modes
 (setvar "osmode" OSM)
 (setq *error* OLDERR)			  ; Restore old *error* handler
 (princ)
)
;*******************************************************************************

(DEFUN C:CD (/ CMD SS LTH DEM PT DS KDL N70 GOCX GOCY PT13 PT14 PTI PT13I PT14I
			PT13N PT14N O13 O14 N13 N14 OSM OLDERR PT10 PT11)
(SETQ CMD (GETVAR "CMDECHO"))
(SETQ OSM (GETVAR "OSMODE"))
(SETQ OLDERR *error*
  *error* myerror)
(PRINC "Please select dimension object!")
(SETQ SS (SSGET))
(SETVAR "CMDECHO" 0)
(SETQ PT (GETPOINT "Point to trim or extend:"))
(SETQ PT (TRANS PT 1 0))
(COMMAND "UCS" "W")
(SETQ LTH (SSLENGTH SS))
(SETQ DEM 0)
(WHILE (< DEM LTH)
(PROGN
(SETQ DS (ENTGET (SSNAME SS DEM)))
(SETQ KDL (CDR (ASSOC 0 DS)))
(IF (= "DIMENSION" KDL)
   (PROGN
	(SETQ PT10 (CDR (ASSOC 10 DS)))
	(SETQ PT11 (CDR (ASSOC 11 DS)))
	(SETQ PT13 (CDR (ASSOC 13 DS)))
	(SETQ PT14 (CDR (ASSOC 14 DS)))
	(SETQ N70 (CDR (ASSOC 70 DS)))
	(IF (OR (= N70 32) (= N70 33) (= N70 160) (= N70 161))
	   (PROGN
		(SETQ GOCY (ANGLE PT10 PT14))
		(SETQ GOCX (+ GOCY (/ PI 2)))
	   )
	)
	(SETVAR "OSMODE" 0)
	(SETQ PTI (POLAR PT GOCX 2))
	(SETQ PT13I (POLAR PT13 GOCY 2))
	(SETQ PT14I (POLAR PT14 GOCY 2))
	(SETQ PT13N (INTERS PT PTI PT13 PT13I NIL))
	(SETQ PT14N (INTERS PT PTI PT14 PT14I NIL))
	(SETQ O13 (ASSOC 13 DS))
	(SETQ O14 (ASSOC 14 DS))
	(SETQ N13 (CONS 13 PT13N))
	(SETQ N14 (CONS 14 PT14N))
	(SETQ DS (SUBST N13 O13 DS))
	(SETQ DS (SUBST N14 O14 DS))
	(ENTMOD DS)
   )
)
(SETQ DEM (+ DEM 1))
)
)
(COMMAND "UCS" "P")
(SETVAR "CMDECHO" CMD)
(SETVAR "OSMODE" OSM)
(setq *error* OLDERR)			  ; Restore old *error* handler
(PRINC)
)
;******************************************************************************

(DEFUN C:YY (/ CMD SS LTH DEM PT DS KDL N70 GOCX GOCY PT13 PT14 PTI
			PT10 PT10I PT10N O10 N10 PT11 PT11N O11 N11 KC OSM OLDERR)
(SETQ CMD (GETVAR "CMDECHO"))
(SETQ OSM (GETVAR "OSMODE"))
(SETQ OLDERR *error*
  *error* myerror)
(PRINC "Please select dimension object!")
(SETQ SS (SSGET))
(SETVAR "CMDECHO" 0)
(SETQ PT (GETPOINT "Point to trim or extend:"))
(SETQ PT (TRANS PT 1 0))
(COMMAND "UCS" "W")
(SETQ LTH (SSLENGTH SS))
(SETQ DEM 0)
(WHILE (< DEM LTH)
(PROGN
(SETQ DS (ENTGET (SSNAME SS DEM)))
(SETQ KDL (CDR (ASSOC 0 DS)))
(IF (= "DIMENSION" KDL)
   (PROGN
	(SETQ PT13 (CDR (ASSOC 13 DS)))
	(SETQ PT14 (CDR (ASSOC 14 DS)))
	(SETQ PT10 (CDR (ASSOC 10 DS)))
	(SETQ PT11 (CDR (ASSOC 11 DS)))
	(SETQ N70 (CDR (ASSOC 70 DS)))
	(IF (OR (= N70 32) (= N70 33) (= N70 160) (= N70 161))
	   (PROGN
		(SETQ GOCY (ANGLE PT10 PT14))
		(SETQ GOCX (+ GOCY (/ PI 2)))
	   )
	)
	(SETVAR "OSMODE" 0)
	(SETQ PTI (POLAR PT GOCX 2))
	(SETQ PT10I (POLAR PT10 GOCY 2))
	(SETQ PT10N (INTERS PT PTI PT10 PT10I NIL))
	(SETQ KC (DISTANCE PT10 PT10N))
	(SETQ O10 (ASSOC 10 DS))
	(SETQ N10 (CONS 10 PT10N))
	(SETQ DS (SUBST N10 O10 DS))
	(SETQ PT11N (POLAR PT11 (ANGLE PT10 PT10N) KC))
	(SETQ O11 (ASSOC 11 DS))
	(SETQ N11 (CONS 11 PT11N))
	(SETQ DS (SUBST N11 O11 DS))
	(ENTMOD DS)
   )
)
(SETQ DEM (+ DEM 1))
)
)
(COMMAND "UCS" "P")
(SETVAR "CMDECHO" CMD)
(SETVAR "OSMODE" OSM)
(setq *error* OLDERR)
(PRINC)
)

Chúc bạn vui vẻ

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

Phần up file của bạn bị lỗi rồi.

Bạn dùng lisp này để cắt dim nhé. Lệnh CD

;*************************************************************************

******

 

Mình thử dùng lips của bạn rồi. Cũng không cắt được nó. Những đường dim khác thì vẫn cắt được bình thườ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
Mình thử dùng lips của bạn rồi. Cũng không cắt được nó. Những đường dim khác thì vẫn cắt được bình thường.

Bạn có thể up lại bản vẽ của bạn được không?

Có thể phần up file của diễn đàn bị lỗi nên bạn có thể sử dụng link khác để up. Ví dụ như mediafire hoặc 4share

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 test lại link file bạn gửi đi :undecided:.Đấy là link khi user MF của bạn đang active chứ k phải link share file

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 vẽ của em không thể nào cd được dim đối với những dim gắn liền với đối tượng. Còn đối với cd dim bình thường thì vẫn cắt dim bt cái này em ko thể giải thích được mong bác nào giúp đỡ cho em vói em xin gửi file cad như sau :

http://www.mediafire.com/?rpvh9962c032tci

Rất mong các bác giúp đỡ

  • 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

Mình đã kiểm tra, nó giống hệt như bạn nói. Nguyên nhân là khi bạn đo kích thước với 2 line có độ cao khác nhau nên trong không gian 3D nó không cắt được. Bạn thử cho 2 đầu line đó có độ cao Z = 0 rồi đo lại kích thước xem sao. Chúc bạn vui vẻ

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íc bạn ơi, mình cũng muốn mò mẫm xem vấn đề của bạn nó ntn,n khổ nỗi file bạn post, đường dim bạn đánh dấu,mình vẫn cắt nhẹ nhàng và hoàn toàn bình thường @@. Bạn thử chụp màn hình lên để mọi người bắt bệnh xem nào :|

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íc,vấn đề của bạn cũng giống bạn Federe Post

và mình cũng không hiểu tại sao mình vẫn cắt rất bình thường ??? Bạn thử chụp hình lúc thao tác lệnh lên xem nào ?

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 vẽ của em không thể nào cd được dim đối với những dim gắn liền với đối tượng. Còn đối với cd dim bình thường thì vẫn cắt dim bt cái này em ko thể giải thích được mong bác nào giúp đỡ cho em vói em xin gửi file cad như sau :

http://www.mediafire.com/?rpvh9962c032tci

Rất mong các bác giúp đỡ

Bạn hỏi giống bạn này thế

http://www.cadviet.com/forum/index.php?sho...c=30513&hl=

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

Đúng là không cắt được với lisp catdim cd của bạn thanhduan2407 pót lên. Lý do thì do hai cái điểm có mã DXF 13 và 14 không cùng trong mặt phẳng. Do vậy cái thẳng (ỉnters ..... ) nó chả tìm được giao điểm (hai đoạn thẳng chéo nhau).

Còn cái lisp cắt dim ct gì đó thì mình chửa thấy nên cũng chửa biết tại sao. Hề hề hề.

Bạn thử làm như bạn thanhduan2407 nói coi sao hỉ???

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 ctd_err (s)
   (if(/= s "Function cancelled")
      (princ (strcat "\nError: " s)) )(setq *error* old_err)(princ)
)

(defun C:cd (/ dim_ch ll_ d13_ d14_ d4_ d2_ point_cat old_osm dm_13 d10_1 cat_h ang_h
                ang_n dis_1 ang_g ang_d dim_l dim_new dm_14 dis_h old_ang)
(setq old_err *error* *error* ctd_err)
(setvar "Cmdecho" 0)
(setq old_osm(getvar "Osmode") old_ang(getvar "Angdir"))
(setvar "Angdir" 0) ;(setvar "Osmode" 0)
(prompt "\nChon Dim <Aligned-Liner-Hor-Ver> dinh cat.")
(if(and(setq dim_ch(ssget '((0 . "DIMENSION"))))
      (setq point_cat(getpoint "\nDiem moc cat duong giong <New>: ")) ) 
  (progn
    (setq ll_ 0 tol_(sslength dim_ch) total 0.0)
    (while (< ll_ tol_)
(setq d2_(ssname dim_ch ll_) d3_(entget d2_) d4_(cdr(assoc 1 d3_)) )
       (prompt "\nDiem giong moi")
(if(and d3_ d4_)
	   (setq d13_(cdr(assoc 13 d3_))  ;Dim 2 
                d10_(cdr(assoc 10 d3_))  ;Dim Chuan
         d14_(cdr(assoc 14 d3_))  ;Dim 1
                ang_n(angle d10_ d13_)
                dis_1(distance d10_ d13_)
                ang_g(angle d10_ d14_)
                ang_d(- ang_g (dtr 90))
                dim_l(* (cos (- ang_n ang_d)) dis_1) );setq
)
       (if (and dim_l point_cat)
           (progn 
              (setq dis_h(distance d10_ point_cat)
                    ang_h(angle d10_ point_cat)
                    cat_h(* (sin (- ang_h ang_d)) dis_h)
                    dm_14(polar d10_ ang_g cat_h)	;New point2
                    d10_1(polar d10_ ang_d dim_l)
                    dm_13(polar d10_1 ang_g cat_h) )	;New point 1
              (if (and dm_13 dm_14 d14_ d13_ d3_)
                  (progn
                    (setq d3_(subst (cons '13 dm_13) (cons '13 d13_) d3_)
                          d3_(subst (cons '14 dm_14) (cons '14 d14_) d3_))
                    (entmod d3_)(prompt "..... OK !")
                  ) (princ "\n..... Khong thuc hien !")
              )
           )
       )
       (setq ll_(+ ll_ 1))
    );while
  )
)

 

E thì vẫn cắt dim theo thằng này,down file của bạn ấy vào thấy vẫn cắt như dao,nên k bít là nó có z khác 0..Híc

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 đã thử dùng lisp của mình bên trên chưa nhỉ :undecided: Mình cắt vẫn được mà ^^

Thằng bên trái (225) cắt ngọt.Thằng bên phải (40) cũng cắt ngọt n giá trị của nó bị to ra và chạy ra ngoài :leluoi:).N tớ k liên quan j đâu naz,vì bạn chỉ hỏi sao k CẮT đc th :cheers: .Vụ này có lẽ do Z thật.Hề hề.Thực ra thì nếu bình thường tự nhiên gặp 1 2 thằng khó ở ntn,mình cứ cầm chuột vào đầu nó rồi kéo xuống,đỡ phải nghĩ :cheers:)

 

captureaw.jpg

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 đã thử dùng lisp của mình bên trên chưa nhỉ :leluoi: Mình cắt vẫn được mà ^^

Thằng bên trái (225) cắt ngọt.Thằng bên phải (40) cũng cắt ngọt n giá trị của nó bị to ra và chạy ra ngoài :cheers:).N tớ k liên quan j đâu naz,vì bạn chỉ hỏi sao k CẮT đc th :D .Vụ này có lẽ do Z thật.Hề hề.Thực ra thì nếu bình thường tự nhiên gặp 1 2 thằng khó ở ntn,mình cứ cầm chuột vào đầu nó rồi kéo xuống,đỡ phải nghĩ :cheers:)

 

captureaw.jpg

Mình đã thử dùng lisp của bạn rồi nhưng cũng không được không biết tại sao nữa. Cái này mình cũng chỉ mún biết nguyên nhân tại sao nó lại như thế thôi. Cái này cũng ít khi gặp trong bản vẽ mà nếu có gặp thì xử lý cũng dễ. Mình chỉ cần đo thêm 1 lần nữa thì vẫn cắt được bình thường. Mà bạn cắt nhìn không được đẹp nhỉ, :undecided: http://i1237.photobucket.com/albums/ff477/tvtk2/untitled.jpg

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ại sao mình vẫn không cắt được nhỉ. tại Geometry mình để Z=0 rồi nhưng vẫn không được. bạn có thể post hình lúc cắt không. Lisp mình dùng lệnh tắt CT http://www.mediafire.com/?n3u1nyaqz6ra62h

Bạn dùng lisp này để đưa tất cả các dimension có z khác 0 về 0 nhé. Sau đó dùng lisp cắt dim để cắt. Mình cũng mới mày mò thôi.

(defun gdim (ODimension)
(setq edata (entget ODimension))
(setq 1st (cdr (assoc 13 edata)))
 (setq z1 (caddr 1st))
 (if (/= z1 0) (setq z1 0))
 (setq 1st (list (car 1st) (cadr 1st) z1))
(setq  2nd (cdr (assoc 14 edata)))
 (setq z2 (caddr 2nd))
 (if (/= z2 0) (setq z2 0))
 (setq 2nd (list (car 2nd) (cadr 2nd) z2))
 (setq edata (subst (cons 13 1st) (assoc 13 edata) edata ))
  (entmod edata)
 (setq edata (subst (cons 14 2nd) (assoc 14 edata) edata ))
  (entmod edata)
)
(defun c:gd()
(setq ssdt (ssget (list (cons 0  "DIMENSION")))
  sodoituong (sslength ssdt)
  index 0
)
(repeat sodoituong
(setq ent_ht (ssname ssdt index)
  index (1+ index)
)
(gdim ent_ht)
)
 (princ)
)

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 ctd_err (s)
   (if(/= s "Function cancelled")
      (princ (strcat "\nError: " s)) )(setq *error* old_err)(princ)
)

(defun C:cd (/ dim_ch ll_ d13_ d14_ d4_ d2_ point_cat old_osm dm_13 d10_1 cat_h ang_h
                ang_n dis_1 ang_g ang_d dim_l dim_new dm_14 dis_h old_ang)
(setq old_err *error* *error* ctd_err)
(setvar "Cmdecho" 0)
(setq old_osm(getvar "Osmode") old_ang(getvar "Angdir"))
(setvar "Angdir" 0) ;(setvar "Osmode" 0)
(prompt "\nChon Dim <Aligned-Liner-Hor-Ver> dinh cat.")
(if(and(setq dim_ch(ssget '((0 . "DIMENSION"))))
      (setq point_cat(getpoint "\nDiem moc cat duong giong <New>: ")) ) 
  (progn
    (setq ll_ 0 tol_(sslength dim_ch) total 0.0)
    (while (< ll_ tol_)
(setq d2_(ssname dim_ch ll_) d3_(entget d2_) d4_(cdr(assoc 1 d3_)) )
       (prompt "\nDiem giong moi")
(if(and d3_ d4_)
	   (setq d13_(cdr(assoc 13 d3_))  ;Dim 2 
                d10_(cdr(assoc 10 d3_))  ;Dim Chuan
         d14_(cdr(assoc 14 d3_))  ;Dim 1
                ang_n(angle d10_ d13_)
                dis_1(distance d10_ d13_)
                ang_g(angle d10_ d14_)
                ang_d(- ang_g (dtr 90))
                dim_l(* (cos (- ang_n ang_d)) dis_1) );setq
)
       (if (and dim_l point_cat)
           (progn 
              (setq dis_h(distance d10_ point_cat)
                    ang_h(angle d10_ point_cat)
                    cat_h(* (sin (- ang_h ang_d)) dis_h)
                    dm_14(polar d10_ ang_g cat_h)	;New point2
                    d10_1(polar d10_ ang_d dim_l)
                    dm_13(polar d10_1 ang_g cat_h) )	;New point 1
              (if (and dm_13 dm_14 d14_ d13_ d3_)
                  (progn
                    (setq d3_(subst (cons '13 dm_13) (cons '13 d13_) d3_)
                          d3_(subst (cons '14 dm_14) (cons '14 d14_) d3_))
                    (entmod d3_)(prompt "..... OK !")
                  ) (princ "\n..... Khong thuc hien !")
              )
           )
       )
       (setq ll_(+ ll_ 1))
    );while
  )
)

 

E thì vẫn cắt dim theo thằng này,down file của bạn ấy vào thấy vẫn cắt như dao,nên k bít là nó có z khác 0..Híc

Hề hề hề,

Với lisp này thì thực ra là không cắt được do bác ketxu trở thành ket xỉ không chịu post cái lisp DTR lên cho mọi người xài.....

Nếu co lisp DTR này thì chắc hẳn sẽ được vì bác ấy chả thèm dùng tới hàm (inters ....) nên hổng bị cái lỗi giống cái lisp của bạn thanhduan2407.

Trong lisp này tuy chả nói ra nhưng thực tế thì cái điểm mới dm_13 và dm_14 này đều lấy cùng tọa độ z với thằng d10 cả rồi (do dùng hàm polar .....). Tức là nếu d10 có z=0 thì dm_13 và dm_14 cũng có z=0 bác ketxu ạ. Chí ít thì 3 thằng này cũng đồng phẳng rùi. Hề hề hề

Và thằng này cũng có tí lỗi do việc xác định cái điểm dm_13 gây ra.... Thực chất đó chính là do cái khoảng cách dis_1 giữa hai điểm không có cùng cao độ z gây ra. Hề hề hề

Mong bác xem lại hỉ???

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ề hề hề,

Với lisp này thì thực ra là không cắt được do bác ketxu trở thành ket xỉ không chịu post cái lisp DTR lên cho mọi người xài.....

Nếu co lisp DTR này thì chắc hẳn sẽ được vì bác ấy chả thèm dùng tới hàm (inters ....) nên hổng bị cái lỗi giống cái lisp của bạn thanhduan2407.

Trong lisp này tuy chả nói ra nhưng thực tế thì cái điểm mới dm_13 và dm_14 này đều lấy cùng tọa độ z với thằng d10 cả rồi (do dùng hàm polar .....). Tức là nếu d10 có z=0 thì dm_13 và dm_14 cũng có z=0 bác ketxu ạ. Chí ít thì 3 thằng này cũng đồng phẳng rùi. Hề hề hề

Và thằng này cũng có tí lỗi do việc xác định cái điểm dm_13 gây ra.... Thực chất đó chính là do cái khoảng cách dis_1 giữa hai điểm không có cùng cao độ z gây ra. Hề hề hề

Mong bác xem lại hỉ???

Đọc chưa hết bài nhưng mình có lsp cắt được dim có chênh cao Z spam lên cho các bạn khì khì.

(DEFUN C:CD (/ CMD SS LTH DEM PT DS KDL N70 GOCX GOCY PT13 PT14 PTI 
                                 PT13I PT14I PT13N PT14N O13 O14 N13 N14 OSM OLDERR PT10 PT11)
(SETQ CMD (GETVAR "CMDECHO"))
(SETQ OSM (GETVAR "OSMODE"))
;;;(SETQ OLDERR *error*
;;;      *error* myerror)
(PRINC "Lam on chon duong kich thuoc bat ky can cat bo Duong oi:")
(SETQ SS (SSGET))
(SETVAR "CMDECHO" 0)
(SETQ PT (GETPOINT "Con moi bo Duong nhap diem gioi han duong kich thuoc a:"))
(SETQ PT (TRANS PT 1 0))
(COMMAND "UCS" "W")
(SETQ LTH (SSLENGTH SS))
(SETQ DEM 0)
(WHILE (< DEM LTH)
   (PROGN
(SETQ DS (ENTGET (SSNAME SS DEM)))
(SETQ KDL (CDR (ASSOC 0 DS)))
(IF (= "DIMENSION" KDL)
   (PROGN
	(SETQ PT10 (CDR (ASSOC 10 DS)))
	(SETQ PT11 (CDR (ASSOC 11 DS)))
	(SETQ PT13 (CDR (ASSOC 13 DS)))
	(SETQ PT14 (CDR (ASSOC 14 DS)))
	(SETQ PT10 (LIST (CAR PT10) (CADR PT10) 0.00))
	(SETQ PT11 (LIST (CAR PT11) (CADR PT11) 0.00))
	(SETQ PT13 (LIST (CAR PT13) (CADR PT13) 0.00))
	(SETQ PT14 (LIST (CAR PT14) (CADR PT14) 0.00))
	(SETQ N70 (CDR (ASSOC 70 DS)))
	(IF (OR (= N70 0) (= N70 32) (= N70 33) (= N70 160) (= N70 161))
	   (PROGN
		(SETQ GOCY (ANGLE PT10 PT14))
		(SETQ GOCX (+ GOCY (/ PI 2)))
	   )
	)
	(SETVAR "OSMODE" 0)
	(SETQ PTI (POLAR PT GOCX 2))
	(SETQ PT13I (POLAR PT13 GOCY 2))
	(SETQ PT14I (POLAR PT14 GOCY 2))
	(SETQ PT13N (INTERS PT PTI PT13 PT13I NIL))
	(SETQ PT14N (INTERS PT PTI PT14 PT14I NIL))
	(SETQ O13 (ASSOC 13 DS))
	(SETQ O14 (ASSOC 14 DS))
	(SETQ N13 (CONS 13 PT13N))
	(SETQ N14 (CONS 14 PT14N))
	(SETQ DS (SUBST N13 O13 DS))
	(SETQ DS (SUBST N14 O14 DS))
	(ENTMOD DS)
   )
)
(SETQ DEM (+ DEM 1))
   )
)
(COMMAND "UCS" "P")
(SETVAR "CMDECHO" CMD)
(SETVAR "OSMODE" OSM)
;;;(setq *error* OLDERR)               ; Restore old *error* handler
(PRINC)
)
;******************************************************************************

(DEFUN C:BD (/ CMD SS LTH DEM PT DS KDL N70 GOCX GOCY PT13 PT14 PTI
               PT10 PT10I PT10N O10 N10 PT11 PT11N O11 N11 KC OSM OLDERR)
(SETQ CMD (GETVAR "CMDECHO"))
(SETQ OSM (GETVAR "OSMODE"))
;;;(SETQ OLDERR *error*
;;;      *error* myerror)
(PRINC "Chon diem dau bo Duong oi")
(SETQ SS (SSGET))
(SETVAR "CMDECHO" 0)
(SETQ PT (GETPOINT "Diem ket thuc nua bo Duong a:"))
(SETQ PT (TRANS PT 1 0))
(COMMAND "UCS" "W")
(SETQ LTH (SSLENGTH SS))
(SETQ DEM 0)
(WHILE (< DEM LTH)
   (PROGN
(SETQ DS (ENTGET (SSNAME SS DEM)))
(SETQ KDL (CDR (ASSOC 0 DS)))
(IF (= "DIMENSION" KDL)
   (PROGN
	(SETQ PT13 (CDR (ASSOC 13 DS)))
	(SETQ PT14 (CDR (ASSOC 14 DS)))
	(SETQ PT10 (CDR (ASSOC 10 DS)))
	(SETQ PT11 (CDR (ASSOC 11 DS)))
	(SETQ N70 (CDR (ASSOC 70 DS)))
	(IF (OR (= N70 0) (= N70 32) (= N70 33) (= N70 160) (= N70 161))
	   (PROGN
		(SETQ GOCY (ANGLE PT10 PT14))
		(SETQ GOCX (+ GOCY (/ PI 2)))
	   )
	)
	(SETVAR "OSMODE" 0)
	(SETQ PTI (POLAR PT GOCX 2))
	(SETQ PT10I (POLAR PT10 GOCY 2))
	(SETQ PT10N (INTERS PT PTI PT10 PT10I NIL))
	(SETQ KC (DISTANCE PT10 PT10N))
	(SETQ O10 (ASSOC 10 DS))
	(SETQ N10 (CONS 10 PT10N))
	(SETQ DS (SUBST N10 O10 DS))
	(SETQ PT11N (POLAR PT11 (ANGLE PT10 PT10N) KC))
	(SETQ O11 (ASSOC 11 DS))
	(SETQ N11 (CONS 11 PT11N))
	(SETQ DS (SUBST N11 O11 DS))
	(ENTMOD DS)
   )
)
(SETQ DEM (+ DEM 1))
   )
)
(COMMAND "UCS" "P")
(SETVAR "CMDECHO" CMD)
(SETVAR "OSMODE" OSM)
;;;(setq *error* OLDERR)
(PRINC)
)

  • 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ưa hết bài nhưng mình có lsp cắt được dim có chênh cao Z spam lên cho các bạn khì khì.

(DEFUN C:CD (/ CMD SS LTH DEM PT DS KDL N70 GOCX GOCY PT13 PT14 PTI 
                                 PT13I PT14I PT13N PT14N O13 O14 N13 N14 OSM OLDERR PT10 PT11)
(SETQ CMD (GETVAR "CMDECHO"))
(SETQ OSM (GETVAR "OSMODE"))
;;;(SETQ OLDERR *error*
;;;      *error* myerror)
(PRINC "Lam on chon duong kich thuoc bat ky can cat bo Duong oi:")
(SETQ SS (SSGET))
(SETVAR "CMDECHO" 0)
(SETQ PT (GETPOINT "Con moi bo Duong nhap diem gioi han duong kich thuoc a:"))
(SETQ PT (TRANS PT 1 0))
(COMMAND "UCS" "W")
(SETQ LTH (SSLENGTH SS))
(SETQ DEM 0)
(WHILE (< DEM LTH)
   (PROGN
(SETQ DS (ENTGET (SSNAME SS DEM)))
(SETQ KDL (CDR (ASSOC 0 DS)))
(IF (= "DIMENSION" KDL)
   (PROGN
	(SETQ PT10 (CDR (ASSOC 10 DS)))
	(SETQ PT11 (CDR (ASSOC 11 DS)))
	(SETQ PT13 (CDR (ASSOC 13 DS)))
	(SETQ PT14 (CDR (ASSOC 14 DS)))
	(SETQ PT10 (LIST (CAR PT10) (CADR PT10) 0.00))
	(SETQ PT11 (LIST (CAR PT11) (CADR PT11) 0.00))
	(SETQ PT13 (LIST (CAR PT13) (CADR PT13) 0.00))
	(SETQ PT14 (LIST (CAR PT14) (CADR PT14) 0.00))
	(SETQ N70 (CDR (ASSOC 70 DS)))
	(IF (OR (= N70 0) (= N70 32) (= N70 33) (= N70 160) (= N70 161))
	   (PROGN
		(SETQ GOCY (ANGLE PT10 PT14))
		(SETQ GOCX (+ GOCY (/ PI 2)))
	   )
	)
	(SETVAR "OSMODE" 0)
	(SETQ PTI (POLAR PT GOCX 2))
	(SETQ PT13I (POLAR PT13 GOCY 2))
	(SETQ PT14I (POLAR PT14 GOCY 2))
	(SETQ PT13N (INTERS PT PTI PT13 PT13I NIL))
	(SETQ PT14N (INTERS PT PTI PT14 PT14I NIL))
	(SETQ O13 (ASSOC 13 DS))
	(SETQ O14 (ASSOC 14 DS))
	(SETQ N13 (CONS 13 PT13N))
	(SETQ N14 (CONS 14 PT14N))
	(SETQ DS (SUBST N13 O13 DS))
	(SETQ DS (SUBST N14 O14 DS))
	(ENTMOD DS)
   )
)
(SETQ DEM (+ DEM 1))
   )
)
(COMMAND "UCS" "P")
(SETVAR "CMDECHO" CMD)
(SETVAR "OSMODE" OSM)
;;;(setq *error* OLDERR)               ; Restore old *error* handler
(PRINC)
)
;******************************************************************************

(DEFUN C:BD (/ CMD SS LTH DEM PT DS KDL N70 GOCX GOCY PT13 PT14 PTI
               PT10 PT10I PT10N O10 N10 PT11 PT11N O11 N11 KC OSM OLDERR)
(SETQ CMD (GETVAR "CMDECHO"))
(SETQ OSM (GETVAR "OSMODE"))
;;;(SETQ OLDERR *error*
;;;      *error* myerror)
(PRINC "Chon diem dau bo Duong oi")
(SETQ SS (SSGET))
(SETVAR "CMDECHO" 0)
(SETQ PT (GETPOINT "Diem ket thuc nua bo Duong a:"))
(SETQ PT (TRANS PT 1 0))
(COMMAND "UCS" "W")
(SETQ LTH (SSLENGTH SS))
(SETQ DEM 0)
(WHILE (< DEM LTH)
   (PROGN
(SETQ DS (ENTGET (SSNAME SS DEM)))
(SETQ KDL (CDR (ASSOC 0 DS)))
(IF (= "DIMENSION" KDL)
   (PROGN
	(SETQ PT13 (CDR (ASSOC 13 DS)))
	(SETQ PT14 (CDR (ASSOC 14 DS)))
	(SETQ PT10 (CDR (ASSOC 10 DS)))
	(SETQ PT11 (CDR (ASSOC 11 DS)))
	(SETQ N70 (CDR (ASSOC 70 DS)))
	(IF (OR (= N70 0) (= N70 32) (= N70 33) (= N70 160) (= N70 161))
	   (PROGN
		(SETQ GOCY (ANGLE PT10 PT14))
		(SETQ GOCX (+ GOCY (/ PI 2)))
	   )
	)
	(SETVAR "OSMODE" 0)
	(SETQ PTI (POLAR PT GOCX 2))
	(SETQ PT10I (POLAR PT10 GOCY 2))
	(SETQ PT10N (INTERS PT PTI PT10 PT10I NIL))
	(SETQ KC (DISTANCE PT10 PT10N))
	(SETQ O10 (ASSOC 10 DS))
	(SETQ N10 (CONS 10 PT10N))
	(SETQ DS (SUBST N10 O10 DS))
	(SETQ PT11N (POLAR PT11 (ANGLE PT10 PT10N) KC))
	(SETQ O11 (ASSOC 11 DS))
	(SETQ N11 (CONS 11 PT11N))
	(SETQ DS (SUBST N11 O11 DS))
	(ENTMOD DS)
   )
)
(SETQ DEM (+ DEM 1))
   )
)
(COMMAND "UCS" "P")
(SETVAR "CMDECHO" CMD)
(SETVAR "OSMODE" OSM)
;;;(setq *error* OLDERR)
(PRINC)
)

Hề hề hề,

Âu cũng là có tí khè hỉ????

 

Cám ơn bác đã chia xẻ, song giá như không có "bo Duong" thì lisp sẽ tuyệt hơn nhiều bác ạ....

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ề hề hề,

Với lisp này thì thực ra là không cắt được do bác ketxu trở thành ket xỉ không chịu post cái lisp DTR lên cho mọi người xài.....

Nếu co lisp DTR này thì chắc hẳn sẽ được vì bác ấy chả thèm dùng tới hàm (inters ....) nên hổng bị cái lỗi giống cái lisp của bạn thanhduan2407.

Trong lisp này tuy chả nói ra nhưng thực tế thì cái điểm mới dm_13 và dm_14 này đều lấy cùng tọa độ z với thằng d10 cả rồi (do dùng hàm polar .....). Tức là nếu d10 có z=0 thì dm_13 và dm_14 cũng có z=0 bác ketxu ạ. Chí ít thì 3 thằng này cũng đồng phẳng rùi. Hề hề hề

Và thằng này cũng có tí lỗi do việc xác định cái điểm dm_13 gây ra.... Thực chất đó chính là do cái khoảng cách dis_1 giữa hai điểm không có cùng cao độ z gây ra. Hề hề hề

Mong bác xem lại hỉ???

Ều,bác Bình ác thế ^^. THực ra thì e nghĩ hàm dtr đa số máy đại ca nào dùng lisp kiểu j cũng có cái đã định nghĩa r nên k để ý kèm theo.Hề hề..

Hề hề,lisp này e cóp ở đâu cũng hok nhớ nữa, chứ e có viết đâu lào ^^

 

P/S : ketxu = Két Xù = Nhân vật trong phim Ông Trùm bác ạ ^^ Chứ em á, cực kỳ hảo dạ luôn :undecided:)

 

(defun dtr (a) (* pi (/ a 180.0)))

 

Đọc chưa hết bài nhưng mình có lsp cắt được dim có chênh cao Z spam lên cho các bạn khì khì.

Cái nì sao giống cái lisp cd,bd mấy a e công ty e vẫn hay dùng thế nhờ.Có khi lại cùng nguồn.N mà hok có cái phần "mời... " ^^

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

×