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

giang_081190

Thành viên
  • Số lượng nội dung

    14
  • Đã tham gia

  • Lần ghé thăm cuối

Bài đăng được đăng bởi giang_081190


  1. Em thấy vấn đề này chưa ai hỏi cả nên mạo muội lập topic mới.

    Vấn đề là em chuyển 1 file từ corel sang CAD. Chuyển đổi ok rất bình thường, Nhưng các đối tượng thì lại k sử dụng được như đối tượng vẽ ra từ CAD. Ví dụ như em k thể Offset cạnh nếu cạnh đó chuyển từ corel sang. Trong khi cạnh em vẽ mới (vẫn trong file đó) thì lại bình thương. Em có đính kèm file ở dưới nhờ các bác chỉ giáo ạ. :(

    https://1drv.ms/u/s!ApsDhJbig1S6shg_FShUuE9Cfo40


  2. Trước tiên em cảm ơn các bác đã đọc bài này.

     

    Em có 1 file Cad với khung như này ạ

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

     

    Trong đó có 1 khung hồ sơ, với các nội dung em cần thể hiện theo mẫu đó. Các dữ liệu đó em đã có trong file excel như sau ạ

    http://www.cadviet.com/upfiles/3/37777_data.rar

     

    Kịch bản là em muốn khi mình bấm lệnh, Cad sẽ hỏi ta nơi lưu trữ file data (có thể nhớ được vị trí lưu để lần sau không chọn lại), rồi chọn số thứ tự cần hiển thị, sau khi bấm ok thì nó sẽ yêu cầu ta chọn vị trí đặt khung. Click là ta có.:D

     

    // Em rất mong muốn các bác giúp em. Hoặc là hướng dẫn em làm với. Em nghĩ chỉ cần làm 1 mẫu thì nếu lần sau có mẫu khác thì em có thể tự làm được ạ.:D

    Em cảm ơn các bác đã theo dõi ạ.:D


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


  4. 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)
    )
    
    

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


  6. 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?


  7.  

    
    

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


  8.  

    
    

    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?


  9. 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)
    )
    
×