Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
18 replies to this topic

#1 giang_081190

giang_081190

    biết zoom

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

Đã gửi 10 July 2014 - 08:05 AM

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

http://www.cadviet.c...77_nghiapeo.lsp

http://www.cadviet.c...77_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)
)

  • 0

#2 giang_081190

giang_081190

    biết zoom

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

Đã gửi 10 July 2014 - 08:20 AM

Quên là Khi em dùng lệnh DAL thì nó vẫn cho ra kết quả đúng là 0.37 m. @@


  • 0

#3 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 10 July 2014 - 08:43 AM

Nó là line 3d mà.


  • 1

#4 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1432 Bài viết
Điểm đánh giá: 1425 (rất tốt)

Đã gửi 10 July 2014 - 08:49 AM

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

http://www.cadviet.c...77_nghiapeo.lsp

http://www.cadviet.c...77_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.


  • 1

#5 giang_081190

giang_081190

    biết zoom

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

Đã gửi 10 July 2014 - 08:58 AM


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?


  • 0

#6 giang_081190

giang_081190

    biết zoom

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

Đã gửi 10 July 2014 - 09:29 AM


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 .@@


  • 0

#7 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 10 July 2014 - 09:48 AM

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.


  • 1

#8 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1432 Bài viết
Điểm đánh giá: 1425 (rất tốt)

Đã gửi 10 July 2014 - 09:49 AM

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


  • 1

#9 giang_081190

giang_081190

    biết zoom

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

Đã gửi 10 July 2014 - 10:24 AM

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?


  • 0

#10 giang_081190

giang_081190

    biết zoom

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

Đã gửi 10 July 2014 - 01:20 PM

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


  • 0

#11 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 10 July 2014 - 01:47 PM

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?  -_-  -_-


  • 1

#12 giang_081190

giang_081190

    biết zoom

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

Đã gửi 10 July 2014 - 01:48 PM

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.c...i-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)
)


  • 0

#13 giang_081190

giang_081190

    biết zoom

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

Đã gửi 10 July 2014 - 01:49 PM

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


  • 0

#14 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 10 July 2014 - 02:00 PM

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à!!


  • 0

#15 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1432 Bài viết
Điểm đánh giá: 1425 (rất tốt)

Đã gửi 10 July 2014 - 02:30 PM

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


  • 0

#16 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 10 July 2014 - 03:26 PM

Vậy cadviet đã có bầu ra "tứ đại trưởng lão" chưa vậy?


  • 0

#17 giang_081190

giang_081190

    biết zoom

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

Đã gửi 11 July 2014 - 09:28 AM

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ả. :(


  • 0

#18 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1432 Bài viết
Điểm đánh giá: 1425 (rất tốt)

Đã gửi 11 July 2014 - 09:41 AM

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 ...".


  • 1

#19 giang_081190

giang_081190

    biết zoom

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

Đã gửi 11 July 2014 - 10:23 AM

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


  • 1