Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
giang_081190

Thắc mắc lisp xuất cạnh của line

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

Em có file CaD và em cần xuất cạnh của 1 cạnh như sau ạ

http://www.cadviet.com/upfiles/3/37777_nghiapeo.lsp

http://www.cadviet.com/upfiles/3/37777_thac_mac.dwg

 

Đây là file lisp và file CAD em thắc mắc ạ.

2014fd65b76f-3ebf-41d8-b91d-10bafd4f7c30

Sẽ chẳng vấn đề gì khi như mọi file khác em dùng lisp trên xuất từng cạnh mình cần

Nhưng khi em xuất cạnh ở file CAD trên bằng Lisp ở trên luôn thì no hiện là hiện 3D length (Mục 3) = 2.58

Hay khi em dùng lệnh DI ( Distance ) thì nó hiện kết quả là 1.47

Nhưng chiều dài thực tế của line này là 0.37 (Mục 2 ) ạ. 

Bác nào giải thích giúp em với.

 

Em dùng máy Toàn đạc điện tử Gowin xuất ra tọa độ rồi triển điểm lên CAD ạ. @@

Nhiều file bị chứ k riêng file em ví dụ này.   =>> Các máy toàn đạc khác thì em chưa thử. @@

 

// Mong các bác giải thích cho em với. :(

 

Đây là nội dung lisp ạ.@@

(defun c:dd ( )
(command "undo" "be")
  (command "-style" "ktdt" "VNI-HELVE" "0" "1" "0" "n" "n")
  (if (null dolora)(setq dolora "1"))
(Setq temp T)
(While temp
(setq a (strcat "\nD lon text hien hanh la (" dolora ") /<Diem dau tien>: "))
(Initget "d D")
(setq str (getpoint a))
(Cond
  ((= str "d") (setq dolora (getstring (strcat"\nDo lon text <" dolora "> :"))))
  ((= str "D") (setq dolora (getstring (strcat"\nDo lon text <" dolora "> :"))))
   (Progn
  (Setq a str)
   (setq temp nil)
  )
)
)
 
(setq b (getpoint a"\nChon diem tiep theo: "))
(setq luubatdiem (getvar "osmode"))
  (setvar "osmode" 0)
	(setq doclora (atof dolora))
	(setq gocxeo(angle a B))
	(setq daiab (Distance a B))
	(setq c (polar a gocxeo (/ daiab 2)))
	(setq d (polar c (+ gocxeo (/ pi 2)) (/ doclora 4)))
 z
(command ".line" a b "")
(command "text" "j" "c" c doclora b (rtos daiab 2 2) "")
(command ".move" "last" "" c d)
(cond
((> gocxeo (/ pi 2)) (command ".rotate" "last" "" c 0))
)
(setvar "osmode" luubatdiem)
(command "undo" "end")
	(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
gia_bach    1.442

Em có file CaD và em cần xuất cạnh của 1 cạnh như sau ạ

http://www.cadviet.com/upfiles/3/37777_nghiapeo.lsp

http://www.cadviet.com/upfiles/3/37777_thac_mac.dwg

 

Đây là file lisp và file CAD em thắc mắc ạ.

2014fd65b76f-3ebf-41d8-b91d-10bafd4f7c30

Sẽ chẳng vấn đề gì khi như mọi file khác em dùng lisp trên xuất từng cạnh mình cần

Nhưng khi em xuất cạnh ở file CAD trên bằng Lisp ở trên luôn thì no hiện là hiện 3D length (Mục 3) = 2.58

Hay khi em dùng lệnh DI ( Distance ) thì nó hiện kết quả là 1.47

Nhưng chiều dài thực tế của line này là 0.37 (Mục 2 ) ạ. 

.........

// Mong các bác giải thích cho em với. :(


Do có hai đường line trùng nhau trên hình chiếu bằng : 

- 1 line thuộc lớp "dientich" có chều dài là 2.5849

- và line thuộc lớp "Duong" có chều dài là 1.4730

nên khi dùng lệnh Dist (di) sẽ bị bắt điểm nhầ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

 


Do có hai đường line trùng nhau trên hình chiếu bằng : 

- 1 line thuộc lớp "dientich" có chều dài là 2.5849

- và line thuộc lớp "Duong" có chều dài là 1.4730

nên khi dùng lệnh Dist (di) sẽ bị bắt điểm nhầm.

 

Có thể bác giabach ạ. Nhưng cũng nhiều trường hợp cháu làm thì k bị như trên. @@ mà trước khi nối điểm triển điểm thì cháu cũng định dạng bản vẽ về đơn vị, xoay góc ... Vậy có cách nào giải quyết k 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

 


Do có hai đường line trùng nhau trên hình chiếu bằng : 

- 1 line thuộc lớp "dientich" có chều dài là 2.5849

- và line thuộc lớp "Duong" có chều dài là 1.4730

nên khi dùng lệnh Dist (di) sẽ bị bắt điểm nhầm.

Bác GiaBach cho cháu hỏi tiếp là vẫn đường line ấy. Move riêng ra 1 chỗ, không bị bắt điểm nhầm nữa. Nhưng nó vẫn hiện 3D length. k hiện giá trị thực mình cần. Cái này cháu thắc mắc lắ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
Tot77    501

Cái "cháu" này lạ thật!! nhìn cái bảng to chần zần như vậy mà không biết nó là 3dline hay sao? trị số dx,dy,dz đều khác 0, đo trên mặt phẳng xy nó là 0.3651, nhưng sự thật chiều dài 3d là 2.5849. Dù "cháu" có move tận chân trời góc bể mà không chuyển nó về 2d thì đo nó vẫn vậy thôi.

  • 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
gia_bach    1.442

Bác GiaBach cho cháu hỏi tiếp là vẫn đường line ấy. Move riêng ra 1 chỗ, không bị bắt điểm nhầm nữa. Nhưng nó vẫn hiện 3D length. k hiện giá trị thực mình cần. Cái này cháu thắc mắc lắm .@@

Khi cao độ (Z) của điểm đầu và điểm cuối khác nhau (Line 3D) thì Cad báo thêm "3D Length" và "Curent UCS Length"15454_3d_line_1.jpg

  • 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

Khi cao độ (Z) của điểm đầu và điểm cuối khác nhau (Line 3D) thì Cad báo thêm "3D Length" và "Curent UCS Length"15454_3d_line_1.jpg

 

:)))) Đúng là cái này. Xấu hổ vì là dân Trắc địa quá. :"> 

Vậy là file xuất ra theo dạng file CAD nó sẽ bắn luôn độ cao Z. Còn khi xuất ra tọa độ rồi dùng lisp triển điểm thì nó k có Z mà chỉ có độ cao ghi lại.

// Vậy bác GiaBach cho cháu hỏi có cách nào khắc phục file này k?

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ái "cháu" này lạ thật!! nhìn cái bảng to chần zần như vậy mà không biết nó là 3dline hay sao? trị số dx,dy,dz đều khác 0, đo trên mặt phẳng xy nó là 0.3651, nhưng sự thật chiều dài 3d là 2.5849. Dù "cháu" có move tận chân trời góc bể mà không chuyển nó về 2d thì đo nó vẫn vậy thôi.

 

Mình biết nó hiện 3D length. Nhưng vấn đề được đặt ra là làm cách nào giải quyết trường hợp này không thôi. 

//Mình xưng hô bác cháu với bác GiaBach vì theo dõi có vài post bác giới thiệu bác tầm 6x.  ~~ hơn tuổi bố mình rồi.:D

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 tìm được lisp Flat trên diễn đàn để chuyển Z=0 rồi ạ.:D
Cảm ơn các bác, các anh em.:D

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/topic/54646-yeu-cau-chuyen-cao-do-z-cua-cac-loai-doi-tuong-ve-z-0/
(defun c:flat ( / acsel elv ) (vl-load-com)
  (if (ssget "_X" (list (cons 410 (getvar 'CTAB))))
	(progn
  	(vlax-for obj
    	(setq acsel
      	(vla-get-ActiveSelectionSet
        	(vla-get-ActiveDocument (vlax-get-acad-object))
      	)
    	)
    	(foreach elv '(1e99 -1e99)
      	(vl-catch-all-apply 'vla-move
        	(list obj (vlax-3D-point '(0. 0. 0.)) (vlax-3D-point (list 0. 0. elv)))
      	)
    	)
  	)
  	(vla-delete acsel)
	)
  )
  (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

Vậy chắc sau này ai mà cỡ 9x chắc phải nên xưng cháu với bác PTBình chăng?  -_-  -_-

 

K biết thì là bạn, anh (Hay chị Hoặc thím)

// CHứ biết rồi thì k thể nào mà ... :D

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
Tot77    501

OK, đùa chút cho vui cửa vui nhà thôi, tại lần đầu tiên thấy có người xưng "cháu" thấy là lạ vậy 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
gia_bach    1.442

OK, đùa chút cho vui cửa vui nhà thôi, tại lần đầu tiên thấy có người xưng "cháu" thấy là lạ vậy mà!!

 

Tại Tot77 không để ý, chứ trên forum còn có nhiều "đại thụ".  #8

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 Tot77 không để ý, chứ trên forum còn có nhiều "đại thụ".  #8

 

Bác GiaBach cho cháu hỏi cháu có thể nhờ các bác các anh viết 1 lisp đơn giản được k ạ. Chỉ là lấy dữ liệu từ excel rồi cho vào 1 khung theo mẫu sẵn.

// Ngày trước cách đây khoảng 3 năm cháu học VB thì làm thấy không khó lắm. Nhưng rồi đi làm chẳng nhớ gì hết 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
gia_bach    1.442

Bác GiaBach cho cháu hỏi cháu có thể nhờ các bác các anh viết 1 lisp đơn giản được k ạ. Chỉ là lấy dữ liệu từ excel rồi cho vào 1 khung theo mẫu sẵn.

// Ngày trước cách đây khoảng 3 năm cháu học VB thì làm thấy không khó lắm. Nhưng rồi đi làm chẳng nhớ gì hết cả. :(

Câu này mới là "lạ" nè.

 

Bạn có yêu cầu gì thì cứ post lên diễn đàn (nhớ trình bày rõ ràng, có file cad càng tốt), còn việc có ai viết hay không thì "hãy đợi đấy ...".

  • 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âu này mới là "lạ" nè.

 

Bạn có yêu cầu gì thì cứ post lên diễn đàn (nhớ trình bày rõ ràng, có file cad càng tốt), còn việc có ai viết hay không thì "hãy đợi đấy ...".

 

Vâng. Cháu cảm ơn bác. Hôm nào cháu kiếm topic bài bản về lisp học cố lấy cấu trúc vậy. Sẽ tốt hơn nếu ta chủ động.:D

  • 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

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  

×